환경변수를 줄 수 있다.
spec:
containers:
- name: simple-webapp
image: simple-webapp
env:
- name: APP_COLOR
value: pink
- name: JAVA_HOME
value: /usr/
ConfigMaps
하지만 Pod 설정파일에 모든 환경변수를 때려박는다는것은 별로 가독성에 좋지 않을 수 있다.
ConfigMaps는 쿠버에서 K-V 페어의 설정데이터를 저장하는 오브젝트이다(아마).
Imperative 방식 생성
kubectl create configmap conf-map-name --from-literal=APP_COLOR=pink --from-literal=JAVA_HOME=/usr/
혹은 그냥 다음과 같은 파일을 만들고, kubectl create configmap conf-map-name --from-file=config-file-name.properties
해주는 편이 빠를 수도 있다.
APP_COLOR: pink
JAVA_HOME: /usr/
Declarative 방식 생성
apiVersion: v1
kind: ConfigMap
metadata:
name: conf-map-name
data:
APP_COLOR: pink
JAVA_HOME: /usr/
한 뒤에 kubectl create -f
하면 된다.
Pod Definition에 ConfigMap으로 환경변수 주기
spec:
containers:
- name: simple-webapp
image: simple-webapp
envFrom:
- configMapRef:
name: conf-map-name
Secret
기본값으로는 그냥 Base64된 텍스트를 저장하는 것이기 때문에, 이름과는 달리 사실 별로 Secret하지는 않다.
Etcd에도 그냥 Base64된 텍스트 형태로 그대로 저장되고, 암호화가 안 된다! encryption at rest configuration을 따로 해 줘야 암호화가 된다.
생성하는 방법은 ConfigMap과 매우 비슷하다. 다만 실제로 사용할 때에는, SCM(Git) 등에 Secret 설정 파일을 올리지 않도록 주의하여야 한다.
Imperative 방식 생성
kubectl create secret secret-name --from-literal=DB_Host=localhost --from-literal=DB_Password=1q2w3e4r!
혹은 그냥 다음과 같은 파일을 만들고, kubectl create secret secret-name --from-file=config-file-name.properties
해주는 편이 빠를 수도 있다.
DB_Host: localhost
DB_Password: 1q2w3e4r!
Declarative 방식 생성
우선 텍스트를 echo -n 'text' | base64
로 base64 인코딩한다.
그 다음
apiVersion: v1
kind: Secret
metadata:
name: secret-name
data:
DB_Host: bG9jYWxob3N0
DB_Password: MXEydzNlNHIh
한 뒤에 kubectl create -f
하면 된다.
Secret의 사용
kubectl get secrets
kubectl describe secrets
kubectl get secret secret-name -o yaml
Pod Definition에서 Secret 사용하기
방법 1] Secret 전체를 Import
spec:
containers:
- name: simple-webapp
image: simple-webapp
envFrom:
- secretRef:
name: secret-name
방법 2] 특정 Secret variable만 가져오는 경우
spec:
containers:
- name: simple-webapp
image: simple-webapp
envFrom:
- secretRef:
name: secret-name
key: DB_Password
방법 3] Volume Mount
각각의 Secret 키를 파일명으로 해서, Value를 내용으로 가진 가상의 텍스트 파일이 들어 있는 디렉토리를 마운트한다.
spec:
containers:
- name: simple-webapp
image: simple-webapp
volumes:
- name: app-secret-volume
secret:
secretName: secret-name
apiVersion: v1
kind: Pod
metadata:
name: app
namespace: elastic-stack
spec:
volumes:
- name: log-volume
hostPath:
path: /var/log/webapp
containers:
- name: sidecar
image: kodekloud/filebeat-configured
volumeMounts:
- name: log-volume
mountPath: /var/log/event-simulator/
- name: app
image: kodekloud/event-simulator
volumeMounts:
- name: log-volume
mountPath: /log
'콤퓨우터 > 필기: KodeKloud CKA 강의' 카테고리의 다른 글
131. Backup and Restore (0) | 2024.05.17 |
---|---|
122-127. OS Upgrades, Kubernetes Software Versions, Cluster Upgrade Process (0) | 2024.05.17 |
96-97. Commands on Docker and Kubernetes (0) | 2024.05.17 |
92. Rolling Updates and Rollbacks (0) | 2024.05.17 |
84-87. Monitor Cluster Components, Managing Application Logs (0) | 2024.05.17 |