Azure 환경 설정

Completed

이 단원에서는 Azure CLI를 사용하여 이후 단원에서 필요한 Azure 리소스를 만듭니다. 명령을 입력하기 전에 Docker Desktop 또는 Linux의 Docker 엔진이 설치되어 실행 중인지 확인합니다.

이 모듈의 예제에서는 export 및 백슬래시 줄 연속을 포함한 Bash 구문을 사용합니다. 연습에는 로컬 Bash 세션을 사용하세요. Windows Docker Desktop 통합을 사용하도록 설정된 WSL 2 Linux 배포를 사용하고, 해당 배포에서 Linux Azure CLI 및 Git을 설치하고 사용합니다. macOS 또는 Linux에서 Docker 디먼에 대한 액세스 권한이 있는 로컬 Bash 세션을 사용합니다.

Azure Cloud Shell은 Azure 관리 명령을 실행할 수 있지만 Docker 디먼을 실행하지 않으며 이 모듈의 로컬 이미지 빌드 및 컨테이너 실행 단계를 대체하지 않습니다. 네이티브 PowerShell 및 명령 프롬프트에는 서로 다른 변수 및 줄 연속 구문이 필요합니다.

연습에 사용할 Bash 세션에서 Azure 리소스를 만들기 전에 도구를 확인합니다.

git --version
az version
docker version

세 명령이 모두 성공하고 Server에 클라이언트뿐만 아니라 연결 가능한 docker version가 표시되는지 확인합니다. 서버를 사용할 수 없는 경우 계속하기 전에 Docker Desktop, Docker 엔진 또는 WSL 통합을 수정하세요.

시간을 절약하기 위해 먼저 리소스를 프로비전한 다음 다음 단원으로 이동하도록 Azure에 지시할 수 있습니다. AKS(Azure Kubernetes Service) 클러스터를 만드는 데 최대 10분이 걸릴 수 있습니다. 이 프로세스는 후속 단위를 진행하는 동안 백그라운드에서 실행할 수 있습니다.

Azure Resource Manager를 사용하여 인증

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

az login

Azure 구독 선택

Azure 구독은 Azure에서 리소스를 프로비전하는 데 사용되는 논리적 컨테이너입니다. 다음 명령을 사용하여 Azure 구독을 나열한 다음, 이 모듈에서 사용할 구독 ID SubscriptionId (값)를 찾습니다.

az account list --output table

다음 명령을 사용하여 이 모듈의 용도로 리소스를 생성할 수 있는 Azure 구독을 사용하고 있는지 확인하고, 자리 표시자에 원하는 SubscriptionId 값을 대체하십시오.

az account set --subscription "<your-subscription-ID>"

지역 변수 정의

나중에 사용하는 명령을 간소화하려면 다음 환경 변수를 설정합니다. 다음 자리 표시자를 사용자 고유의 값으로 바꾸세요.

  • <your-Azure-region>을(를) 원하는 지역으로 예를 들어 eastus으로 대체하십시오.
  • 고유한 값으로 <your-container-registry>를 대체합니다. 이 값은 Azure 컨테이너 레지스트리를 만들 때 고유한 FQDN(정규화된 도메인 이름)을 생성하는 데 사용됩니다.
  • 고유한 값으로 <your-unique-DNS-prefix-to-access-your-AKS-cluster>를 대체합니다. 이 값은 AKS 클러스터를 만들 때 고유한 FQDN을 생성하는 데 사용됩니다.

비고

Azure 컨테이너 레지스트리 이름은 Azure 전체에서 고유해야 하며 5~50자의 영숫자(문자 및 숫자만)로 구성되어야 합니다. 하이픈과 밑줄은 허용되지 않습니다. <your-container-registry>를 설정하기 전에 AZ_CONTAINER_REGISTRY를 규격을 준수하는 사용 가능한 이름으로 바꾸십시오. 자세한 내용은 Container Registry 명명 요구 사항을 참조하세요.

export AZ_RESOURCE_GROUP=java-containerization-demo-rg
export AZ_CONTAINER_REGISTRY=<your-container-registry>
export AZ_KUBERNETES_CLUSTER=java-containerization-demo-aks
export AZ_LOCATION=<your-Azure-region>
export AZ_KUBERNETES_CLUSTER_DNS_PREFIX=<your-unique-DNS-prefix-to-access-your-AKS-cluster>

Azure 리소스 그룹 만들기

