constructor()

in trivia-backend/infra/cdk/eks/kubernetes-resources/reinvent-trivia.ts [30:154]


  constructor(parent: Construct, id: string, props: ReinventTriviaResourceProps) {
    const manifest = [
      {
        "apiVersion": "v1",
        "kind": "Namespace",
        "metadata": {
          "name": "reinvent-trivia"
        }
      },
      {
        "apiVersion": "extensions/v1beta1",
        "kind": "Deployment",
        "metadata": {
          "name": "api",
          "namespace": "reinvent-trivia"
        },
        "spec": {
          "replicas": 1,
          "template": {
            "metadata": {
              "labels": {
                "app": "api"
              }
            },
            "spec": {
              "containers": [
                {
                  "image": props.image.imageName,
                  "imagePullPolicy": "Always",
                  "name": "api",
                  "resources": {
                    "requests": {
                      "cpu": "375m",
                      "memory": "1536Mi"
                    }
                  },
                  "ports": [
                    {
                      "containerPort": 80
                    }
                  ],
                  "env": [
                    {
                      "name": "KUBE_NODE_NAME",
                      "valueFrom": {
                        "fieldRef": {
                          "fieldPath": "spec.nodeName"
                        }
                      }
                    },
                    {
                      "name": "KUBE_POD_NAME",
                      "valueFrom": {
                        "fieldRef": {
                          "fieldPath": "metadata.name"
                        }
                      }
                    }
                  ]
                }
              ]
            }
          }
        }
      },
      {
        "apiVersion": "v1",
        "kind": "Service",
        "metadata": {
          "name": "api",
          "namespace": "reinvent-trivia",
        },
        "spec": {
          "ports": [
            {
              "port": 80,
              "targetPort": 80,
              "protocol": "TCP"
            }
          ],
          "type": "NodePort",
          "selector": {
            "app": "api"
          }
        }
      },
      {
        "apiVersion": "extensions/v1beta1",
        "kind": "Ingress",
        "metadata": {
          "name": "api",
          "namespace": "reinvent-trivia",
          "annotations": {
            "kubernetes.io/ingress.class": "alb",
            "alb.ingress.kubernetes.io/scheme": "internet-facing",
            "alb.ingress.kubernetes.io/target-type": "ip",
            "alb.ingress.kubernetes.io/certificate-arn": props.certificate.certificateArn,
            "external-dns.alpha.kubernetes.io/hostname": props.domainName,
          },
          "labels": {
            "app": "api"
          }
        },
        "spec": {
          "rules": [
            {
              "http": {
                "paths": [
                  {
                    "path": "/*",
                    "backend": {
                      "serviceName": "api",
                      "servicePort": 80
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    ]

    super(parent, id, {cluster: props.cluster, manifest})
  }