빠른 시작: Azure Arc에 기존 Kubernetes 클러스터 연결
Azure CLI 또는 Azure PowerShell 사용하여 기존 Kubernetes 클러스터를 Azure Arc에 연결하여 Azure Arc 지원 Kubernetes를 시작합니다.
클러스터를 Azure Arc에 연결하는 개념적 내용은 Azure Arc 지원 Kubernetes 에이전트 개요를 참조하세요. 샘플/연습 환경에서 작업을 시도하려면 Azure Arc Jumpstart를 방문하세요.
필수 조건
Important
이러한 필수 구성 요소 외에도 Azure Arc 지원 Kubernetes에 대한 모든 네트워크 요구 사항을 충족해야 합니다.
활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
Kubernetes 핵심 개념에 대한 기본적인 이해.
Azure CLI에 로그인하고 클러스터를 Azure Arc에 연결하는 데 사용할 수 있는 ID(사용자 또는 서비스 주체)
최신 버전의 Azure CLI
다음 명령을 실행하여 설치된 최신 버전의 connectedk8s Azure CLI 확장
az extension add --name connectedk8s
실행 중인 Kubernetes 클러스터. 클러스터가 없는 경우 이러한 옵션 중 하나를 사용하여 클러스터를 만들 수 있습니다.
클러스터 API를 사용하는 자체 관리되는 Kubernetes 클러스터
참고 항목
클러스터에는 운영 체제 및 아키텍처 유형
linux/amd64
및/또는linux/arm64
의 노드가 하나 이상 있어야 합니다. ARM64 시나리오에 대한 자세한 내용은 클러스터 요구 사항을 참조하세요.
클러스터에 배포될 Arc 에이전트를 위한 최소 850MB의 여유 공간과 단일 CPU의 약 7%를 사용할 수 있는 용량
클러스터를 가리키는 kubeconfig 파일 및 컨텍스트 kubeconfig 파일이 무엇인지, 그리고 클러스터를 가리키도록 컨텍스트를 설정하는 방법에 대해 자세히 알아보려면 이 문서를 참조하세요.
Azure Arc 지원 Kubernetes에 대한 공급자 등록
다음 명령을 입력합니다.
az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.KubernetesConfiguration az provider register --namespace Microsoft.ExtendedLocation
등록 프로세스를 모니터링합니다. 등록은 10분 정도 걸릴 수 있습니다.
az provider show -n Microsoft.Kubernetes -o table az provider show -n Microsoft.KubernetesConfiguration -o table az provider show -n Microsoft.ExtendedLocation -o table
등록되면 이러한 네임스페이스의
RegistrationState
상태가Registered
로 변경되는 것을 확인해야 합니다.
리소스 그룹 만들기
다음 명령을 실행합니다.
az group create --name AzureArcTest --location EastUS --output table
출력
Location Name
---------- ------------
eastus AzureArcTest
기존 Kubernetes 클러스터 연결
다음 명령을 실행하여 클러스터에 연결합니다. 이 명령은 Azure Arc 에이전트를 클러스터에 배포하고 Helm v. 3.6.3을 배포 컴퓨터의 .azure
폴더에 설치합니다. 이 Helm 3 설치는 Azure Arc에만 사용되며 컴퓨터에서 이전에 설치된 Helm 버전을 제거하거나 변경하지 않습니다.
이 예제에서 클러스터의 이름은 AzureArcTest1입니다.
az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest
출력
Helm release deployment succeeded
{
"aadProfile": {
"clientAppId": "",
"serverAppId": "",
"tenantId": ""
},
"agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
"agentVersion": null,
"connectivityStatus": "Connecting",
"distribution": "gke",
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
"identity": {
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
},
"infrastructure": "gcp",
"kubernetesVersion": null,
"lastConnectivityTime": null,
"location": "eastus",
"managedIdentityCertificateExpirationTime": null,
"name": "AzureArcTest1",
"offering": null,
"provisioningState": "Succeeded",
"resourceGroup": "AzureArcTest",
"tags": {},
"totalCoreCount": null,
"totalNodeCount": null,
"type": "Microsoft.Kubernetes/connectedClusters"
}
팁
위치 매개 변수가 지정되지 않은 위의 명령은 Azure Arc 사용 Kubernetes 리소스를 리소스 그룹과 동일한 위치에 만듭니다. Azure Arc 사용 Kubernetes 리소스를 다른 위치에 만들려면 az connectedk8s connect
명령을 실행할 때 --location <region>
또는 -l <region>
을 지정합니다.
Important
시간 제한 오류로 인해 배포가 실패하는 경우 이 문제를 해결하는 방법에 대한 자세한 내용은 문제 해결 가이드를 참조하세요.
아웃바운드 프록시 서버를 사용하여 연결
클러스터가 아웃바운드 프록시 서버 뒤에 있는 경우 요청은 아웃바운드 프록시 서버를 통해 라우팅되어야 합니다.
배포 컴퓨터에서 아웃바운드 프록시 서버를 사용하기 위해 Azure CLI에 필요한 환경 변수를 설정합니다.
export HTTP_PROXY=<proxy-server-ip-address>:<port> export HTTPS_PROXY=<proxy-server-ip-address>:<port> export NO_PROXY=<cluster-apiserver-ip-address>:<port>
Kubernetes 클러스터에서
proxy-https
및proxy-http
매개 변수를 지정하여 연결 명령을 실행합니다. 프록시 서버가 HTTP 및 HTTPS 둘 다로 설정된 경우 HTTP 프록시에는--proxy-http
를, HTTPS 프록시에는--proxy-https
를 사용해야 합니다. 프록시 서버에서 HTTP만 사용하는 경우 두 매개 변수 모두에 해당 값을 사용할 수 있습니다.az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
참고 항목
- 클러스터 내 서비스 간 통신과 관련된 일부 네트워크 요청은 아웃바운드 통신을 위해 프록시 서버를 통해 라우팅되는 트래픽과 분리되어야 합니다.
--proxy-skip-range
매개 변수를 사용하여 에이전트에서 이러한 엔드포인트로의 통신이 아웃바운드 프록시를 거치지 않도록 CIDR 범위와 엔드포인트를 쉼표로 구분하여 지정할 수 있습니다. 최소한 클러스터에 있는 서비스의 CIDR 범위는 이 매개 변수의 값으로 지정되어야 합니다. 예를 들어,kubectl get svc -A
가 모든 서비스에10.0.0.0/16
범위의 ClusterIP 값이 있는 서비스 목록을 반환한다고 가정해 보겠습니다. 그러면--proxy-skip-range
에 지정할 값은10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc
입니다. - 대부분의 아웃바운드 프록시 환경에서
--proxy-http
,--proxy-https
및--proxy-skip-range
가 필요합니다.--proxy-cert
는 프록시에서 예상되는 신뢰할 수 있는 인증서를 에이전트 Pod의 신뢰할 수 있는 인증서 저장소에 삽입해야 하는 경우에만 필요합니다. - Websocket 연결을 허용하도록 아웃바운드 프록시를 구성해야 합니다.
프록시 서버 엔드포인트 입력 없이 신뢰할 수 있는 인증서만 제공해야 하는 아웃바운드 프록시 서버의 경우 --proxy-cert
입력만 지정하여 az connectedk8s connect
를 실행할 수 있습니다. 여러 개의 신뢰할 수 있는 인증서가 예상되는 경우 --proxy-cert
매개 변수를 사용하여 결합된 인증서 체인을 단일 파일에 제공할 수 있습니다.
참고 항목
--custom-ca-cert
는--proxy-cert
의 별칭입니다. 두 매개 변수를 서로 바꿔 사용할 수 있습니다. 동일한 명령에 두 매개 변수를 모두 전달하면 마지막으로 전달된 매개 변수가 적용됩니다.
--proxy-cert
매개 변수를 지정하여 연결 명령을 실행합니다.
az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>
클러스터 연결 확인
다음 명령을 실행합니다.
az connectedk8s list --resource-group AzureArcTest --output table
출력
Name Location ResourceGroup
------------- ---------- ---------------
AzureArcTest1 eastus AzureArcTest
참고 항목
클러스터를 온보딩하면 클러스터 메타데이터(클러스터 버전, 에이전트 버전, 노드 수 등)가 Azure Portal의 Azure Arc 사용 Kubernetes 리소스에 대한 개요 페이지에 표시되는 데 약 5~10분이 걸립니다.
팁
클러스터를 연결하는 동안 발생하는 문제 해결에 대한 도움말은 Azure Arc 지원 Kubernetes 클러스터에 대한 연결 문제 진단을 참조하세요.
Kubernetes용 Azure Arc 에이전트 보기
Azure Arc 지원 Kubernetes는 여러 에이전트를 azure-arc
네임스페이스에 배포합니다.
이러한 배포 및 Pod는 다음을 사용하여 볼 수 있습니다.
kubectl get deployments,pods -n azure-arc
모든 Pod가
Running
상태인지 확인합니다.출력
NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cluster-metadata-operator 1/1 1 1 13d deployment.apps/clusterconnect-agent 1/1 1 1 13d deployment.apps/clusteridentityoperator 1/1 1 1 13d deployment.apps/config-agent 1/1 1 1 13d deployment.apps/controller-manager 1/1 1 1 13d deployment.apps/extension-manager 1/1 1 1 13d deployment.apps/flux-logs-agent 1/1 1 1 13d deployment.apps/kube-aad-proxy 1/1 1 1 13d deployment.apps/metrics-agent 1/1 1 1 13d deployment.apps/resource-sync-agent 1/1 1 1 13d NAME READY STATUS RESTARTS AGE pod/cluster-metadata-operator-9568b899c-2stjn 2/2 Running 0 13d pod/clusterconnect-agent-576758886d-vggmv 3/3 Running 0 13d pod/clusteridentityoperator-6f59466c87-mm96j 2/2 Running 0 13d pod/config-agent-7cbd6cb89f-9fdnt 2/2 Running 0 13d pod/controller-manager-df6d56db5-kxmfj 2/2 Running 0 13d pod/extension-manager-58c94c5b89-c6q72 2/2 Running 0 13d pod/flux-logs-agent-6db9687fcb-rmxww 1/1 Running 0 13d pod/kube-aad-proxy-67b87b9f55-bthqv 2/2 Running 0 13d pod/metrics-agent-575c565fd9-k5j2t 2/2 Running 0 13d pod/resource-sync-agent-6bbd8bcd86-x5bk5 2/2 Running 0 13d
이러한 에이전트에 대한 자세한 내용은 Azure Arc 지원 Kubernetes 에이전트 개요를 참조하세요.
리소스 정리
Azure CLI에서 다음 명령을 사용하여 Azure Arc 사용 Kubernetes 리소스, 모든 관련 구성 리소스 및 클러스터에서 실행되는 모든 에이전트를 삭제할 수 있습니다.
az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest
삭제 프로세스가 실패하면 다음 명령을 사용하여 강제로 삭제합니다(확인 프롬프트를 무시하려는 경우 -y
추가).
az connectedk8s delete -n AzureArcTest1 -g AzureArcTest --force
이전에 만든 리소스가 완전히 제거되지 않아 새 클러스터 배포를 만들 때 문제가 발생하는 경우에도 이 명령을 사용할 수 있습니다.
참고 항목
Azure Portal을 사용하여 Azure Arc 지원 Kubernetes 리소스를 삭제하면 연결된 모든 구성 리소스가 제거되지만 클러스터에서 실행되는 에이전트는 제거되지 않습니다. 가장 좋은 방법은 Azure Portal에서 리소스를 삭제하는 대신 az connectedk8s delete
를 사용하여 Azure Arc 지원 Kubernetes 리소스를 삭제하는 것입니다.
다음 단계
- Flux v2에서 GitOps를 사용하여 구성을 배포하는 방법 알아보기
- 일반적인 Azure Arc 지원 Kubernetes 문제 해결
- Azure Arc Jumpstart를 사용하여 Azure Arc 지원 Kubernetes 자동화 시나리오를 경험하세요.