Linux 사용자 지정 시스템 이미지

이 절차에서는 AWS, Azure 또는 vSphere 클러스터를 생성할 때 사용할 Linux 사용자 지정 시스템 이미지를 빌드하는 방법을 안내합니다. 아래 섹션으로 나뉘어 있습니다. Tanzu Kubernetes Grid의 클러스터 유형에 대한 자세한 내용은 워크로드 클러스터 유형을 참조하십시오.

  • Linux 이미지 사전 요구 사항은 사용자 지정 Linux 이미지를 성공적으로 빌드하고 사용하는 데 필요한 것을 표시합니다.
  • Linux 이미지 빌드는 Kubernetes Image Builder 및 Docker를 사용하여 이미지를 사용자 지정하고 빌드하는 방법을 보여 줍니다.
  • Linux 이미지용 TKr 생성은 Linux 이미지를 TKr(Tanzu Kubernetes 릴리스)로 변환하는 방법을 보여 줍니다. 이는 이미지를 향후 Kubernetes 버전의 기본값으로 만들고 사용하고 관리하는 데 추가 옵션을 제공합니다.
  • 관리 클러스터에 Linux 이미지 사용은 사용자 지정 이미지를 템플릿으로 사용하는 관리 클러스터를 배포하는 방법을 보여 줍니다.
  • 워크로드 클러스터에 Linux 이미지 사용은 사용자 지정 이미지를 템플릿으로 사용하는 워크로드 클러스터를 배포하는 방법을 보여 줍니다.

절차에서 언급한 것처럼 일부 단계는 클래스 기반 클러스터 또는 계획 기반(레거시) 클러스터에 대한 이미지를 구축하는지 여부에 따라 다릅니다.

Linux 이미지 사전 요구 사항

Linux 사용자 지정 시스템 이미지를 구축하려면 다음이 필요합니다.

  • 대상 인프라, AWS, Azure 또는 vSphere의 계정.
  • 다음이 설치된 macOS 또는 Linux 워크스테이션:
    • Docker 데스크톱
    • AWS: aws CLI(명령줄 인터페이스)
    • Azure: az CLI
    • vSphere: RHEL 8 이미지를 빌드하려면 macOS가 아닌 Linux 워크스테이션이 필요합니다.

(클래스 기반, vSphere) OS 이미지 버전 검색

vSphere에서 클래스 기반 클러스터에 사용할 이미지를 빌드하기 전에 사용자 지정 이미지에 사용할 Kubernetes 버전의 기본 Ubuntu OVA와 연결된 OS 이미지 버전을 검색해야 합니다. 아래의 Linux 이미지 빌드 단계에서 사용자 지정 이미지에 이 OS 이미지 버전을 할당합니다.

