Menu Close

18.13. 단일 관리 클러스터 설치를 위한 사용자 정의 리소스 생성

이 절차에서는 단일 관리 클러스터를 수동으로 생성하고 배포하는 방법을 설명합니다. 여러 클러스터를 생성하는 경우 수백 개의 클러스터를 생성하는 경우 "여러 관리 클러스터에 대해 ZTP 사용자 정의 리소스 생성"에 설명된 SiteConfig 방법을 사용하십시오.

사전 요구 사항

  • Assisted Installer 서비스 활성화.
  • 네트워크 연결을 확인합니다.

    • 허브 내의 컨테이너는 대상 베어 메탈 시스템의 BMC(Baseboard Management Controller) 주소에 도달할 수 있어야 합니다.
    • 관리 클러스터는 허브의 API 호스트 이름과 *.app 호스트 이름을 확인하고 도달할 수 있어야 합니다. 허브 API 및 *.app 호스트 이름 예:

      console-openshift-console.apps.hub-cluster.internal.domain.com
      api.hub-cluster.internal.domain.com
    • 허브가 관리 클러스터의 API 및 *.app 호스트 이름을 확인하고 도달할 수 있어야 합니다. 다음은 관리 클러스터의 API 및 *.app 호스트 이름의 예입니다.

      console-openshift-console.apps.sno-managed-cluster-1.internal.domain.com
      api.sno-managed-cluster-1.internal.domain.com
    • 대상 베어 메탈 시스템에서 IP에 연결할 수 있는 DNS 서버입니다.
  • 다음 하드웨어 최소값이 있는 관리 클러스터의 대상 베어 메탈 머신입니다.

    • CPU 4개 또는 8 vCPU
    • 32GiB RAM
    • 루트 파일 시스템용 120GiB 디스크
  • 연결이 끊긴 환경에서 작업하는 경우 릴리스 이미지를 미러링해야 합니다. 릴리스 이미지를 미러링하려면 다음 명령을 사용합니다.

    oc adm release mirror -a <pull_secret.json>
    --from=quay.io/openshift-release-dev/ocp-release:{{ mirror_version_spoke_release }}
    --to={{ provisioner_cluster_registry }}/ocp4 --to-release-image={{
    provisioner_cluster_registry }}/ocp4:{{ mirror_version_spoke_release }}
  • spoke 클러스터 ISO를 HTTP 서버에 생성하는 데 사용되는 ISO 및 rootfs 를 미러링하고 해당 서버에서 이미지를 가져오도록 설정을 구성했습니다.

    이미지는 ClusterImageSet 버전과 일치해야 합니다. 4.9.0 버전을 배포하려면 4.9.0에서 rootfs 및 ISO를 설정해야 합니다.

