Deploy the atlassian-jira helm chart on Azure Managed Openshift Service
TypeScriptTo deploy the Atlassian JIRA Helm chart on Azure Managed OpenShift Service using Pulumi, you first need to set up the Azure Managed OpenShift Service cluster, and then deploy the Helm chart to that cluster. The process can be broken into two main parts:
-
Setting up Azure Managed OpenShift Cluster:
- You will create an instance of
OpenShiftManagedCluster
from theazure-native
package, which will provide you with a Kubernetes-compatible environment managed by Azure.
- You will create an instance of
-
Deploying Atlassian JIRA Helm Chart:
- You will utilize the
Chart
resource from thekubernetes
package to deploy JIRA using its Helm chart within the OpenShift cluster.
- You will utilize the
Below is a detailed Pulumi program written in TypeScript that demonstrates these steps:
import * as pulumi from "@pulumi/pulumi"; import * as containerservice from "@pulumi/azure-native/containerservice"; import * as k8s from "@pulumi/kubernetes"; // Create an Azure Managed OpenShift Cluster const managedCluster = new containerservice.OpenShiftManagedCluster("myOpenShiftCluster", { // Replace with your resource group name and preferred location resourceGroupName: "myResourceGroup", location: "East US", openShiftVersion: "v3.11", // Specify your desired OpenShift version networkProfile: { vnetCidr: "10.0.0.0/8", }, masterPoolProfile: { count: 1, vmSize: "Standard_D4s_v3", // Adjust the VM size based on your requirements }, agentPoolProfiles: [{ name: "agentpool", count: 3, vmSize: "Standard_DS3_v2", // Adjust the VM size based on your requirements osType: "Linux", }], }); // Configure the Kubernetes provider to use the generated kubeconfig from the OpenShift cluster const k8sProvider = new k8s.Provider("openshiftK8s", { kubeconfig: managedCluster.config.apply(c => c.kubeconfig), }); // Deploy the Atlassian JIRA Helm chart const jiraChart = new k8s.helm.v3.Chart("atlassian-jira", { chart: "jira", version: "9.4.0", // Specify the chart version you want to deploy fetchOpts: { repo: "https://atlassian.github.io/data-center-helm-charts/", // Official Atlassian Helm chart repository }, values: { // Provide any specific values you want to customize for the JIRA deployment }, }, { provider: k8sProvider }); // Export the necessary endpoints export const clusterName = managedCluster.name; export const jiraServiceUrl = pulumi.interpolate`http://${jiraChart.getResourceProperty("v1/Service", "atlassian-jira", "status").apply(s => s.loadBalancer.ingress[0].ip)}`;
In this program:
- We import the necessary Pulumi packages.
- We create a new OpenShift Managed Cluster with a given resource group and location. Here you need to specify the version of OpenShift you'd like to use, the virtual network CIDR, the master node's VM size, and the number of agent nodes with their VM sizes.
- We set up a Kubernetes provider to interact with our OpenShift cluster using the generated kubeconfig.
- We use the Helm
Chart
resource to deploy the Atlassian JIRA chart from the Atlassian Helm chart repository. Make sure to use the correct chart version and provide any customvalues
you need for your JIRA deployment. - Finally, we export the OpenShift cluster name and the service URL, which you can use to access your JIRA deployment once it's ready. The
jiraServiceUrl
uses Pulumi's interpolation to construct the full URL from the load balancer IP address assigned to the JIRA service.
Please adjust the VM sizes, the number of nodes, and any specific JIRA Helm chart
values
to fit your particular requirements.-