OS 이미지 버전을 검색하려면 사용 사례에 따라 다음 중 하나를 수행합니다.

  • 현재 Tanzu Kubernetes Grid 버전의 기본 Kubernetes 버전을 사용하여 생성된 관리 클러스터가 실행 중인 경우 클러스터에서 OS 이미지 버전을 검색할 수 있습니다.

    1. kubectl 컨텍스트를 관리 클러스터로 설정합니다.

    2. 사용 가능한 TKr 목록에서 사용자 지정 이미지에 사용할 Kubernetes 버전에 대해 Tanzu Kubernetes 릴리스(TKr)를 선택합니다. 예: v1.27.5---vmware.2-tkg.1. 사용 가능한 TKr을 나열하려면 다음을 실행합니다.

      kubectl get tkr
      
    3. TKr을 열고 osImages 속성을 찾습니다. 이 속성은 TKr과 연결된 OSImage 개체의 이름을 지정합니다.

    4. 기본 Ubuntu OVA용 OSImage 개체를 찾아 엽니다. OSImage 개체의 이름이 TKr의 osImages 이름 중 하나와 일치합니다.

      kubectl get osimages
      
    5. 기본 Ubuntu OVA용 OSImage 개체에서 spec.image.ref 아래의 version 속성 값을 찾아 기록합니다. 예: v1.27.5+vmware.1-tkg.1-765d418b72c247c2310384e640ee075e.

  • 현재 Tanzu Kubernetes Grid 버전의 기본 Kubernetes 버전을 사용하여 생성된 실행 중인 관리 클러스터가 없는 경우, 로컬 또는 vSphere 기본 Ubuntu OVA에서 OS 이미지 버전을 직접 검색할 수 있습니다.

    • OS 이미지 버전을 로컬로 검색하려면 다음을 수행합니다.

      1. Customer Connect에서 대상 Kubernetes 버전용 기본 Ubuntu OVA를 다운로드합니다.
        1. Tanzu Kubernetes Grid 다운로드 페이지로 이동한 후 VMware Customer Connect 자격 증명으로 로그인하고 다운로드 페이지로 이동(Go to Downloads)을 클릭합니다.
        2. OVA를 다운로드합니다. 예: Ubuntu 2004 Kubernetes v1.27.5 OVA.
      2. 선택한 압축 해제 도구를 사용하여 다운로드한 OVA의 압축을 풉니다.
      3. 압축을 푼 디렉토리에서 .ofv 파일을 찾습니다.
      4. .ofv 파일에서 OVA VERSION 속성을 검색하고 해당 값을 기록합니다. 예: v1.27.5+vmware.1-tkg.1-765d418b72c247c2310384e640ee075e. 속성은 다음과 유사합니다.

        <Property ovf:key="VERSION" ovf:type="string" ovf:userConfigurable="false" ovf:value="v1.27.5+vmware.1-tkg.1-765d418b72c247c2310384e640ee075e"/>
        
    • 대상 Kubernetes 버전용 기본 Ubuntu OVA를 vSphere에 이미 업로드한 경우, vSphere UI에서 OVA VM 속성을 검사하거나 govc CLI를 사용하여 OS 이미지 버전을 검색할 수도 있습니다. 이 방법을 사용하려면 OVA VM을 템플릿으로 변환하기 전에 OS 이미지 버전을 검색합니다.

      • vSphere UI에서 OS 이미지 버전을 검색하려면 다음을 수행합니다.

        1. OVA VM을 찾은 후 OVA VM 요약 페이지에서 구성(Configure) 탭을 엽니다.
        2. 설정(Settings) –> vApp 옵션(vApp Options)으로 이동합니다.
        3. 속성(Properties) 테이블에서 버전(VERSION) 키를 찾아서 기본 값(Default Value)을 기록합니다. 예: v1.27.5+vmware.1-tkg.1-765d418b72c247c2310384e640ee075e.
      • govc CLI를 사용하여 OS 이미지 버전을 검색하려면 govc vm.info 명령을 실행합니다. 예:

        govc vm.info -json /dc0/vm/ubuntu-2004-kube-v1.27.5+vmware.1-tkg.1 | jq
        

        출력에서 "Id": "VERSION"을 검색하고 "DefaultValue" 속성의 값을 기록합니다. 예:

        {
        "Key": 10,
        "ClassId": "",
        "InstanceId": "",
        "Id": "VERSION",
        "Category": "Cluster API Provider (CAPI)",
        "Label": "VERSION",
        "Type": "string",
        "TypeReference": "",
        "UserConfigurable": false,
        "DefaultValue": "v1.27.5+vmware.1-tkg.1-765d418b72c247c2310384e640ee075e",
        "Value": "",
        "Description": ""
        }
        

Linux 이미지 빌드

  1. 인프라에 대한 인증 설정:

    • vSphere: 자격 증명 JSON 파일을 생성하고 해당 값을 입력합니다.

      {
      "cluster": "",
      "convert_to_template": "false",
      "create_snapshot": "true",
      "datacenter": "",
      "datastore": "",
      "folder": "",
      "insecure_connection": "false",
      "linked_clone": "true",
      "network": "",
      "password": "",
      "resource_pool": "",
      "template": "",
      "username": "",
      "vcenter_server": ""
      }
      
    • AWS: aws CLI에 로그인합니다. 그런 다음, 메시지가 표시된 지역을 인증하고 지정합니다.

      aws configure
      
    • Azure: az CLI에 로그인합니다. 구성 JSON 파일 azure-sig.json을 생성하고 Azure 관련 정보를 입력합니다. 이러한 파일의 예는 여기에 있습니다.

  2. projects.registry.vmware.com에서 Linux 리소스 번들 컨테이너를 다운로드합니다.

    1. 워크스테이션이 VMware 이미지 레지스트리 projects.registry.vmware.com에 액세스할 수 있는지 확인합니다.

    2. Image Builder가 Linux OVA를 구축하는 데 필요한 Kubernetes Linux 바이너리를 사용하여 컨테이너를 다운로드하고 실행합니다.

      docker pull projects.registry.vmware.com/tkg/linux-resource-bundle:v1.27.5_vmware.1-tkg.1
      
      docker run -d -p 3000:3000 projects.registry.vmware.com/tkg/linux-resource-bundle:v1.27.5_vmware.1-tkg.1
      
  3. Image Builder 구성 디렉토리를 다운로드합니다.

    1. 빌드할 Image Builder 구성 버전을 결정합니다.

      • TKG Image Builder용 VMware {code} Sample Exchange를 검색하여 사용 가능한 버전을 표시합니다.
      • 각 Image Builder 버전은 호환되는 Kubernetes 및 Tanzu Kubernetes Grid 버전에 해당합니다. 예를 들어 TKG-Image-Builder-for-Kubernetes-v1.27.5-on-TKG-v2.4.0-master.zip은 Tanzu Kubernetes Grid v2.4.0용 Kubernetes v1.27.5 이미지를 빌드합니다.
      • Tanzu Kubernetes Grid를 처음 설치할 때 수행해야 하는 관리 클러스터를 생성해야 하는 경우 Tanzu Kubernetes Grid 버전의 기본 Kubernetes 버전을 선택합니다. 예를 들어 Tanzu Kubernetes Grid v2.4.0에서 기본 Kubernetes 버전은 v1.27.5입니다. 워크로드 클러스터의 경우 v1.27.5 외에 Kubernetes v1.26.8 또는 v1.25.13을 구축할 수도 있습니다.

      아래 단계에서는 Tanzu Kubernetes Grid v2.4.0용 Kubernetes v1.27.5 이미지를 구축하는 방법을 설명합니다.

    2. 구성 코드 zip 파일을 다운로드하고 해당 내용의 압축을 풉니다.

    3. cdTKG-Image-Builder- 디렉토리로 이동하여 tkg.json 파일이 현재 디렉토리에 있도록 합니다.

  4. vSphere vSphere 경우 image builder 디렉토리에 metadata.json 파일을 생성합니다. 이 파일은 이후 단계에서 사용자 지정 TKr에 나열된 것과 일치하도록 버전 문자열을 설정합니다.

    • 클래스 기반: 다음과 같이 위의 OS 이미지 버전 단계에서 검색한 값을 사용합니다.

      {
      "VERSION": "v1.27.5+vmware.1-tkg.1-765d418b72c247c2310384e640ee075e"
      }
      
    • 계획 기반: image-builder는 v1.27.5+vmware.1-tkg.1과 같이 VMware 게시된 OVA와 동일한 버전 문자열을 생성하는 OVA를 제공합니다. 사용자 지정 이미지의 경우 VMware는 조직에 -tkg.1을 의미 있는 문자열로 바꾸는 것을 권장합니다. 예를 들면 다음과 같습니다.

      {
      "VERSION": "v1.27.5+vmware.1-myorg.0"
      }
      
  5. tkg.json 파일을 편집하여 <IP><PORT> 설정, 그리고 containerd_urlkubernetes_http_source의 사용자 지정을 입력합니다. 여기서,

    • IP는 Docker 컨테이너를 실행하는 시스템의 IP입니다.
    • PORT는 Docker 호스트의 사용되지 않은 포트를 컨테이너의 포트 3000(예: 3001:3000)과 연결합니다. 컨테이너는 포트 3000을 통해 아티팩트를 노출합니다.
  6. 다음 옵션을 포함하려면 tkg.json 파일을 계속 편집합니다.

    • Photon: Photon-3 OVA를 구축하는 경우 tkg.json"extra_rpms"를 편집하여 지원되는 추가 사용자 지정 패키지를 반영합니다.

      "extra_rpms": "sysstat nfs-utils ethtool apparmor-parser"
      
    • STIG 및 CIS 강화: 사용자 지정 Ubuntu 이미지를 기본 수준보다 높게 강화하려면 다음을 수행합니다.

      1. 다음 변수의 일부 또는 전부에 ansible_user_vars를 설정하는 줄을 true로 추가합니다. 이러한 기본값은 false입니다.

      2. STIG:

        • install_aide - AIDE 활성화(고급 침입 탐지 환경)
        • install_sshd_login_banner - DoD 로그인 배너 설치
        • remove_existing_ca_certs - DoD PKI 인프라 유지
        • install_audispd_plugins - 이벤트 멀티플렉서(audispd) 플러그인 설치
      3. CIS:

        • install_aide - AIDE 활성화(고급 침입 탐지 환경)
        • install_clamav - ClamAV 바이러스 백신 활성화
        • install_systemd_timesyncd - 시간 동기화 대신 시간 동기화 사용
        • install_protect_kernel_defaults - 커널 보호 기본값 업스트림 설정
      4. STIG의 경우 /home/imagebuilder/stig_ubuntu_2004를 추가하거나 CIS의 경우 /home/imagebuilder/cis_ubuntu_2004를 추가하여 custom_role_names 설정을 수정합니다.

      예를 들어 추가 CIS 강화의 경우 다음을 수행합니다.

        "ansible_user_vars": "install_aide=true install_clamav=true install_systemd_timesyncd=true install_protect_kernel_defaults=true",
        "custom_role_names": "/home/imagebuilder/tkg /home/imagebuilder/cis_ubuntu_2004",
      
      참고

      사용자 지정 Photon 이미지는 ansible_user_vars를 통한 추가 강화에 대해 지원되지 않습니다.

    • FIPS: FIPS 지원 이미지를 구축하려면 다음 설정을 제거합니다.

      "ansible_user_vars": "install_fips=no"
      
    • 인터넷 제한: HTTP 프록시 서버를 통해 인터넷에 액세스하는 인터넷 제한 환경에 이미지를 빌드하려면 다음을 추가합니다.

      "http_proxy": "http://proxy.acme.com:80",
      "https_proxy": "http://proxy.acme.com:80",
      "no_proxy": "localhost, 127.0.0.1, acme.com, 10.0.0.0/8"
      
    • GPU 지원 클러스터: GPU 지원 클러스터용 이미지를 빌드하려면 다음을 추가합니다.

      "vmx_version": "17"
      

    추가 사용자 지정을 tkg.json에 추가하거나 별도의 파일 customizations.json에 추가할 수 있습니다.

  7. 다음 단계에서 다음 매개 변수 문자열을 수집하여 docker 명령에 연결합니다. 이 중 대부분은 현재 작동하는 디렉토리를 현재 작업 디렉토리를 이미지를 빌드하는 데 사용되는 컨테이너의 /home/imagebuilder 디렉토리로 복사하는 docker run -v 매개 변수를 지정합니다.

    • AUTHENTICATION: 로컬 CLI 디렉토리를 복사합니다. 사용:
      • vSphere: /PATH/TO/CREDENTIALS.json:/home/imagebuilder/vsphere.json
      • AWS: ~/.aws:/home/imagebuilder/.aws
      • Azure: ~/.azure:/home/imagebuilder/.azure
    • SOURCES: 버전이 지정된 OS, Kubernetes, CNI(컨테이너 네트워크 인터페이스) 이미지의 다운로드 소스를 나열하는 저장소의 tkg.json 파일을 복사합니다
      • /PATH/TO/tkg.json:/home/imagebuilder/tkg.json 사용
    • ROLES: Image Builder에 필요한 Ansible 역할이 포함된 저장소의 tkg 디렉토리를 복사합니다.
      • `/PATH/TO/tkg:/home/imagebuilder/tkg 사용
    • TESTS: 이미지의 대상 인프라, OS, Kubernetes 버전용으로 설계된 goss 테스트 디렉토리를 복사합니다.
      • 저장소의 goss 디렉토리에 있는 파일의 파일 이름을 사용합니다.
      • 예: amazon-ubuntu-1.27.5+vmware.1-goss-spec.yaml
    • CUSTOMIZATIONS: 사용자 지정 파일을 JSON 형식으로 복사합니다.
      • Image Builder 설명서에서 사용자 지정을 참조하십시오.
      • 수정하기 전에 VMware CRE(Customer Reliability Engineering)에게 모범 사례 및 권장 사항을 문의합니다.
    • PACKER_VAR_FILES: Packer용 변수를 포함하는 위의 JSON 파일의 공백으로 구분된 목록.
    • (Azure) AZURE-CREDS: Image Builder 설명서에 설명된 대로 Azure 자격 증명 파일의 경로.
    • COMMAND: 사용자 지정 이미지 OS를 기반으로 다음 중 하나와 같은 명령을 사용합니다. vSphere 및 Azure 이미지의 경우 명령은 build-node-ova-build-azure-sig-로 시작합니다.
      • build-ami-ubuntu-2004: Ubuntu v20.04
      • build-ami-ubuntu-1804: Ubuntu v18.04
      • build-ami-amazon-2: Amazon Linux 2
      • build-node-ova-vsphere-ubuntu-2004: GPU 지원 클러스터
  8. 위의 문자열을 사용하여 VMware 레지스트리 projects.registry.vmware.com에서 끌어온 Docker 컨테이너에서 Image Builder를 실행합니다.

    azure용 이미지를 빌드하지 않는 경우 vSphere 및 env-file용 이미지를 빌드하지 않는 경우 metadata.json을 생략합니다.

    export ROLES="... the value for roles you created above"
    export SOURCES="... ..." 
    docker run -it --rm \
        -v $AUTHENTICATION \
        -v $SOURCES \
        -v $ROLES \
        -v /PATH/TO/goss/TESTS.yaml:/home/imagebuilder/goss/goss.yaml \
        -v /PATH/TO/metadata.json:/home/imagebuilder/metadata.json \
        -v /PATH/TO/CUSTOMIZATIONS.json:/home/imagebuilder/CUSTOMIZATIONS.json \
        --env PACKER_VAR_FILES="tkg.json CUSTOMIZATIONS.json" \
        --env-file AZURE-CREDS \
        --env IB_OVFTOOL=1 \
        projects.registry.vmware.com/tkg/image-builder:v0.1.13_vmware.2 \
        COMMAND
    
    참고

    이 명령은 완료하는 데 몇 분 정도 소요될 수 있습니다.

    vSphere: .ova 파일은 워크스테이션의 로컬 파일 시스템에 저장됩니다. 이러한 OVA를 저장할 폴더를 컨테이너 내의 /home/imagebuilder/output에 마운트해야 합니다. 그런 다음 컨테이너 이미지를 사용하여 OVA를 생성합니다.

    docker run -it --rm \
      -v /PATH/TO/CREDENTIALS.json:/home/imagebuilder/vsphere.json \
      -v $(pwd)/tkg.json:/home/imagebuilder/tkg.json \
      -v $(pwd)/tkg:/home/imagebuilder/tkg \
      -v $(pwd)/goss/vsphere-ubuntu-1.27.5+vmware.1-goss-spec.yaml:/home/imagebuilder/goss/goss.yaml \
      -v $(pwd)/metadata.json:/home/imagebuilder/metadata.json \
      -v /PATH/TO/OVA/DIR:/home/imagebuilder/output \
      --env PACKER_VAR_FILES="tkg.json vsphere.json" \
      --env OVF_CUSTOM_PROPERTIES=/home/imagebuilder/metadata.json \
      --env IB_OVFTOOL=1 \
      projects.registry.vmware.com/tkg/image-builder:v0.1.13_vmware.2 \
      build-node-ova-vsphere-ubuntu-2004
    

    GPU 지원 클러스터: 명령을 실행하여 OVA를 생성할 때 위 단계에 생성된 customizations.json 파일을 포함합니다.

    docker run -it --rm \
      -v /PATH/TO/CREDENTIALS.json:/home/imagebuilder/vsphere.json \
      -v $(pwd)/tkg.json:/home/imagebuilder/tkg.json \
      -v $(pwd)/tkg:/home/imagebuilder/tkg \
      -v $(pwd)/goss/vsphere-ubuntu-1.27.5+vmware.1-goss-spec.yaml:/home/imagebuilder/goss/goss.yaml \
      -v $(pwd)/metadata.json:/home/imagebuilder/metadata.json \
      -v $(pwd)/customizations.json:/home/imagebuilder/customizations.json \
      -v /PATH/TO/OVA/DIR:/home/imagebuilder/output \
      --env PACKER_VAR_FILES="tkg.json vsphere.json customizations.json" \
      --env OVF_CUSTOM_PROPERTIES=/home/imagebuilder/metadata.json \
      --env IB_OVFTOOL=1 \
      projects.registry.vmware.com/tkg/image-builder:v0.1.13_vmware.2 \
      build-node-ova-vsphere-ubuntu-2004
    

    RHEL: OVA를 빌드하려면 macOS의 Docker는 --network host 옵션을 지원하지 않기 때문에 macOS가 아닌 Linux 시스템을 사용해야 합니다.
    또한 위의 docker run 명령에 다음을 추가하여 OS를 Red Hat에 라이센스가 부여된 OS로 등록하고 업데이트에 등록해야 합니다.

      -v $(pwd)/isos/rhel-8.4-x86_64-dvd.iso:/rhel-8.4-x86_64-dvd.iso \
      --network host \
      --env RHSM_USER=USER --env RHSM_PASS=PASS
    

    여기서:

    • RHSM_USERRHSM_PASS는 Red Hat 구독 관리자 계정의 사용자 이름과 암호입니다.
    • 위 예의 $(pwd)/isos/rhel-8.4-x86-64-dvd.iso에서 로컬 RHEL ISO 경로를 추가 볼륨으로 매핑합니다.

    AWS: Ubuntu v20.04 및 Kubernetes v1.27.5가 포함된 사용자 지정 이미지를 생성하여 AWS에서 실행합니다. tkg.json이 포함된 디렉토리에서 실행됩니다.

    docker run -it --rm \
        -v ~/.aws:/home/imagebuilder/.aws \
        -v $(pwd)/tkg.json:/home/imagebuilder/tkg.json \
        -v $(pwd)/tkg:/home/imagebuilder/tkg \
        -v $(pwd)/goss/amazon-ubuntu-1.27.5+vmware.1-goss-spec.yaml:/home/imagebuilder/goss/goss.yaml \
        -v /PATH/TO/CUSTOMIZATIONS.json /home/imagebuilder/aws.json \
        --env PACKER_VAR_FILES="tkg.json aws.json" \
        --env IB_OVFTOOL=1 \
        projects.registry.vmware.com/tkg/image-builder:v0.1.13_vmware.2 \
        build-ami-ubuntu-2004
    
  9. 이미지를 클라우드 제공자에 업로드합니다.

    • vSphere 지침은 vSphere에 관리 클러스터 배포 준비의 기본 이미지 템플릿을 vSphere로 가져오기를 참조하십시오.
    • 대상 Kubernetes 버전용 기본 Ubuntu OVA를 vSphere에 업로드한 경우 사용자 지정 OVA를 업로드하기 전에 기본 OVA를 삭제합니다.

Linux 이미지용 TKr 생성

Linux 이미지를 향후 Kubernetes 버전의 기본값으로 설정하려면 이를 기반으로 TKr을 생성합니다. 그렇지 않으면 아래의 워크로드 클러스터에 Linux 이미지 사용으로 건너뜁니다.

아래 다이어그램에서는 vSphere에서 사용자 지정 Linux 이미지에 대한 TKr을 생성하는 방법에 대한 개괄적인 개요입니다.

TKr 생성

TKr을 생성하는 방법:

  1. ~/.config/tanzu/tkg/bom/ 디렉토리에서 사용자 지정 이미지의 Kubernetes 버전에 해당하는 TKr BoM을 엽니다. 예를 들어, Kubernetes v1.27.5용 tkr-bom-v1.27.5+vmware.1-tkg.1.yaml과 같은 파일 이름이 있습니다.

    필요한 TKr BoM 파일이 디렉토리에 없는 경우 비-기본 Kubernetes 버전으로 클러스터 배포에 설명된 대로 원하는 Kubernetes 버전으로 클러스터를 배포하여 가져올 수 있습니다.

    1. BoM 파일에서 해당 인프라의 이미지 정의 블록을 찾습니다. vSphere는 ova, AWS는 ami, Azure는 azure. 각 이미지 정의 블록에는 osinfo.name, osinfo.version, osinfo.arch가 포함됩니다. 여기서

      • osinfo.name은 OS 이름입니다. 예: ubuntu. 지원되는 OS 목록을 보려면 대상 운영 체제를 참조하십시오.
      • osinfo.version은 OS 버전입니다. 예: 20.04. 지원되는 버전 목록을 보려면 대상 운영 체제를 참조하십시오.
      • osinfo.arch는 OS 아치입니다. 지원되는 값은 amd64입니다.
    2. 새 OS 이미지에 대한 참조를 추가하려면 대상 인프라에 따라 ova, ami 또는 azure 아래에 이미지 정의 블록을 추가합니다. 이미지 정의 블록에는 위에 설명된 대로 osinfo.name, osinfo.version, osinfo.arch가 포함되어야 합니다. 또한 이미지 정의 블록을 추가할 때 다음을 수행합니다.

      • vSphere:

        • name:은 OS 버전을 포함하는 OVA의 고유한 이름입니다(예: my-ova-ubuntu-2004).
        • version:은 OVA를 생성할 때 metadata.json에서 할당된 고유한 VERSION입니다(예: v1.27.5+vmware.1-myorg.0).
        참고

        versionmetadata.json에 있는 동일한 VERSION과 정확히 일치해야 합니다.

      • AWS: 사용자 지정 이미지를 사용하려는 각 영역의 경우, 기존의 id 값 형식을 따르지만 끝에는 고유한 16진수 문자열을 사용합니다(예: ami-693a5e2348b25e428).

      BoM 파일이 영역 아래에 이미지를 정의하는 경우 사용자 지정 이미지 정의 블록이 해당 영역의 첫 번째에 나열되어야 합니다. 각 지역 내에서 클러스터 생성 프로세스는 나열된 첫 번째 적합한 이미지를 선택합니다.

    3. release.version 값에서 접미사를 추가하여 사용자 지정 버전을 설정합니다. 접두사를 추가하여 버전을 사용자 지정하지 마십시오. 예를 들어 v1.27.5+vmware.1-tkg.1v1.27.5+vmware.1-tkg.1-mycustomtkr로 변경합니다.

    4. 이전 단계에서 release.version에 지정한 것과 동일한 사용자 지정 접미사를 사용하여 BoM 파일을 저장합니다.

      파일 이름에 더하기(+) 문자가 포함된 경우 + 삼중 대시(---)로 바꿉니다.

      예를 들어 BOM 파일을 tkr-bom-v1.27.5---vmware.2-tkg.1-mycustomtkr.yaml로 저장합니다.

  2. base64 파일 내용을 이진 문자열로 인코딩합니다. 예:

    cat tkr-bom-v1.27.5---vmware.2-tkg.1-mycustomtkr.yaml | base64 -w 0
    
  3. 다음과 같이 값을 사용하여 ConfigMap YAML 파일을 생성합니다(예: configmap-v1.27.5---vmware.2-tkg.1-mycustomtkr.yaml).

    apiVersion: v1
    kind: ConfigMap
    metadata:
     name: CUSTOM-TKG-BOM
     labels:
       tanzuKubernetesRelease: CUSTOM-TKR
    binaryData:
     bomContent: "BOM-BINARY-CONTENT"
    

    형식 설명:

    • CUSTOM-TKG-BOMConfigMap 이름으로, BOM 파일에 지정한 TKr release.version 값을 포함하고 + 기호를 삼중 대시(—)로 바꿔야 합니다. 예를 들어 v1.27.5---vmware.2-tkg.1-mycustomtkr을 설정합니다.
    • CUSTOM-TKR은 TKr의 이름이며, CUSTOM-TKG-BOM에 지정한 값과 일치해야 합니다. 예: v1.27.5---vmware.2-tkg.1-mycustomtkr.
    • BOM-BINARY-CONTENT는 이전 단계에서 생성한 사용자 지정된 BoM 파일의 base64 인코딩 내용입니다.

    예:

    apiVersion: v1
    kind: ConfigMap
    metadata:
     name: v1.27.5---vmware.2-tkg.1-mycustomtkr
     labels:
       tanzuKubernetesRelease: v1.27.5---vmware.2-tkg.1-mycustomtkr
    binaryData:
     bomContent: "YXBpVmVyc2lvbjogcnVuLnRhbnp1...."
    
  4. ConfigMap 파일을 저장하고 kubectl 컨텍스트를 TKr에 추가하려는 관리 클러스터로 설정한 후 클러스터에 파일을 적용합니다. 예를 들면 다음과 같습니다.

    kubectl -n tkr-system apply -f configmap-v1.27.5---vmware.2-tkg.1-mycustomtkr.yaml
    

    TKr 컨트롤러는 TanzuKubernetesRelease를 생성하여 새 ConfigMap 개체를 조정합니다. 기본 조정 시간은 600초입니다. TKr 컨트롤러 포드를 삭제하여 이러한 지연을 방지할 수 있습니다. 이렇게 하면 포드가 즉시 복원 및 조정됩니다.

    1. tkr-system 네임스페이스에 포드를 나열합니다.

      kubectl get pod -n tkr-system
      
    2. tkr-controller-manager-f7bbb4bd4-d5lfd와 비슷한 TKr 컨트롤러 포드의 이름을 검색합니다.

    3. 포드를 삭제합니다.

      kubectl delete pod -n tkr-system TKG-CONTROLLER
      

      여기서 TKG-CONTROLLER는 TKr 컨트롤러 포드의 이름입니다.

  5. 사용자 지정 TKr이 추가되었는지 확인하려면 tanzu kubernetes-release get 또는 kubectl get tkr을 실행하거나 출력에서 위에 설정된 CUSTOM-TKR 값을 찾습니다.

사용자 지정 TKR이 kubectltanzu CLI에 의해 나열되면 아래 설명된 대로 관리 또는 워크로드 클러스터를 생성하는 데 사용할 수 있습니다.

관리 클러스터에 Linux 이미지 사용

사용자 지정 이미지를 노드의 기본 OS로 사용하는 관리 클러스터를 생성하려면 다음을 수행합니다.

  1. 설치 관리자 인터페이스를 실행할 때 기본 OS 이미지 선택에 설명된 대로 OS 이미지(OS Image) 창에서 사용자 지정 이미지를 선택합니다.

자세한 내용은 기본 OS 이미지 선택 항목이 생성되는 방법을 참조하십시오.

워크로드 클러스터에 Linux 이미지 사용

Linux 이미지에서 워크로드 클러스터를 생성하는 절차는 위의 Linux 이미지용 TKr 생성에서 TKr을 생성했는지에 따라 다릅니다.

  • TKr을 생성한 경우 tanzu kubernetes-release get에 의해 나열된 TKr 이름을 tanzu cluster create--tkr 옵션에 전달합니다.

  • TKr을 생성하지 않은 경우 다음 단계를 수행합니다.

    1. 관리 복사하고 구성 파일 및 개체 규격 절차에 따라 새 이름으로 저장합니다.

    2. 새 구성 파일에서 다음을 추가하거나 수정합니다.

      VSPHERE_TEMPLATE: LINUX-IMAGE
      

      여기서 LINUX-IMAGE Linux 이미지 빌드에서 생성한 Linux 이미지의 이름입니다.

      CLUSTER_NAME 및 해당 설정(있는 경우)을 제거합니다.

    3. 워크로드 클러스터 생성에 설명된 대로 워크로드 클러스터를 배포합니다.

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