Kubernetes 클러스터를 위한 Azure Arc 하이브리드 관리 및 배포

Azure Arc
AKS(Azure Kubernetes Service)
Azure Monitor
Azure Policy
Azure 역할 기반 액세스 제어

이 참조 아키텍처는 Azure Arc가 고객 데이터 센터, 에지 위치 및 여러 클라우드 환경에서 Kubernetes 클러스터 관리 및 구성을 확장하는 방법을 보여 줍니다.

아키텍처

아키텍처 다이어그램은 Kubernetes용 Azure Arc 토폴로지입니다.

이 아키텍처의 Visio 파일을 다운로드합니다.

워크플로

이 아키텍처는 다음과 같은 측면으로 구성됩니다.

  • Azure Arc 지원 Kubernetes. Azure Arc 지원 Kubernetes를 사용하여 Azure 내부 또는 외부에서 Kubernetes 클러스터를 연결하고 구성합니다. Kubernetes 클러스터가 Azure Arc에 연결되면 Azure Resource Manager ID 및 관리 ID가 할당됩니다.
  • Azure Kubernetes Service. Kubernetes 클러스터 관리의 복잡성과 운영 오버헤드를 줄이기 위해 Azure에서 Kubernetes 클러스터를 호스트합니다.
  • 온-프레미스 Kubernetes 클러스터. 온-프레미스 또는 타사 클라우드 환경에서 호스트되는 CNCF(Cloud Native Computing Foundation) 인증 Kubernetes 클러스터를 연결합니다.
  • Azure Policy. Arc 지원 Kubernetes 클러스터에 대한 정책을 배포하고 관리합니다.
  • Azure Monitor. Arc 지원 Kubernetes 클러스터를 관찰하고 모니터링합니다.

구성 요소

  • Azure Arc는 Azure 플랫폼을 확장하는 브리지로서, 이를 통해 데이터 센터, 에지 및 다중 클라우드 환경에서 실행할 수 있는 애플리케이션 및 서비스를 빌드할 수 있습니다.
  • AKS(Azure Kubernetes Service)는 Kubernetes 클러스터 배포 및 확장을 위한 관리되는 서비스입니다.
  • Azure Policy를 사용하면 일관된 리소스 거버넌스를 통해 대규모 실시간 클라우드 규정 준수를 달성할 수 있습니다.
  • Azure Monitor는 애플리케이션, 인프라 및 네트워크에 대한 엔드투엔드 관찰 기능을 제공합니다.

시나리오 정보

Azure Arc를 사용하여 Microsoft Azure 외부에서 호스트되는 Kubernetes 클러스터를 등록할 수 있습니다. 그런 다음 Azure 도구를 사용하여 AKS(Azure Kubernetes Service)에서 호스트되는 클러스터와 함께 이러한 클러스터를 관리할 수 있습니다.

잠재적인 사용 사례

이 아키텍처의 일반적인 용도는 다음과 같습니다.

  • 온-프레미스 Kubernetes 클러스터 및 인벤토리, 그룹화 및 태그 지정을 위해 AKS에서 호스트되는 클러스터를 관리합니다.
  • Azure Monitor를 사용하여 하이브리드 환경에서 Kubernetes 클러스터를 모니터링합니다.
  • Azure Policy를 사용하여 하이브리드 환경에서 Kubernetes 클러스터에 대한 정책을 배포하고 적용합니다.
  • Azure Policy를 사용하여 GitOps를 배포하고 적용합니다.

권장 사항

다음 섹션에서는 대부분의 시나리오에 적용되는 권장 사항을 제공합니다. 이를 재정의하는 요구 사항이 없는 한 이를 따르는 것이 좋습니다.

클러스터 등록

모든 활성 CNCF Kubernetes 클러스터를 등록할 수 있습니다. 클러스터에 액세스하려면 kubeconfig 파일이 필요하고 Arc 지원 Kubernetes 에이전트를 배포하려면 클러스터에서 클러스터 관리자 역할이 필요합니다. Azure 명령줄 인터페이스(Azure CLI)를 사용하여 클러스터 등록 작업을 수행합니다. az loginaz connectedk8s connect 명령에 사용하는 사용자 또는 서비스 주체에는 Microsoft.Kubernetes/connectedClusters 리소스 종류에 대한 읽기 및 쓰기 권한이 필요합니다. Kubernetes 클러스터 - Azure Arc 온보딩 역할에는 이러한 권한이 있으며 사용자 주체 또는 서비스 주체에 대한 역할 할당에 사용할 수 있습니다. Helm 3은 connectedk8s 확장을 사용하는 클러스터를 온보딩하는 데 필요합니다. Azure Arc 지원 Kubernetes 명령줄 인터페이스 확장을 설치하려면 Azure CLI 버전 2.3 이상이 필요합니다.

