Azure Portal을 사용하여 Kubernetes 리소스에 액세스
이 문서에서는 Azure Portal을 사용하여 AKS(Azure Kubernetes Service) 리소스에 액세스하고 이러한 리소스를 관리하는 방법을 알아봅니다.
시작하기 전에
Azure Portal에서 Kubernetes 리소스를 보려면 AKS 클러스터가 필요합니다. 모든 클러스터가 지원되지만 Microsoft Entra 통합을 사용하는 경우 클러스터에서 AKS 관리형 Microsoft Entra 통합을 사용해야 합니다. 클러스터에서 레거시 Microsoft Entra ID를 사용하는 경우 포털에서 또는 Azure CLI를 사용하여 클러스터를 업그레이드할 수 있습니다. Azure Portal을 사용하여 새 AKS 클러스터를 만들 수도 있습니다.
Kubernetes 리소스 보기
Azure Portal에서 AKS 클러스터 리소스로 이동합니다.
서비스 메뉴에서 Kubernetes 리소스를 선택합니다. Kubernetes 리소스 목록에 다음 범주가 표시됩니다.
- 네임스페이스에는 클러스터의 네임스페이스에 대한 정보가 표시됩니다.
- 워크로드에는 배포, Pod, 복제본 세트, 상태 저장 세트, 디먼 세트, 클러스터에 배포된 cron 작업 관련 정보가 표시됩니다.
- 서비스 및 수신은 클러스터의 서비스와 수신 리소스를 모두 표시합니다.
- 스토리지는 Azure 스토리지 클래스 및 영구 볼륨 정보를 표시합니다.
- 구성은 클러스터의 구성 맵 및 비밀을 표시합니다.
- 사용자 지정 리소스에는 클러스터에 배포된 모든 사용자 지정 리소스가 표시됩니다.
- 이벤트에는 클러스터와 관련된 모든 이벤트가 표시됩니다.
- 실행 명령을 사용하면 클러스터에 직접 연결하지 않고도 Azure API를 통해 클러스터에서
kubectl
및helm
과 같은 명령을 원격으로 호출할 수 있습니다.
샘플 애플리케이션 배포
이 섹션에서는 AKS 빠른 시작의 Azure Store 애플리케이션을 배포합니다.
클러스터에 연결
Azure Store 애플리케이션을 배포하려면 AKS 클러스터에 연결해야 합니다. Azure Portal을 사용하여 다음 단계에 따라 클러스터에 연결하세요.
- AKS 클러스터의 개요 페이지에서 연결을 선택합니다.
- 지침에 따라 Cloud Shell, Azure CLI 또는 실행 명령을 사용하여 클러스터에 연결합니다.
Azure Store 애플리케이션 배포
Kubernetes 리소스 목록에서 서비스 및 수신을 선택합니다.
만들기>YAML 적용을 선택합니다.
다음 YAML을 복사하여 편집기에 붙여넣습니다.
apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancer
추가를 선택합니다.
애플리케이션 배포가 완료되면 서비스 목록에 다음 서비스가 표시됩니다.
- order-service
- product-service
- rabbitmq
- store-front
배포 인사이트 모니터
AKS 클러스터에서 모니터링 추가 기능 사용
컨테이너 인사이트가 활성화된 AKS 클러스터는 Azure Portal에서 다양한 배포 인사이트에 액세스할 수 있습니다. 클러스터에 모니터링이 활성화되어 있지 않은 경우 다음 단계를 통해 활성화할 수 있습니다.
AKS 클러스터 리소스의 서비스 메뉴에서 Monitoring Insights>모니터링 구성을> 선택합니다.
컨테이너 인사이트 구성 페이지에서 구성을 선택합니다.
모니터링 솔루션을 배포하고 데이터 수집을 시작하는 데 몇 분 정도 걸릴 수 있습니다.
배포 인사이트 보기
- AKS 클러스터 리소스의 서비스 메뉴에서 워크로드를 선택합니다.
- 목록에서 배포를 선택하여 CPU 및 메모리 사용량과 같은 배포 인사이트를 확인합니다.
참고 항목
모니터링>인사이트를 선택하여 특정 노드 및 컨테이너에 대한 보다 자세한 정보를 볼 수도 있습니다.
리소스 정리
Azure Store 애플리케이션이 더 이상 필요하지 않은 경우 Azure 비용이 발생하지 않도록 서비스를 삭제할 수 있습니다.
- Kubernetes 리소스 목록에서 서비스 및 수신을 선택합니다.
- 삭제하려는 서비스를 선택한 후 삭제를 클릭합니다.
문제 해결
무단 액세스
Kubernetes 리소스에 액세스하려면 AKS 클러스터, Kubernetes API, Kubernetes 개체에 대한 액세스 권한이 있어야 합니다. AKS 클러스터에 액세스할 수 있는 적절한 권한이 있는 사용자이거나 클러스터 관리자인지 확인하세요. 자세한 내용은 AKS에 대한 액세스 및 ID 옵션을 참조하세요.
리소스 보기 사용
기존 클러스터의 경우 Kubernetes 리소스 보기를 활성화해야 할 수 있습니다.
팁
API 서버 권한 있는 IP 범위에 대해 AKS 기능을 추가하여 API 서버 액세스를 방화벽의 퍼블릭 엔드포인트로만 제한할 수 있습니다. 또 다른 옵션은 로컬 클라이언트 컴퓨터에 대한 액세스 또는 Azure Portal을 검색하는 IP 주소 범위를 포함하도록 --api-server-authorized-ip-ranges
/-ApiServerAccessAuthorizedIpRange
를 업데이트하는 것입니다. 이 액세스를 허용하려면 컴퓨터의 공용 IPv4 주소가 필요합니다. 다음 Azure CLI 또는 Azure PowerShell 명령을 사용하여 IP 주소를 찾거나 브라우저에서 "내 IP 주소 확인"을 검색할 수 있습니다.
다음 명령을 사용하여 IP 주소를 검색합니다.
CURRENT_IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
--api-server-authorized-ip-ranges
매개 변수와 함께az aks update
명령을 사용하여 AKS 승인 목록에 IP 주소를 추가합니다.az aks update --resource-group <resource-group-name> --name <aks-cluster-name> --api-server-authorized-ip-ranges $CURRENT_IP/32
다음 단계
이 문서에서는 Azure Portal에서 Kubernetes 리소스에 액세스하는 방법을 살펴보았습니다. AKS에 대한 자세한 내용은 AKS(Azure Kubernetes Service)의 핵심 개념을 참조하세요.
Azure Kubernetes Service