Microsoft Azure에 관리 클러스터 배포 준비

이 항목에서는 Tanzu Kubernetes Grid를 실행하기 위해 Microsoft Azure를 준비하는 방법을 설명합니다.

AVS(Azure VMware Solution)에 Tanzu Kubernetes Grid를 설치하는 경우 vSphere 환경에 설치합니다. 환경을 준비하려면 VMware 클라우드 환경에 관리 클러스터 배포 준비의 Microsoft Azure에서 Azure VMware 솔루션 준비를 참조하고 관리 클러스터를 배포하려면 vSphere에 관리 클러스터 배포 준비를 참조하십시오.

편의를 위해 이 페이지 끝에 있는 준비 체크리스트를 참고하여 Tanzu Kubernetes Grid 관리 클러스터를 Azure에 배포할 준비가 되었는지 확인하십시오.

일반 요구 사항

  • Tanzu CLI가 로컬로 설치됩니다. 독립형 관리 클러스터에서 사용할 Tanzu CLI 및 기타 도구 설치를 참조하십시오.
  • 다음이 있는 Microsoft Azure 계정:

    • 서비스 주체를 생성하고 Owner 역할을 할당하는 데 필요한 사용 권한입니다.
      역할에 대한 자세한 내용은 Azure 기본 제공 역할을 참조하십시오.
    • 클러스터를 위한 충분한 VM 코어(vCPU) 할당량. 표준 Azure 계정에는 지역당 10개 vCPU의 할당량이 있습니다. vCPU 요구 사항은 prod 또는 dev 계획을 사용할지 여부에 따라 다릅니다. 계획에 대한 자세한 내용은 워크로드 클러스터 계획을 참조하십시오.
      Tanzu Kubernetes Grid 클러스터에는 노드당 2개의 vCPU가 필요하며 이는 다음으로 변환됩니다.
    • 관리 클러스터:
      • dev 계획: vCPU 4개(기본 1개, 작업자 1개)
      • prod 계획: vCPU 8개(기본 3개, 작업자 1개)
    • 각 워크로드 클러스터:
      • dev 계획: vCPU 4개(기본 1개, 작업자 1개)
      • prod 계획: vCPU 12개(기본 3개, 작업자 3개)
    • 예를 들어 단일 관리 클러스터, 그리고 동일한 계획을 가진 모든 클러스터를 가정합니다.

      계획 워크로드 클러스터 워크로드용 vCPU 관리용 vCPU 총 vCPU
      개발 1 4 4 8
      5 20 24
      운영 1 12 8 20
      5 60 68

    • 공용 IP 주소 - 표준, 공용 IP 주소 - 기본, 고정 공용 IP 주소의 할당량을 포함하여 클러스터에 충분한 공용 IP 주소 할당량. 표준 Azure 계정에는 지역당 10개의 공용 IP 주소 할당량이 있습니다. 모든 Tanzu Kubernetes Grid 클러스터에는 제어부 노드 수와 Worker 노드 수에 관계없이 2개의 공용 IP 주소가 필요합니다. 유형이 LoadBalancer인 각 Kubernetes 서비스 개체에 1개의 공용 IP 주소가 필요합니다.

  • TCP의 경우 포트 443을 통해 로컬 부트스트랩 시스템과 관리 클러스터 BoM(Bill of Materials) 파일에 나열된 이미지 저장소 간에 트래픽이 허용됩니다.
    • BoM 파일은 ~/.config/tanzu/tkg/bom/ 아래에 있으며 이름에는 Tanzu Kubernetes Grid 버전이 포함됩니다. 예: tkg-bom-v2.1.1+vmware.1 .yaml.
    • 모든 imageRepository 값에서 DNS 조회를 실행하여 해당 CNAMEs를 찾습니다.
  • (선택 사항) 새 키 쌍을 생성하거나 다운로드 패키지 지문의 유효성을 검사하기 위해 OpenSSL이 로컬로 설치되었습니다. OpenSSL을 참조하십시오.
  • (선택 사항) 다음이 있는 VNet(가상 네트워크):

    • 관리 클러스터 제어부 노드의 서브넷
    • SSH와 Kubernetes API 서버 연결을 사용하도록 설정하기 위해 제어부 서브넷에 있고 다음과 같은 인바운드 보안 규칙이 있는 클러스터의 VNet 리소스 그룹에 있는 NSG(네트워크 보안 그룹).
      • 모든 소스 및 대상에 포트 22를 통한 TCP 허용
      • 모든 소스 및 대상 포트 6443에 포트 6443을 통한 TCP 허용은 사용자가 생성하는 클러스터의 VM에 Kubernetes API가 노출되는 곳입니다. 관리 또는 워크로드 클러스터에 대해 이 포트를 변경하려면 클러스터를 배포할 때 CLUSTER_API_SERVER_PORT 변수를 설정합니다.
    • 관리 클러스터 Worker 노드의 서브넷
    • 클러스터의 VNet 리소스 그룹 및 클러스터의 Worker 노드 서브넷에 있는 관리 클러스터 Worker 노드의 NSG

    기존 VNet을 사용하지 않는 경우 설치 프로세스에서 새 VNet을 생성합니다.

  • Azure CLI가 로컬로 설치됩니다. Microsoft Azure 설명서의 Azure CLI 설치를 참조하십시오.

  • LoadBalancer 유형의 서비스를 클래스 기반 워크로드 클러스터에 배포하려면 Azure의 클래스 기반 워크로드 클러스터용 LoadBalancer 서비스에 수동 게이트웨이 또는 프런트 엔드 구성이 필요합니다에 설명된 대로 NAT 게이트웨이 또는 프런트 엔드 구성이 필요합니다.

