상호 의존적인 환경 변수 정의하기

상호 의존적인 환경 변수 정의하기 (Define interdependent environment variables for a container)

이 페이지에서는 쿠버네티스 파드에서 컨테이너의 의존적인 환경 변수를 정의하는 방법을 보여줘요.

출처: 문서

본문

시작하기 전에

쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 설정돼 있어야 해요.

컨테이너의 의존적인 환경 변수 정의하기

파드를 만들 때 파드에서 실행되는 컨테이너의 의존적인 환경 변수를 설정할 수 있어요. 의존적인 환경 변수를 설정하려면 구성 파일의 envvalue에서 $(VAR_NAME)을 사용할 수 있습니다.

이 연습에서는 컨테이너 하나를 실행하는 파드를 만들어요. 파드의 구성 파일은 공통 사용법이 정의된 의존적인 환경 변수를 정의합니다. 파드의 구성 매니페스트는 다음과 같아요:

  1. 그 매니페스트를 기반으로 파드를 만든다:

    kubectl apply -f https://k8s.io/examples/pods/inject/dependent-envars.yaml
    
    pod/dependent-envars-demo created
    
  2. 실행 중인 파드를 나열한다:

    kubectl get pods dependent-envars-demo
    
    NAME                      READY     STATUS    RESTARTS   AGE
    dependent-envars-demo     1/1       Running   0          9s
    
  3. 파드에서 실행 중인 컨테이너의 로그를 확인한다:

    kubectl logs pod/dependent-envars-demo
    
    UNCHANGED_REFERENCE=$(PROTOCOL)://172.17.0.1:80
    SERVICE_ADDRESS=https://172.17.0.1:80
    ESCAPED_REFERENCE=$(PROTOCOL)://172.17.0.1:80
    

위에서 보듯 SERVICE_ADDRESS의 올바른 의존성 참조, UNCHANGED_REFERENCE의 잘못된 의존성 참조, ESCAPED_REFERENCE의 건너뛴 의존성 참조를 정의했어요.

참조될 때 환경 변수가 이미 정의되어 있으면 SERVICE_ADDRESS의 경우처럼 참조를 올바르게 해석할 수 있습니다.

env 목록에서 순서가 중요하다는 점에 주의하세요. 목록에서 더 아래에 지정된 환경 변수는 "정의된" 것으로 간주되지 않습니다. 그래서 위 예시에서 UNCHANGED_REFERENCE$(PROTOCOL)을 해석하지 못하는 거예요.

환경 변수가 정의되지 않았거나 일부 변수만 포함하는 경우, 정의되지 않은 환경 변수는 UNCHANGED_REFERENCE처럼 일반 문자열로 취급됩니다. 일반적으로 잘못 파싱된 환경 변수는 컨테이너가 시작되는 것을 막지 않는다는 점에 주의하세요.

$(VAR_NAME) 구문은 이중 $, 즉 $$(VAR_NAME)로 이스케이프할 수 있어요. 이스케이프된 참조는 참조된 변수가 정의되었든 아니든 절대 확장되지 않습니다. 이는 위의 ESCAPED_REFERENCE 경우에서 볼 수 있습니다.

더 알아보기 (Learn more)