1. Deploy the calico-aws helm chart on Rancher


    Deploying a Helm chart on a Rancher-managed Kubernetes cluster involves several steps. First, we need a running Rancher server and a managed Kubernetes cluster. Then we can proceed to deploy the Calico Helm chart. We'll assume you already have a Rancher server and a managed cluster in this scenario.

    We'll use the rancher2 Pulumi provider to interface with Rancher. Specifically, we will use the rancher2.CatalogV2 resource to create a catalog pointing to the Helm chart repository that contains calico-aws, and then we'll deploy the chart using the appropriate resource. Since calico-aws is not directly available in the Pulumi Registry results, we'll add it to a custom catalog in Rancher and then deploy the chart.

    Here's a program written in TypeScript to perform these actions:

    import * as rancher2 from "@pulumi/rancher2"; // Create a new Rancher v2 Catalog const catalog = new rancher2.CatalogV2("calico-catalog", { // Assuming you have a Helm repository containing the calico-aws chart // Replace `<your-helm-chart-repo-url>` with the URL of your actual Helm chart repository url: "<your-helm-chart-repo-url>", clusterId: "<your-cluster-id>", // Replace with your actual cluster ID in Rancher }); // Deploy Calico Helm chart from the added catalog const calicoChart = new rancher2.AppV2("calico-aws", { // Specify which cluster to install the Helm chart on clusterId: "<your-cluster-id>", // The name of the chart chartName: "calico", // Version of the Calico Helm chart to install chartVersion: "<your-chart-version>", // This should match with the custom catalog's namespace namespace: "<your-namespace>", // Reference the catalog created earlier // This tells Rancher where to find the chart repoName: catalog.name, // Any necessary values for Calico installation can go here // Replace with actual values required for your Calico AWS Helm chart values: ` # Your values YAML or an inline values configuration `, }); // Export the chart's name export const calicoChartName = calicoChart.metadata.name;

    In the above program, you'll need to replace the placeholders with the actual values for your setup:

    • <your-helm-chart-repo-url>: URL to your Helm repository where calico-aws chart is stored.
    • <your-cluster-id>: The Rancher Cluster ID where you want to deploy Calico.
    • <your-chart-version>: The specific version of the Calico Helm chart you wish to deploy.
    • <your-namespace>: The Kubernetes namespace into which you want to deploy the Calico Helm chart.

    The rancher2.CatalogV2 resource tells Rancher where to find Helm charts. Then rancher2.AppV2 represents the deployment of the Helm chart to your cluster. values in rancher2.AppV2 holds configuration parameters for the Helm chart; you'll need to provide the specifics for your Calico setup.

    Important Notes:

    • Ensure that you have the correct permissions to deploy charts and configure networking in Rancher.
    • The Calico network policy engine or plugin may have additional prerequisites; make sure your Rancher-managed cluster meets those before deploying.
    • The actual Calico Helm chart may have values different from the generic calico mentioned. Use the correct chart name as per your Helm repository.