kubernets

 

도커에서는 도커파일로 이미지를 생성할 때, CMD 를 통해 이미지 생성 전에 명령어를 실행하도록 만들 수 있다.

 

Dockerfile

FROM ubuntu

# 기본(Default) 명령어
ENTRYPOINT [ "sleep" ]

# 기본 인자(Argument)로 들어간다.
CMD ["5"]

 

이후 도커 명령어를 사용하여 이미지로 만든다.

$ docker build -t ubuntu-sleeper .

# sleep 5 로 실행
$ docker run ubuntu-sleeper
# == sleep 5

# 해당 명령어로 실행할 경우 인자 값 5가 무시되어 "sleep 10" 으로 실행이 된다.
$ docker run ubuntu-sleeper 10
# == sleep 10

# ENTRYPOINT 를 무시하고 sleep2.0 을 실행한다.
$ docker run --entrypoint sleep2.0 ubuntu-sleeper 10
# == sleep2.0 10

 

쿠버네티스에서도 도커와 비슷한 기능을 제공하는데, 이렇게 사용한다.

 

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: ubuntu-sleeper-pod
  name: ubuntu-sleeper-pod
spec:
  containers:
  - image: ubuntu-sleeper
    name: ubuntu-sleeper
    # 해당 설정은 로컬 이미지를 사용하여 파드를 만들 수 있게 한다.
    imagePullPolicy: Never
    # docker 의 ENTRYPOINT 에 해당
    command: ["sleep"]
    
    # docker 의 CMD 에 해당
    args: ["10"]
    
    # command 는 이렇게도 사용한다. (숫자도 반드시 쌍따옴표로 묶는다.)
    command:
    - "sleep"
    - "10"

 

변수를 설정할 수 도 있다. command 와 마찬가지로 아래처럼 사용한다.

 

command:
- "sleep"
- "10"
env:
- name: APP_COLOR
  value: pink

 

참고

Variable(변수), ConfigMap, Secrets 세 가지의 환경변수 타입이 있다.

이 중 ConfigMap 에 대해 정리를 해본다.

 

ConfigMap 을 생성하는 방법에는 2가지가 있다.

 

1. 명령어로 생성하기 (Imperative)

# 명령식 (Imperative)

$ kubectl create configmap \
	<config-name> --from-literal=<key>=<value>
    
ex)
$ kubectl create configmap \
	app-config --from-literal=APP_COLOR=blue
    		   --from-literal=APP_MODE=prod

kubectl create configmap \
	<config-name> --from-file=<path-to-file>
    
ex)
kubectl create configmap \
	app-config --from-file=app_config.properties

 

2. 파일로 생성하기 (Declarative)

# 선언식 (declarative)

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_COLOR: blue
  APP_MODE: prod
  
  
$ kubectl create -f app-config.yaml

 

참고

 

이후 아래 명령어로 ConfigMap 을 조회할 수 있다.

 

$ kubectl get configmaps

$ kubectl describe configmaps

 

이렇게 생성한 ConfigMap 은 매니페스트 파일에서 아래와 같이 호출할 수 있다.

 

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: ubuntu-sleeper-pod
  name: ubuntu-sleeper-pod
spec:
  containers:
  - image: ubuntu-sleeper
    name: ubuntu-sleeper
    envFrom:
    - configMapRef:
        name: app-config

 

 

활용 예

 

설정 값, 단일 설정 값, 설정 파일(이건 어떻게 활용되는지 모르겠다.) 이렇게 사용할 수 있다고 한다.

설정 값을 셋팅하는 방법은 이제 대충 알았지만 사용은 어떻게 하는지는 공식문서를 봐도 잘 와닿지는 않았다.

 

처음에 정리했던 내용들을 활용하면 스프링부트의 application.yml 이나 application.properties 를 활용하여 배포를 할 수 있을 것 같다.

 

오늘은 조금 재미없는 내용들을 정리해보았다.

다음은 Secret 키 설정에 대한 것을 정리할 예정..