Azure Container Apps에서 수정 버전 및 비밀 관리

완료됨

Azure Container Apps는 수정 버전을 만들어 컨테이너 앱 버전 관리를 구현합니다. 수정 버전은 컨테이너 앱 버전의 변경할 수 없는 스냅샷입니다. 수정 버전을 사용하여 새로운 앱 버전을 릴리스하거나, 이전 앱 버전으로 빠르게 되돌릴 수 있습니다. 수정 버전 범위 변경 내용으로 애플리케이션을 업데이트하면 새 수정 버전이 만들어집니다. 특정 수정 버전에 따라 컨테이너 앱을 업데이트할 수도 있습니다.

어떤 수정 버전이 활성인지와 각 활성 수정 버전으로 라우팅되는 외부 트래픽을 제어할 수 있습니다. 수정 이름은 수정 버전과 수정 버전의 URL을 식별하는 데 사용됩니다. 수정 버전 접미사를 설정하여 수정 버전 이름을 사용자 지정할 수 있습니다.

기본적으로 Container Apps는 영숫자 문자의 세미 랜덤 문자열로 구성된 접미사가 포함된 고유한 수정 버전을 만듭니다. 예를 들어 album-api라는 컨테이너 앱의 경우 수정 버전 접미사 이름을 1st-revision으로 설정하면 album-api-1st-revision이라는 이름의 수정 버전이 만들어질 것입니다. 수정 버전 접미사는 ARM 템플릿에서, Azure CLI az containerapp createaz containerapp update 명령을 통해, 혹은 Azure Portal을 통해 수정 버전을 만들 때 설정할 수 있습니다.

컨테이너 앱 업데이트

az containerapp update 명령을 사용하면 환경 변수를 수정하고, 리소스를 계산하고, 매개 변수를 크기 조정하고, 다른 이미지를 배포할 수 있습니다. 컨테이너 앱 업데이트에 수정 버전 범위 변경 내용이 포함된 경우 새 수정 버전이 생성됩니다.

az containerapp update \
  --name <APPLICATION_NAME> \
  --resource-group <RESOURCE_GROUP_NAME> \
  --image <IMAGE_NAME>

az containerapp revision list 명령을 사용하면 컨테이너 앱과 연결된 수정 번호를 모두 나열할 수 있습니다.

az containerapp revision list \
  --name <APPLICATION_NAME> \
  --resource-group <RESOURCE_GROUP_NAME> \
  -o table

Container Apps 명령에 관한 자세한 내용은 az containerapp 참조를 참조하세요.

Azure Container Apps의 비밀 관리

Azure Container Apps를 사용하면 애플리케이션이 중요한 구성 값을 안전하게 저장할 수 있습니다. 애플리케이션 수준에서 비밀이 정의되면 컨테이너 앱에서 보안 값을 사용할 수 있습니다. 특히 크기 조정 규칙 내에서 보안 값을 참조할 수 있습니다.

  • 비밀은 애플리케이션의 특정 수정 버전 이외의 애플리케이션으로 범위가 지정됩니다.
  • 비밀을 추가, 제거 또는 변경해도 새 수정 버전이 생성되지 않습니다.
  • 각 애플리케이션 수정 버전에서는 하나 이상의 비밀을 참조할 수 있습니다.
  • 여러 수정 버전에서 동일한 비밀을 참조할 수 있습니다.

업데이트되거나 삭제된 비밀은 앱의 기존 수정 버전에 자동으로 영향을 주지 않습니다. 비밀이 업데이트되거나 삭제되면 다음 두 가지 방법 중 하나로 변경 내용에 응답할 수 있습니다.

  1. 새 수정 버전을 배포합니다.
  2. 기존 수정 버전을 다시 시작합니다.

비밀을 삭제하기 전에 이전 비밀을 더 이상 참조하지 않는 새 수정 버전을 배포합니다. 그런 다음, 비밀을 참조하는 모든 수정 버전을 비활성화합니다.

참고

Container Apps는 Azure Key Vault 통합을 지원하지 않습니다. 대신 컨테이너 앱에서 관리 ID를 사용하도록 설정한 후 Key Vault SDK를 사용해 비밀에 액세스합니다.

비밀 정의

컨테이너 앱을 만들 때 --secrets 매개 변수를 사용하여 비밀이 정의됩니다.

  • 매개 변수는 공백으로 구분된 이름/값 쌍 세트를 허용합니다.
  • 각 쌍은 등호(=)로 구분됩니다.

아래 예제에서는 큐 스토리지 계정에 대한 연결 문자열이 --secrets 매개 변수에 선언됩니다. queue-connection-string 값은 이름이 $CONNECTION_STRING인 환경 변수에서 가져온 것입니다.

az containerapp create \
  --resource-group "my-resource-group" \
  --name queuereader \
  --environment "my-environment-name" \
  --image demos/queuereader:v1 \
  --secrets "queue-connection-string=$CONNECTION_STRING"

애플리케이션 수준에서 비밀을 선언한 후 컨테이너 앱에서 새 수정 버전을 만들 때 환경 변수에서 참조할 수 있습니다. 환경 변수가 비밀을 참조하면 해당 값은 비밀에 정의된 값으로 채워집니다. Azure CLI의 환경 변수에서 비밀을 참조하려면 해당 값을 secretref:로 설정하고 비밀 이름을 설정합니다.

다음 예제에서는 애플리케이션 수준에서 연결 문자열을 선언하는 애플리케이션을 보여 줍니다. 이 연결은 컨테이너 환경 변수에서 참조됩니다.

az containerapp create \
  --resource-group "my-resource-group" \
  --name myQueueApp \
  --environment "my-environment-name" \
  --image demos/myQueueApp:v1 \
  --secrets "queue-connection-string=$CONNECTIONSTRING" \
  --env-vars "QueueName=myqueue" "ConnectionString=secretref:queue-connection-string"