override deploy()

in lib/addons/appmesh/index.ts [60:104]


    override deploy(clusterInfo: ClusterInfo): void {

        const cluster = clusterInfo.cluster;

        // App Mesh service account.
        const opts = { name: 'appmesh-controller', namespace: "appmesh-system" };
        const sa = cluster.addServiceAccount('appmesh-controller', opts);

        // Cloud Map Full Access policy.
        const cloudMapPolicy = ManagedPolicy.fromAwsManagedPolicyName("AWSCloudMapFullAccess");
        sa.role.addManagedPolicy(cloudMapPolicy);

        // App Mesh Full Access policy.
        const appMeshPolicy = ManagedPolicy.fromAwsManagedPolicyName("AWSAppMeshFullAccess");
        sa.role.addManagedPolicy(appMeshPolicy);

        if (this.options.enableTracing && this.options.tracingProvider === "x-ray") {
            const ng = assertEC2NodeGroup(clusterInfo, "App Mesh X-Ray integration");
            const xrayPolicy = ManagedPolicy.fromAwsManagedPolicyName("AWSXRayDaemonWriteAccess");
            ng.role.addManagedPolicy(xrayPolicy);
        }

        // App Mesh Namespace
        const namespace = createNamespace('appmesh-system', cluster);
        sa.node.addDependency(namespace);

        let values: Values = {
            region: cluster.stack.region,
            serviceAccount: {
                create: false,
                name: 'appmesh-controller'
            },
            tracing: {
                enabled: this.options.enableTracing,
                provider: this.options.tracingProvider,
                address: this.options.tracingAddress,
                port: this.options.tracingPort
            }
        };

        values = merge(values, this.props.values ?? {});
        
        const chart = this.addHelmChart(clusterInfo, values);
        chart.node.addDependency(sa);
    }