절차

  1. 배포해야 하는 각 특정 클러스터 버전에 대한 ClusterImageSet 을 생성합니다. ClusterImageSet 의 형식은 다음과 같습니다.

    apiVersion: hive.openshift.io/v1
    kind: ClusterImageSet
    metadata:
      name: openshift-4.9.0-rc.0 1
    spec:
       releaseImage: quay.io/openshift-release-dev/ocp-release:4.9.0-x86_64 2
    1
    name 은 배포할 설명적인 버전입니다.
    2
    releaseImage 는 배포할 특정 릴리스 이미지를 가리켜야 합니다.
  2. 관리되는 클러스터에 대한 네임스페이스 정의를 생성합니다.

    apiVersion: v1
    kind: Namespace
    metadata:
         name: <cluster-name> 1
         labels:
            name: <cluster-name> 2
    1 2
    cluster-name 은 프로비저닝할 관리 클러스터의 이름입니다.
  3. BMC Secret 사용자 정의 리소스를 생성합니다.

    apiVersion: v1
    data:
      password: <bmc-password> 1
      username: <bmc-username> 2
    kind: Secret
    metadata:
      name: <cluster-name>-bmc-secret
      namespace: <cluster-name>
    type: Opaque
    1
    bMC-password 는 대상 베어 메탈 머신의 암호입니다. base-64로 인코딩되어야 합니다.
    2
    bMC-username 은 대상 베어 메탈 머신의 사용자 이름입니다. base-64로 인코딩되어야 합니다.
  4. Image Pull Secret 사용자 정의 리소스를 생성합니다.

    apiVersion: v1
    data:
      .dockerconfigjson: <pull-secret> 1
    kind: Secret
    metadata:
      name: assisted-deployment-pull-secret
      namespace: <cluster-name>
    type: kubernetes.io/dockerconfigjson
    1
    pull-secret 은 OpenShift Container Platform 풀 시크릿입니다. base-64로 인코딩되어야 합니다.
  5. AgentClusterInstall 사용자 정의 리소스를 생성합니다.

    apiVersion: extensions.hive.openshift.io/v1beta1
    kind: AgentClusterInstall
    metadata:
      # Only include the annotation if using OVN, otherwise omit the annotation
      annotations:
        agent-install.openshift.io/install-config-overrides: '{"networking":{"networkType":"OVNKubernetes"}}'
      name: <cluster-name>
      namespace: <cluster-name>
    spec:
      clusterDeploymentRef:
        name: <cluster-name>
      imageSetRef:
        name: <cluster-image-set> 1
      networking:
        clusterNetwork:
        - cidr: <cluster-network-cidr> 2
          hostPrefix: 23
        machineNetwork:
        - cidr: <machine-network-cidr> 3
        serviceNetwork:
        - <service-network-cidr> 4
      provisionRequirements:
        controlPlaneAgents: 1
        workerAgents: 0
      sshPublicKey: <public-key> 5
    1
    cluster-image-set 은 베어 메탈 머신에 OpenShift Container Platform을 설치하는 데 사용되는 ClusterImageSet 사용자 정의 리소스의 이름입니다.
    2
    cluster-network-cidr 은 클러스터 노드 간 통신에 사용되는 CIDR 표기법의 IPv4 또는 IPv6 주소 블록입니다.
    3
    machine-network-cidr 은 대상 베어 메탈 서버 외부 통신에 사용되는 CIDR 표기법의 IPv4 또는 IPv6 주소 블록입니다. 또한 DU 단일 노드 클러스터를 프로비저닝할 때 API 및 Ingress VIP 주소를 확인하는 데도 사용됩니다.
    4
    service-network-cidr 은 클러스터 서비스 내부 통신에 사용되는 CIDR 표기법의 IPv4 또는 IPv6 주소 블록입니다.
    5
    일반 텍스트 로 입력한 공용 키는 설치한 후 노드에 SSH를 사용하는 데 사용할 수 있습니다.
    참고

    이 시점에서 관리 클러스터의 고정 IP를 구성하려면 이 문서의 절차를 참조하십시오. 관리 클러스터에 대한 고정 IP 주소를 구성하려면 이 문서의 절차를 참조하십시오.

  6. ClusterDeployment 사용자 정의 리소스를 생성합니다.

    apiVersion: hive.openshift.io/v1
    kind: ClusterDeployment
    metadata:
      name: <cluster-name>
      namespace: <cluster-name>
    spec:
      baseDomain: <base-domain> 1
      clusterInstallRef:
        group: extensions.hive.openshift.io
        kind: AgentClusterInstall
        name: <cluster-name>
        version: v1beta1
      clusterName: <cluster-name>
      platform:
        agentBareMetal:
          agentSelector:
            matchLabels:
              cluster-name: <cluster-name>
      pullSecretRef:
        name: assisted-deployment-pull-secret
    1
    base-domain 은 관리형 클러스터의 기본 도메인입니다.
  7. KlusterletAddonConfig 사용자 정의 리소스를 생성합니다.

    apiVersion: agent.open-cluster-management.io/v1
    kind: KlusterletAddonConfig
    metadata:
      name: <cluster-name>
      namespace: <cluster-name>
    spec:
      clusterName: <cluster-name>
      clusterNamespace: <cluster-name>
      clusterLabels:
        cloud: auto-detect
        vendor: auto-detect
      applicationManager:
        enabled: true
      certPolicyController:
        enabled: false
      iamPolicyController:
        enabled: false
      policyController:
        enabled: true
      searchCollector:
        enabled: false 1
    1
    enabled: KlusterletAddonConfig를 비활성화하려면 KlusterletAddonConfig 또는 false 를 활성화하려면 true 로 설정됩니다. searchCollector 를 비활성화 상태로 유지합니다.
  8. ManagedCluster 사용자 정의 리소스를 생성합니다.

    apiVersion: cluster.open-cluster-management.io/v1
    kind: ManagedCluster
    metadata:
      name: <cluster-name>
    spec:
      hubAcceptsClient: true
  9. InfraEnv 사용자 정의 리소스를 생성합니다.

    apiVersion: agent-install.openshift.io/v1beta1
    kind: InfraEnv
    metadata:
      name: <cluster-name>
      namespace: <cluster-name>
    spec:
      clusterRef:
        name: <cluster-name>
        namespace: <cluster-name>
      sshAuthorizedKey: <public-key> 1
      agentLabelSelector:
        matchLabels:
          cluster-name: <cluster-name>
      pullSecretRef:
        name: assisted-deployment-pull-secret
    1
    공용 키를 일반 텍스트로 입력하고 호스트를 ISO에서 부팅할 때 대상 베어 메탈 시스템에 SSH로 SSH로 사용합니다.
  10. BareMetalHost 사용자 정의 리소스를 생성합니다.

    apiVersion: metal3.io/v1alpha1
    kind: BareMetalHost
    metadata:
      name: <cluster-name>
      namespace: <cluster-name>
      annotations:
        inspect.metal3.io: disabled
      labels:
        infraenvs.agent-install.openshift.io: "<cluster-name>"
    spec:
      bootMode: "UEFI"
      bmc:
        address: <bmc-address> 1
        disableCertificateVerification: true
        credentialsName: <cluster-name>-bmc-secret
      bootMACAddress: <mac-address> 2
      automatedCleaningMode: disabled
      online: true
    1
    BMC-address 는 대상 베어 메탈 시스템에 있는 설치 ISO의 베이스 보드 관리 콘솔 주소입니다.
    2
    mac-address 는 대상 베어 메탈 시스템의 MAC 주소입니다.

    필요한 경우 bmac.agent-install.openshift.io/hostname: <host-name> 을 주석으로 추가하여 관리 클러스터의 호스트 이름을 설정할 수 있습니다. 그렇지 않으면 DHCP 서버 또는 로컬 호스트의 호스트 이름으로 기본 설정됩니다.

  11. 사용자 지정 리소스를 생성한 후 생성된 사용자 지정 리소스의 전체 디렉터리를 사용자 지정 리소스를 저장하기 위해 생성한 Git 리포지토리로 내보냅니다.