Kubernetes용 Azure Arc 에이전트

Azure Arc 지원 Kubernetes는 azure-arc 네임스페이스에 배포된 클러스터에서 실행되는 몇 가지 에이전트(연산자라고도 함)로 구성됩니다.

  • deployment.apps/config-agent. 클러스터에 적용되는 소스 제어 구성 리소스에 대해 연결된 클러스터를 감시하고 규정 준수 상태를 업데이트합니다.
  • deployment.apps/controller-manager. Azure Arc 구성 요소 간에 상호 작용을 오케스트레이션하는 연산자의 연산자입니다.
  • deployment.apps/metrics-agent. 다른 Arc 에이전트의 메트릭을 수집하여 이러한 에이전트가 최적의 성능을 발휘하는지 확인합니다.
  • deployment.apps/cluster-metadata-operator. 클러스터 메타데이터, 클러스터 버전, 노드 수 및 Azure Arc 에이전트 버전을 수집합니다.
  • deployment.apps/resource-sync-agent. 이전에 언급한 클러스터 메타데이터를 Azure에 동기화합니다.
  • deployment.apps/clusteridentityoperator. Azure와 통신하기 위해 다른 에이전트에서 사용하는 MSI(관리되는 서비스 ID) 인증서를 유지 관리합니다.
  • deployment.apps/flux-logs-agent. 소스 제어 구성의 일부로 배포된 플럭스 운영자로부터 로그를 수집합니다.
  • deployment.apps/extension-manager. 확장 Helm 차트의 수명 주기를 설치하고 관리합니다.
  • deployment.apps/kube-azure-ad-proxy. Cluster Connect를 사용하여 클러스터로 전송되는 요청의 인증에 사용됩니다.
  • deployment.apps/clusterconnect-agent. 클러스터 연결 기능을 사용하도록 설정하여 클러스터의 apiserver에 대한 액세스를 제공하는 역방향 프록시 에이전트입니다. 클러스터에서 클러스터 연결 기능이 사용하도록 설정된 경우에만 배포되는 선택적 구성 요소입니다.
  • deployment.apps/guard. Microsoft Entra RBAC(역할 기반 액세스 제어)에 사용되는 인증 및 권한 부여 웹후크 서버입니다. 클러스터에서 azure-rbac 기능이 사용하도록 설정된 경우에만 배포되는 선택적 구성 요소입니다.

자세한 내용은 Azure Arc 지원 Kubernetes 클러스터 연결을 참조하세요.

Azure Monitor 컨테이너 인사이트를 사용하여 클러스터 모니터링

컨테이너 모니터링은 중요합니다. Azure Monitor 컨테이너 인사이트는 AKS 및 AKS 엔진 클러스터에 대한 풍부한 모니터링 환경을 제공합니다. Azure 외부에서 호스트되는 Azure Arc 지원 Kubernetes 클러스터를 모니터링하도록 Azure Monitor 컨테이너 인사이트를 구성할 수도 있습니다. 이렇게 하면 Azure, 온-프레미스 및 타사 클라우드 환경에서 Kubernetes 클러스터를 포괄적으로 모니터링할 수 있습니다.

Azure Monitor 컨테이너 인사이트는 Metrics API(애플리케이션 프로그래밍 인터페이스)를 통해 Kubernetes에서 사용할 수 있는 메트릭인 컨트롤러, 노드 및 컨테이너에서 메모리 및 프로세서 메트릭을 수집하여 성능 표시 유형을 제공할 수 있습니다. 컨테이너 로그도 수집됩니다. Kubernetes 클러스터에서 모니터링을 사용하도록 설정하면 메트릭 및 로그가 Log Analytics 에이전트의 컨테이너화된 버전으로 자동으로 수집됩니다. 메트릭은 메트릭 저장소에 기록되고 로그 데이터는 Log Analytics 작업 영역과 연결된 로그 저장소에 기록됩니다. Azure Monitor 컨테이너 인사이트에 대한 자세한 내용은 Azure Monitor 컨테이너 인사이트 개요를 참조하세요.

PowerShell 스크립트 또는 Bash 스크립트를 사용하여 하나 이상의 Kubernetes 배포에 대해 Azure Monitor 컨테이너 인사이트를 사용하도록 설정할 수 있습니다.

Arc 지원 Kubernetes 클러스터에 대한 모니터링을 사용하도록 설정하려면 Azure Arc 지원 Kubernetes 클러스터 모니터링 사용을 참조하세요.

