BackendConfig 커스텀 리소스

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

개요

BackendConfig는 Kubernetes Engine Ingress 컨트롤러에서 사용되는 커스텀 리소스 정의입니다. 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 Ingress 컨트롤러는 사용자를 위해 HTTP(S) 부하 분산기를 만들고 구성합니다. Ingress에는 각각 Kubernetes 서비스 객체를 참조하는 규칙이 포함됩니다. 서비스 포트가 Ingress에서 참조되는 경우, 포트가 HTTP(S) 부하 분산 백엔드 서비스와 연관됩니다.

서비스 포트가 Ingress에서 참조되는 경우, 그리고 서비스 포트가 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 주석에서 해당 이름을 삭제하는 것입니다.

제한사항

여러 Ingress 객체가 (서비스, 포트)를 참조하더라도, 하나의 (서비스, 포트) 쌍은 하BackendConfig를 하나만 소비할 수 있습니다. 즉, 동일한 (서비스, 포트)를 참조하는 모든 Ingress 객체는 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 구성입니다. 동일한 HTTP(S) 부하 분산 백엔드 서비스에 대해서는 Cloud IAP 및 Cloud CDN을 사용 설정할 수 없습니다.

cdn

CDNConfig

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

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

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

적용할 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