ConfigMap 사용

ConfigMap을 만든 다음 이 ConfigMap을 사용하도록 Knative serving 서비스와 버전을 구성하는 방법을 알아봅니다.

서비스의 일반적인 사용 사례는 ConfigMap을 사용해서 애플리케이션 코드를 구성으로부터 구분하는 것입니다. ConfigMap은 보안 비밀과 비슷하지만, 민감한 정보에 보안 비밀을 사용하고 연결 문자열, 공개 사용자 인증 정보, 호스트 이름, URL 등 민감하지 않은 데이터에 ConfigMap을 사용한다는 것이 다릅니다. ConfigMap 사용에 대한 자세한 내용은 Google Kubernetes Engine 문서를 참조하세요.

컨테이너에서 ConfigMap에 액세스하도록 설정하면 다음 옵션 중 하나를 선택할 수 있습니다.

  • 마운트된 볼륨에 파일로 제공되는 ConfigMap 항목을 사용하여 ConfigMap을 볼륨으로 마운트합니다. ConfigMap을 읽을 때 최신 버전을 사용하게 되므로 이 방법을 사용하는 것이 좋습니다.
  • 환경 변수를 사용하여 ConfigMap을 전달합니다.

ConfigMap 만들기

GKE 문서 ConfigMaps 페이지의 설명대로 ConfigMap을 만드는 방법에는 여러 가지가 있습니다. 편의를 위해 다음 단계에서는 ConfigMap을 만드는 간단한 방법을 보여줍니다.

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

명령줄에서 ConfigMap을 만들 수 있습니다.

kubectl create configmap NAME DATA

다음과 같이 바꿉니다.

  • NAME은 ConfigMap 객체의 이름입니다.
  • DATA은 다음 중 하나일 수 있습니다.

    • 구성 파일이 하나 이상 포함된 각 디렉터리의 --from-file 플래그와 경로입니다.
    • ConfigMap에 추가할 각각의 --from-literal 플래그와 키-값 쌍입니다.

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

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

ConfigMap은 default 네임스페이스의 클러스터에서 사용할 수 있는 위치에 생성되고 업로드됩니다.

서비스에 ConfigMap 사용 설정

ConfigMap을 만든 후 새 서비스를 배포하거나 기존 서비스를 업데이트하고 버전을 배포하는 경우 Google Cloud 콘솔이나 Google Cloud CLI를 사용하여 Knative serving 서비스를 볼륨이나 환경 변수로 사용할 수 있습니다.

콘솔

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

    Knative serving으로 이동

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

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

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

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

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

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

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

명령줄

Google Cloud CLI를 사용하여 새 서비스의 ConfigMap을 설정하거나 기존 서비스를 업데이트할 수 있습니다.

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

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

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

    다음과 같이 바꿉니다.

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

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

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

    다음과 같이 바꿉니다.

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

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