BackendConfig カスタム リソース

このページでは、BackendConfig カスタム リソースの概要と、Google Kubernetes Engine で Ingress を構成する場合にこれを使用する方法について説明します。また、このページには BackendConfig タイプとそれに関連するタイプの参考資料も記載されています。

概要

BackendConfig は、Kubernetes Engine Ingress コントローラで使用されるカスタム リソース定義です。GKE バージョン 1.10.5-gke.3 以降では、Service ポートを BackendConfig オブジェクトに関連付けると Cloud Load Balancer の構成を指定できます。

BackendConfig を使用すると、HTTP(S) の負荷分散機能を構成できます。

BackendConfig のマニフェストの例を次に示します。このマニフェストでは Cloud CDN のキャッシュ ポリシーを指定し、Cloud CDN の有効化を宣言します。

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: my-backend-config
spec:
  cdn:
    enabled: true
    cachePolicy:
      includeHost: true
      includeProtocol: true
      includeQueryString: false

Service ポートと BackendConfig の関連付け

GKE では、Kubernetes Ingress オブジェクトを作成すると、GKE Ingress コントローラが HTTP(S) ロードバランサを作成して構成します。Ingress にはルールがあり、それぞれのルールが Kubernetes Service オブジェクトのポートを参照します。Ingress が Service ポートを参照する場合、ポートは HTTP(S) 負荷分散バックエンド サービスに関連付けられます。

Ingress が Service ポートを参照し、その Service ポートが BackendConfig に関連付けられている場合、HTTP(S) 負荷分散バックエンド サービスは BackendConfig による構成に影響を与えます。

3 つのポートを持つ Kubernetes Service のマニフェストの例を次に示します。

apiVersion: v1
kind: Service
metadata:
  annotations:
    beta.cloud.google.com/backend-config:
      '{"ports": {"http":"config-http", "http2" :"config-http2"}, "default": "config-default"}'
  name: my-service
spec:
  type: NodePort
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 8080
  - name: http2
    protocol: TCP
    port: 443
    targetPort: 8080
  - name: http3
    protocol: TCP
    port: 49152
    targetPort: 49152
...

beta.cloud.google.com/backend-config アノテーションでは、ポートと BackendConfig オブジェクトの間のマッピングが指定されます。以前のマニフェストは以下のようになっています。

  • http ポートが config-http という名前の BackendConfig に関連付けられている。
  • http2 ポートが config-http2 という名前の BackendConfig に関連付けられている。
  • その Service の他のポートがすべてデフォルトの config-default という名前の BackendConfig に関連付けられている。この例では、http3 ポートは config-default に関連付けられています。

beta.cloud.google.com/backend-config アノテーションでは、ports フィールドと default フィールドのいずれかまたは両方を指定する必要があります。

BackendConfig で指定された構成の取り消し

Service から BackendConfig アノテーションを削除したり、BackendConfig オブジェクトを削除したりしても、BackendConfig で以前に指定された構成は取り消されません。これは、Ingress コントローラは BackendConfig で指定された構成の調整のみを行うためです。

そのため、不要になった設定を取り消すには、BackendConfig で構成を明示的に無効にする必要があります。構成を無効にする例を示します。

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: my-backend-config
spec:
  cdn:
    enabled: false
  securityPolicy:
    name: ""

BackendConfig の削除

BackedConfig を削除するには、次の手順に従います。

  1. まず、Service マニフェストの beta.cloud.google.com/backend-config アノテーションから BackendConfig の名前を削除します。

  2. kubectl apply などを使用して、変更された Service マニフェストをクラスタに適用します。

  3. この時点で BackendConfig を削除できます。BackendConfig の削除は必須ではありません。ここで重要なのは、名前を beta.cloud.google.com/backend-config アノテーションから削除することです。

制限事項

複数の Ingress オブジェクトが(Service、ポート)を参照する場合でも、1 つの(Service、ポート)ペアが使用できるのは 1 つの BackendConfig だけです。つまり、同じ(Service、ポート)を参照するすべての Ingress オブジェクトで、Google Cloud Armor、Cloud IAP、Cloud CDN に対する構成を同一にする必要があります。

Cloud IAP と Cloud CDN を同じ HTTP(S) 負荷分散バックエンド サービスで有効にすることはできません。つまり、同じ BackendConfig に Cloud IAP と Cloud CDN の両方を構成することはできません。

BackendConfig を使用して操作する場合、kubectl 1.7 以降を使用する必要があります。つまり、カスタム リソースをサポートしているバージョンの kubectl が必要です。

次のステップ

リファレンス

