機能

負荷分散

HTTP(S) 負荷分散

Ingressで複数のバックエンドServiceを設定できる。設定例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: my-products
          servicePort: 60000
      - path: /discounted
        backend:
          serviceName: my-discounted-products
          servicePort: 80

Managed SSL certificateを使う

https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs

  • GCPの静的IPを払い出し、対象のDNSレコードに設定する必要がある

See also https://sites.google.com/site/progrhymetechwiki/cloud/gcp/gclb#TOC-SSL-

HTTPの無効化

https://cloud.google.com/kubernetes-engine/docs/concepts/ingress?hl=ja#disabling_http

HTTPSのみを使うときはアノテーション kubernetes.io/ingress.allow-http の値を "false" に設定する。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress-2
  annotations:
    kubernetes.io/ingress.allow-http: "false"
spec:
  tls:
  - secretName: my-secret
  ...

※2020-03-04現在、K8sのバージョンによっては、マネージドSSL証明書を使う場合は、 ingress.gcp.kubernetes.io/pre-shared-cert アノテーションの値に証明書名を入れる必要がある。1.15.x-gke.y の場合は自動でアノテーション付けてくれるっぽい。
See https://github.com/kubernetes/ingress-gce/issues/1001

内部TCP/UDP負荷分散

内部 TCP / UDP 負荷分散 | Kubernetes Engine のドキュメント | Google Cloud

2020-03-25現在、β版

  • Serviceを type: LoadBalancer で作成し、所定のannotationを入れる
  • 内部LBが作成される
  • Ingressは不要
  • Compute InstanceGroupで振り分けされる
    • 2020-03-25現在、ネットワークエンドポイントグループには対応していない
  • 同じDeploymentで、内部LBのServiceと外部HTTP(S)負荷分散用の2つのServiceを持つことができる

Example:

apiVersion: v1
kind: Service
metadata:
  name: ilb-service
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: hello
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP

BackendConfig

https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features

GKE固有のcustom resource.

BackendConfigによって、HTTP(S) Load Balancingに以下の機能を設定できる:

仕様:

  • デフォルトのタイムアウト: 30秒

Example:

  • タイムアウトを40秒に設定
  • 接続ドレインタイムアウトを60秒に設定
apiVersion: cloud.google.com/v1beta1
    kind: BackendConfig
    metadata:
      name: my-bsc-backendconfig
    spec:
      timeoutSec: 40
      connectionDraining:
        drainingTimeoutSec: 60

Workload Identity

Workload Identity | Kubernetes Engine ドキュメント | Google Cloud

  • GCP Service AccountとK8s Service Accountの紐付け設定をすることができる
  • GKE Metadata Serverを有効にしている必要があるようだ

メリット:

  • GCP Service Account Keyが不要になる

Config Connector

Config Connector の概要 | Config Connector のドキュメント | Google Cloud

  • K8s addon.
  • K8sのCRDと関連するコントローラを提供してくれる
  • あたかもK8sのリソースかのようにGCPリソースを管理できるようになる

参考:

最終更新 2021-03-09: [gke] Split feature page (d0e00c292)