Deploy the helm-mongodb-operator helm chart on Azure Managed Openshift Service
TypeScriptTo deploy the
helm-mongodb-operator
Helm chart on Azure Managed OpenShift Service using Pulumi, you need to follow these steps:- Set up an Azure Managed OpenShift cluster using the
azure-native.containerservice.OpenShiftManagedCluster
resource. - Install the MongoDB Operator Helm chart onto the cluster using the
kubernetes.helm.v3.Chart
resource.
Here's a step-by-step explanation and the Pulumi program in TypeScript:
Set Up Azure Managed OpenShift Cluster
First, you'll use Pulumi's
azure-native
provider to create an OpenShift Managed Cluster. TheOpenShiftManagedCluster
resource allows you to define the properties of the OpenShift cluster such as the location, the number of nodes, the VM size for the nodes, and various networking properties.Deploy the Helm Chart
After setting up the OpenShift cluster, you'll deploy the
helm-mongodb-operator
helm chart using Pulumi'skubernetes
provider, specifically thehelm.v3.Chart
resource. This resource allows you to specify the chart name, version, and values that configure the MongoDB Operator.Pulumi TypeScript Program
Here is the complete TypeScript program that accomplishes the deployment:
import * as pulumi from "@pulumi/pulumi"; import * as azureNative from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Create an Azure Resource Group const resourceGroup = new azureNative.resources.ResourceGroup("myResourceGroup"); // Create an Azure Managed OpenShift cluster const cluster = new azureNative.containerservice.OpenShiftManagedCluster("myOpenShiftCluster", { // Required properties location: resourceGroup.location, openShiftVersion: "4.3", // Specify your desired OpenShift version resourceGroupName: resourceGroup.name, resourceName: "myOpenShiftClusterName", // Define the master and agent pool profiles as per your requirements masterPoolProfile: { name: "master", count: 3, vmSize: "Standard_DS3_v2" // ... other required properties }, agentPoolProfiles: [{ name: "default", role: "Compute", count: 3, vmSize: "Standard_DS3_v2", // ... other required properties }], // ... other configurations }); // Import the kubeconfig for the created OpenShift cluster after it's provisioned const creds = pulumi.all([cluster.name, resourceGroup.name]).apply(([clusterName, rgName]) => azureNative.containerservice.listOpenShiftManagedClusterUserCredentials({ resourceName: clusterName, resourceGroupName: rgName, }) ); // Establish k8s provider using the kubeconfig const k8sProvider = new k8s.Provider("openshiftK8s", { kubeconfig: creds.apply(c => Buffer.from(c.kubeconfigs[0].kubeconfig, 'base64').toString()), }); // Deploy the `helm-mongodb-operator` helm chart onto the OpenShift cluster const mongoDbOperatorChart = new k8s.helm.v3.Chart("mongodbOperator", { chart: "helm-mongodb-operator", // You can specify the chart version and values for the operator chart here version: "0.5.0", // Specify the version of the chart you want to deploy // values: { /* ... */ }, }, { provider: k8sProvider }); // Export the kubeconfig of the OpenShift cluster export const kubeconfig = creds.apply(c => Buffer.from(c.kubeconfigs[0].kubeconfig, 'base64').toString()); // Lastly, make sure you have configured your Pulumi and Azure credentials.
This Pulumi program does the following:
- Creates a new Azure resource group to house the OpenShift cluster resources.
- Deploys an Azure Managed OpenShift cluster with the specified OpenShift version and VM sizes for master and agent nodes.
- Retrieves the kubeconfig from the deployed OpenShift cluster so you can interact with it using the Kubernetes API.
- Provision a k8s provider with the OpenShift cluster's kubeconfig.
- Installs the MongoDB Operator Helm chart on the OpenShift cluster using the Kubernetes provider.
After running
pulumi up
with this program, Pulumi will provision all the described resources. The pulumi command line tool communicates with your cloud providers to set up the resources, and the state of these resources will be saved in a 'stack' that you can update or destroy. The kubeconfig to access your OpenShift cluster is exported, allowing you to interact with your cluster using it.- Set up an Azure Managed OpenShift cluster using the