*또는 외부 네트워크 액세스 없이 설치하려면 인터넷 제한 환경 준비를 참조하십시오.

관리 클러스터 크기 조정 예

아래 표는 Azure의 관리 클러스터의 크기 조정 예를 설명합니다. 이 데이터를 참고하여 배포하려는 워크로드 클러스터 수를 처리하도록 관리 클러스터를 확장합니다. 워크로드 클러스터 VM 크기 열에는 관리 가능… 열의 예에 사용된 VM 크기가 나타납니다.

관리 클러스터 계획 관리 클러스터 VM 크기 관리 가능 … 워크로드 클러스터 VM 크기
제어부 노드 3개 및 Worker 노드 3개
  • 제어부 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)
  • Worker 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)
예:
  • 워크로드 클러스터 5개(각각 제어부 3개와 Worker 노드 200개로 배포) 또는
  • 워크로드 클러스터 10개(각각 제어부 3개와 Worker 노드 50개로 배포)
  • 제어부 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)
  • Worker 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)
제어부 노드 3개 및 Worker 노드 3개
  • 제어부 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)
  • Worker 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)
예: 워크로드 클러스터 1개(제어부 3개와 Worker 노드 250개로 배포)
  • 제어부 노드: Standard_D4s_v3(CPU: 4; 메모리: 16GB; SSD: 32GB)
  • Worker 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)
제어부 노드 3개 및 Worker 노드 3개
  • 제어부 노드: Standard_D4s_v3(CPU: 4; 메모리: 16GB; SSD: 32GB)
  • Worker 노드: Standard_D4s_v3(CPU: 4; 메모리: 16GB; SSD: 32GB)
예: 199개 워크로드 클러스터(각각 제어부 3개와 Worker 노드 3개로 배포)
  • 제어부 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)
  • Worker 노드: Standard_D2s_v3(CPU: 2; 메모리: 8GB; SSD: 16GB)

기존 VNet용 Azure NSG 생성

Azure의 Tanzu Kubernetes Grid 관리 및 워크로드 클러스터를 사용하려면 해당 VNet과 해당 VNet 리소스 그룹에 두 개의 NSG(네트워크 보안 그룹)를 정의해야 합니다.

  • 이름이 CLUSTER-NAME-controlplane-nsg이고 클러스터의 제어부 서브넷과 연결된 NSG
  • 이름이 CLUSTER-NAME-node-nsg이고 클러스터의 Worker 노드 서브넷과 연결된 NSG

    여기서 CLUSTER-NAME은 클러스터의 이름입니다.

    주의

    위 형식을 따르지 않는 NSG 이름을 지정하면 배포되지 않을 수 있습니다.

