in observability/lib/opentelemetry-stack.ts [9:48]
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const cluster = importCluster(this, process.env.CLUSTER_NAME);
const clusterName = cluster.clusterName;
const adotNamespace = {
apiVersion: "v1",
kind: "Namespace",
metadata: {
name: "adot-col",
labels: {
name: "adot-col"
}
}
};
const namespace = new eks.KubernetesManifest(this, "OpenTelemetryNS", {
cluster,
manifest: [ adotNamespace ]
});
// SA for the Controller
const sa = createIAMServiceAccount(
this, cluster, "adot-col", "adot-collector",
path.resolve("resources/adot-iam-policy.json"))
sa.node.addDependency(namespace);
sa.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName("AmazonPrometheusQueryAccess"));
sa.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName("AmazonPrometheusRemoteWriteAccess"));
// OpenTelemetry Agent
const configMap = applyManifest(
path.resolve("dist/adot-configmap.yaml"), cluster);
configMap.node.addDependency(namespace);
const daemonSet = applyManifest(
path.resolve("resources/adot-daemonset.yaml"), cluster);
daemonSet.node.addDependency(configMap);
daemonSet.node.addDependency(sa);
}