[CKA] 4일차 - Application Life Cycle

secret

imperative

kubectl create secret generic
<secret-name> --from-literal=<key>=<value>

kubectl create secret generic
<secret-name> --from-file=<path-to-file>

echo -n 'mysql' | base64

kubectl get secrets
kubectl describe secrets

pod에 넣기

apiVersion: v1
kind: Pod
metadata:
  name: simple-webapp-color
  labels:
    name: simple-webapp-color
spec:
  containers:
  - name: simple-webapp-color
    image: simple-webapp-color
    ports:
      - containerPort: 8080
    envFrom:
      - secretRef:
        name: app-secret

다양한 secret injection 방법들

(ENV)
envFrom:
  - secretRef:
    name: app-config
(single env)
env:
  - name: DB_Password
    valueFrom:
      secretKeyRef:
        name: app-secret
        key: DB_Password

(volume)
volumes:
- name: app-secret-volume
  secret:
    secretName: app-secret

멀티 컨테이너 디자인 패턴(CKAD에서 배움)

  • sidecar
  • adaptor
  • ambassador

init container

컨테이너는 한 번씩만 순서대로 실행이 됩니다.

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox
    command: ['sh', '-c', 'git clone <some-repository-that-will-be-used-by-application> ; done;']

오늘 느낀 점

command에는 숫자가 들어가면 안 되고, 그것도 string으로 바꾸어서 표현해야 합니다.

댓글

Designed by JB FACTORY