비공개 GA: Apigee Hybrid에 커스텀 cert-manager 사용이 기능은 Apigee Hybrid 버전 1.13용 비공개 GA로 제공됩니다. |
---|
이 기능을 사용하면 제한적 권한을 사용하는 수정된 역할 기반 액세스 제어(RBAC) 관련 구성으로 Apigee Hybrid용 커스텀 cert-manager를 설치할 수 있습니다.
시작하기 전에
설치 단계로 진행하기 전 다음 명령어를 사용하여 Helm 차트를 다운로드하세요.
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CERT_MANAGER_VERSION=v1.14.5
helm pull $CHART_REPO/apigee-cert-manager --version $CERT_MANAGER_VERSION --untar
커스텀 cert-manager 설정
커스텀 cert-manager를 설정하려면 다음 단계를 따르세요.
커스텀 cert-manager 새로 설치
Apigee Hybrid에 사용할 커스텀 cert-manager를 새로 설치하려면 다음 단계를 수행합니다.
- 다음 명령어로
kubectl
을 사용하여 CRD를 설치합니다.export CERT_MANAGER_VERSION=v1.14.5
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml
- Helm 차트를 사용하여 cert-manager 구성요소를 설치합니다.
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
이후에 새 버전의 차트를 사용할 수 있게 되면
helm upgrade
를 사용하여 업그레이드할 수 있습니다.helm upgrade CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
커스텀 cert-manager로 업그레이드
기존 비커스텀 cert-manager에서 커스텀 버전으로 마이그레이션하려면 다음 단계를 수행합니다. cert-manager는 클러스터에서 한 번에 하나만 실행할 수 있습니다.
- 원활한 마이그레이션을 위해 복제본 수가 0이 되도록 기존 웹훅을 사용 중지하고 배포를 업데이트합니다.
kubectl delete validatingwebhookconfiguration cert-manager-webhook
kubectl delete mutatingwebhookconfiguration cert-manager-webhook
# set the replicas to 0
kubectl scale deployment cert-manager -n cert-manager --replicas=0
kubectl scale deployment cert-manager-cainjector -n cert-manager --replicas=0
kubectl scale deployment cert-manager-webhook -n cert-manager --replicas=0
- CRD를 설치합니다.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERION}/cert-manager.crds.yaml
- 커스텀 cert-manager를 설치합니다.
helm install CERT_MANAGER_RELEASE_NAME apigee-cert-manager/ \ --namespace APIGEE_NAMESPACE
- 설치가 완료되면 이전에 설치한 cert-manager를 삭제할 수 있습니다.
커스텀 cert-manager를 사용하여 Apigee Hybrid 설치 또는 업그레이드
커스텀 cert-manager를 사용하여 Apigee Hybrid를 설치하거나 업그레이드하려면 설치 또는 업그레이드 절차를 다음과 같이 변경해야 합니다.
Apigee Hybrid 설치 변경사항
커스텀 cert-manager를 사용하여 Apigee Hybrid v1.13 이상을 설치하는 경우 10단계: Helm을 사용하여 Apigee Hybrid 설치에서 Apigee Hybrid 구성요소를 설치하기 전에 overrides.yaml
파일을 다음과 같이 변경합니다.
overrides.yaml
파일을 업데이트하여 운영자에게 cert-manager 관련 리소스를 찾을 위치를 알리고 운영자가 커스텀 cert-manager의 발급기관을 사용할 수 있도록 합니다.
certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
Apigee Hybrid 업그레이드 프로세스 변경사항
커스텀 cert-cert 관리자를 사용하여 Apigee Hybrid를 v1.13 이상으로 업그레이드하는 경우 Helm 차트 업그레이드 준비의 단계 이후 및 Apigee Hybrid Helm 차트 설치 전에 다음을 변경합니다.
overrides.yaml
파일을 다음과 같이 변경하여 운영자에게 cert-manager 관련 리소스를 찾을 위치를 알리고 운영자가 커스텀 cert-manager의 ClusterIssuer를 사용할 수 있도록 합니다.certManager: namespace: APIGEE_NAMESPACE ao: certManagerCAIssuerEnabled: true
- cert-manager 네임스페이스에서 apigee 네임스페이스로 기존 apigee-ca 보안 비밀을 복사합니다.
kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
apigee-ca.yaml
파일을 수정하여 네임스페이스를cert-manager
로 식별하는 네임스페이스 파라미터를 삭제합니다.kubectl apply
를 사용하여 Apigee 네임스페이스에apigee-ca
보안 비밀을 적용합니다.kubectl -n APIGEE_NAMESPACE apply -f apigee-ca.yaml
Apigee Hybrid 업그레이드 롤백
이전 버전의 Apigee Hybrid로 롤백해야 할 경우 이전 버전으로 롤백의 안내를 따르세요.
커스텀 cert-manager 롤백 및 제거
커스텀 cert-manager 롤백
커스텀 cert-manager를 롤백하려면 다음 단계를 수행합니다.
- 다음 명령어를 사용하여 Helm 출시를 제거합니다.
helm uninstall CERT_MANAGER_RELEASE_NAME
- 원하는 방법에 따라 일반(비커스텀) cert-manager를 설치합니다. 해당 CRD 버전을 사용해야 합니다. 예를 들어 kubectl 메서드를 사용하여 cert-manager를 설치할 경우 페이로드에 CRD도 포함되기 때문에 CRD가 해당 버전으로 업데이트됩니다. 사용하는 설치 방법에 CRD가 포함되는지 확인합니다.
커스텀 cert-manager 제거
커스텀 cert-manager를 제거하려면 다음 단계를 수행합니다.
- 다음 명령어를 사용하여 Helm 출시를 제거합니다.
helm uninstall CERT_MANAGER_RELEASE_NAME
- 다음 명령어로 CRD를 삭제합니다.
export CERT_MANAGER_VERSION=v1.14.5
kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/${CERT_MANAGER_VERSION}/cert-manager.crds.yaml
코드형 인프라(overrides.yaml)
Helm 차트는 필요에 따라 재정의를 지원하므로 설치 또는 업그레이드 프로세스 중에 필요에 따라 재정의 파일을 사용할 수 있습니다.
혼동이 방지되도록 cert-manager-overrides.yaml
과 같은 파일 이름을 사용하는 것이 좋습니다.
지원되는 모든 cert-manager 재정의 구성은 cert-manager 문서를 참조하세요.
일반적인 cert-manager 구성
다음 예시에서는 Apigee Hybrid에서 일반적인 cert-manager 구성을 수행하는 방법을 보여줍니다.
이미지 재정의
다음은 이미지를 비공개로 호스팅해야 하는 경우 imagepullsecrets
로 이미지를 재정의하는 예시입니다.
# cert-manager-overrides.yaml global: # Reference to one or more secrets to be used when pulling images # ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ # # For example: # imagePullSecrets: # - name: "image-pull-secret" imagePullSecrets: [] image: # Override the image tag to deploy by setting this variable. # If no value is set, the chart's appVersion will be used. repository: quay.io/jetstack/cert-manager-controller webhook: image: # without a tag repository: quay.io/jetstack/cert-manager-webhook cainjector: image: # without a tag repository: quay.io/jetstack/cert-manager-cainjector startupapicheck: image: # without a tag repository: quay.io/jetstack/cert-manager-startupapicheck
NodeSelector 및 노드 어피니티
Apigee Hybrid 설치에서는 Cassandra 포드와 다른 포드에 별도의 노드를 사용해야 합니다. Cassandra와 관련 없는 노드 풀에서 cert-manager를 실행하려면 노드 어피니티를 사용하면 됩니다.
# A Kubernetes Affinity, if required; see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#affinity-v1-core # # For example: # affinity: # nodeAffinity: # requiredDuringSchedulingIgnoredDuringExecution: # nodeSelectorTerms: # - matchExpressions: # - key: cloud.google.com/gke-nodepool # operator: In # values: # - master affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: KEY operator: In values: - value for the non-C* node pool webhook: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: KEY operator: In values: - value for the non-C* node pool cainjector: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: KEY operator: In values: - value for the non C* node pool
톨러레이션(toleration)
다음 예시와 같이 톨러레이션(toleration)을 제공할 수도 있습니다.
# A list of Kubernetes Tolerations, if required; see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#toleration-v1-core # # For example: # tolerations: # - key: node.kubernetes.io/not-ready # operator: Equal # value: master # effect: NoSchedule tolerations: [] webhook: tolerations: [] cainjector: tolerations: [] startupapicheck: tolerations: []