constructor()

in infra/lib/addons/aws-lbc.ts [13:46]


  constructor(scope: Construct, id: string, props: AWSLoadBalancerControllerProps) {
    super(scope, id);

    const sa = props.cluster.addServiceAccount('aws-lbc', {
      namespace: props.namespace
    });

    sa.role.addManagedPolicy({
      managedPolicyArn: `arn:aws:iam::${Aws.ACCOUNT_ID}:policy/AWSLoadBalancerControllerIAMPolicy`
    });

    const awsLbcCrdsUrl = 'https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml'
    const awsLbcCrdsManifest = yaml.loadAll(request.default('GET', awsLbcCrdsUrl).getBody().toString());
    const awsLbcCrdsManifestResource = props.cluster.addManifest('awsLbcCrdManifest', awsLbcCrdsManifest);
    
    const chart = props.cluster.addHelmChart('AWSLBCHelmChart', {
      chart: 'aws-load-balancer-controller',
      release: 'aws-load-balancer-controller',
      repository: 'https://aws.github.io/eks-charts',
      namespace: props.namespace,
      createNamespace: false,
      values: {
        'clusterName': `${props.cluster.clusterName}`,
        'serviceAccount': {
          'create': false,
          'name': sa.serviceAccountName,
          'annotations': {
            'eks.amazonaws.com/role-arn': sa.role.roleArn
          }
        }
      }
    });
    chart.node.addDependency(awsLbcCrdsManifestResource);
  }