1. Deploy the kserve-inference helm chart on Azure Kubernetes Service (AKS)


    Deploying a Helm chart on Azure Kubernetes Service (AKS) requires a few steps:

    1. Set up an AKS cluster to deploy applications onto.
    2. Install and configure the Helm CLI on your local machine or within an environment where you're running Pulumi.
    3. Write the Pulumi code to declare the AKS cluster and use the Helm chart resource to deploy kserve-inference onto the cluster.

    Below, I'll provide a Pulumi program written in TypeScript to accomplish these steps. Comments are included within the code to explain each part of the process.

    First, you must have Pulumi installed and configured for Azure, including setting up any required Azure credentials. Make sure you have also installed Node.js and the Pulumi CLI.

    Here's how the TypeScript program looks:

    import * as azure from "@pulumi/azure"; import * as k8s from "@pulumi/kubernetes"; import * as pulumi from "@pulumi/pulumi"; // Create a resource group for the AKS cluster const resourceGroup = new azure.core.ResourceGroup("aksResourceGroup", { location: "East US", // Choose the appropriate Azure region }); // Create an AKS cluster const cluster = new azure.containerservice.KubernetesCluster("aksCluster", { location: resourceGroup.location, resourceGroupName: resourceGroup.name, agentPoolProfiles: [{ name: "aksagentpool", count: 3, // Define the number of nodes (VMs) in the cluster vmSize: "Standard_DS2_v2", // Define the VM size for the nodes }], dnsPrefix: "kserve-aks", // This should be a unique prefix in Azure linuxProfile: { adminUsername: "aksuser", sshKey: { keyData: "<ssh-rsa PUBLIC_KEY>", // Replace with your SSH public key }, }, }); // Create a provider for the created AKS cluster. const k8sProvider = new k8s.Provider("aksK8s", { kubeconfig: cluster.kubeConfigRaw, }); // Deploy the 'kserve-inference' Helm chart into the AKS cluster. const kserveHelmChart = new k8s.helm.v3.Chart("kserve-inference", { chart: "kserve", version: "0.7.0", // Define the chart version namespace: "kserve", // Define the namespace where 'kserve' will be installed fetchOpts:{ repo: "https://kserve.github.io/kserve/", // Helm chart repository for kserve }, }, { provider: k8sProvider }); // Export the Kubernetes cluster name and kubeconfig export const kubeConfig = cluster.kubeConfigRaw; export const clusterName = cluster.name;

    You need to add the Helm chart repository for kserve, which you can find in the official documentation or source where kserve is maintained. The chart name and version might also differ; you should adjust them according to the actual Helm chart details.

    Make sure to replace the <ssh-rsa PUBLIC_KEY> part with your actual SSH public key to ensure you can access the Kubernetes nodes securely.

    When you run the program using the pulumi up command, Pulumi will:

    1. Create a new resource group for the AKS cluster.
    2. Provision an AKS cluster with a specified number of nodes and VM size.
    3. Configure the Kubernetes provider to manage resources in the AKS cluster.
    4. Deploy the kserve-inference Helm chart to the AKS cluster using the specified Helm repository.

    After deploying, you can access the kubeConfig and clusterName as stack outputs. You can use kubeConfig to configure kubectl or other Kubernetes tooling to interact with your AKS cluster.