Deploy the zookeeper-3Nodes helm chart on Azure Managed Openshift Service
TypeScriptTo deploy the
zookeeper-3Nodes
Helm chart on Azure Managed OpenShift Service using Pulumi, we'll proceed in two main steps:-
Provision an Azure Red Hat OpenShift (ARO) Cluster: We will create a managed OpenShift cluster on Azure, which provides a Kubernetes-conformant platform supported by Microsoft and Red Hat.
-
Deploy the Helm Chart on the ARO Cluster: Once we have the OpenShift cluster ready, we will deploy the
zookeeper-3Nodes
Helm chart to this cluster.
We'll write a TypeScript program using Pulumi to accomplish both tasks.
Here's a step-by-step breakdown of what we're going to code:
- Import the necessary Pulumi packages.
- Set up an Azure Red Hat OpenShift cluster using
azure-native.redhatopenshift.OpenShiftCluster
resource. - Deploy the Helm chart to the OpenShift cluster using
kubernetes.helm.v3.Chart
resource.
Before you run this code, ensure you have the following prerequisites completed:
- Install Pulumi CLI and set up Azure credentials.
- Install Node.js and npm to run the Pulumi TypeScript program.
- Create a new Pulumi project or use an existing one.
Below is the full Pulumi TypeScript program that accomplishes these steps:
import * as pulumi from "@pulumi/pulumi"; import * as azure_native from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Set up an Azure Red Hat OpenShift (ARO) Cluster const resourceGroupName = new azure_native.resources.ResourceGroup("myResourceGroup", { resourceGroupName: "myResourceGroup", location: "eastus", }); const openShiftCluster = new azure_native.redhatopenshift.OpenShiftCluster("myOpenShiftCluster", { resourceGroupName: resourceGroupName.name, resourceName: "myOpenShiftCluster", location: resourceGroupName.location, clusterProfile: { pullSecret: "<pull-secret>", // Replace with your pull secret from Red Hat OpenShift domain: "example.com", // Replace with your domain version: "4.6", // Specify the version of OpenShift }, masterProfile: { vmSize: "Standard_D8s_v3", }, networkProfile: { podCidr: "10.128.0.0/14", serviceCidr: "172.30.0.0/16", }, workerProfiles: [{ name: "worker", // Define your worker nodes' details vmSize: "Standard_D4s_v3", diskSizeGB: 128, subnetId: "/subscriptions/<subscription-id>/resourceGroups/<vnet-resource-group>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<worker-subnet-name>", // Provide Subnet ID for worker nodes count: 3, // Number of worker nodes, you can adjust this as necessary }], servicePrincipalProfile: { clientId: "<client-id>", // Azure service principal ID clientSecret: "<client-secret>", // Azure service principal secret }, }, { dependsOn: [resourceGroupName] }); // Deploy the zookeeper-3Nodes Helm chart on Azure Managed OpenShift Service const k8sProvider = new k8s.Provider("myK8sProvider", { kubeconfig: pulumi.interpolate`${openShiftCluster.kubeadminKubeconfig}`, // This uses the kubeconfig output from the cluster }); const zookeeperHelmChart = new k8s.helm.v3.Chart("zookeeper-3nodes", { chart: "zookeeper", version: "5.23.0", // Use the specific chart version you need for zookeeper fetchOpts: { repo: "https://charts.helm.sh/stable", }, values: { replicaCount: 3, // Set the number of Zookeeper nodes // You can set additional custom values for the chart here. }, }, { provider: k8sProvider }); // Export the OpenShift cluster's kubeconfig export const kubeconfig = openShiftCluster.kubeadminKubeconfig;
Make sure to replace placeholders such as
<pull-secret>
,<subscription-id>
,<vnet-resource-group>
, and others with your own specific values.Explaining the Code:
- We initialize the Pulumi Azure Native provider to work with Azure resources by creating a new resource group and an OpenShift cluster within that group.
- With
azure_native.redhatopenshift.OpenShiftCluster
, we define the properties for our OpenShift cluster, like the pull secret, domain, version, and profile sizes for master and worker nodes. - After the OpenShift cluster is provisioned, we initialize a Pulumi Kubernetes provider using
k8s.Provider
. This provider is configured with the kubeconfig from the OpenShift cluster, allowing Pulumi to interact with it as a Kubernetes cluster. - We deploy the zookeeper Helm chart using
k8s.helm.v3.Chart
, specifying the chart name, version, and default values needed.
Running Your Code:
- Save this TypeScript code in a file named
index.ts
. - Run
pulumi up
to preview and deploy the changes. - Upon successful deployment, Pulumi will print the exported
kubeconfig
output, which you can use to connect to your OpenShift cluster.
-