이 자습서에서는 이 샘플을 사용하여 Azure Cache for Redis 또는 Azure Managed Redis 인스턴스에 연결합니다.
필수 조건
- Azure 구독. Azure 구독이 없는 경우 무료 계정을 만드세요.
- Azure Kubernetes Service 클러스터 - 클러스터 만들기에 대한 자세한 내용은 빠른 시작: Azure Portal을 사용하여 AKS(Azure Kubernetes Service) 클러스터 배포를 참조하세요.
- Azure Cache for Redis 인스턴스에 연결하려고 하는 사용자 지정 관리 ID입니다.
중요합니다
이 자습서에서는 컨테이너, Pod 및 서비스와 같은 기본 Kubernetes 개념에 익숙하다고 가정합니다.
Azure Cache Redis 인스턴스 설정
Azure Portal 또는 선호하는 CLI 도구를 사용하여 새 Azure Cache for Redis 인스턴스를 만듭니다. 빠른 시작 가이드를 사용하여 시작합니다. 또는 Azure Managed Redis 인스턴스도 만들 수 있습니다.
이 자습서에서는 표준 C1 캐시를 사용합니다.
캐시를 만드는 단계를 완료합니다.
Redis 캐시 인스턴스가 만들어지면 인증 탭으로 이동합니다. Redis 캐시 인스턴스에 연결하는 데 사용할 사용자 할당 관리 ID를 선택한 다음 저장을 선택합니다.
또는 리소스 메뉴에서 데이터 액세스 구성으로 이동하여 사용자가 할당한 관리 ID를 사용하여 캐시에 연결할 새 Redis 사용자를 만들 수 있습니다.
포털에서 Redis 사용자의 사용자 이름을 기록해 둡니다. AKS 워크로드에서 이 사용자 이름을 사용합니다.
로컬로 샘플 실행
이 샘플을 로컬로 실행하려면 사용자 주체를 Redis 인스턴스에서 Redis 사용자로 구성합니다. 코드 샘플에서는 DefaultAzureCredential 을 통해 사용자 주체를 사용하여 Redis 인스턴스에 연결합니다.
AKS 클러스터 구성
AKS 클러스터에 대한 워크로드 ID를 구성하려면 다음 단계를 수행 합니다.
그리고 나서 다음 단계를 완료합니다.
- OIDC 발급자 및 워크로드 ID 활성화
- 관리 ID를 이미 만든 경우 사용자 할당 관리 ID를 만드는 단계를 건너뜁니다. 새 관리 ID를 만드는 경우 관리 ID에 대한 새 Redis 사용자를 만들고 적절한 데이터 액세스 권한을 할당해야 합니다.
- 사용자가 할당한 관리 ID의 클라이언트 ID가 태그로 추가된 Kubernetes 서비스 계정 만들기
- AKS 클러스터에 대한 페더레이션 ID 자격 증명을 만듭니다.
Azure Cache for Redis에 연결하는 워크로드 구성
다음으로 AKS 클러스터를 구성한 후 Azure Cache for Redis에 연결하도록 AKS 워크로드를 설정합니다.
샘플 앱에 대한 코드를 다운로드합니다.
az acr build 명령을 사용하여 Docker 이미지를 빌드하고 Azure Container Registry에 푸시합니다.
az acr build --image sample/connect-from-aks-sample:1.0 --registry yourcontainerregistry --file Dockerfile .다음 명령을 사용하여 AKS 클러스터에 컨테이너 레지스트리를 연결합니다.
az aks update --name clustername --resource-group mygroup --attach-acr youracrname
워크로드 배포
이 섹션에서는 먼저 Kubernetes CLI를 설치한 다음 AKS 클러스터에 연결합니다.
Kubernetes CLI 설치
Kubernetes CLI( kubectl)를 사용하여 로컬 컴퓨터에서 Kubernetes 클러스터에 연결합니다. 로컬로 실행하는 경우 다음 명령을 사용하여 kubectl을 설치할 수 있습니다.
az aks install-cli
Azure Cloud Shell을 사용하는 경우 kubectl 이 이미 설치되어 있으며 이 단계를 건너뛸 수 있습니다.
AKS 클러스터에 연결
포털을 사용하여 AKS 클러스터의 리소스 그룹 및 클러스터 이름을 복사합니다. AKS 클러스터에 연결하도록 kubectl 을 구성하려면 리소스 그룹 및 클러스터 이름과 함께 다음 명령을 사용합니다.
az aks get-credentials --resource-group myResourceGroup --name myClusterName다음 명령을 실행하여 클러스터에 연결할 수 있는지 확인합니다.
kubectl get nodes클러스터 노드 목록을 보여 주는 유사한 출력이 표시됩니다.
NAME STATUS ROLES AGE VERSION aks-agentpool-21274953-vmss000001 Ready agent 1d v1.29.7 aks-agentpool-21274953-vmss000003 Ready agent 1d v1.29.7 aks-agentpool-21274953-vmss000006 Ready agent 1d v1.29.7
워크로드 실행
다음 코드에서는 워크로드를 실행하는 데 사용하는 Pod 사양 파일에 대해 설명합니다. 유의할 점은 Pod에는 azure.workloadidentity/use: "true"라는 레이블이 있으며, AKS 워크로드 ID가 요구하는 serviceAccountName 주석이 추가되어 있다는 것입니다. 액세스 키 인증을 사용하는 경우 AUTHENTICATION_TYPE, REDIS_HOSTNAME, REDIS_ACCESSKEY 및 REDIS_PORT 환경 변수의 값을 바꿉니다. Azure Managed Redis 인스턴스의 경우 REDIS_PORT 값을 10000으로 설정합니다.
apiVersion: v1 kind: Pod metadata: name: entrademo-pod labels: azure.workload.identity/use: "true" # Required. Only pods with this label can use workload identity. spec: serviceAccountName: workload-identity-sa containers: - name: entrademo-container image: youracr.azurecr.io/connect-from-aks-sample:1.0 imagePullPolicy: Always command: ["dotnet", "ConnectFromAKS.dll"] resources: limits: memory: "256Mi" cpu: "500m" requests: memory: "128Mi" cpu: "250m" env: - name: AUTHENTICATION_TYPE value: "MANAGED_IDENTITY" # change to ACCESS_KEY to authenticate using access key - name: REDIS_HOSTNAME value: "your redis hostname" - name: REDIS_ACCESSKEY value: "your access key" - name: REDIS_PORT value: "6380" # change to 10000 for Azure Managed Redis restartPolicy: Never이 파일을 podspec.yaml로 저장한 다음 folloWing 명령을 실행하여 AKS 클러스터에 적용합니다.
kubectl apply -f podspec.yamlPod가 생성되었음을 나타내는 응답이 표시됩니다.
pod/entrademo-pod created애플리케이션을 테스트하려면 다음 명령을 실행하여 Pod가 실행 중인지 확인합니다.
kubectl get pods다음과 같이 Pod가 성공적으로 실행되는 것을 볼 수 있습니다.
NAME READY STATUS RESTARTS AGE entrademo-pod 0/1 Completed 0 42s이 자습서는 콘솔 앱이므로 Pod의 로그를 확인하여 이 명령을 사용하여 예상대로 실행되었는지 확인해야 합니다.
kubectl logs entrademo-app사용자 할당 관리 ID를 사용하여 Pod가 Redis 인스턴스에 성공적으로 연결되었음을 나타내는 다음 로그가 표시됩니다.
Connecting with managed identity.. Retrieved value from Redis: Hello, Redis! Success! Previous value: Hello, Redis!
클러스터 정리
클러스터를 정리하려면 다음 명령을 실행합니다.
kubectl delete pod entrademo-pod
자원을 정리하세요
이 문서에서 만든 리소스를 계속 사용하려면 리소스 그룹을 유지합니다.
그렇지 않고 리소스 사용을 완료하는 경우 요금이 부과되지 않도록 하려면 만든 Azure 리소스 그룹을 삭제하면 됩니다.
중요합니다
리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹을 삭제하는 경우 그 안의 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 해야 합니다. 유지하려는 리소스가 포함된 기존 리소스 그룹 내에서 리소스를 만든 경우 리소스 그룹을 삭제하는 대신 각 리소스를 개별적으로 삭제할 수 있습니다.
리소스 그룹을 삭제하려면
Azure Portal에 로그인한 다음, 리소스 그룹을 선택합니다.
삭제하려는 리소스 그룹을 선택합니다.
리소스 그룹이 많은 경우 필드 필터링... 상자를 사용하여 이 문서에 대해 만든 리소스 그룹의 이름을 입력합니다. 결과 목록에서 리소스 그룹을 선택합니다.
리소스 그룹 삭제를 선택합니다.
리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 입력하여 확인한 다음, 삭제를 선택합니다.
잠시 후, 리소스 그룹 및 모든 해당 리소스가 삭제됩니다.