Search code examples
kubernetesamazon-eksamazon-efspulumi

How do I deploy the AWS EFS CSI Driver Helm chart from https://kubernetes-sigs.github.io/aws-efs-csi-driver/ using Pulimi


I would like to be able to deploy the AWS EFS CSI Driver Helm chart hosted at AWS EFS SIG Repo using Pulumi. With Source from AWS EFS CSI Driver Github Source. I would like to avoid having almost everything managed with Pulumi except this one part of my infrastructure.

Below is the TypeScript class I created to manage interacting with the k8s.helm.v3.Release class:

import * as k8s from '@pulumi/kubernetes';
import * as eks from '@pulumi/eks';

export default class AwsEfsCsiDriverHelmRepo extends k8s.helm.v3.Release {
  constructor(cluster: eks.Cluster) {
    super(`aws-efs-csi-driver`, {
      chart: `aws-efs-csi-driver`,
      version: `1.3.6`,
      repositoryOpts: {
        repo: `https://kubernetes-sigs.github.io/aws-efs-csi-driver/`,
      },
      namespace: `kube-system`,
    }, { provider: cluster.provider });
  }
}

I've tried several variations on the above code, chopping of the -driver in the name, removing aws-cfs-csi-driver from the repo property, changing to latest for the version.

When I do a pulumi up I get: failed to pull chart: chart "aws-efs-csi-driver" version "1.3.6" not found in https://kubernetes-sigs.github.io/aws-efs-csi-driver/ repository

$ helm version
version.BuildInfo{Version:"v3.7.0", GitCommit:"eeac83883cb4014fe60267ec6373570374ce770b", GitTreeState:"clean", GoVersion:"go1.16.8"}
$ pulumi version
v3.24.1

Solution

  • You're using the wrong version in your chart invocation.

    The version you're selecting is the application version, ie the release version of the underlying application. You need to set the Chart version, see here which is defined here

    the following works:

    const csiDrive = new kubernetes.helm.v3.Release("csi", {
      chart: `aws-efs-csi-driver`,
      version: `2.2.3`,
      repositoryOpts: {
        repo: `https://kubernetes-sigs.github.io/aws-efs-csi-driver/`,
      },
      namespace: `kube-system`,
    });
    

    If you want to use the existing code you have, try this:

    import * as k8s from '@pulumi/kubernetes';
    import * as eks from '@pulumi/eks';
    
    export default class AwsEfsCsiDriverHelmRepo extends k8s.helm.v3.Release {
      constructor(cluster: eks.Cluster) {
        super(`aws-efs-csi-driver`, {
          chart: `aws-efs-csi-driver`,
          version: `2.2.3`,
          repositoryOpts: {
            repo: `https://kubernetes-sigs.github.io/aws-efs-csi-driver/`,
          },
          namespace: `kube-system`,
        }, { provider: cluster.provider });
      }
    }