Azure Container Apps에서 수정 버전 및 비밀 관리
Azure Container Apps는 수정 버전을 만들어 컨테이너 앱 버전 관리를 구현합니다. 수정 버전은 컨테이너 앱 버전의 변경할 수 없는 스냅샷입니다. 수정 버전을 사용하여 새로운 앱 버전을 릴리스하거나, 이전 앱 버전으로 빠르게 되돌릴 수 있습니다. 수정 버전 범위 변경 내용으로 애플리케이션을 업데이트하면 새 수정 버전이 만들어집니다. 특정 수정 버전에 따라 컨테이너 앱을 업데이트할 수도 있습니다.
어떤 수정 버전이 활성인지와 각 활성 수정 버전으로 라우팅되는 외부 트래픽을 제어할 수 있습니다. 수정 이름은 수정 버전과 수정 버전의 URL을 식별하는 데 사용됩니다. 수정 버전 접미사를 설정하여 수정 버전 이름을 사용자 지정할 수 있습니다.
기본적으로 Container Apps는 영숫자 문자의 세미 랜덤 문자열로 구성된 접미사가 포함된 고유한 수정 버전을 만듭니다. 예를 들어 album-api라는 컨테이너 앱의 경우 수정 버전 접미사 이름을 1st-revision으로 설정하면 album-api-1st-revision이라는 이름의 수정 버전이 만들어질 것입니다. 수정 버전 접미사는 ARM 템플릿에서, Azure CLI az containerapp create
및 az 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를 사용하면 애플리케이션이 중요한 구성 값을 안전하게 저장할 수 있습니다. 애플리케이션 수준에서 비밀이 정의되면 컨테이너 앱에서 보안 값을 사용할 수 있습니다. 특히 크기 조정 규칙 내에서 보안 값을 참조할 수 있습니다.
- 비밀은 애플리케이션의 특정 수정 버전 이외의 애플리케이션으로 범위가 지정됩니다.
- 비밀을 추가, 제거 또는 변경해도 새 수정 버전이 생성되지 않습니다.
- 각 애플리케이션 수정 버전에서는 하나 이상의 비밀을 참조할 수 있습니다.
- 여러 수정 버전에서 동일한 비밀을 참조할 수 있습니다.
업데이트되거나 삭제된 비밀은 앱의 기존 수정 버전에 자동으로 영향을 주지 않습니다. 비밀이 업데이트되거나 삭제되면 다음 두 가지 방법 중 하나로 변경 내용에 응답할 수 있습니다.
- 새 수정 버전을 배포합니다.
- 기존 수정 버전을 다시 시작합니다.
비밀을 삭제하기 전에 이전 비밀을 더 이상 참조하지 않는 새 수정 버전을 배포합니다. 그런 다음, 비밀을 참조하는 모든 수정 버전을 비활성화합니다.
참고
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"