Kubernetes 에서 cronjob으로 구성 동기화 실행

Kubernetes 에서 cronjob으로 apic-configsync 유틸리티를 실행하면 유틸리티를 시간에 따라 (예: 10분마다) 실행할 수 있습니다.

시작하기 전에

cronjob을 구성하기 전에 다음 전제조건이 충족되었는지 확인하십시오.

  • 이미지를 이미지 레지스트리에 복사하는 데 사용할 수 있는 도구가 있는지 확인하십시오.

    이 주제의 예에서는 skopeo 를 사용하여 이미지를 대상 레지스트리에 복사하지만, 대신 동등한 docker 또는 podman 명령을 사용할 수 있습니다.

이 태스크에 대한 정보

Kubernetes에서 실행되는 API Connect 배포에서 apic-configsync 유틸리티가 크론잡으로 실행되도록 구성할 수 있습니다. apic-configsync 유틸리티는 가능한 한 대상 클러스터와 가까운 곳에서 실행되어야 하므로 크론잡은 대상 API Connect 클러스터와 동일한 Kubernetes 환경 내에서 실행되도록 구성해야 합니다.

프로시저

  1. Config API Connect Sync 패키지를 다운로드하고 압축을 풀어주세요.
  2. 다음 명령을 실행하여 추출된 API Connect 구성 동기화 패키지에서 구성 동기화 이미지를 추출합니다:
    tar xf ibm-apic-configsync-image.tar.gz
  3. 추출된 구성 동기화 이미지를 대상 레지스트리에 복사하십시오.

    예를 들어, skopeo를 사용하는 경우 다음 명령을 실행하십시오.

    skopeo copy dir:./ibm-apic-configsync/ibm-apic-configsync-<version>/<tag> docker://<registry>/ibm-apic-configsync/ibm-apic-configsync-<version>:<tag>

    <version><tag> 를 실제 값으로 바꾸십시오. 가장 최신 값을 사용하려면 추출한 API Connect 구성 동기화 패키지의 루트에 있는 README 파일에서 해당 값을 복사하세요.

    <registry> 를 이미지 레지스트리의 실제 레지스트리 값으로 바꾸십시오. 대상 레지스트리의 신임 정보 구성에 대한 skopeo 문서를 참조하십시오.

  4. 소스 및 대상 카탈로그에 대한 환경 변수를 정의하십시오.
  5. 소스 클러스터 및 대상 클러스터의 호스트 구성 세부사항에 대한 시크릿을 작성하십시오.
    1. cronjob을 실행하려는 네임스페이스에서 소스 클러스터에 대한 구성 세부사항을 호스팅하기 위한 시크릿을 작성하십시오.
      kubectl create secret --namespace <namespace> generic source-catalog-details \
          --from-literal=SOURCE_MGMT_SERVER=$SOURCE_MGMT_SERVER \
          --from-literal=SOURCE_ORG=$SOURCE_ORG \
          --from-literal=SOURCE_REALM=$SOURCE_REALM \
          --from-literal=SOURCE_ADMIN_USER=$SOURCE_ADMIN_USER \
          --from-literal=SOURCE_ADMIN_PASSWORD=$SOURCE_ADMIN_PASSWORD \
          --from-literal=SOURCE_CATALOG=$SOURCE_CATALOG \
          --from-literal=SOURCE_TOOLKIT_CREDENTIALS_CLIENTID=$SOURCE_TOOLKIT_CREDENTIALS_CLIENTID \
          --from-literal=SOURCE_TOOLKIT_CREDENTIALS_CLIENTSECRET=$SOURCE_TOOLKIT_CREDENTIALS_CLIENTSECRET
    2. cronjob을 실행하려는 네임스페이스에서 대상 클러스터에 대한 구성 세부사항을 호스팅하기 위한 시크릿을 작성하십시오.
      kubectl create secret --namespace <namespace> generic target-catalog-details \
          --from-literal=TARGET_MGMT_SERVER=$TARGET_MGMT_SERVER \
          --from-literal=TARGET_ORG=$TARGET_ORG \
          --from-literal=TARGET_REALM=$TARGET_REALM \
          --from-literal=TARGET_ADMIN_USER=$TARGET_ADMIN_USER \
          --from-literal=TARGET_ADMIN_PASSWORD=$TARGET_ADMIN_PASSWORD \
          --from-literal=TARGET_CATALOG=$TARGET_CATALOG \
          --from-literal=TARGET_TOOLKIT_CREDENTIALS_CLIENTID=$TARGET_TOOLKIT_CREDENTIALS_CLIENTID \
          --from-literal=TARGET_TOOLKIT_CREDENTIALS_CLIENTSECRET=$TARGET_TOOLKIT_CREDENTIALS_CLIENTSECRET
  6. 다음과 같이 cronjob을 작성하십시오.
    1. 추출된 helper_files/configsync-cronjob-k8s.yaml 파일에 있는 API Connect 구성 동기화 패키지를 엽니다.
    2. schedule 특성을 수정하여 작업이 실행되는 빈도를 지정하십시오.

      권장되는 최소 스케줄 기간은 1분입니다. 그러나 오브젝트 수가 많은 배치는 작업을 완료하는 데 더 많은 시간이 필요할 수 있습니다. 동시 작업이 허용되지 않기 때문에 두 개의 연속 작업 시작 사이의 총 시간이 더 길어질 수 있습니다.

    3. concurrencyPolicyForbid로 설정하십시오.

      구성 동기화는 한 번에 하나의 소스-대상 카탈로그 쌍에서 작동합니다. 여러 개의 서로 다른 소스-대상 카탈로그 쌍을 동기화하려면 각 쌍에 대해 별도의 cronjob을 작성하십시오.

    4. image 특성에서 <registry> 변수를 이미지 레지스트리의 실제 레지스트리 값으로 바꾸십시오.
    5. 다음 명령을 실행하여 클러스터에서 cronjob 자원을 작성하십시오.
      kubectl --namespace <namespace> apply -f helper_files/configsync-cronjob-k8s.yaml