CKA를 준비하면서 공부한 요약 내용입니다.
Rollout and Versioning

Rollout Command
kubectl rollout status deployment/myapp-deploymentkubectl rollout history deployment/myapp-deployment
Deployment Strategy
Recreate

- destruction 5
- create 5

Rolling Update
→ default strategy

- destruction and create one by one
Revision
kubectl apply -f deployment.yamlkubectl set image deployment/myapp-deployment nginx=nginx:1.9.1
Upgrades

- make new replicaset when upgrade deploy
Rollback

kubectl rollout undo deployment/myapp-deployment- before rollback vs after rollback

Commands and Arguments
docker
1 2 3From Ubuntu Entrypoint ["sleep"] cmd ["5"]definition
1 2 3 4 5 6 7 8 9 10apiVersion: v1 kind: Pod metadata: name: ubuntu-sleeper-pod spec: containers: - name: ubuntu-sleeper image: ubuntu-sleeper command: ["sleep2.0"] args: ["10"]
Environment
plain Key Value
1 2 3env: - name: APP_COLOR value: pinkconfigMap
1 2 3 4env: - name: APP_COLOR valueFrom: configMapKeyRef:Secrets
1 2 3 4env: - name: APP_COLOR valueFrom: secretKeyRef:
ConfigMaps
- create ConfigMap
- Inject into pod
create
imperative
1 2 3kubectl create configmap\\ app-config --from-literal=APP_COLOR=blue \\ --from-literal=APP_MODE=prodkubectl create configmap app-config --from-file=<path-to-file>
declartive
1 2 3 4 5 6 7apiVersion: v1 kind: ConfigMap metadata: name: app-config data: APP_COLOR: blue APP_MODE: prod
view
kubectl get configmapskubectl describe configmaps
ConfigMap in Pods
| |
Secrets
- create secret
- inject into pod
create
imperative
1 2kubectl create secret generic\\ <secret-name> --from-literal=<key>=<value>kubectl create secret <secret-name> --from-file=<path-to-file>
declartive
1 2 3 4 5 6 7 8apiVersion: v1 kind: Secret metadata: name: app-secret data: DB_Host: mysql DB_User: root DB_Passwird: paswrd- data → encoded format for safe
echo -n 'mysql' | base64
view
kubectl get secretskubectl describe secrets
decode
echo -n 'abalksdfas=' | base54 --decode
Secrets in Pods
defintion
1 2 3 4 5 6 7 8 9 10 11apiVersion: v1 kind: Pod metadata: name: simple-webapp-color spec: containers: - name: simple-webapp-color image: simple-webapp-color envFrom: - configMapRef: name: app-secretenv
1 2 3envFrom: - secretRef: name: app-configsingle env
1 2 3 4 5 6env: - name: DB_Password valueFrom: secretKeyRef: name: app-secret key: DB_Passwordvolume
1 2 3 4volumes: - name: app-secret-volumne secret: secretName: app-secret- inside the container
- list
1ls /opt/app-secret-volumes - content
1cat /opt/app-secret-volumes/DB_Password
- list
- inside the container
InitContainers
In multi-container pod, want to run a process that runs to completion in a container
initContainer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15apiVersion: 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;']multiple initContainers
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18apiVersion: 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:1.28 command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;'] - name: init-mydb image: busybox:1.28 command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']