Azure 리소스 그룹은 Azure 솔루션에 대한 관련 리소스를 보유하기 위한 Azure 구독의 Azure 컨테이너입니다. 다음 명령을 사용하여 리소스 그룹을 만듭니다.

az group create \
    --name $AZ_RESOURCE_GROUP \
    --location $AZ_LOCATION \
| jq

비고

이 모듈에서는 Azure Cloud Shell에 기본적으로 설치된 jq 도구를 사용하여 JSON 데이터를 표시하고 읽기 쉽도록 만듭니다.

jq 도구를 사용하지 않으려는 경우 이 모듈에 있는 모든 명령의 | jq 부분을 안전하게 제거할 수 있습니다.

Azure Container Registry 만들기

Azure Container Registry를 사용하면 이 Java 앱에 대한 컨테이너 이미지를 포함하여 컨테이너 이미지를 빌드, 저장 및 관리할 수 있습니다. 다음 명령을 사용하여 컨테이너 레지스트리를 만듭니다.

az acr create \
    --resource-group $AZ_RESOURCE_GROUP \
    --name $AZ_CONTAINER_REGISTRY \
    --sku Basic \
    --role-assignment-mode rbac \
| jq

이 --role-assignment-mode rbac 옵션은 RBAC(역할 기반 액세스 제어) 전용 권한을 명시적으로 선택합니다. 이렇게 하면 이 연습에서 사용된 --attach-acr 및 AcrPull 통합이 유지됩니다.

속성 기반 액세스 제어(ABAC)를 지원하는 RBAC 레지스트리 + ABAC 리포지토리 권한 모델을 사용하는 신규 또는 재사용 레지스트리의 경우, --attach-acr는 지원되지 않습니다. 그 대신, ABAC 지원 통합 워크플로에서는 kubelet ID에 대한 Container Registry Repository Reader 역할과 게시 ID에 대한 적절한 리포지토리 권한이 필요합니다. 이 연습의 통합 명령을 변경하지 않고 그대로 실행하는 대신 해당 워크플로를 따릅니다. Microsoft ABAC 사용 모드를 권장합니다. 이 연습의 RBAC 전용 설정은 기존 ABAC 사용 레지스트리를 다운그레이드하는 권장 사항이 아닙니다.

다음 명령을 사용하여 새로 만든 이 Azure 컨테이너 레지스트리를 사용하도록 Azure CLI를 구성합니다.

az configure --defaults acr=$AZ_CONTAINER_REGISTRY

다음 명령을 사용하여 새로 만든 Azure Container Registry에 인증합니다.

비고

az acr login 명령을 실행하기 전에 Linux의 Docker Desktop 또는 Docker 엔진이 실행 중이고 Bash 세션에서 해당 디먼에 연결할 수 있는지 확인합니다. 접근할 수 없으면 다음과 유사한 오류 메시지가 표시됩니다. Cannot connect to the Docker daemon at unix:///$HOME_DIR/.docker/run/docker.sock. Is the docker daemon running?

az acr login --name $AZ_CONTAINER_REGISTRY

Azure Kubernetes Service 클러스터 만들기

Java 앱 컨테이너 이미지를 배포하려면 AKS 클러스터가 필요합니다.

Important

이 --attach-acr 옵션은 AKS kubelet ID에 AcrPull 역할을 할당합니다. 리소스를 만들 수 있는 권한 외에도 계정에는 레지스트리 범위 또는 상위 범위에서 Microsoft.Authorization/roleAssignments/write 권한이 필요합니다. 기여자만으로는 이 권한이 부여되지 않습니다. 필요한 경우 Azure 관리자에게 통합을 수행하거나 필요한 리소스 관리 권한과 함께 역할 기반 Access Control 관리자와 같이 적절하게 범위가 지정된 역할 할당 액세스 권한을 부여하도록 요청합니다.

다음 명령을 사용하여 AKS 클러스터를 만듭니다.

az aks create \
    --resource-group $AZ_RESOURCE_GROUP \
    --name $AZ_KUBERNETES_CLUSTER \
    --attach-acr $AZ_CONTAINER_REGISTRY \
    --dns-name-prefix=$AZ_KUBERNETES_CLUSTER_DNS_PREFIX \
    --generate-ssh-keys \
| jq

비고

AKS 클러스터를 만드는 데 최대 10분이 걸릴 수 있습니다. 이전 명령을 실행한 후 Azure CLI 탭에서 계속 진행하여 다음 단원으로 이동할 수 있습니다.