7.5.6.5. Kubernetes 매니페스트 및 Ignition 설정 파일 생성


일부 클러스터 정의 파일을 수정하고 클러스터 시스템을 수동으로 시작해야 하므로 클러스터가 시스템을 구성하는 데 필요한 Kubernetes 매니페스트 및 Ignition 구성 파일을 사용자가 생성해야 합니다.

설치 구성 파일은 Kubernetes 매니페스트로 변환됩니다. 매니페스트는 나중에 클러스터 머신을 구성하는 데 사용되는 Ignition 구성 파일로 래핑됩니다.

중요
  • OpenShift Container Platform 설치 프로그램에서 생성하는 Ignition 구성 파일에 24시간 후에 만료되는 인증서가 포함되어 있습니다. 이 인증서는 그 후에 갱신됩니다. 인증서를 갱신하기 전에 클러스터가 종료되고 24시간이 지난 후에 클러스터가 다시 시작되면 클러스터는 만료된 인증서를 자동으로 복구합니다. 예외적으로 kubelet 인증서를 복구하려면 대기 중인 node-bootstrapper 인증서 서명 요청(CSR)을 수동으로 승인해야 합니다. 자세한 내용은 만료된 컨트롤 플레인 인증서에서 복구 문서를 참조하십시오.
  • 24 시간 인증서는 클러스터를 설치한 후 16시간에서 22시간으로 인증서가 교체되기 때문에 생성된 후 12시간 이내에 Ignition 구성 파일을 사용하는 것이 좋습니다. 12시간 이내에 Ignition 구성 파일을 사용하면 설치 중에 인증서 업데이트가 실행되는 경우 설치 실패를 방지할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 설치 프로그램을 가져오셨습니다.
  • install-config.yaml 설치 구성 파일을 생성하셨습니다.