Azure Policy를 사용하여 GitOps 기반 애플리케이션 배포 사용

Azure Policy를 사용하여 각 GitOps 지원 Microsoft.Kubernetes/connectedclusters 리소스 또는 Microsoft.ContainerService/managedClusters 리소스에 특정 Microsoft.KubernetesConfiguration/fluxConfigurations가 적용되도록 적용합니다 . 예를 들어, 기준 구성을 하나 이상의 클러스터에 적용하거나 특정 애플리케이션을 여러 클러스터에 배포할 수 있습니다. Azure Policy를 사용하려면 Azure Arc 지원 Kubernetes에 대한 Azure Policy 기본 제공 정의에서 정의를 선택한 다음 정책 할당을 만듭니다.

정책 할당을 만들 때 범위를 Azure 리소스 그룹 또는 구독으로 설정합니다. 또한 생성된 fluxConfiguration대한 매개 변수를 설정합니다. 할당이 만들어지면 정책 엔진은 범위 내에 있는 모든 연결된Cluster 또는 managedCluster 리소스를 식별한 다음 각각에 fluxConfiguration 을 적용합니다.

각 클러스터에 대해 여러 원본 리포지토리를 사용하는 경우(예: 중앙 IT/클러스터 운영자용 리포지토리 하나 및 애플리케이션 팀의 다른 리포지토리) 여러 정책 할당을 사용하여 활성화하고 각 정책 할당을 구성하여 다른 원본 리포지토리를 사용합니다.

자세한 내용은 Flux v2 구성 및 Azure Policy를 사용하여 대규모로 일관되게 애플리케이션 배포를 참조하세요.

GitOps를 사용하여 애플리케이션 배포

GitOps는 Git 또는 Helm 리포지토리, 버킷 또는 Azure Blob Storage와 같은 원본 리포지토리에서 Kubernetes 구성(배포, 네임스페이스 등)의 원하는 상태를 선언하는 방법입니다. 그런 다음 연산자를 사용하여 이러한 구성을 클러스터에 폴링 및 풀 기반 배포를 수행합니다.

클러스터에 microsoft.flux 확장을 배포하여 클러스터와 하나 이상의 원본 리포지토리 간의 연결을 사용할 수 있습니다. fluxConfiguration 리소스 속성은 Kubernetes 리소스가 원본 리포지토리에서 클러스터로 흐르는 위치와 방법을 나타냅니다. fluxConfiguration 데이터는 데이터 기밀성을 보장하기 위해 미사용 시 암호화된 상태로 Azure Cosmos DB 데이터베이스에 저장됩니다.

클러스터에서 실행되는 flux-config 에이전트는 Azure Arc 지원 Kubernetes 리소스에서 신규 또는 업데이트된 fluxConfiguration 확장 리소스를 감시하고, 원본 리포지토리에서 애플리케이션을 배포하고, fluxConfiguration에 수행된 모든 업데이트를 전파하는 작업을 담당합니다. 동일한 Azure Arc 지원 Kubernetes 클러스터에서 네임스페이스 범위를 사용하여 다중 테넌시를 달성하여 여러 fluxConfiguration 리소스를 만들 수도 있습니다.

원본 리포지토리에는 네임스페이스, 구성지도, 배포 및 DaemonSets를 비롯한 유효한 Kubernetes 리소스가 포함될 수 있습니다. 또한 애플리케이션 배포를 위한 Helm 차트를 포함할 수 있습니다. 일반적인 원본 리포지토리 시나리오에는 일반적인 RBAC(역할 기반 액세스 제어) 역할 및 바인딩, 모니터링 에이전트, 로깅 에이전트 및 클러스터 전체 서비스를 포함할 수 있는 조직에 대한 기준 구성 정의가 포함됩니다.

이기종 환경에 배포된 더 큰 클러스터 컬렉션을 관리할 수도 있습니다. 예를 들어, 조직의 기본 구성을 정의하는 하나의 리포지토리를 보유하고 이를 동시에 여러 Kubernetes 클러스터에 적용할 수 있습니다. 여러 원본 리포지토리에서 클러스터에 애플리케이션을 배포할 수도 있습니다.

자세한 내용은 Flux v2에서 GitOps를 사용하여 애플리케이션 배포를 참조 하세요.

토폴로지, 네트워크 및 라우팅

Azure Arc 에이전트가 작동하려면 다음 프로토콜/포트/아웃바운드 URL이 필요합니다.

