7.3. 클러스터상의 계층화를 사용하여 사용자 정의 계층 이미지 적용


on-cluster 빌드 프로세스를 사용하여 클러스터에 사용자 정의 계층 이미지를 적용하려면 사전 요구 사항에 설명된 대로 Containerfile, 머신 구성 풀 참조, 리포지토리 내보내기 및 가져오기 보안을 포함하는 MachineOSConfig 사용자 정의 리소스를 만듭니다.

오브젝트를 생성할 때 MCO(Machine Config Operator)는 MachineOSBuild 오브젝트 및 machine-os-builder Pod를 생성합니다. 빌드 프로세스는 빌드가 완료된 후 정리되는 구성 맵과 같은 일시적인 오브젝트도 생성합니다.

빌드가 완료되면 MCO는 새 노드를 배포할 때 사용할 수 있도록 새 사용자 지정 계층 이미지를 리포지토리로 푸시합니다. MachineOSBuild 오브젝트 및 machine-os-builder Pod에서 새 사용자 정의 계층 이미지에 대한 다이제스트된 이미지 가져오기 사양을 확인할 수 있습니다.

이러한 새 오브젝트 또는 machine-os-builder Pod와 상호 작용할 필요가 없습니다. 그러나 필요한 경우 이러한 리소스를 모두 사용하여 문제를 해결할 수 있습니다.

사용자 정의 계층 이미지를 사용하려는 각 머신 구성 풀에 대해 별도의 MachineOSConfig CR이 필요합니다.

중요

클러스터상의 이미지 계층 지정은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

  • 기능 게이트를 사용하여 설정된 TechPreviewNoUpgrade 기능을 활성화했습니다. 자세한 내용은 "기능 게이트를 사용하여 기능 활성화"를 참조하십시오.
  • MCO가 기본 운영 체제 이미지를 가져오는 데 필요한 openshift-machine-config-operator 네임스페이스에 풀 시크릿이 있습니다.
  • MCO가 새 사용자 지정 계층 이미지를 레지스트리로 내보내는 데 필요한 푸시 시크릿이 있습니다.
  • 노드에서 새 사용자 지정 계층화된 이미지를 레지스트리에서 가져와야 하는 풀 시크릿이 있습니다. 이미지를 리포지토리로 내보내는 데 사용한 것과 다른 시크릿이어야 합니다.
  • 컨테이너 파일을 구성하는 방법에 대해 잘 알고 있습니다. Containerfile을 생성하는 방법에 대한 지침은 이 문서의 범위를 벗어납니다.
  • 선택 사항: 사용자 정의 계층 이미지를 적용하려는 노드에 대해 별도의 머신 구성 풀이 있습니다.

프로세스

  1. machineOSconfig 오브젝트를 생성합니다.

    1. 다음과 유사한 YAML 파일을 생성합니다.

      apiVersion: machineconfiguration.openshift.io/v1alpha1
      kind: MachineOSConfig
      metadata:
        name: layered
      spec:
        machineConfigPool:
          name: <mcp_name> 1
        buildInputs:
          containerFile: 2
          - containerfileArch: noarch
            content: |-
              FROM configs AS final
              RUN rpm-ostree install cowsay && \
                ostree container commit
          imageBuilder: 3
            imageBuilderType: PodImageBuilder
          baseImagePullSecret: 4
            name: global-pull-secret-copy
          renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift/os-image:latest  5
          renderedImagePushSecret: 6
            name: builder-dockercfg-7lzwl
        buildOutputs: 7
          currentImagePullSecret:
            name: builder-dockercfg-7lzwl
      1
      사용자 정의 계층 이미지를 배포하려는 노드와 연결된 머신 구성 풀의 이름을 지정합니다.
      2
      사용자 지정 계층 이미지를 구성할 Containerfile을 지정합니다.
      3
      사용할 이미지 빌더의 이름을 지정합니다. PodImageBuilder 여야 합니다.
      4
      MCO가 레지스트리에서 기본 운영 체제 이미지를 가져오는 데 필요한 풀 시크릿의 이름을 지정합니다.
      5
      새로 빌드된 사용자 정의 계층 이미지를 내보낼 이미지 레지스트리를 지정합니다. 이는 클러스터가 액세스할 수 있는 모든 레지스트리일 수 있습니다. 이 예에서는 내부 OpenShift Container Platform 레지스트리를 사용합니다.
      6
      MCO에서 새로 빌드된 사용자 지정 계층 이미지를 해당 레지스트리로 푸시해야 하는 내보내기 보안의 이름을 지정합니다.
      7
      노드에서 새로 빌드된 사용자 정의 계층 이미지를 가져와야 하는 이미지 레지스트리에 필요한 보안을 지정합니다. 이미지를 리포지토리에 내보내는 데 사용한 것과 다른 시크릿이어야 합니다.
    2. MachineOSConfig 오브젝트를 생성합니다.

      $ oc create -f <file_name>.yaml
  2. 필요한 경우 MachineOSBuild 오브젝트가 생성되어 READY 상태에 있는 경우 새 사용자 지정 계층 이미지를 사용하려는 노드의 노드 사양을 수정합니다.

    1. MachineOSBuild 오브젝트가 READY 인지 확인합니다. SUCCEEDED 값이 True 이면 빌드가 완료됩니다.

      $ oc get machineosbuild

      MachineOSBuild 오브젝트가 준비되었음을 보여주는 출력 예

      NAME                                                                PREPARED   BUILDING   SUCCEEDED   INTERRUPTED   FAILED
      layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder   False      False      True        False         False

    2. MachineOSConfig 오브젝트에 지정한 머신 구성 풀의 레이블을 추가하여 사용자 정의 계층 이미지를 배포하려는 노드를 편집합니다.

      $ oc label node <node_name> 'node-role.kubernetes.io/<mcp_name>='

      다음과 같습니다.

      node-role.kubernetes.io/<mcp_name>=
      사용자 정의 계층 이미지를 배포할 노드를 식별하는 노드 선택기를 지정합니다.

      변경 사항을 저장하면 MCO가 노드를 드레이닝, 차단 및 재부팅합니다. 재부팅 후 노드는 새 사용자 정의 계층 이미지를 사용합니다.