관리 클러스터에 기존 VNet을 지정하는 경우 위의 일반 요구 사항에 설명된 대로 이러한 NSG를 생성해야 합니다. 관리 클러스터용 기존 VNet은 설치 관리자 인터페이스에서 기존 VNet 선택으로 또는 구성 파일에서 AZURE_VNET_NAME으로 지정됩니다.

클러스터에 기존 VNet을 지정하지 않으면 배포 프로세스에서 새 VNet과 필요한 NSG를 생성합니다.

클러스터의 VNet, 리소스 그룹, 서브넷을 구성하는 방법은 구성 파일 변수 참조의 Microsoft Azure 표를 참조하십시오.

Tanzu Kubernetes Grid를 Azure Client 애플리케이션으로 등록

Tanzu Kubernetes Grid는 Azure 리소스를 서비스 주체를 통해 Azure에 액세스하는 등록된 클라이언트 애플리케이션으로 관리합니다. 서비스 주체를 생성하고 Azure 리소스에 대한 액세스를 구성하려면 az ad sp create-for-rbac 명령을 사용합니다.

  1. az login을 실행하여 Azure CLI에 로그인합니다.

  2. 서비스 주체를 생성하고 Owner 역할을 할당합니다.

    az ad sp create-for-rbac --role "Owner" --name "APP-NAME" --scopes /subscriptions/SUBSCRIPTION-ID/resourceGroups/RESOURCE-GROUP
    az role assignment create --assignee APP-ID --role "Owner"
    

    형식 설명:

    • APP-NAME은 서비스 주체에게 부여할 이름입니다.
    • SUBSCRIPTION-IDRESOURCE-GROUP은 Azure 구독 ID와 VNet 리소스 그룹입니다.
    • APP-IDaz ad sp create-for-rbac에서 반환된 appId 값입니다.

    예를 들어 Owner 역할을 생성하고 tkg라는 서비스 주체에 할당합니다.

    $ az ad sp create-for-rbac --role "Owner" --name "tkg" --scopes /subscriptions/c789uce3-aaaa-bbbb-cccc-a51b6b0gb405/resourceGroups/myrg
    Creating 'Owner' role assignment under scope '/subscriptions/c789uce3-aaaa-bbbb-cccc-a51b6b0gb405'
    The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
    'name' property in the output is deprecated and will be removed in the future. Use 'appId' instead.
    {
     "appId": "c407cfd4-aaaa-bbbb-cccc-80af703eb0ed",
     "displayName": "tkg",
     "name": "c407cfd4-aaaa-bbbb-cccc-80af703eb0ed",
     "password": "R6yM_.aaaabbbbccccdddd111122223333",
     "tenant": "9c117323-aaaa-bbbb-cccc-9ee430723ba3"
    }
    $ az role assignment create --assignee c407cfd4-aaaa-bbbb-cccc-80af703eb0ed --role "Owner"
    

    출력을 기록합니다. 관리 클러스터를 배포할 때 다음 기본 이미지 라이센스 액세스 단계에서 이 정보를 사용합니다. az ad sp create-for-rbac에서 지원하는 전체 옵션 목록은 Azure 설명서의 az ad sp create-for-rbac를 참조하십시오.

기본 이미지 라이센스 수락

Azure에서 관리 클러스터 VM을 실행하려면 기본 Kubernetes 버전과 시스템 OS에 대한 라이센스를 수락합니다.

az vm image terms accept 명령을 실행하고 --plan과 구독 ID를 지정합니다.

Tanzu Kubernetes Grid v2.1.1에서 기본 클러스터 이미지 --plan 값은 kubernetes 버전 1.24.10과 시스템 OS인 Ubuntu 20.04를 기준으로 k8s-1dot24dot10-ubuntu-2004입니다. 다음 명령을 실행합니다.