엔드포인트(DNS) 설명
https://management.azure.com:443 에이전트가 Azure에 연결하고 클러스터를 등록하는 데 필요합니다.
https://[region].dp.kubernetesconfiguration.azure.com:443 상태를 푸시하고 구성 정보를 가져오는 에이전트의 데이터 평면 엔드포인트. 여기서 [region]은 AKS 인스턴스를 호스팅하는 Azure 지역을 나타냅니다.
https://docker.io:443 컨테이너 이미지를 끌어오는 데 필요합니다.
https://github.com:443, git://github.com:9418 예제 GitOps 리포지토리는 GitHub에서 호스트됩니다. 구성 에이전트는 지정한 git 엔드포인트에 대한 연결이 필요합니다.
https://login.microsoftonline.com:443 Azure Resource Manager 토큰을 가져오고 업데이트하는 데 필요합니다.
https://azurearcfork8s.azurecr.io:443 Azure Arc 에이전트의 컨테이너 이미지를 끌어오는 데 필요합니다.

Azure Arc 서비스에서 URL의 전체 목록은 Azure Arc 네트워크 요구 사항을 참조 하세요.

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.

안정성

안정성은 애플리케이션이 고객에 대한 약속을 충족할 수 있도록 합니다. 자세한 내용은 안정성 핵심 요소 개요를 참조하세요.

  • 대부분의 경우 설치 스크립트를 만들 때 선택하는 위치는 온-프레미스 리소스에 지리적으로 가장 가까운 Azure 지역이어야 합니다. 나머지 데이터는 지정한 지역이 포함된 Azure 지리 내에 저장되며, 이는 데이터 보존 요구 사항이 있는 경우 지역 선택에 영향을 미칠 수 있습니다. 가동 중단이 컴퓨터가 연결된 Azure 지역에 영향을 미치는 경우 가동 중단은 연결된 컴퓨터에 영향을 미치지 않지만 Azure를 사용하는 관리 작업이 완료되지 않을 수 있습니다. 지역 중단이 있을 때 복원력을 위해 지리적으로 중복된 서비스를 제공하는 여러 위치가 있는 경우 각 위치의 컴퓨터를 다른 Azure 지역에 연결하는 것이 가장 좋습니다. 사용 가능한 지역은 Azure Arc 지원 Kubernetes에 대해 지원되는 지역을 참조하세요.
  • 아키텍처 섹션에서 참조하는 서비스가 Azure Arc가 배포된 지역에서 지원되는지 확인해야 합니다.

보안

우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.

  • Azure RBAC를 사용하여 Microsoft Entra ID를 사용하는 Azure 및 온-프레미스 환경에서 Azure Arc 지원 Kubernetes에 대한 액세스를 관리할 수 있습니다. 자세한 내용은 Kubernetes 권한 부여에 Azure RBAC 사용을 참조하세요.
  • Kubernetes 클러스터를 Azure Arc에 온보딩할 수 있는 제한된 권한이 있는 서비스 주체를 사용하는 것이 좋습니다. 이 사례는 Azure Pipelines 및 GitHub Actions와 같은 CI/CD 파이프라인에서 유용합니다. 자세한 내용은 Azure Arc 사용 온보딩 서비스 주체 만들기를 참조하세요.
  • 서비스 주체 관리를 단순화하기 위해 AKS에서 관리 ID를 사용할 수 있습니다. 그러나 클러스터는 관리 ID를 사용하여 만들어야 하며 기존 클러스터(Azure 및 온-프레미스 클러스터 포함)는 관리 ID로 마이그레이션할 수 없습니다. 자세한 내용은 Azure Kubernetes Service에서 관리 ID 사용을 참조하세요.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.

일반 비용 고려 사항은 Microsoft Azure Well-Architected Framework의 비용 최적화 원칙 섹션에 설명되어 있습니다.

운영 우수성

운영 우수성은 애플리케이션을 배포하고 프로덕션에서 계속 실행하는 운영 프로세스를 다룹니다. 자세한 내용은 운영 우수성 핵심 요소 개요를 참조하세요.

  • Azure Arc 지원 Kubernetes 클러스터를 구성하기 전에 Azure Resource Manager 구독 한도리소스 그룹 한도를 검토하여 클러스터 수를 계획합니다.
  • 오픈 소스 패키지 도구인 Helm을 사용하여 Kubernetes 애플리케이션 수명 주기를 설치하고 관리합니다. APT 및 Yum과 같은 Linux 패키지 관리자와 유사하게 Helm을 사용하여 사전 구성된 Kubernetes 리소스 패키지인 Kubernetes 차트를 관리합니다.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.

다음 단계

관련 하이브리드 지침:

관련 아키텍처: