빠른 시작: Azure Arc에 기존 Kubernetes 클러스터 연결

Azure CLI 또는 Azure PowerShell 사용하여 기존 Kubernetes 클러스터를 Azure Arc에 연결하여 Azure Arc 지원 Kubernetes를 시작합니다.

클러스터를 Azure Arc에 연결하는 개념적 내용은 Azure Arc 지원 Kubernetes 에이전트 개요를 참조하세요. 샘플/연습 환경에서 작업을 시도하려면 Azure Arc Jumpstart를 방문하세요.

필수 조건

이러한 필수 구성 요소 외에도 Azure Arc 지원 Kubernetes에 대한 모든 네트워크 요구 사항을 충족해야 합니다.

  • 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.

  • Kubernetes 핵심 개념에 대한 기본적인 이해.

  • Azure CLI에 로그인하고 클러스터를 Azure Arc에 연결하는 데 사용할 수 있는 ID(사용자 또는 서비스 주체)

  • 최신 버전의 Azure CLI

  • 다음 명령을 실행하여 설치된 최신 버전의 connectedk8s Azure CLI 확장

    az extension add --name connectedk8s
    
  • 실행 중인 Kubernetes 클러스터. 클러스터가 없는 경우 이러한 옵션 중 하나를 사용하여 클러스터를 만들 수 있습니다.

    • Docker의 Kubernetes(KIND)

    • Mac 또는 Windows용 Docker를 사용하여 Kubernetes 클러스터 만들기

    • 클러스터 API를 사용하는 자체 관리되는 Kubernetes 클러스터

      참고 항목

      클러스터에는 운영 체제 및 아키텍처 유형 linux/amd64 및/또는 linux/arm64의 노드가 하나 이상 있어야 합니다. ARM64 시나리오에 대한 자세한 내용은 클러스터 요구 사항을 참조하세요.

  • 클러스터에 배포될 Arc 에이전트를 위한 최소 850MB의 여유 공간과 단일 CPU의 약 7%를 사용할 수 있는 용량

  • 클러스터를 가리키는 kubeconfig 파일 및 컨텍스트

Azure Arc 지원 Kubernetes에 대한 공급자 등록

  1. 다음 명령을 입력합니다.

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. 등록 프로세스를 모니터링합니다. 등록은 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

시간 제한 오류로 인해 배포가 실패하는 경우 이 문제를 해결하는 방법에 대한 자세한 내용은 문제 해결 가이드를 참조하세요.

아웃바운드 프록시 서버를 사용하여 연결

클러스터가 아웃바운드 프록시 서버 뒤에 있는 경우 요청은 아웃바운드 프록시 서버를 통해 라우팅되어야 합니다.

  1. 배포 컴퓨터에서 아웃바운드 프록시 서버를 사용하기 위해 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>
    
  2. Kubernetes 클러스터에서 proxy-httpsproxy-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 네임스페이스에 배포합니다.

  1. 이러한 배포 및 Pod는 다음을 사용하여 볼 수 있습니다.

    kubectl get deployments,pods -n azure-arc
    
  2. 모든 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 리소스를 삭제하는 것입니다.

다음 단계