본문 바로가기

Cloud

(Kubernetes) - application에 data 주입 2

반응형

🍳머리말

종속 환경 변수 정의하는 설명글입니다. k8s cluster, node 3개 이상 필요합니다.


📕Container를 위한 종속 환경 변수 정의

📔 설명

pod 생성 시, pod 안에서 동작하는 container를 위한 종속 환경 변수를 설정할 수 있습니다. 종속 환경 변수를 설정하려면, 구성 file에 env의 value로 ${변수명}을 사용합니다.

📔 예제

한 개의 container를 실행하는 pod 생성. pod를 위한 구성 file은 일반적인 방식으로 정의된 종속 환경 변수를 정의합니다. 다음은 pod를 위한 구성 manifest 예시입니다.

dependent-envars.yaml

apiVersion: v1
kind: Pod
metadata:
  name: dependent-envars-demo
spec:
  containers:
    - name: dependent-envars-demo
      args:
        - while true; do echo -en '\n'; printf UNCHANGED_REFERENCE=$UNCHANGED_REFERENCE'\n'; printf SERVICE_ADDRESS=$SERVICE_ADDRESS'\n';printf ESCAPED_REFERENCE=$ESCAPED_REFERENCE'\n'; sleep 30; done;
      command:
        - sh
        - -c
      image: busybox
      env:
        - name: SERVICE_PORT
          value: "80"
        - name: SERVICE_IP
          value: "172.17.0.1"
        - name: UNCHANGED_REFERENCE
          value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
        - name: PROTOCOL
          value: "https"
        - name: SERVICE_ADDRESS
          value: "$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"
        - name: ESCAPED_REFERENCE
          value: "$$(PROTOCOL)://$(SERVICE_IP):$(SERVICE_PORT)"

pod 생성

kubectl apply -f https://k8s.io/examples/pods/inject/dependent-envars.yaml

또는

kubectl apply -f 만든yaml명

 

pod 생성 확인

kubectl get pods dependent-envars-demo

container log 확인

kubectl logs pod/dependent-envars-demo

위에서 보듯이, SERVICE_ADDRESS는 올바른 종속성 참조, UNCHANGED_REFERENCE는 잘못된 종속성 참조를 정의했으며 ESCAPED_REFERENCE는 종속성 참조를 건너뜁니다.

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

환경 변수가 정의되지 않았거나 일부 변수만 포함된 경우, 정의되지 않은 환경 변수는 UNCHANGED_REFERENCE의 경우와 같이 일반 문자열로 처리됩니다. 일반적으로 환경 변수 해석에 실패하더라도 컨테이너의 시작을 막지는 않습니다.

$(VAR_NAME) 구문은 이중 $로 이스케이프될 수 있습니다. (예: $$(VAR_NAME)) 이스케이프된 참조는 참조된 변수가 정의되었는지 여부에 관계없이 해석을 수행하지 않습니다. 이는 위의 ESCAPED_REFERENCE를 통해 확인할 수 있습니다.


📕참조

https://kubernetes.io/ko/docs/tasks/inject-data-application/define-interdependent-environment-variables/

 

종속 환경 변수 정의하기

본 페이지는 쿠버네티스 파드의 컨테이너를 위한 종속 환경 변수를 정의하는 방법에 대해 설명한다. 시작하기 전에 쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신

kubernetes.io