검증

  1. 다음 명령을 사용하여 새 포드가 실행 중인지 확인합니다.

    $ oc get pods -n <machineosbuilds_namespace>
    NAME                                                              READY   STATUS    RESTARTS   AGE
    build-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0           2/2     Running   0          2m40s 1
    # ...
    machine-os-builder-6fb66cfb99-zcpvq                               1/1     Running   0          2m42s 2
    1
    사용자 정의 계층 이미지가 빌드 중인 빌드 Pod입니다.
    2
    이 Pod는 문제 해결에 사용할 수 있습니다.
  2. MachineOSConfig 오브젝트에 새 사용자 정의 계층 이미지에 대한 참조가 포함되어 있는지 확인합니다.

    $ oc describe MachineOSConfig <object_name>
    apiVersion: machineconfiguration.openshift.io/v1alpha1
    kind: MachineOSConfig
    metadata:
      name: layered
    spec:
      buildInputs:
        baseImagePullSecret:
          name: global-pull-secret-copy
        containerFile:
        - containerfileArch: noarch
          content: ""
        imageBuilder:
          imageBuilderType: PodImageBuilder
        renderedImagePushSecret:
          name: builder-dockercfg-ng82t-canonical
        renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image:latest
      buildOutputs:
        currentImagePullSecret:
          name: global-pull-secret-copy
      machineConfigPool:
        name: layered
    status:
      currentImagePullspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd 1
    1
    새 사용자 지정 계층 이미지에 대한 다이제스트된 이미지 가져오기 사양입니다.
  3. MachineOSBuild 오브젝트에 새 사용자 지정 계층 이미지에 대한 참조가 포함되어 있는지 확인합니다.

    $ oc describe machineosbuild <object_name>
    apiVersion: machineconfiguration.openshift.io/v1alpha1
    kind: MachineOSBuild
    metadata:
      name: layered-rendered-layered-ad5a3cad36303c363cf458ab0524e7c0-builder
    spec:
      desiredConfig:
        name: rendered-layered-ad5a3cad36303c363cf458ab0524e7c0
      machineOSConfig:
        name: layered
      renderedImagePushspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image:latest
    # ...
    status:
      conditions:
        - lastTransitionTime: "2024-05-21T20:25:06Z"
          message: Build Ready
          reason: Ready
          status: "True"
          type: Succeeded
      finalImagePullspec: image-registry.openshift-image-registry.svc:5000/openshift-machine-config-operator/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd 1
    1
    새 사용자 지정 계층 이미지에 대한 다이제스트된 이미지 가져오기 사양입니다.
  4. 적절한 노드에서 새 사용자 지정 계층 이미지를 사용하고 있는지 확인합니다.

    1. 컨트롤 플레인 노드의 root로 디버그 세션을 시작합니다.

      $ oc debug node/<node_name>
    2. 디버그 쉘 내에서 /host를 root 디렉터리로 설정합니다.

      sh-4.4# chroot /host
    3. rpm-ostree status 명령을 실행하여 사용자 정의 계층화된 이미지가 사용 중인지 확인합니다.

      sh-5.1# rpm-ostree status

      출력 예

      # ...
      Deployments:
      * ostree-unverified-registry:quay.io/openshift-release-dev/os-image@sha256:f636fa5b504e92e6faa22ecd71a60b089dab72200f3d130c68dfec07148d11cd 1
                         Digest: sha256:bcea2546295b2a55e0a9bf6dd4789433a9867e378661093b6fdee0031ed1e8a4
                        Version: 416.94.202405141654-0 (2024-05-14T16:58:43Z)

      1
      새 사용자 지정 계층 이미지에 대한 다이제스트된 이미지 가져오기 사양입니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.