관리 메뉴

피터의 개발이야기

[kubernetes] command, env 문법 공부 본문

Kubernetes/기초공부

[kubernetes] command, env 문법 공부

기록하는 백앤드개발자 2024. 1. 24. 23:56
반응형

 

ㅁ 관련글

[kubernetes] 쿠버네티스 목차

쿠버네티스 Docs - 애플리케이션에 데이터 주입하기

 

 

ㅁ 들어가며

 쿠버네티스를 공부하면서 command와 env의 쓰임새와 문법이 다양함을 알 수 있었다. 그래서 예제를 중심으로 문법이 어떻게 쓰일 수 있는지 정리해 보았다. command와 env를 설명해 주는 쿠버네티스 Docs - 애플리케이션에 데이터 주입하기를 토대로 정리해 보았다.

 

ㅁ 기본 command - 파드를 생성할 때 커맨드와 인자를 정의하기 

# 기본 command: 인자값은 String이어야 한다.
command:
  - sleep
  - "5000"

# Array 형태 command: 환경변수를 프린트
command: ["printenv"]
args: ["HOSTNAME", "KUBERNETES_PORT"]

 

apiVersion: v1 
kind: Pod 
metadata:
  name: command-demo
spec:
  containers:
  - name: debian
    image: debian
    command:
      - sleep
      - "5000"

 ㄴ 컨테이너를 위한 커맨드와 인자를 정의할 수 있다.

 ㄴ command에 인자값을 줄 때에는 String으로 주어야 한다. 

   -  5000    X

   - "5000" O

 

ㅁ shell command - 셸 안에서 커맨드 실행하기

# shell 적용 command
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]

command: [ "sh", "-c"]
args:
- while true; do
  echo -en '\n';
  printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
  printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
  sleep 10;
done;

 

ㅁ 환경변수

ㅇ 기본 name-value -  컨테이너를 위한 환경 변수 정의하기

apiVersion: v1
kind: Pod
metadata:
  name: envar-demo
  labels:
    purpose: demonstrate-envars
spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    env:
    - name: DEMO_GREETING
      value: "Hello from the environment"
    - name: DEMO_FAREWELL
      value: "Such a sweet sorrow"

 

 

# 환경변수를 받아 command 실행
env:
- name: MESSAGE
  value: "hello world"
command: ["/bin/echo"]
args: ["$(MESSAGE)"]

 ㄴ 환경변수를 받아 커멘트를 실행함.

 

설정 안에서 환경 변수 사용하기

apiVersion: v1
kind: Pod
metadata:
  name: print-greeting
spec:
  containers:
  - name: env-print-demo
    image: bash
    env:
    - name: GREETING
      value: "Warm greetings to"
    - name: HONORIFIC
      value: "The Most Honorable"
    - name: NAME
      value: "Kubernetes"
    command: ["echo"]
    args: ["$(GREETING) $(HONORIFIC) $(NAME)"]

 ㄴ command array와 환경변수를 응용하여 사용

 

 

 컨테이너를 위한 종속 환경 변수 정의하기

apiVersion: v1
kind: Pod
metadata:
  name: dependent-envars-demo
spec:
  containers:
    - name: dependent-envars-demo
      image: busybox:1.28
      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)"
      command:
        - sh
        - -c
      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;

 ㄴ 이미 선언되어 있는 환경변수를 받아서 env로 설정하여 컨테이너에 전달하고 command문을 수행할 수 있다.

반응형
Comments