다음 단계

추가 클러스터를 프로비저닝하려면 각 클러스터에 대해 이 절차를 반복합니다.

18.13.1. 관리 클러스터의 고정 IP 주소 구성

선택적으로 에이전트ClusterInstall 사용자 정의 리소스를 생성한 후 관리 클러스터에 대한 고정 IP 주소를 구성할 수 있습니다.

참고

ClusterDeployment 사용자 정의 리소스를 생성하기 전에 이 사용자 정의 리소스를 생성해야 합니다.

사전 요구 사항

  • AgentClusterInstall 사용자 정의 리소스를 배포하고 구성합니다.

절차

  1. NMStateConfig 사용자 정의 리소스를 생성합니다.

    apiVersion: agent-install.openshift.io/v1beta1
    kind: NMStateConfig
    metadata:
     name: <cluster-name>
     namespace: <cluster-name>
     labels:
       sno-cluster-<cluster-name>: <cluster-name>
    spec:
     config:
       interfaces:
         - name: eth0
           type: ethernet
           state: up
           ipv4:
             enabled: true
             address:
               - ip: <ip-address> 1
                 prefix-length: <public-network-prefix> 2
             dhcp: false
       dns-resolver:
         config:
           server:
             - <dns-resolver> 3
       routes:
         config:
           - destination: 0.0.0.0/0
             next-hop-address: <gateway> 4
             next-hop-interface: eth0
             table-id: 254
     interfaces:
       - name: "eth0" 5
         macAddress: <mac-address> 6
    1
    ip-address 는 대상 베어 메탈 시스템의 고정 IP 주소입니다.
    2
    public-network-prefix 는 대상 베어 메탈 시스템의 고정 IP 주소 서브넷 접두사입니다.
    3
    DNS-resolver 는 대상 베어 메탈 시스템의 DNS 서버입니다.
    4
    gateway 는 대상 베어 메탈 시스템의 게이트웨이입니다.
    5
    이름은 interfaces 섹션에 지정된 이름과 일치해야 합니다.
    6
    Mac-address 는 인터페이스의 mac 주소입니다.
  2. BareMetalHost 사용자 지정 리소스를 생성할 때 mac 주소 중 하나가 NMStateConfig 대상 베어 메탈 시스템의 mac 주소와 일치하는지 확인합니다.
  3. InfraEnv 사용자 정의 리소스를 생성할 때 InfraEnv 사용자 정의 리소스의 NMStateConfig 사용자 정의 리소스에서 라벨을 참조합니다.

    apiVersion: agent-install.openshift.io/v1beta1
    kind: InfraEnv
    metadata:
      name: <cluster-name>
      namespace: <cluster-name>
    spec:
      clusterRef:
        name: <cluster-name>
        namespace: <cluster-name>
      sshAuthorizedKey: <public-key>
      agentLabelSelector:
        matchLabels:
          cluster-name: <cluster-name>
      pullSecretRef:
        name: assisted-deployment-pull-secret
      nmStateConfigLabelSelector:
        matchLabels:
          sno-cluster-<cluster-name>: <cluster-name> # Match this label