반응형
Application Commands & Arguments
- docker image의 entrypoint의 argument는
spec.containers.args
에 명시해준다. spec.containers.args
는 Docker file의 CMD opiton을 overrride한다.- Docker file의 ENTRYPOINT를 override하기 위해서는
spec.containers.commad
를 사용한다.
Configure Environment Variables in Applications
- 환경 변수를 설정하기 위해
pod-definition.yaml
에서spec.container.env
property를 사용한다. - 예시
apiVersion : v1
kind : Pod
metadata :
name : simple-webapp-color
sepc:
containers :
- name : simple-webapp-color
image : simple-webapp-color
ports:
- containerPort: 8080
env :
- name : App_COLOR
value : pink
- 이때, EnV Value Type은 3가지가 있다.
1.Plain Key Value
env :
- name : App_COLOR
value : pink
2. ConfigMap
<br>
- 2.ConfigMap
```yaml
env :
- name : App_COLOR
valueForm :
configMapKeyRef :
3.Secrets
env :
- name : App_COLOR
valueForm :
secretK :
Configuring ConfigMaps in Applications
Configmap이란 ?
- configmap은 key-vlaue 쌍으로 config data를 저장한다.
- 1.Create ConfigMap
- Inject to Pod
왜 필요할까?
- configmap은 컨테이너에 필요한 환경 설정을 컨테이너와 분리해서 제공하는 기능을 제공한다.
- 다른 설정으로 같은 컨테이너를 실행해야 할 때 컨피그 맵을 사용할 수 있다.
- 예를들어, 개발용 상용 서비스에서 같은 컨테이너지만 다른 설정이 필요한 경우
- 컨피그맵을 컨테이너와 분리하면 컨테이너 하나를 여러 용도로 사용할 수 있다.
Create ConfigMaps
- imperative way
--from-literal
: command 자체에서 key value 쌍을 적을떄 사용--from-file
: data가 저장된 file 경로를 전달할 때 사용
kubectl create configamp \
<config-name> --from-literal=<key>=<value> \
--from-literal=<key>=<value>
kubectl create configamp \
<config-name> --from-file=<path-to-file>
- declarative way
kubectl create -f config-map.yaml
config-map.yaml
apiVersion : v1
kind : ConfigMap
metadata :
name : app-config
data :
APP_COLOR : blue
APP_Mode :prod
View ConfigMaps
kubectl get configmaps
kubectl describe configmaps
ConfigMap in Pods
- EnvFrom
pod-definition.yaml
에서spec.containers.envFrom.configMapRef
에 configmapname
을 명시해준다
- Single Env
pod-definition.yaml
에서spec.containers.envFrom.configMapRef
에 configmapname
다음key
를 명시해 특정 환경변수만 config할 수 있다.
- Volume
- 볼륨 형식으로 컨피그맵을 설정해서 파일로 컨테이너에 제공할수도 있다.
volumes.name.configMap.name
에 config 이름을 명시한다.
Configure Secrests in Application
Secret 이란?
- 시크릿은 비밀번호, OAuth 토큰, SSH 키 같은 민감한 정보들을 저장하는 용도로 사용한다.
- 이런 정보들은 컨테이너 안에 저장하지 않고 별도로 보관했다가 실제 파드를 실행할 때의 템플릿으로 컨테이너에 제공한다.
1. Create Secret
2. Inject into Pod
Create Secrets
1. imperative way
--from-literal
: command 자체에서 key value 쌍을 적을떄 사용--from-file
: data가 저장된 file 경로를 전달할 때 사용
kubectl create secret generic \
<secret-name> --from-literal=<key>=<value> \
--from-literal=<key>=<value>
kubectl create configamp \
<secret-name> --from-file=<path-to-file>
2. declarative way
kubectl create -f secret-data.yaml
secret-data.yaml
apiVersion : v1
kind : Secret
metadata :
name : app-secret
data :
DB_HOST : mysql
DB_USER : root
DB_Password : paswrd
- 이때 Secret값은 해시값으로 바꿔주는게 좋다.
- hash값으로 encode
echo -n 'root' | base64
- hash 값 decode
echo -n 'root' | base64 --decode
View Secrets
kubectl get secrets
kubectl describe secrets
secrets in Pods
- EnvFrom
pod-definition.yaml
에서spec.containers.envFrom.secretRef
에 configmapname
을 명시해준다
- Single Env
pod-definition.yaml
에서spec.containers.envFrom.secretRef
에 configmapname
다음key
를 명시해 특정 환경변수만 config할 수 있다.
- Volume
- 볼륨 형식으로 컨피그맵을 설정해서 파일로 컨테이너에 제공할수도 있다.
volumes.name.secret.name
에 config 이름을 명시한다.
반응형
'공부기록 > MLOps | Infra' 카테고리의 다른 글
[k8s] drain and cordon (0) | 2022.08.28 |
---|---|
[k8s] Multi Container PODs (0) | 2022.08.28 |
[k8s] Rolling Updates and Rollbacks (0) | 2022.08.28 |
[k8s] Managing Application Logs (0) | 2022.08.28 |
[k8s] Monitor Cluster Components (0) | 2022.08.28 |