웹사이트 검색

Kubernetes에서 암호, OAuth 토큰 및 SSH 키와 같은 비밀 생성 및 저장


Kubernetes에서는 Kubernetes Secrets를 사용하여 암호, OAuth 토큰 및 ssh 키와 같은 민감한 정보를 저장하고 관리할 수 있습니다. Kubernetes에서 암호는 Kubernetes 개체로 정의할 수 있습니다. 포드 또는 Docker 이미지에 있는 Kubernetes 비밀에 자격 증명을 저장하는 것이 더 안전합니다.

Kubernetes에서 비밀을 생성하는 방법에는 여러 가지가 있습니다.

<올 스타일=텍스트-정렬:왼쪽>

  • 텍스트 파일에서 만들기
  • yml 파일에서 만들기

    비밀을 사용할 수 있게 되면 다음과 같은 방법으로 사용할 수 있습니다.

    <올 스타일=텍스트-정렬:왼쪽>

  • 환경 변수
  • 볼륨
  • imagePullSecrets 필드 사용

    Kubernetes 시크릿에 대해 자세히 알아보려면 여기를 클릭하십시오.

    이 기사에서는 .yml 파일을 사용하여 시크릿을 생성하고 Pod에서 환경 변수로 액세스합니다.

    전제 조건

    <올 스타일=텍스트-정렬:왼쪽>

  • 최소 1개의 작업자 노드가 있는 Kubernetes 클러스터.
    Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18l04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.

    우리가 할 일

    <올 스타일=텍스트-정렬:왼쪽>

  • 비밀 만들기

    비밀 만들기

    Kubernetes에서 새 비밀을 생성하려면 먼저 base64 인코딩 방법을 사용하여 아래와 같이 암호화합니다.

    여기,

    사용자 이름=rahul 및 비밀번호=howtoforge123.

    echo -n "rahul" | base64

    echo -n "howtoforge123" | base64

    위의 스크린샷에서 자격 증명이 암호화된 것을 볼 수 있습니다.

    다음과 같이 비밀 정의 파일을 생성합니다. 이 파일은 위 단계에서 생성된 자격 증명의 base64 값을 보유합니다.

    vim my-secret.yml

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    type: Opaque
    data:
      username: cmFodWw=
      password: aG93dG9mb3JnZTEyMw==
    

    이제 이러한 비밀과 액세스할 수 있는 포드를 생성해 보겠습니다.

    다음과 같이 팟(Pod) 정의를 포함할 새 파일을 작성하십시오.

    vim my-pod.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: secrets-in-pod
    spec:
      containers:
        - name: my-container
          image: redis
          env:
            - name: SECRET_USERNAME
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: username
            - name: SECRET_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: password
      restartPolicy: Never

    다음 명령을 사용하여 비밀을 만들 수 있습니다.

    kubectl create -f my-secret.yml

    kubectl get secret | grep mysecret

    kubectl create -f my-pod.yml

    kubectl get  pods | grep secrets-in-pod

    다음 명령을 사용하여 포드에 로그인합니다.

    kubectl get pods | grep secrets-in-pod

    kubectl exec -it secrets-in-pod /bin/bash

    포드에 로그인하면 다음 명령을 사용하여 환경 변수로 비밀에 액세스할 수 있습니다.

    echo $SECRET_USERNAME

    echo $SECRET_PASSWORD

    위의 스크린샷에서 보안 비밀을 환경 변수로 사용할 수 있음을 알 수 있습니다.

    비밀 개체의 세부 정보를 보려면 다음 명령을 실행합니다.

    kubectl get secret | grep mysecret

    kubectl get secret mysecret -o yaml

    이러한 비밀은 다음 명령을 사용하여 명령줄에서 디코딩할 수도 있습니다.

    kubectl get secrets/mysecret --template={{.data.username}} | base64 -d

    kubectl get secrets/mysecret --template={{.data.password}} | base64 -d

    위 스크린샷에서 보안 비밀에서 사용자 인증 정보가 추출되고 base64를 사용하여 명령줄에서 복호화되는 것을 볼 수 있습니다.

    결론

    이 기사에서는 .yml 파일에서 Kubernetes에 비밀을 생성하고 저장하는 단계를 살펴보았습니다. Pod에서 환경 변수로 이러한 비밀에 액세스하려고 했습니다. 또한 명령줄에서 비밀을 해독하는 명령도 보았습니다.