BackendConfig v1beta1 cloud.google.com

項目

metav1.TypeMeta

API グループ、バージョン、種類。

metadata

metav1.ObjectMeta

標準のオブジェクト メタデータ

spec

BackendConfigSpec

BackendConfig の動作。

status

BackendConfigStatus

最後にモニタリングされた BackendConfig の状態。

BackendConfigSpec v1beta1 cloud.google.com

項目
iap

IAPConfig

関連する HTTP(S) 負荷分散バックエンド サービスの Cloud IAP 構成。Cloud IAP と Cloud CDN は、同じ HTTP(S) 負荷分散バックエンド サービスに対して有効にすることはできません。

cdn

CDNConfig

関連する HTTP(S) 負荷分散バックエンド サービスの Cloud CDN 構成。Cloud IAP と Cloud CDN は、同じ HTTP(S) 負荷分散バックエンド サービスに対して有効にすることはできません。

securityPolicy

SecurityPolicyConfig

関連する HTTP(S) 負荷分散バックエンド サービスの Cloud Armor 構成。

timeoutSec int64

リクエスト / レスポンスのタイムアウト(秒単位)。デフォルトは 30 秒です。

connectionDraining

ConnectionDrainingConfig

関連する HTTP(S) 負荷分散バックエンド サービスの接続ドレイン構成。

sessionAffinity

SessionAffinityConfig

関連する HTTP(S) 負荷分散バックエンド サービスのセッション アフィニティ構成。

BackendConfigList v1beta1 cloud.google.com

項目

metav1.TypeMeta

API グループ、バージョン、種類。

metadata

metav1.ObjectMeta

標準のオブジェクト メタデータ

items

BackendConfig array

BackendConfig オブジェクトのリスト。

IAPConfig v1beta1 cloud.google.com

項目
enabled

boolean

Cloud IAP を関連する HTTP(S) 負荷分散バックエンド サービスに対して有効にするかどうかを指定します。

oauthclientCredentials

OAuthClientCredentials

OAuth のクライアント ID やクライアント シークレットなどのクライアント認証情報。

OAuthClientCredentials v1beta1 cloud.google.com

項目
secretName

string

OAuth のクライアント ID とクライアント シークレットを格納するシークレットの名前。

clientID

string

OAuth クライアント ID への直接参照。

clientSecret

string

OAuth クライアント シークレットへの直接参照。

CDNConfig v1beta1 cloud.google.com

項目
enabled

boolean

Cloud CDN を関連する HTTP(S) 負荷分散バックエンド サービスに対して有効にするかどうかを指定します。

cachePolicy

CacheKeyPolicy

関連する HTTP(S) 負荷分散バックエンド サービスのキャッシュキー ポリシー。

CacheKeyPolicy v1beta1 cloud.google.com

項目
includeHost

boolean

true の場合、それぞれのホストへのリクエストは個別にキャッシュされます。

includeProtocol

boolean

true の場合、HTTP リクエストと HTTPS リクエストは個別にキャッシュされます。

includeQueryString

boolean

includeQueryString が true の場合、queryStringBlacklistqueryStringWhitelist に従ってクエリ文字列パラメータがキャッシュキーに含まれます。どちらも設定されていない場合は、クエリ文字列全体が含まれます。includeQueryString が false の場合、クエリ文字列全体がキャッシュキーから除外されます。

queryStringBlacklist

string array

キャッシュキーから除外するクエリ文字列パラメータの名前。これ以外のパラメータはすべて含まれます。queryStringBlacklistqueryStringWhitelist のいずれかを指定します。両方を指定することはできません。

queryStringWhitelist

string array

キャッシュキーに含めるクエリ文字列パラメータの名前。これ以外のパラメータはすべて除外されます。queryStringBlacklistqueryStringWhitelist のいずれかを指定します。両方を指定することはできません。

SecurityPolicyConfig v1beta1 cloud.google.com

項目
name

string

適用される Google Cloud Armor セキュリティ ポリシーの名前。

ConnectionDraining v1beta1 cloud.google.com

項目
drainingTimeoutSec

int64

接続がドレインするまで待つ時間(秒)。デフォルトは 0 秒です。

SessionAffinity v1beta1 cloud.google.com

項目
affinityType

string

セッション アフィニティのタイプ。有効な値は、"CLIENT_IP"、"GENERATED_COOKIE"、"NONE" です。デフォルトは "NONE" です。

affinityCookieTtlSec

int64

アフィニティ Cookie の有効期間(秒)。affinityType が "GENERATED_COOKIE" でない場合でも affinityCookieTtlSec を設定できます。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント