다음을 통해 공유


Terraform을 사용하여 Kubernetes 클러스터 만들기(미리 보기)

이 문서에서는 Terraform 및 Azure 확인된 모듈을 사용하여 Azure 로컬에서 Kubernetes 클러스터를 만드는 방법을 설명합니다. 워크플로는 다음과 같습니다.

  • SSH 키 쌍 만들기
  • Terraform을 사용하여 Azure Local 23H2에서 Kubernetes 클러스터를 만듭니다. 기본적으로 클러스터는 Azure Arc에 연결됩니다.
  • 배포의 유효성을 검사하고 클러스터에 연결합니다.

Important

이러한 미리 보기 기능은 셀프 서비스에서 옵트인(opt-in)으로 사용할 수 있습니다. 미리 보기는 "있는 그대로" 및 "사용 가능한 상태로" 제공되며 서비스 수준 계약 및 제한적 보증에서 제외됩니다. Azure Arc 미리 보기에서 사용하도록 설정된 Azure Kubernetes Service는 고객 지원에서 최대한 많이 지원됩니다.

시작하기 전에

시작하기 전에 다음 필수 조건을 갖추고 있는지 확인합니다.

  1. 온-프레미스 인프라 관리자로부터 다음 세부 정보를 가져옵니다.
    • Azure 구독 ID: 배포 및 등록에 Azure Local을 사용하는 Azure 구독 ID입니다.
    • 사용자 지정 위치 이름 또는 ID: 사용자 지정 위치의 Azure Resource Manager ID입니다. 사용자 지정 위치는 Azure 로컬 클러스터 배포 중에 구성됩니다. 인프라 관리자는 사용자 지정 위치의 Resource Manager ID를 제공해야 합니다. 이 매개 변수는 Kubernetes 클러스터를 만드는 데 필요합니다. 인프라 관리자가 사용자 지정 위치 이름 및 리소스 그룹 이름을 제공하는 경우 리소스 관리자 ID를 가져올 az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv수도 있습니다.
    • 논리 네트워크 이름 또는 ID: 다음 단계에 따라 생성된 Azure 로컬 논리 네트워크의 Azure Resource Manager ID입니다. 관리자는 논리 네트워크의 ID를 제공해야 합니다. Kubernetes 클러스터를 만들려면 이 매개 변수가 필요합니다. 논리 네트워크가 만들어진 리소스 그룹을 알고 있는 경우 Azure az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv Resource Manager ID를 가져올 수도 있습니다.
  2. 개발 머신에 GitHub, 최신 버전의 Azure CLITerraform 클라이언트 가 설치되어 있는지 확인합니다.
  3. 개발 머신에 kubectl 을 다운로드하고 설치합니다.

SSH 키 쌍 만들기

SSH 키 쌍(Azure AKS와 동일)을 만들려면 다음 절차를 사용합니다.

  1. 브라우저에서 Cloud Shell 세션을 엽니다.

  2. 포털 또는 명령에서 az sshkey create 명령을 사용하여 다.

    az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
    

    또는

    ssh-keygen -t rsa -b 4096 
    
  3. /.ssh/id_rsa.pub 아래의 Azure 또는 로컬 컴퓨터에서 공개 키의 값을 검색합니다.

Azure에 로그인

Terraform은 Azure CLI를 통한 Azure에 대한 인증만 지원합니다. Azure PowerShell을 사용한 인증은 지원되지 않습니다. 따라서 Terraform 작업을 수행할 때 Azure PowerShell 모듈을 사용할 수 있지만 먼저 Azure에 인증해야 합니다.

Terraform 코드 구현

  1. 샘플 Terraform 코드를 테스트할 수 있는 디렉터리를 만들고, 이를 현재 디렉터리로 만듭니다.

  2. 동일한 디렉터리에서 providers.tf 파일을 만들고 다음 코드를 붙여넣습니다.

    terraform { 
     required_version = "~> 1.5" 
     required_providers { 
       azapi = { 
         source  = "azure/azapi" 
         version = "~> 1.13" 
       } 
       azurerm = { 
        source  = "hashicorp/azurerm" 
        version = "~> 3.74" 
       } 
      }
     }
    
     provider "azurerm" { 
     features { 
      resource_group { 
       prevent_deletion_if_contains_resources = false 
      } 
     } 
    }
    
  3. 최신 AKS Arc AVM 모듈을 가리키는 main.tf 이라는 다른 파일을 만들고 다음 코드를 삽입합니다. 모듈의 설명과 입력을 읽고 필요에 따라 선택적 매개 변수를 추가할 수 있습니다. 관리 그룹 개체 ID를 찾으려면Kubernetes 클러스터에 대해 Microsoft Entra 인증 사용 참조하세요. 이 지침을 따라 귀하의 Azure 환경에서 찾을 수 있습니다.

    module "aks_arc" { 
    # Make sure to use the latest AVM module version
    source = "Azure/avm-res-hybridcontainerservice-provisionedclusterinstance/azurerm" 
    version = "~>0.6"
    
    # Make sure to provide all required parameters  
    resource_group_id = "<Resource_Group>" 
    location = "<Region>" 
    name = "<Cluster_Name>" 
    logical_network_id = "<LNet_ID>" 
    custom_location_id = "<CustomLocation_ID>" 
    agent_pool_profiles = [{count=1}] 
    ssh_public_key =  "Your_SSH_Key"
    
    # Optional parameters, update them as needed
    enable_workload_identity = false 
    enable_oidc_issuer = false 
    rbac_admin_group_object_ids = ["<Admin_Group_Object_ID>"]
    }
    

Terraform 초기화

terraform init을(를) 실행하여 Terraform 배포를 초기화합니다. 플래그를 -upgrade 사용하여 필요한 공급자 플러그 인을 최신 버전으로 업그레이드해야 합니다.

terraform init -upgrade

Terraform 실행 계획 만들기 및 계획 적용

terraform 계획을 실행하여 실행 계획을 만든 다음 terraform apply를 실행하여 클라우드 인프라에 출력 파일을 적용합니다.

terraform plan -out main.tfplan 
terraform apply main.tfplan 

명령이 실행된 다음 리소스가 성공적으로 프로비전된 후 성공을 반환합니다.

배포 유효성 검사 및 클러스터에 연결

이제 개발 머신에서 실행 az connectedk8s proxy 하여 Kubernetes 클러스터에 연결할 수 있습니다. kubectl을 사용하여 노드 및 Pod 상태를 볼 수도 있습니다. Kubernetes 클러스터에 연결에 설명된 것과 동일한 단계를 따릅니다.

다음 단계

Kubernetes 클러스터에 연결