5.3. Go 기반 Operator

5.3.1. Go 기반 Operator를 위한 Operator SDK 시작하기

Operator 개발자는 Operator SDK에서 제공하는 툴 및 라이브러리를 사용하여 Go 기반 Operator를 설정 및 실행하는 기본 동작을 설명하기 위해 분산형 키-값 저장소인 Memcached에 대한 Go 기반 Operator 예제를 빌드하고 클러스터에 배포할 수 있습니다.

5.3.1.1. 사전 요구 사항

  • Operator SDK CLI가 설치됨
  • OpenShift CLI(oc) v4.7 이상이 설치됨
  • cluster-admin 권한이 있는 계정으로 oc를 사용하여 OpenShift Container Platform 4.7 클러스터에 로그인함
  • 클러스터에서 이미지를 가져올 수 있도록 하려면 이미지를 내보내는 리포지토리를 공개로 설정하거나 이미지 가져오기 보안을 구성해야 합니다.

5.3.1.2. Go 기반 Operator 생성 및 배포

Operator SDK를 사용하여 Memcached에 대한 간단한 Go 기반 Operator를 빌드하고 배포할 수 있습니다.

프로세스

  1. 프로젝트를 생성합니다.

    1. 프로젝트 디렉토리를 생성합니다.

      $ mkdir memcached-operator
    2. 프로젝트 디렉터리로 변경합니다.

      $ cd memcached-operator
    3. operator-sdk init 명령을 실행하여 프로젝트를 초기화합니다.

      $ operator-sdk init \
          --domain=example.com \
          --repo=github.com/example-inc/memcached-operator

      이 명령은 기본적으로 Go 플러그인을 사용합니다.

    4. OpenShift Container Platform에서 Go 기반 Operator를 활성화하려면 config/manager/manager.yaml 파일을 편집하고 다음 행

      runAsUser: 65532

      를 다음으로 교체합니다.

      runAsNonRoot: true
      참고

      이 단계는 Go 기반 Operator에만 필요한 임시 해결 방법입니다. 자세한 내용은 BZ#1914406을 참조하십시오.

  2. API를 생성합니다.

    간단한 Memcached API를 생성합니다.

    $ operator-sdk create api \
        --resource=true \
        --controller=true \
        --group cache \
        --version v1 \
        --kind Memcached
  3. Operator 이미지를 빌드하여 내보냅니다.

    기본 Makefile 대상을 사용하여 Operator를 빌드하고 내보냅니다. 내보낼 수 있는 레지스트리를 사용하는 이미지의 가져오기 사양에 IMG를 설정합니다.

    $ make docker-build docker-push IMG=<registry>/<user>/<image_name>:<tag>
  4. Operator를 실행합니다.

    1. CRD를 설치합니다.

      $ make install
    2. 클러스터에 프로젝트를 배포합니다. 내보낸 이미지에 IMG를 설정합니다.

      $ make deploy IMG=<registry>/<user>/<image_name>:<tag>
  5. 샘플 CR(사용자 정의 리소스)을 생성합니다.

    1. 샘플 CR을 생성합니다.

      $ oc apply -f config/samples/cache_v1_memcached.yaml \
          -n memcached-operator-system
    2. CR에서 Operator를 조정하는지 확인합니다.

      $ oc logs deployment.apps/memcached-operator-controller-manager \
          -c manager \
          -n memcached-operator-system
  6. 정리합니다.

    다음 명령을 실행하여 이 절차의 일부로 생성된 리소스를 정리합니다.

    $ make undeploy

5.3.1.3. 다음 단계