Deploy the ts3-manager helm chart on Azure Managed Openshift Service
TypeScriptTo deploy the
ts3-manager
Helm chart on Azure Managed OpenShift Service using Pulumi, we will perform several steps:- Provision an Azure Managed OpenShift cluster.
- Install the Helm chart into the OpenShift cluster.
To accomplish these steps using Pulumi, you'll need to have the Pulumi CLI installed and set up with the appropriate cloud credentials for Azure. Given that you are connected with your Azure account in Pulumi, we'll move forward.
Let's start with provisioning an OpenShift cluster on Azure. For this, we'll use the
azure-native.containerservice.OpenShiftManagedCluster
resource, which represents a Managed OpenShift cluster in Azure. You can find detailed documentation about this resource here.After the cluster is provisioned, we need to deploy the Helm chart. For this, we'll use the
kubernetes.helm.v3.Chart
resource from the@pulumi/kubernetes
package, which allows us to deploy a Helm chart to a Kubernetes cluster. More information about deploying Helm charts with Pulumi can be found here.Below is a Pulumi program written in TypeScript that carries out these tasks:
import * as pulumi from "@pulumi/pulumi"; import * as azure_native from "@pulumi/azure-native"; import * as k8s from "@pulumi/kubernetes"; // Step 1: Provision an Azure Managed OpenShift cluster. const openshiftCluster = new azure_native.containerservice.OpenShiftManagedCluster("myOpenShiftCluster", { // Update these to appropriate values for your environment resourceGroupName: "myResourceGroup", location: "East US", // Define the specifics for the OpenShift cluster, including the number and types // of nodes, networking configuration, etc. openShiftVersion: "latest", agentPoolProfiles: [{ name: "agentpool", count: 3, vmSize: "Standard_D4s_v3", osType: "Linux", role: "compute" }], masterPoolProfile: { name: "masterpool", count: 3, vmSize: "Standard_D4s_v3" }, networkProfile: { vnetId: "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vNet-name>", peerId: "/subscriptions/<subscription-id>/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<peerVnet-name>" } }); // Step 2: Deploy the "ts3-manager" Helm chart to the OpenShift cluster. const ts3ManagerChart = new k8s.helm.v3.Chart("ts3-manager-chart", { chart: "ts3-manager", // Specify the Helm repository that contains the chart. // This is a placeholder, replace it with the actual repository URL. fetchOpts: { repo: "https://example.com/helm/repo" }, // Provide configuration values for the Helm chart. values: { // These are placeholder values, configure them according to the ts3-manager chart's documentation. service: { type: "LoadBalancer" }, }, // Use the kubeconfig from the newly created OpenShift Managed Cluster // to deploy the Helm chart. kubeConfig: openshiftCluster.kubeConfig }); // Export the OpenShift Managed Cluster API server URL and the ts3-manager service endpoint. export const openshiftApiServerUrl = openshiftCluster.openshiftApiUrl; export const ts3ManagerEndpoint = pulumi.interpolate`http://${ts3ManagerChart.getResourceProperty("v1/Service", "ts3-manager", "status").apply(s => s.loadBalancer.ingress[0].hostname)}`;
Here's an overview of what each part of this program does:
- We import the required Pulumi packages for Azure and Kubernetes.
- We provision an Azure Managed OpenShift cluster using the
OpenShiftManagedCluster
resource. You should set theresourceGroupName
to the name of an existing Resource Group where you want to create the OpenShift cluster. Replace<subscription-id>
,<rg-name>
, and<vNet-name>
with the actual values for your Azure setup. - We deploy the
ts3-manager
Helm chart using theChart
resource from the@pulumi/kubernetes
package.chart
specifies the name of the chart we want to deploy.fetchOpts.repo
is the Helm repository containing your chart. Replacehttps://example.com/helm/repo
with the actual URL of the Helm repository containing thets3-manager
chart.values
provides the configuration overrides for the chart. These values will depend on the specifics of thets3-manager
chart and how you wish to configure it.
- We use
kubeConfig
from the OpenShift cluster resource which contains the necessary credentials to connect to the OpenShift cluster. - We define two exports
openshiftApiServerUrl
andts3ManagerEndpoint
which hold the API server URL of the OpenShift cluster and the service endpoint of thets3-manager
, respectively.
You will need to fill in the specifics for your Azure account, the OpenShift cluster configuration, and the
ts3-manager
Helm chart configuration.Please be aware that deploying an OpenShift cluster and a Helm chart can take several minutes or more, depending on the options you've selected and the cloud provider's current load.
After running the Pulumi program above with
pulumi up
, your OpenShift cluster will be provisioned, and thets3-manager
Helm chart will be deployed to it. The exported variables will give you the necessary information to access the OpenShift cluster andts3-manager
service.