az vm image terms accept --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot24dot10-ubuntu-2004 --subscription AZURE_SUBSCRIPTION_ID

여기서 AZURE_SUBSCRIPTION_ID는 Azure 구독 ID입니다.

클러스터를 배포할 때 그리고 새 버전의 Tanzu Kubernetes Grid로 업그레이드할 때마다 사용하려는 Kubernetes 또는 OS의 모든 버전에 대해 기본 이미지 라이선스를 수락하려면 이 작업을 반복해야 합니다.

SSH 키 쌍 생성(선택 사항)

Tanzu CLI를 사용하여 bootstrap 시스템이라고 하는 시스템에서 관리 클러스터를 배포합니다. Azure에 연결하려면 부트스트랩 시스템이 SSH 키 쌍의 공개 키 부분을 제공해야 합니다. 부트스트랩 시스템에 아직 SSH 키 쌍이 없는 경우 ssh-keygen과 같은 도구를 사용하여 하나를 생성할 수 있습니다.

  1. 부트스트랩 시스템에서 다음 ssh-keygen 명령을 실행합니다.

    ssh-keygen -t rsa -b 4096 -C "[email protected]"
    
  2. Enter file in which to save the key (/root/.ssh/id_rsa): 프롬프트에서 Enter 키를 눌러 기본값을 수락합니다.

  3. 키 쌍의 암호를 입력하고 반복합니다.
  4. 시스템에서 실행 중인 SSH 에이전트에 개인 키를 추가하고 이전 단계에서 생성한 암호를 입력합니다.

    ssh-add ~/.ssh/id_rsa
    
  5. 관리 클러스터를 배포할 때 쉽게 복사하여 붙여 넣을 수 있도록 텍스트 편집기에서 .ssh/id_rsa.pub 파일을 엽니다.

준비 체크리스트

이 체크리스트를 사용하여 Tanzu Kubernetes Grid 관리 클러스터를 Azure에 배포할 준비가 되었는지 확인합니다.

  • 설치된 Tanzu CLI

    • tanzu version을 실행합니다. 출력에는 Tanzu Kubernetes Grid v2.1.1의 Tanzu Framework 버전인 version: v0.28.1이 나와야 합니다.
  • Azure 계정

    • https://portal.azure.com에서 Azure 웹 포털에 로그인합니다.
  • 설치된 Azure CLI

    • az version을 실행합니다. 출력에는 Microsoft Azure 설명서의 Azure CLI설치 나열된 대로 Azure CLI의 현재 버전이 나열되어야 합니다.
  • 등록된 tkg

    • Azure Portal에서 Active Directory > 애플리케이션 등록 > 보유한 애플리케이션을 선택하고 tkg 애플리케이션이 위의 Tanzu Kubernetes Grid를 Azure Client 애플리케이션으로 등록에 따라 현재 암호와 함께 나와 있는지 확인합니다.
    • 또는 Azure CLI에서 az ad sp show --id.를 실행합니다.
  • 수락된 기본 VM 이미지 라이센스

    • az vm image terms show --publisher vmware-inc --offer tkg-capi-2022-06-24 --plan k8s-1dot24dot10-ubuntu-2004를 실행합니다. 출력에 "accepted": true가 포함되어야 합니다.

후속 작업

프로덕션 배포의 경우 클러스터에 ID 관리를 사용하도록 설정하는 것이 좋습니다. * 관리 클러스터를 배포하기 전에 수행할 준비 단계에 대한 자세한 내용은 구성 ID 관리ID 제공자 세부 정보를 참조하십시오. * Tanzu Kubernetes Grid의 ID 관리 및 액세스 제어에 대한 개념 정보는 ID 및 액세스 관리 정보를 참조하십시오.

외부 인터넷 연결이 있는 환경에서 Tanzu Kubernetes Grid를 사용하는 경우, ID 관리를 설정하면 관리 클러스터를 Azure에 배포할 준비가 된 것입니다.

check-circle-line exclamation-circle-line close-line
Scroll to top icon