5.16. 다중 플랫폼 지원을 위한 Operator 프로젝트 구성


단일 플랫폼만 지원하는 Operator 프로젝트보다 여러 아키텍처 및 운영 체제 또는 플랫폼을 지원하는 Operator 프로젝트는 Kubernetes 및 OpenShift Container Platform 클러스터에서 더 많은 Kubernetes 및 OpenShift Container Platform 클러스터에서 실행할 수 있습니다. 아키텍처의 예는 amd64,arm64,ppc64le, s390x 입니다. 운영 체제의 예로는 Linux 및 Windows가 있습니다.

Operator 프로젝트를 여러 OpenShift Container Platform 플랫폼에서 실행할 수 있도록 다음 작업을 수행합니다.

  • Operator에서 지원하는 플랫폼을 지정하는 매니페스트 목록을 빌드합니다.
  • 다중 아키텍처 컴퓨팅 머신을 지원하도록 Operator의 노드 유사성을 설정합니다.

5.16.1. Operator에서 지원하는 플랫폼의 매니페스트 목록 빌드

make docker-buildx 명령을 사용하여 Operator 및 피연산자에서 지원하는 플랫폼의 매니페스트 목록을 빌드할 수 있습니다. 매니페스트 목록은 하나 이상의 아키텍처에 대한 특정 이미지 매니페스트를 참조합니다. 이미지 매니페스트는 이미지가 지원하는 플랫폼을 지정합니다.

자세한 내용은 OpenContainers Image Index Spec 또는 Image Manifest v2, Schema 2 를 참조하십시오.

중요

Operator 프로젝트에서 애플리케이션 또는 기타 워크로드 리소스를 배포하는 경우 다음 절차에서는 애플리케이션 릴리스 프로세스 중에 애플리케이션의 멀티 플랫폼 이미지가 빌드되었다고 가정합니다.

사전 요구 사항

  • Operator SDK 버전 1.31.0 이상을 사용하여 빌드된 Operator 프로젝트
  • Docker가 설치됨

프로세스

  1. Operator 및 피연산자의 이미지 매니페스트를 검사하여 Operator 프로젝트에서 지원할 수 있는 플랫폼을 찾습니다. 다음 명령을 실행하여 이미지 매니페스트를 검사합니다.

    $ docker manifest inspect <image_manifest> 
    1
    1
    redhat/ubi9:latest 와 같은 이미지 매니페스트를 지정합니다.

    Operator와 피연산자가 함께 지원하는 플랫폼은 Operator 프로젝트의 플랫폼 호환성을 결정합니다.

    출력 예

    {
        "manifests": [
            {
                "digest": "sha256:c0669ef34cdc14332c0f1ab0c2c01acb91d96014b172f1a76f3a39e63d1f0bda",
                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
                "platform": {
                    "architecture": "amd64",
                    "os": "linux"
                },
                "size": 528
            },
    ...
            {
                "digest": "sha256:30e6d35703c578ee703230b9dc87ada2ba958c1928615ac8a674fcbbcbb0f281",
                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
                "platform": {
                    "architecture": "arm64",
                    "os": "linux",
                    "variant": "v8"
                },
                "size": 528
            },
    ...

  2. 이전 명령에서 플랫폼 정보를 출력하지 않으면 지정된 기본 이미지가 이미지 매니페스트 대신 단일 이미지일 수 있습니다. 다음 명령을 실행하여 이미지에서 지원하는 아키텍처를 찾을 수 있습니다.

    $ docker inspect <image>
  3. Go 기반 Operator 프로젝트의 경우 Operator SDK는 프로젝트의 Dockerfile의 amd64 아키텍처를 명시적으로 참조합니다. Dockerfile을 다음과 같이 변경하여 플랫폼 플래그에서 지정한 값으로 환경 변수를 설정합니다.

    Dockerfile 예

    FROM golang:1.19 as builder
    ARG TARGETOS
    ARG TARGETARCH
    ...
    RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager main.go 
    1

    1
    GOARCH 필드를 amd64 에서 $TARGETARCH 로 변경합니다.
  4. Operator 프로젝트의 makefile은 PLATFORMS 환경 변수를 정의합니다. Operator의 이미지가 기본적으로 설정된 모든 플랫폼을 지원하지 않는 경우 변수를 편집하여 지원되는 플랫폼을 지정합니다. 다음 예제에서는 지원되는 플랫폼을 linux/arm64linux/amd64 로 정의합니다.

    makefile의 예

    # ...
    PLATFORMS ?= linux/arm64,linux/amd64 
    1
    
    .PHONY: docker-buildx
    # ...

    1
    다음 PLATFORMS 값은 기본적으로 설정됩니다. linux/arm64,linux/amd64,linux/s390x, linux/ppc64le.

    make docker buildx 명령을 실행하여 매니페스트 목록을 생성할 때 Operator SDK는 PLATFORMS 변수에서 지정한 각 플랫폼에 대한 이미지 매니페스트를 생성합니다.

  5. Operator 프로젝트 디렉터리에서 다음 명령을 실행하여 관리자 이미지를 빌드합니다. 명령을 실행하면 멀티 플랫폼 지원이 포함된 관리자 이미지가 빌드되고 매니페스트 목록을 레지스트리로 푸시합니다.

    $ make docker-buildx \
      IMG=<image_registry>/<organization_name>/<repository_name>:<version_or_sha>
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

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

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

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

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동