Deploy the ibm-apic-instance helm chart on Azure Managed Openshift Service
TypeScriptTo accomplish the deployment of an IBM API Connect (APIC) instance using a Helm chart on Azure Managed OpenShift Service using Pulumi, you would typically:
- Set up an Azure Managed OpenShift Cluster.
- Install Helm and Tiller on the cluster.
- Deploy the IBM APIC Helm chart using Tiller.
In this explanation, we'll go through how to create these resources using Pulumi with TypeScript and Azure Native provider, which enables you to use Pulumi to declare Azure infrastructure using native Azure Resource Manager (ARM) resources.
First, you'll set up an Azure Managed OpenShift Cluster using the
azure-native.redhatopenshift.OpenShiftCluster
resource. It's important to specify the properlocation
,resourceName
, and various other properties such asmasterProfile
,networkProfile
, andworkerProfiles
that you may customize to fit the scale and specifications you desire for your OpenShift cluster.After setting up the OpenShift cluster, we'll use the
kubernetes.helm.v3.Chart
resource to deploy the IBM APIC Helm chart to your cluster. This manages the deployment of a Helm chart and allows you to specify therepo
,chart
,version
, andvalues
for your Helm chart, along with anynamespace
you wish to deploy into.Here's how to write this Pulumi program in TypeScript:
import * as pulumi from "@pulumi/pulumi"; import * as azure_native from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Deploy an Azure Red Hat OpenShift cluster const openShiftCluster = new azure_native.redhatopenshift.OpenShiftCluster("myOpenShiftCluster", { // Location of the OpenShift cluster location: "eastus", // Name of the OpenShift cluster resourceName: "example-openshift-cluster", // Additional properties like profiles and configurations for OpenShift // Replace below properties with actual values like the network profile, master/worker node configurations, etc. masterProfile: { name: "master", // Customize master node properties //... other master profile properties }, networkProfile: { // Network configs }, workerProfiles: [ { name: "worker", // Customize worker node properties count: 3, // Number of worker nodes //... other worker profile properties } ], // Specify any additional OpenShift cluster properties as needed. }); // Step 2: Set up Helm on the Azure Managed OpenShift cluster // Note: This step assumes Helm and Tiller are configured manually or through pipeline automation. // You could set up Helm and Tiller using Pulumi automation script as well, which is not shown here. // Step 3: Deploy the IBM APIC Helm chart on the OpenShift Cluster const helmChart = new k8s.helm.v3.Chart("ibm-apic-instance", { chart: "ibm-apic", version: "1.0.0", // Specify the version of the Helm chart you want to deploy fetchOpts: { repo: "https://charts.example.com/", // Specify the repository URL where your Helm chart is located }, values: { // Set the values for the Helm chart }, // If needed, specify the namespace and other properties for Helm chart deployment }, { provider: /* Provide the Kubernetes provider linked to the OpenShift cluster */ }); // Export the OpenShift cluster's kubeconfig as a stack output export const kubeconfig = openShiftCluster.kubeconfig;
In this program, replace the placeholder values in the
openShiftCluster
andhelmChart
resources with actual values conditioned for your specific scenario. Note that:- The
resourceName
in theopenShiftCluster
is just a placeholder and must be unique. - The
masterProfile
,networkProfile
, andworkerProfiles
values need to be set according to the specific needs of your OpenShift cluster. - The
repo
andversion
in thehelmChart
are placeholders; you need to provide the exact Helm chart repository URL and version number for the IBM APIC Helm chart. - The Helm setup (Tiller) step is assumed to be done prior to or as part of your infrastructure provisioning scripts. Helm 3 removed the need for Tiller, but this step can be necessary if you have custom configurations.
- The Kubernetes provider, which is to be passed to the
helmChart
as an argument, should be set up to manage resources within the OpenShift cluster you've provisioned.
This program provisions the necessary Azure and Kubernetes resources to deploy an IBM API Connect instance using Pulumi. After this, to apply the Pulumi program, you would typically use
pulumi up
command in the Pulumi CLI to create or update the resources as defined above.