Deploy the cognitive-services-speech-onpremise helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo deploy the
cognitive-services-speech-onpremise
Helm chart on Azure Kubernetes Service (AKS), we will go through the following steps:-
Create an AKS Cluster: Before deploying any applications, we need a Kubernetes cluster. We'll use Pulumi's Azure Native provider to provision an AKS cluster.
-
Install the Helm Chart: Once we have our Kubernetes cluster, we can use Pulumi's Kubernetes provider to install Helm charts into the AKS cluster.
Here's a detailed explanation step by step:
1. Provisioning an AKS Cluster
We'll use
azure-native.hybridcontainerservice.ProvisionedCluster
to create a new AKS cluster. Make sure the location and other parameters are set according to your needs.2. Deploying Helm Chart to AKS
For the deployment of Helm charts, we can utilize Pulumi's Kubernetes provider, particularly the
kubernetes.helm.v3.Chart
resource which simplifies deploying Helm charts.Below is a TypeScript program that defines the resources using Pulumi. To apply this Pulumi code, save it to a file (e.g.,
index.ts
), ensure you have the associated Pulumi project and stack set up, and then runpulumi up
within that directory.import * as pulumi from "@pulumi/pulumi"; import * as azureNative from "@pulumi/azure-native"; import * as kubernetes from "@pulumi/kubernetes"; // Create an Azure Resource Group const resourceGroup = new azureNative.resources.ResourceGroup("myResourceGroup"); // Create an AKS cluster const cluster = new azureNative.containerservice.ManagedCluster("myAksCluster", { resourceGroupName: resourceGroup.name, agentPoolProfiles: [{ count: 3, // Number of VMs to use for the default node pool vmSize: "Standard_DS2_v2", name: "agentpool", osType: "Linux", }], dnsPrefix: "myakscluster", enableRbac: true, }); // Export the cluster's kubeconfig export const kubeconfig = cluster.kubeConfig.apply(c => { const file = require("fs").writeFileSync("kubeconfig", c); return c; }); // Create a Kubernetes provider instance using the kubeconfig const k8sProvider = new kubernetes.Provider("k8sProvider", { kubeconfig: cluster.kubeConfig.apply(JSON.stringify), }); // Install the cognitive-services-speech-onpremise Helm chart const cognitiveServicesChart = new kubernetes.helm.v3.Chart("cognitive-services-speech-onpremise", { repo: "myhelmrepo", // TODO: Ensure you specify the correct Helm repository chart: "cognitive-services-speech-onpremise", version: "1.0.0", // Replace with your desired chart version // You can specify the values for the Helm chart here using 'values' property // values: { /* Custom values here */ }, }, { provider: k8sProvider }); // Export the URL of the deployed service export const cognitiveServiceEndpoint = cognitiveServicesChart.getResourceProperty("v1/Service", "cognitive-services-speech-onpremise", "status").apply(status => status.loadBalancer.ingress[0].hostname);
Let's go over what this Pulumi program does:
- First, we import the necessary Pulumi packages.
- We create an Azure Resource Group to hold our AKS cluster.
- Then, we define and provision the AKS cluster and specify parameters such as the VM size and enable RBAC for security.
- We export the generated
kubeconfig
so you can interact with your AKS cluster usingkubectl
. The kubeconfig will be written to a file namedkubeconfig
. - We create a provider for Kubernetes which will be responsible for the interaction between Pulumi and the Kubernetes APIs exposed by our AKS cluster. We specify the recently generated
kubeconfig
for the Kubernetes provider. - We use the Helm chart resource to deploy
cognitive-services-speech-onpremise
to our AKS cluster. You'll need to specify the correct Helm repository URL where the Helm chart is located and any custom values required for the deployment. - Finally, we export the endpoint of the
cognitive-services-speech-onpremise
service assuming it's a LoadBalancer service type. If the service is not of type LoadBalancer or if you've given it a different name, you'll need to modify this part of the code accordingly.
Make sure to replace the placeholder values for the Helm repository and chart version with the actual values for the
cognitive-services-speech-onpremise
chart.Remember to have the Azure CLI configured and logged in, and the Pulumi CLI installed and set up on your machine before running this program. This code, when executed, will result in actual cloud resources being provisioned and may incur costs.
-