1

製品のインフラ リソースをデプロイするための Cloudformation テンプレートがあります。以下は、CF テンプレートを使用して作成する AWS コンポーネントです。 1. ネットワーク コンポーネント。VPC、サブネット、セキュリティ グループなどと同様です。 2. IAM ロールとポリシー。3. EMR 4. EKS 5. MSK 6. RDS 7. Elasticache

Cloudformation テンプレートにも、"Custom::KubeManifest" のようなカスタム リソースはほとんどありません。これにより、AWS EKS クラスターにオブジェクトをデプロイしています。kubernetes オブジェクトの 1 つは「サービス」オブジェクトです。これにより、内部サービスのサービス エンドポイントが作成され、パブリック ネットワークからのリクエストが Kubernetes クラスターに到達できるようになります。

ELB DnsName を出力として表示できるように、Cloudformation テンプレートで既存の ELB DNS 名を参照できるかどうかを確認したかったのです。

たとえば、以下のテンプレートのように「Custom::KubeManifest」リソースを呼び出す場合:

  ServiceDeployment:
    Type: "Custom::KubeManifest"
    Version: '1.0'
    Properties:
      ServiceToken: !Ref KubeManifestLambdaArn
      KubeConfigPath: !Sub "s3://${KubeConfigS3Bucket}/${KubeConfigS3Key}"
      KubeConfigKmsContext: !Ref KmsContext
      Manifest:
        apiVersion: v1
        kind: Service
        metadata:
          name: test
          labels:
            app: client
            tier: master
        spec:
          selector:
            app: client
            tier: master
          ports:
          - name: client-api
            port: 9877
            protocol: TCP
          - name: client-snapshots
            port: 9878
            protocol: TCP
          - name: client-support
            port: 9881
            protocol: TCP
  UiDeployment:
    Type: "Custom::KubeManifest"
    Version: '1.0'
    Properties:
      ServiceToken: !Ref KubeManifestLambdaArn
      KubeConfigPath: !Sub "s3://${KubeConfigS3Bucket}/${KubeConfigS3Key}"
      KubeConfigKmsContext: !Ref KmsContext
      Manifest:
        apiVersion: v1
        kind: Service
        metadata:
          name: client-ui
          annotations:
            service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
            service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*'
            service.beta.kubernetes.io/aws-load-balancer-type: nlb
            service.beta.kubernetes.io/aws-load-balancer-backend-protocol: 'tcp'
            service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "tcp"
            service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
          labels:
            app: client
            tier: master
        spec:
          type: LoadBalancer
          selector:
            app: client
            tier: master
          ports:
          - name: client-ui
            port: 80
            protocol: TCP
            targetPort: 8800
          - name: client-ui-https
            port: 443
            protocol: TCP
            targetPort: 8800

AWS アカウントに ELB を作成し、EKS クラスターのサービス エンドポイントにマップします。ここで、新しく作成された ELB DnsNames を参照して出力として表示できる関数があるかどうかを知りたいと思います。

4

3 に答える 3