프로세스

  1. OpenShift Container Platform 설치 프로그램이 포함된 디렉터리로 변경하고 클러스터에 대한 Kubernetes 매니페스트를 생성합니다.

    $ ./openshift-install create manifests --dir <installation_directory> 1
    1
    <installation_directory>는 사용자가 만든 install-config.yaml 파일이 포함된 설치 디렉터리를 지정합니다.
  2. 컨트롤 플레인 시스템을 정의하는 Kubernetes 매니페스트 파일을 제거합니다.

    $ rm -f <installation_directory>/openshift/99_openshift-cluster-api_master-machines-*.yaml

    이러한 파일을 제거하면 클러스터가 컨트롤 플레인 시스템을 자동으로 생성하지 못합니다.

  3. 작업자 시스템을 정의하는 Kubernetes 매니페스트 파일을 제거합니다.

    $ rm -f <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-*.yaml

    작업자 시스템은 사용자가 직접 생성하고 관리하기 때문에 초기화할 필요가 없습니다.

  4. <installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes 매니페스트 파일의 mastersSchedulable 매개변수가 false로 설정되어 있는지 확인합니다. 이 설정으로 인해 컨트롤 플레인 머신에서 포드가 예약되지 않습니다.

    1. <installation_directory>/manifests/cluster-scheduler-02-config.yml 파일을 엽니다.
    2. mastersSchedulable 매개변수를 찾아서 값을 False로 설정되어 있는지 확인합니다.
    3. 파일을 저장하고 종료합니다.
  5. 선택사항: Ingress Operator가 사용자 대신 DNS 레코드를 생성하지 못하도록 하려면 <installation_directory>/manifests/cluster-dns-02-config.yml DNS 구성 파일에서 privateZonepublicZone 섹션을 제거합니다.

    apiVersion: config.openshift.io/v1
    kind: DNS
    metadata:
      creationTimestamp: null
      name: cluster
    spec:
      baseDomain: example.openshift.com
      privateZone: 1
        id: mycluster-100419-private-zone
      publicZone: 2
        id: example.openshift.com
    status: {}
    1 2
    이 섹션을 완전히 제거합니다.

    제거한 경우 나중에 인그레스 DNS 레코드를 수동으로 추가해야 합니다.

  6. 선택 사항: Azure Stack Hub 환경에서 내부 인증 기관(CA)을 사용하는 경우 <installation_directory>/manifests/cluster-proxy-01-config.yaml 파일에서 .spec.trustedCA.name 필드를 업데이트하여 user-ca-bundle을 사용합니다.

    ...
    spec:
      trustedCA:
        name: user-ca-bundle
    ...

    나중에 CA를 포함하도록 부트스트랩 ignition을 업데이트해야 합니다.

  7. 사용자 프로비저닝 인프라에서 Azure를 구성할 때, ARM(Azure Resource Manager) 템플릿에서 나중에 사용할 수 있도록 매니페스트 파일에 정의된 일부 공통 변수를 내보내야 합니다.

    1. 다음 명령을 사용하여 인프라 ID를 내보냅니다.

      $ export INFRA_ID=<infra_id> 1
      1
      OpenShift Container Platform 클러스터에 <cluster_name>-<random_string> 형식으로 식별자(INFRA_ID)가 할당되었습니다. 제공된 ARM 템플릿을 사용해서 생성된 대부분의 리소스에 대해 기본 이름으로 사용됩니다. manifests/cluster-infrastructure-02-config.yml 파일의 .status.infrastructureName 속성 값입니다.
    2. 다음 명령을 사용하여 리소스 그룹을 내보냅니다:

      $ export RESOURCE_GROUP=<resource_group> 1
      1
      이 Azure 배포에서 생성된 모든 리소스는 리소스 그룹의 일부로 존재합니다. 또한 리소스 그룹 이름은 <cluster_name>-<random_string>-rg 형식의 INFRA_ID를 기반으로 합니다. manifests/cluster-infrastructure-02-config.yml 파일의 .status.platformStatus.azure.resourceGroupName 속성 값입니다.
  8. 클라우드 인증 정보를 수동으로 생성합니다.

    1. 설치 프로그램이 포함된 디렉터리에서 openshift-install 바이너리가 다음을 사용하도록 빌드된 OpenShift Container Platform 릴리스 이미지에 대한 세부 정보를 가져옵니다.

      $ openshift-install version

      출력 예

      release image quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64

    2. 배포중인 클라우드를 대상으로하는이 릴리스 이미지에서 모든 CredentialsRequest 개체를 찾습니다.

      $ oc adm release extract quay.io/openshift-release-dev/ocp-release:4.y.z-x86_64 --credentials-requests --cloud=azure

      이 명령을 수행하면 각 CredentialsRequest 오브젝트에 대해 YAML 파일이 생성됩니다.

      샘플 CredentialsRequest 개체

      apiVersion: cloudcredential.openshift.io/v1
      kind: CredentialsRequest
      metadata:
        labels:
          controller-tools.k8s.io: "1.0"
        name: openshift-image-registry-azure
        namespace: openshift-cloud-credential-operator
      spec:
        secretRef:
          name: installer-cloud-credentials
          namespace: openshift-image-registry
        providerSpec:
          apiVersion: cloudcredential.openshift.io/v1
          kind: AzureProviderSpec
          roleBindings:
          - role: Contributor

    3. 이전에 생성한 openshift-install 매니페스트 디렉터리에 시크릿 YAML 파일을 만듭니다. 시크릿은 각 CredentialsRequest 오브젝트의 spec.secretRef에 정의된 네임 스페이스 및 시크릿 이름을 사용하여 저장해야 합니다. 시크릿 데이터의 형식은 클라우드 공급자마다 다릅니다.

      중요

      릴리스 이미지에는 TechPreviewNoUpgrade 기능 세트에서 활성화한 기술 프리뷰 기능에 대한 CredentialsRequest 오브젝트가 포함되어 있습니다. 이러한 오브젝트는 release.openshift.io/feature-gate: TechPreviewNoUpgrade 주석을 사용하여 확인할 수 있습니다.

      • 이러한 기능을 사용하지 않는 경우 해당 오브젝트에 대한 보안을 생성하지 마십시오. 사용하지 않는 기술 프리뷰 기능에 대한 시크릿을 생성하면 설치에 실패할 수 있습니다.
      • 이러한 기능을 사용하는 경우 해당 오브젝트에 대한 보안을 생성해야 합니다.
      • TechPreviewNoUpgrade 주석을 사용하여 CredentialsRequest 오브젝트를 찾으려면 다음 명령을 실행합니다.

        $ grep "release.openshift.io/feature-gate" *

        출력 예

        0000_30_capi-operator_00_credentials-request.yaml:  release.openshift.io/feature-gate: TechPreviewNoUpgrade

    4. CCO(Cloud Credential Operator)가 비활성화된 매니페스트 디렉터리에 cco-configmap.yaml 파일을 생성합니다.

      샘플 ConfigMap 오브젝트

      apiVersion: v1
      kind: ConfigMap
      metadata:
      name: cloud-credential-operator-config
      namespace: openshift-cloud-credential-operator
        annotations:
          release.openshift.io/create-only: "true"
      data:
        disabled: "true"

  9. Ignition 구성 파일을 생성하려면 설치 프로그램이 포함된 디렉터리에서 다음 명령을 실행합니다.

    $ ./openshift-install create ignition-configs --dir <installation_directory> 1
    1
    <installation_directory>는 동일한 설치 디렉터리를 지정합니다.

    설치 디렉터리의 부트스트랩, 컨트롤 플레인 및 컴퓨팅 노드에 대한 Ignition 구성 파일이 생성됩니다. kubeadmin-passwordkubeconfig 파일은 ./<installation_directory>/auth 디렉터리에 생성됩니다.

    .
    ├── auth
    │   ├── kubeadmin-password
    │   └── kubeconfig
    ├── bootstrap.ign
    ├── master.ign
    ├── metadata.json
    └── worker.ign
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.