Deploy the vid helm chart on Azure Managed Openshift Service
TypeScriptTo deploy the "vid" Helm chart on Azure Managed OpenShift Service, you need to complete a few steps using Pulumi. Here’s the basic workflow:
- Set up an Azure Managed OpenShift cluster.
- Install and configure Helm and Kubernetes providers to work with this cluster.
- Deploy the vid Helm chart using the Pulumi Kubernetes provider.
For the first step, we will use the
azure-native.containerservice.OpenShiftManagedCluster
resource, which allows you to create a managed OpenShift cluster on Azure. For the second and third steps, we will use thekubernetes.helm.v3.Chart
resource from the Pulumi Kubernetes provider, which manages Helm Chart deployments.Below is a TypeScript program that demonstrates how to execute this workflow with Pulumi.
import * as pulumi from "@pulumi/pulumi"; import * as azureNative from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Create the Azure Managed OpenShift cluster const openshiftManagedCluster = new azureNative.containerservice.OpenShiftManagedCluster("myOpenShiftCluster", { // Replace with the actual name of your resource group resourceGroupName: "myResourceGroup", location: "eastus", // Specify the location you wish to deploy in openShiftVersion: "3.11", // Specify the version of OpenShift networkProfile: { vnetCidr: "10.0.0.0/8", }, masterPoolProfile: { count: 1, vmSize: "Standard_D4s_v3", }, agentPoolProfiles: [{ name: "agentpool", count: 3, vmSize: "Standard_D4s_v3", role: "Compute", // Specify the role for the agent-pool osType: "Linux", }], }); // Step 2: Create a Kubernetes provider that targets the Azure Managed OpenShift cluster const k8sProvider = new k8s.Provider("openshiftK8s", { kubeconfig: openshiftManagedCluster.config.apply(config => config.kubeconfig), }); // Step 3: Deploy the vid Helm chart using the Pulumi Kubernetes provider const vidChart = new k8s.helm.v3.Chart("vid-chart", { chart: "vid", // Replace with the actual repository that hosts the vid chart fetchOpts: { repo: "http://myhelmrepo.example.com", }, }, { provider: k8sProvider }); // Export the cluster's kubeconfig export const kubeconfig = openshiftManagedCluster.config.apply(config => config.kubeconfig);
Explanation:
-
Create Azure Managed OpenShift cluster (
OpenShiftManagedCluster
): We create an instance of an OpenShift cluster on Azure using theazure-native.containerservice.OpenShiftManagedCluster
resource. You must specify the resource group name, location, the OpenShift version you want to install, network profile, master and agent pool profiles. -
Kubernetes provider (
k8s.Provider
): To manage Kubernetes resources, we create a Pulumi Kubernetes provider. The provider is configured with thekubeconfig
of the OpenShift cluster that we created, allowing Pulumi to communicate with your cluster. -
Deploy Helm Chart (
k8s.helm.v3.Chart
): Finally, we declare ak8s.helm.v3.Chart
resource to deploy the "vid" Helm chart. You provide the name of the chart and the repository where the chart is hosted. Theprovider
property specifies that this Helm chart will be deployed on the previously created OpenShift cluster managed by our Kubernetes provider. -
Export kubeconfig: At the end of the program, we export the kubeconfig of the OpenShift cluster. This allows you to interact with your cluster using the
kubectl
command line tool.
Notes:
- Before running this program, make sure you've installed Pulumi and configured it with Azure credentials.
- This code is configured to create an OpenShift 3.11 cluster; you would have to update the version to the desired version available on Azure.
- Check Azure Managed OpenShift Service pricing and the region availability as pricing may vary by regions and resources you use, such as VM size.
Remember to replace placeholder values such as
"myResourceGroup"
,"eastus"
, andhttp://myhelmrepo.example.com
with your actual resource group, location, and Helm repository URL, respectively.After you have the Pulumi program ready, you can run
pulumi up
in your terminal to create the resources. Pulumi will automatically handle provisioning the resources in the correct order.