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);
}