2

私は初めての GKE でのデプロイに取り組んでいるので、コンセプトについてはまったくの初心者ですが、ツールがどこに向かっているのかは理解しています。自信を持つには経験が必要です。

まず、約 5 つのサービスを持つクラスターがあり、そのうちの 2 つを外部ロード バランサー経由で公開したいと考えています。負荷分散の下でこれらを設定するために Gcloud の注釈を定義しましたが、それは機能しているようです。サービスのネットワーク エンドポイント グループを設定する注釈も設定しました。配置マニフェストとサービス マニフェストのように構成する方法を次に示します。

---
#api-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    kompose.cmd: kompose convert -f ./docker-compose.yml
    kompose.version: 1.21.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: api
  name: api
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: api
  strategy:
    type: Recreate
  template:
    metadata:
      annotations:
        kompose.cmd: kompose convert -f ./docker-compose.yml
        kompose.version: 1.21.0 ()
      creationTimestamp: null
      labels:
        io.kompose.service: api
    spec:
      containers:
      - args:
        - bash
        - -c
        - node src/server.js
        env:
        - name: NODE_ENV
          value: production
        - name: TZ
          value: America/New_York
        image: gcr.io/<PROJECT_ID>/api
        imagePullPolicy: Always
        name: api
        ports:
        - containerPort: 8087
        resources: {}
      restartPolicy: Always
      serviceAccountName: ""
status: {}

---
#api-service.yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    cloud.google.com/neg: '{"ingress": true}'
  creationTimestamp: null
  labels:
    io.kompose.service: api
  name: api
spec:
  type: LoadBalancer
  ports:
  - name: "8087"
    port: 8087
    targetPort: 8087
status:
  loadBalancer: {}


ここである種の構成が欠落している可能性があると思いますが、わかりません。

また、追加することで、yaml で Liveness チェックを定義できる場所も確認しました。

livenessProbe:
      httpGet:
        path: /healthz
        port: 8080

また、イングレスを次のように構成しています。

---
# master-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: master-application-ingress
  annotations:
    ingress.kubernetes.io/secure-backends: "true"
spec:
  rules:
  - http:
      paths:
      - path: /api
        backend:
          serviceName: api
          servicePort: 8087
  - http:
      paths:
      - path: /ui
        backend:
          serviceName: ui
          servicePort: 80

TCPチェックのためにポートが必要なだけの場所を見てきましたが、アプリケーションとロードバランサーでこれらをすでに定義しています。これらのチェックを定義する場所を知りたいと思います。

また、アノテーションによって作成された NEG が空であるという問題がありますか、それともマニフェストで作成された NEG では正常ですか?

4

2 に答える 2