보안 비밀 사용

보안 비밀을 만들고 이 보안 비밀을 사용하도록 Knative serving 서비스와 버전을 구성하는 방법을 알아봅니다.

서비스의 일반적인 사용 사례는 사용자 이름과 비밀번호를 통해 타사 애플리케이션에 액세스하는 것입니다. Google Kubernetes Engine의 경우 Kubernetes 보안 비밀 객체에 이러한 유형의 민감한 정보를 저장하는 것이 좋습니다.

컨테이너에 보안 비밀에 대한 액세스 권한을 제공하려면 보안 비밀의 항목을 컨테이너에 파일로 제공하는 각 보안 비밀을 볼륨으로 마운트하면 됩니다. 보안 비밀을 읽을 때 각 보안 비밀의 최신 버전을 가져오려면 보안 비밀을 마운트해야 합니다.

환경 변수를 사용하여 보안 비밀을 전달할 수도 있습니다.

보안 비밀 만들기

다음 단계에서는 보안 비밀을 만드는 방법을 간단히 설명하지만, 보안 비밀 주제에 설명된 대로 보안 비밀을 만드는 여러 가지 방법이 있습니다.

보안 비밀을 만들 때는 Knative serving 서비스를 실행하는 클러스터와 동일한 네임스페이스에 만들어야 합니다. 이 예시에서는 default 네임스페이스가 사용됩니다.

클러스터의 default 네임스페이스에 보안 비밀을 만들려면 다음 안내를 따르세요.

  • 파일을 사용하여 보안 비밀을 만듭니다.

    echo -n 'devuser' > ./username.txt
    echo -n 'S!B\*d$zDsb' > ./password.txt
    kubectl create secret generic user-creds --from-file=./username.txt --from-file=./password.txt
    
  • kubectl 명령어만 사용하여 보안 비밀을 만듭니다.

    kubectl create secret generic user-creds --from-literal=username=devuser --from-literal=password='S!B\*d$zDsb'
    

서비스에 보안 비밀 사용 설정

서비스를 배포하거나 기존 서비스를 업데이트하고 버전을 배포할 때 Google Cloud 콘솔 또는 명령줄 도구를 사용하여 서비스와 보안 비밀을 연결할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Knative serving으로 이동합니다.

    Knative serving으로 이동

  2. 배포할 새 서비스를 구성하려면 서비스 만들기를 클릭합니다. 기존 서비스를 구성하려면 해당 서비스를 클릭한 다음 새 버전 수정 및 배포를 클릭합니다.

  3. 고급 설정에서 변수 및 보안 비밀을 클릭합니다.

  4. 보안 비밀 참조의 풀다운 메뉴에서 원하는 보안 비밀을 선택합니다.

    • 참조 메서드 풀다운 메뉴에서 보안 비밀을 볼륨으로 마운트할지 아니면 환경 변수로 공개할지 선택합니다.
    • 볼륨으로 마운트하는 경우 경로를 지정한 다음 완료를 클릭합니다.
    • 환경 변수로 노출하는 경우:
      1. 변수의 이름을 입력하고 풀다운 메뉴에서 해당하는 보안 비밀 값을 선택합니다.
      2. 다른 보안 비밀 값을 추가하려면 추가를 클릭합니다.
      3. 변수의 이름을 입력하고 풀다운 메뉴에서 해당하는 보안 비밀 값을 선택합니다.
      4. 완료를 클릭합니다.

  5. 다음을 클릭하여 다음 섹션으로 진행합니다.

  6. 이 서비스가 트리거되는 방식 구성 섹션에서 서비스를 호출하는 데 사용할 연결을 선택합니다.

  7. 만들기를 클릭하여 Knative serving에 이미지를 배포하고 배포가 완료될 때까지 기다립니다.

gcloud

Google Cloud CLI를 사용하여 보안 비밀을 새 서비스와 연결하거나 기존 서비스를 업데이트할 수 있습니다.

  • 기존 서비스의 경우 다음 매개변수 중 하나로 gcloud run services update 명령어를 실행하여 보안 비밀을 업데이트합니다.

    예를 들면 다음과 같습니다.

    gcloud run services update SERVICE --update-secrets KEY1=VALUE1,KEY2=VALUE2
    

    다음과 같이 바꿉니다.

    • SERVICE를 서비스 이름으로 바꿉니다.
    • KEY1=VALUE1,KEY2=VALUE2를 각 보안 비밀에 대한 이름 및 값 쌍의 쉼표로 구분된 목록으로 바꿉니다. 각 KEY에 대해 보안 비밀을 파일로 마운트하는 슬래시 /로 시작되는 경로를 지정합니다. 선택적으로 슬래시를 제외하여 보안 비밀을 환경 변수로 마운트할 수 있습니다. 각 VALUE에 대해 보안 비밀 이름을 지정합니다. 여러 매개변수를 지정하는 방법을 알아보세요.
    • 명령어 매개변수 옵션

      여러 키-값 쌍 집합을 지정하려면 가독성을 위한 여러 매개변수를 지정하면 됩니다. 예를 들면 다음과 같습니다.
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"
      
  • 새 서비스의 경우 --set-secrets 매개변수로 gcloud run deploy 명령어를 실행하여 보안 비밀을 연결합니다.

    gcloud run deploy SERVICE --image=IMAGE_URL --set-secrets KEY1=VALUE1,KEY2=VALUE2
    

    다음과 같이 바꿉니다.

    • IMAGE_URL을 컨테이너 이미지에 대한 참조(예: gcr.io/cloudrun/hello)로 바꿉니다.
    • SERVICE를 서비스 이름으로 바꿉니다.
    • KEY1=VALUE1,KEY2=VALUE2를 각 보안 비밀에 대한 이름 및 값 쌍의 쉼표로 구분된 목록으로 바꿉니다. 각 KEY에 대해 보안 비밀을 파일로 마운트하는 슬래시 /로 시작되는 경로를 지정합니다. 선택적으로 슬래시를 제외하여 보안 비밀을 환경 변수로 마운트할 수 있습니다. 각 VALUE에 대해 보안 비밀 이름을 지정합니다. 여러 매개변수를 지정하는 방법을 알아보세요.
    • 명령어 매개변수 옵션

      여러 키-값 쌍 집합을 지정하려면 가독성을 위한 여러 매개변수를 지정하면 됩니다. 예를 들면 다음과 같습니다.
      [...]
      --update-secrets "KEY=VALUE1" \
      --update-secrets "KEY=VALUE2" \
      --update-secrets "KEY=VALUE3"