상호 의존적인 환경 변수 정의하기
상호 의존적인 환경 변수 정의하기 (Define interdependent environment variables for a container)
이 페이지에서는 쿠버네티스 파드에서 컨테이너의 의존적인 환경 변수를 정의하는 방법을 보여줘요.
출처: 문서
본문
시작하기 전에
쿠버네티스 클러스터가 필요하고, kubectl 명령줄 도구가 클러스터와 통신하도록 설정돼 있어야 해요.
컨테이너의 의존적인 환경 변수 정의하기
파드를 만들 때 파드에서 실행되는 컨테이너의 의존적인 환경 변수를 설정할 수 있어요. 의존적인 환경 변수를 설정하려면 구성 파일의 env의 value에서 $(VAR_NAME)을 사용할 수 있습니다.
이 연습에서는 컨테이너 하나를 실행하는 파드를 만들어요. 파드의 구성 파일은 공통 사용법이 정의된 의존적인 환경 변수를 정의합니다. 파드의 구성 매니페스트는 다음과 같아요:
-
그 매니페스트를 기반으로 파드를 만든다:
kubectl apply -f https://k8s.io/examples/pods/inject/dependent-envars.yamlpod/dependent-envars-demo created -
실행 중인 파드를 나열한다:
kubectl get pods dependent-envars-demoNAME READY STATUS RESTARTS AGE dependent-envars-demo 1/1 Running 0 9s -
파드에서 실행 중인 컨테이너의 로그를 확인한다:
kubectl logs pod/dependent-envars-demoUNCHANGED_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)
- 환경 변수에 대해 더 알아보기.
- EnvVarSource 참조.