실습

Generic

  1. Secret 생성

    kubectl create secret generic db-credential \
    --from-literal=DB_PASSWORD=Asdf'!'234
  2. 생성된 Secret 확인

    kubectl get secret db-credential -o yaml
  3. 생성된 Secret 데이터의 평문 확인

    kubectl get secret db-credential -o jsonpath={.data.DB_PASSWORD} | base64 -d && echo
  4. 생성된 Secret 삭제

    kubectl delete secret db-credential
  5. Secret 생성

    cat <<'EOF' | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: db-credential
    type: Opaque
    data:
      DB_PASSWORD: Asdf!234
    EOF
  6. Secret 으로 사용할 문자열을 Base64로 인코딩

    echo -n 'Asdf!234' | base64
  7. Secret 생성

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: db-credential
    type: Opaque
    data:
      DB_PASSWORD: $(echo -n 'Asdf!234' | base64)
    EOF
  8. 생성된 Secret 데이터의 평문 확인

    kubectl get secret db-credential -o jsonpath={.data.DB_PASSWORD} | base64 -d && echo
  9. Pod 생성

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: alpine
    spec:
      containers:
      - image: alpine
        name: alpine
        command: [ "env" ]
        env:
          - name: DB_CREDENTIAL
            valueFrom:
              secretKeyRef:
                name: db-credential
                key: DB_PASSWORD
      restartPolicy: Never
    EOF
  10. Pod 로그 확인

    kubectl logs alpine
  11. Pod 생성

    cat <<EOF | kubectl replace --force -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: alpine
    spec:
      containers:
      - image: alpine
        name: alpine
        command: [ "sleep", "3600" ]
        volumeMounts:
        - name: secret
          mountPath: "/etc/secret"
          readOnly: true
      volumes:
      - name: secret
        secret:
          secretName: db-credential
          items:
          - key: DB_PASSWORD
            path: db.properties
    EOF
  12. Secret을 마운트한 경로에 있는 파일 확인

    kubectl exec alpine -- ls -al /etc/secret
  13. 파일 내용 확인

    kubectl exec alpine -- cat /etc/secret/db.properties && echo
  14. 파일 권한 확인

    kubectl exec alpine -- ls -alL /etc/secret
  15. Pod 재생성

    cat <<EOF | kubectl replace --force -f -
    apiVersion: v1
    kind: Pod
    metadata:
      name: alpine
    spec:
      containers:
      - image: alpine
        name: alpine
        command: [ "sleep", "3600" ]
        volumeMounts:
        - name: secret
          mountPath: "/etc/secret"
          readOnly: true
      volumes:
      - name: secret
        secret:
          secretName: db-credential
          defaultMode: 0400
    EOF
  16. Secret을 마운트한 경로에 있는 파일 확인

    kubectl exec alpine -- ls -al /etc/secret
  17. 파일 내용 확인

    kubectl exec alpine -- cat /etc/secret/DB_PASSWORD && echo
  18. 파일 권한 확인

    kubectl exec alpine -- ls -alL /etc/secret
  19. Secret 수정

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: db-credential
    type: Opaque
    data:
      DB_PASSWORD: bmV3cGFzc3dvcmQ=
      DB_NAME: bmV3ZGF0YWJhc2U=
    EOF
  20. Secret을 마운트한 경로에 있는 파일 확인

    kubectl exec alpine -- ls -al /etc/secret
  21. 파일 내용 확인

    kubectl exec alpine -- cat /etc/secret/DB_PASSWORD && echo
  22. 생성한 리소스 삭제

    {
        kubectl delete pod alpine
        kubectl delete secret db-credential
    }

Container Registry

  1. Pod 생성

  2. 생성된 Pod 확인

  3. Pod에 발생한 Event 확인

  4. Pod가 배포된 Node 확인

  5. Pod가 배포된 노드의 인스턴스 아이디 확인

  6. 새로운 터미널을 열고 Pod가 배포된 Node로 Session Manager 연결

  7. Docker Hub 자격증명 설정

  8. Docker 자격증명 파일을 복사

  9. Kubelet 재시작

  10. 기존 터미널로 이동해서 Pod 상태 확인

  11. 다른 터미널로 이동해서 Docker 자격증명 파일을 삭제

  12. Kubelet 재시작

  13. 기존 터미널로 이동해서 Pod 삭제

  14. Secret 생성

  15. Deployment 생성

  16. Pod 상태 확인

  17. 컨테이너가 정상적으로 구동중인지 확인

  18. 생성한 리소스 삭제

Last updated