BackendConfig 커스텀 리소스

이 페이지에서는 BackendConfig 커스텀 리소스에 대한 개요를 제공하고 이를 사용하여 Google Kubernetes Engine에서 인그레스를 구성하는 방법을 설명합니다. 이 페이지에서는 또한 BackendConfig 유형 및 관련 유형에 대한 참조 자료를 제공합니다.

개요

BackendConfig는 Kubernetes Engine 인그레스 컨트롤러에서 사용된 커스텀 리소스 정의입니다. GKE 버전 1.10.5-gke.3부터는 서비스 포트를 BackendConfig 객체와 연결하여 Cloud 부하 분산기에 대한 구성을 제공할 수 있습니다.

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

서비스 포트를 BackendConfig와 연결

GKE에서 Kubernetes Ingress 객체를 만들면 GKE 인그레스 컨트롤러는 자동으로 HTTP(S) 부하 분산기를 만들고 구성합니다. 인그레스에는 각각 Kubernetes 서비스 객체의 포트를 참조하는 규칙이 포함됩니다. 서비스 포트가 인그레스에서 참조되는 경우 이 포트는 HTTP(S) 부하 분산 백엔드 서비스에 연결됩니다.

서비스 포트가 인그레스에서 참조되는 경우, 그리고 서비스 포트가 BackendConfig와 연결된 경우, HTTP(S) 부하 분산 백엔드 서비스는 BackendConfig에서 해당 구성을 사용합니다.

다음은 3개 포트가 포함된 Kubernetes 서비스 매니페스트입니다.

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와 연결됩니다.
  • 서비스의 다른 모든 포트는 config-default라는 기본 BackendConfig와 연결됩니다. 따라서 이 예시에서 http3 포트는 config-default와 연결됩니다.

beta.cloud.google.com/backend-config 주석에서는 ports 필드나 default 필드 또는 둘 다 지정해야 합니다.

BackendConfig에 지정된 구성 취소

서비스에서 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. 먼저 서비스 매니페스트에 있는 beta.cloud.google.com/backend-config 주석에서 BackendConfig의 이름을 삭제합니다.

  2. 변경된 서비스 매니페스트를 클러스터에 적용합니다(예: kubectl apply 사용).

  3. 이제 BackendConfig를 삭제할 수 있습니다. 단, BackendConfig를 삭제하지 않아도 됩니다. 중요한 것은 beta.cloud.google.com/backend-config 주석에서 해당 이름을 삭제하는 것입니다.

제한사항

여러 인그레스 객체가 (서비스, 포트)를 참조하더라도 1개의 (서비스, 포트) 쌍은 BackendConfig를 1개만 사용할 수 있습니다. 즉, 동일한 (서비스, 포트)를 참조하는 모든 인그레스 객체는 Google Cloud Armor, Cloud IAP, Cloud CDN에 대해 동일한 구성을 사용해야 합니다.

동일한 HTTP(S) 부하 분산 백엔드 서비스에는 IAP 및 Cloud CDN을 사용 설정할 수 없습니다. 즉, 동일한 BackendConfig에서 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) 부하 분산 백엔드 서비스의 IAP 구성입니다. 동일한 HTTP(S) 부하 분산 백엔드 서비스에 대해서는 IAP 및 Cloud CDN을 사용 설정할 수 없습니다.

cdn

CDNConfig

연결된 HTTP(S) 부하 분산 백엔드 서비스의 Cloud CDN 구성입니다. 동일한 HTTP(S) 부하 분산 백엔드 서비스에 대해서는 IAP 및 Cloud CDN을 사용 설정할 수 없습니다.

securityPolicy

SecurityPolicyConfig

연결된 HTTP(S) 부하 분산 백엔드 서비스의 Google 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

연결된 HTTP(S) 부하 분산 백엔드 서비스에 IAP를 사용 설정할지 여부를 지정합니다.

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

연결된 HTTP(S) 부하 분산 백엔드 서비스에 Cloud CDN을 사용 설정할지 여부를 지정합니다.

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

캐시 키에서 제외할 쿼리 문자열 매개변수의 이름입니다. 다른 모든 매개변수가 포함됩니다. queryStringBlacklist 또는 queryStringWhitelist 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

queryStringWhitelist

string array

캐시 키에 포함할 쿼리 문자열 매개변수의 이름입니다. 다른 모든 매개변수는 제외됩니다. queryStringBlacklist 또는 queryStringWhitelist 중 하나를 지정할 수 있지만 둘 다 지정할 수는 없습니다.

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

어피니티 쿠키의 TTL(수명)입니다(초). affinityType이 'GENERATED_COOKIE'가 아니어도 affinityCookieTtlSec을 설정할 수 있습니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine 문서