constructor()

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