검색

5.3. 최신 Operator SDK 버전의 프로젝트 업데이트

download PDF

OpenShift Container Platform 4.10은 Operator SDK v1.16.0을 지원합니다. 워크스테이션에 v1.10.1 CLI가 이미 설치되어 있는 경우 최신 버전을 설치하여 CLI를 v1.16.0으로 업데이트할 수 있습니다.

그러나 기존 Operator 프로젝트에서 Operator SDK v1.16.0과의 호환성을 유지하려면 v1.10.1 이후의 중단된 변경 사항에 업데이트 단계가 필요합니다. v1.10.1을 사용하여 이전에 생성되거나 유지 관리되는 Operator 프로젝트에서 업데이트 단계를 수동으로 수행해야 합니다.

5.3.1. Operator SDK v1.16.0 프로젝트 업데이트

다음 절차에서는 v1.16.0과의 호환성을 위해 기존 Operator 프로젝트를 업데이트합니다.

중요
  • Operator SDK v1.16.0은 Kubernetes 1.22를 지원합니다.
  • Kubernetes 1.22에서 더 이상 사용되지 않는 많은 v1beta1 API가 sigs.k8s.io/controller-runtime v0.10.0controller-gen v0.7에서 제거되었습니다.
  • 프로젝트를 Kubernetes 1.22로 업데이트하면 CRD(사용자 정의 리소스 정의) 또는 웹 후크를 위해 v1beta1 API를 스캐폴드 v1beta1 API를 이전 클러스터 버전에 게시해야 하는 경우 중단 변경이 됩니다.

Kubernetes 1.22에 도입된 변경 사항에 대한 자세한 내용은 Kubernetes 1.22에서 제거된 API 의 번들 매니페스트 유효성 검사를 참조하십시오.

사전 요구 사항

  • Operator SDK v1.16.0이 설치되어 있어야 합니다.
  • Operator SDK v1.10.1을 사용하여 Operator 프로젝트를 생성하거나 유지 관리합니다.

프로세스

  1. config/default/manager_auth_proxy_patch.yamlconfig/rbac/auth_proxy_service.yaml 파일에 protocol 필드를 추가합니다.

    ...
     ports:
     - containerPort: 8443
    +  protocol: TCP
       name: https
  2. config/manager/manager.yaml 파일을 다음과 같이 변경합니다.

    1. CPU 및 메모리 리소스 제한을 늘립니다.

      resources:
        limits:
      -     cpu: 100m
      -     memory: 30Mi
      +     cpu: 200m
      +     memory: 100Mi
    2. 주석을 추가하여 기본 컨테이너 관리자를 지정합니다.

      ...
      template:
        metadata:
          annotations:
            kubectl.kubernetes.io/default-container: manager
      ...
  3. Makefile 파일에 있는 모든 타겟에 tekton ONY 대상을 추가합니다.
  4. Go 기반 Operator 프로젝트의 경우 다음과 같이 변경합니다.

    1. setup-envtest 바이너리를 설치합니다.
    2. go.mod 파일을 변경하여 종속성을 업데이트합니다.

      k8s.io/api v0.22.1
      k8s.io/apimachinery v0.22.1
      k8s.io/client-go v0.22.1
      sigs.k8s.io/controller-runtime v0.10.0
    3. go mod tidy 명령을 실행하여 종속성을 다운로드합니다.

      $ go mod tidy
    4. Makefile 파일을 다음과 같이 변경합니다.

      ...
      
      + ENVTEST_K8S_VERSION = 1.22
      
        test: manifests generate fmt vet envtest ## Run tests.
      -   go test ./... -coverprofile cover.out
      +   KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)" go test ./... -coverprofile cover.out
      ...
      
      - $(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths="./..." output:crd:artifacts:config=config/crd/bases
      + $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases
      ...
      
      # Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
      - CRD_OPTIONS ?= "crd:trivialVersions=true,preserveUnknownFields=false"
      ...
      - admissionReviewVersions={v1,v1beta1}
      + admissionReviewVersions=v1
      ...
      
      + ifndef ignore-not-found
      +   ignore-not-found = false
      + endif
      
      ##@ Deployment
      ...
      - sh kubectl delete -f -
      + sh kubectl delete --ignore-not-found=$(ignore-not-found) -f -
    5. make manifest 명령을 실행하여 업데이트된 Kubernetes 버전으로 매니페스트를 생성합니다.

      $ make manifest
  5. Ansible 기반 Operator 프로젝트의 경우 다음과 같이 변경합니다.

    1. 다음을 포함하도록 requirements.yml 파일을 변경합니다.

      1. community.kubernetes 컬렉션을 kubernetes.core 컬렉션으로 교체합니다.

        ...
        - name: kubernetes.core
          version: "2.2.0"
        ...
      2. operator_sdk.util 유틸리티를 0.2.0 에서 0.3.1 로 업데이트합니다.

        ...
        - name: operator_sdk.util
          version: "0.3.1"
    2. config/manager/manager.yaml 파일에서 기본 리소스 제한을 확인합니다.

      ...
       # TODO(user): Configure the resources accordingly based on the project requirements.
       # More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
      
      resources:
        limits:
          cpu: 500m
          memory: 768Mi
        requests:
          cpu: 10m
          memory: 256Mi
      중요

      Operator SDK는 이러한 값을 적절한 기본 설정으로 스캐폴드합니다. Operator 작성자는 프로젝트의 요구 사항에 따라 리소스 제한을 설정하고 최적화해야 합니다.

    3. 선택 사항: make run 명령을 사용하여 Ansible 기반 Operator를 로컬에서 실행하려는 경우 다음과 같이 변경합니다.

      1. Makefile 파일에서 run 대상을 변경합니다.

        ANSIBLE_ROLES_PATH="$(ANSIBLE_ROLES_PATH):$(shell pwd)/roles" $(ANSIBLE_OPERATOR) run
      2. ansible-runner 의 로컬 버전을 2.0.2 이상으로 업데이트합니다.

        중요

        버전 2.0에서 ansible-runner 툴에는 이전 버전과 호환되지 않는 명령 서명의 변경 사항이 포함되어 있습니다.

5.3.2. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.