Deploy the teleport-plugin-pagerduty helm chart on Azure Kubernetes Service (AKS)
TypeScriptTo deploy the
teleport-plugin-pagerduty
Helm chart on Azure Kubernetes Service (AKS), we'll perform the following steps:- Set up an AKS cluster: We will create an Azure Kubernetes Service (AKS) cluster resource using Pulumi's
azure-native
package. - Install the Helm chart: Once the AKS cluster is provisioned, we will deploy the
teleport-plugin-pagerduty
Helm chart into our AKS cluster using Pulumi'skubernetes
package.
Before you proceed, make sure you have:
- Pulumi CLI installed and configured for Azure access.
- Azure CLI installed and logged in (
az login
) to your Azure account. - Helm CLI installed if you need to customize chart values or inspect Helm charts.
- Configured your Pulumi program to use the required secrets and configuration values where needed.
Now let's create our Pulumi program in TypeScript.
import * as azure from "@pulumi/azure"; import * as azuread from "@pulumi/azuread"; import * as pulumi from "@pulumi/pulumi"; import * as k8s from "@pulumi/kubernetes"; // Create an Azure Resource Group const resourceGroup = new azure.core.ResourceGroup("myResourceGroup"); // Create an Azure AD Service Principal for the AKS cluster const adApp = new azuread.Application("aks"); const adSp = new azuread.ServicePrincipal("aksSp", { applicationId: adApp.applicationId }); const adSpPassword = new azuread.ServicePrincipalPassword("aksSpPassword", { servicePrincipalId: adSp.id, value: "PASSWORD_HERE", // Replace with a secure password endDate: "2099-01-01T00:00:00Z", }); // Create the AKS cluster const cluster = new azure.containerservice.KubernetesCluster("myAksCluster", { resourceGroupName: resourceGroup.name, dnsPrefix: pulumi.interpolate`${resourceGroup.name}-kube`, linuxProfile: { adminUsername: "adminuser", sshKey: { keyData: "SSH_RSA_PUBLIC_KEY", // Replace with your SSH public key }, }, servicePrincipal: { clientId: adApp.applicationId, clientSecret: adSpPassword.value, }, agentPoolProfiles: [{ name: "agentpool", count: 2, vmSize: "Standard_DS2_v2", }], kubernetesVersion: "1.20.9", }); // Export the cluster's kubeconfig export const kubeconfig = cluster.kubeConfigRaw; // Deploy the teleport-plugin-pagerduty Helm chart into the AKS cluster const teleportPagerdutyChart = new k8s.helm.v3.Chart("teleport-plugin-pagerduty-chart", { chart: "teleport-plugin-pagerduty", // You can specify the repository if the chart is not in the default Helm repo, // e.g., `repo: "https://charts.example.com/"` version: "0.1.0", // Replace with your desired chart version // You can use `values` to override default chart values // values: { /* Your custom chart values here */ }, }, { provider: new k8s.Provider("k8s-provider", { kubeconfig: cluster.kubeConfigRaw }) });
In the above program:
- Replace
"PASSWORD_HERE"
with a secure password for your AKS Service Principal. - Replace
"SSH_RSA_PUBLIC_KEY"
with your SSH public key to enable SSH access to AKS nodes. - The AKS cluster configuration sets up a default node pool with 2 nodes using
Standard_DS2_v2
VMs. - The Helm chart deployment creates a new instance of the
teleport-plugin-pagerduty
Helm chart. - You might need to specify the
repo
andversion
in theChart
args based on where the Helm chart is hosted and the version you want to deploy. - If you need to customize the Helm chart, use the
values
argument to override the default values provided by the Helm chart. kubeconfig
is exported to allow you to access the Kubernetes cluster using tools likekubectl
.- A new instance of Pulumi's Kubernetes provider is created dynamically using the kubeconfig of the deployed cluster.
After running this Pulumi program with
pulumi up
, your AKS cluster will be ready and theteleport-plugin-pagerduty
Helm chart will be deployed to your cluster. You can then manage your Helm chart's deployed services through Kubernetes management tools such askubectl
using the exported kubeconfig.Remember to take care of your Kubernetes cluster's security settings, integrate it into your network, and configure cloud monitoring and logging as required for your setup.
- Set up an AKS cluster: We will create an Azure Kubernetes Service (AKS) cluster resource using Pulumi's