Helm 차트로 Apigee Hybrid 설치 및 관리

이 문서에서는 Helm 차트를 사용하여 Apigee Hybrid v1.10을 설치하는 단계별 프로세스를 안내합니다.

버전

Apigee Hybrid Helm 차트는 Apigee Hybrid v1.10.x와 함께 사용됩니다. 하이브리드 출시 버전 목록은 Apigee Hybrid 출시 버전 내역을 참조하세요.

기본 요건

범위

지원되는 Kubernetes 플랫폼 및 버전

플랫폼 버전
GKE 1.24, 1.25, 1.26
AKS 1.24, 1.25, 1.26
EKS 1.24, 1.25, 1.26
OpenShift 4.11, 4.12

제한사항

  • Helm 차트는 CRD를 완벽하게 지원하지 않으므로 kubectl -k 명령어를 사용하여 설치하고 업그레이드합니다. Google은 Kubernetes 관리 관련 커뮤니티 및 Google 권장사항을 따르는 것을 목표로 합니다. Helm을 통한 CRD 배포는 아직 광범위한 지원이나 이러한 모델에 대한 요청이 권장되는 커뮤니티 상태에 도달하지 않았습니다. 따라서 이 문서의 설명대로 kubectl을 사용하여 Apigee CRD를 관리해야 합니다.
  • apigeectl에서는 서비스 계정과 인증서의 overrides.yaml 전체에 걸쳐 파일을 사용했습니다. 하지만 Helm은 차트 디렉터리 외부에 있는 파일을 참조할 수 없습니다. 서비스 계정 및 인증서 파일에 다음 옵션 중 하나를 선택합니다.
    • 각 차트 디렉터리에 관련 파일 복사본 배치
    • 차트 디렉터리 내에 각 파일이나 폴더에 대한 심볼릭 링크 만들기. Helm은 차트 디렉터리 외부에서 심볼릭 링크를 따르지만 다음과 같은 경고를 출력합니다.
      apigee-operator/gsa -> ../gsa
    • Kubernetes 보안 비밀 사용. 예를 들어 서비스 계정의 경우 다음과 같습니다.
      kubectl create secret generic SECRET_NAME \
        --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \
        -n apigee
      

지원되는 Kubernetes 플랫폼 및 버전

지원되는 플랫폼 목록은 Apigee Hybrid 지원 플랫폼 표의 v1.10 열을 참조하세요.

권한 필요

다음 표에는 Kubernetes 및 Apigee에 필요한 리소스와 권한이 나와 있습니다.

이 표를 필터링하려면 카테고리 선택, 검색어 입력 또는 열 제목을 클릭하여 정렬 중에서 하나 이상을 수행합니다.

카테고리 리소스 리소스 유형 Kubernetes RBAC 권한
Datastore apigeedatastores.apigee.cloud.google.com Apigee create delete patch update
Datastore certificates.cert-manager.io Kubernetes create delete patch update
Datastore cronjobs.batch Kubernetes create delete patch update
Datastore jobs.batch Kubernetes create delete patch update
Datastore secrets Kubernetes create delete patch update
환경 apigeeenvironments.apigee.cloud.google.com Apigee create delete patch update
환경 secrets Kubernetes create delete patch update
환경 serviceaccounts Kubernetes create delete patch update
인그레스 관리자 certificates.cert-manager.io Kubernetes create delete patch update
인그레스 관리자 configmaps Kubernetes create delete patch update
인그레스 관리자 deployments.apps Kubernetes create delete patch update
인그레스 관리자 horizontalpodautoscalers.autoscaling Kubernetes create delete patch update
인그레스 관리자 issuers.cert-manager.io Kubernetes create delete patch update
인그레스 관리자 serviceaccounts Kubernetes create delete patch update
인그레스 관리자 services Kubernetes create delete patch update
작업자 apigeedatastores.apigee.cloud.google.com Apigee create delete get list patch update watch
작업자 apigeedatastores.apigee.cloud.google.com/finalizers Apigee get patch update
작업자 apigeedatastores.apigee.cloud.google.com/status Apigee get patch update
작업자 apigeedeployments.apigee.cloud.google.com Apigee create delete get list patch update watch
작업자 apigeedeployments.apigee.cloud.google.com/finalizers Apigee get patch update
작업자 apigeedeployments.apigee.cloud.google.com/status Apigee get patch update
작업자 apigeeenvironments.apigee.cloud.google.com Apigee create delete get list patch update watch
작업자 apigeeenvironments.apigee.cloud.google.com/finalizers Apigee get patch update
작업자 apigeeenvironments.apigee.cloud.google.com/status Apigee get patch update
작업자 apigeeissues.apigee.cloud.google.com Apigee create delete get list watch
작업자 apigeeorganizations.apigee.cloud.google.com Apigee create delete get list patch update watch
작업자 apigeeorganizations.apigee.cloud.google.com/finalizers Apigee get patch update
작업자 apigeeorganizations.apigee.cloud.google.com/status Apigee get patch update
작업자 apigeeredis.apigee.cloud.google.com Apigee create delete get list patch update watch
작업자 apigeeredis.apigee.cloud.google.com/finalizers Apigee get patch update
작업자 apigeeredis.apigee.cloud.google.com/status Apigee get patch update
작업자 apigeerouteconfigs.apigee.cloud.google.com Apigee get list
작업자 apigeeroutes.apigee.cloud.google.com Apigee create delete get list patch update watch
작업자 apigeeroutes.apigee.cloud.google.com/finalizers Apigee get patch update
작업자 apigeeroutes.apigee.cloud.google.com/status Apigee get patch update
작업자 apigeetelemetries.apigee.cloud.google.com Apigee create delete get list patch update watch
작업자 apigeetelemetries.apigee.cloud.google.com/finalizers Apigee get patch update
작업자 apigeetelemetries.apigee.cloud.google.com/status Apigee get list patch update
작업자 cassandradatareplications.apigee.cloud.google.com Apigee get list patch update watch
작업자 cassandradatareplications.apigee.cloud.google.com/finalizers Apigee get patch update
작업자 cassandradatareplications.apigee.cloud.google.com/status Apigee get patch update
작업자 *.networking.x.k8s.io Kubernetes get list watch
작업자 apiservices.apiregistration.k8s.io Kubernetes create delete get list patch update watch
작업자 certificates.cert-manager.io Kubernetes create delete get list patch update watch
작업자 certificates.cert-manager.io/finalizers Kubernetes create delete get list patch update watch
작업자 certificatesigningrequests.certificates.k8s.io Kubernetes create delete get update watch
작업자 certificatesigningrequests.certificates.k8s.io/approval Kubernetes create delete get update watch
작업자 certificatesigningrequests.certificates.k8s.io/status Kubernetes create delete get update watch
작업자 clusterissuers.cert-manager.io Kubernetes create get watch
작업자 clusterrolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
작업자 clusterroles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
작업자 configmaps Kubernetes create delete get list patch update watch
작업자 configmaps/status Kubernetes get patch update
작업자 cronjobs.batch Kubernetes create delete get list patch update watch
작업자 customresourcedefinitions.apiextensions.k8s.io Kubernetes get list watch
작업자 daemonsets.apps Kubernetes create delete get list patch update watch
작업자 deployments.apps Kubernetes get list watch
작업자 deployments.extensions Kubernetes get list watch
작업자 destinationrules.networking.istio.io Kubernetes create delete get list patch update watch
작업자 endpoints Kubernetes get list watch
작업자 endpointslices.discovery.k8s.io Kubernetes get list watch
작업자 events Kubernetes create delete get list patch update watch
작업자 gateways.networking.istio.io Kubernetes create delete get list patch update watch
작업자 horizontalpodautoscalers.autoscaling Kubernetes create delete get list patch update watch
작업자 ingressclasses.networking.k8s.io Kubernetes get list watch
작업자 ingresses.networking.k8s.io/status Kubernetes all verbs
작업자 issuers.cert-manager.io Kubernetes create delete get list patch update watch
작업자 jobs.batch Kubernetes create delete get list patch update watch
작업자 leases.coordination.k8s.io Kubernetes create get list update
작업자 namespaces Kubernetes get list watch
작업자 nodes Kubernetes get list watch
작업자 peerauthentications.security.istio.io Kubernetes create delete get list patch update watch
작업자 persistentvolumeclaims Kubernetes create delete get list patch update watch
작업자 persistentvolumes Kubernetes get list watch
작업자 poddisruptionbudgets.policy Kubernetes create delete get list patch update watch
작업자 pods Kubernetes create delete get list patch update watch
작업자 pods/exec Kubernetes create
작업자 replicasets.apps Kubernetes create delete get list patch update watch
작업자 replicasets.extensions Kubernetes get list watch
작업자 resourcequotas Kubernetes create delete get list patch update watch
작업자 rolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
작업자 roles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
작업자 secrets Kubernetes batch create delete get list patch update watch
작업자 securitycontextconstraints.security.openshift.io Kubernetes create get list
작업자 serviceaccounts Kubernetes create delete get list patch update watch
작업자 services Kubernetes batch create delete get list patch update watch
작업자 signers.certificates.k8s.io Kubernetes approve
작업자 statefulsets.apps Kubernetes create delete get list patch update watch
작업자 subjectaccessreviews.authorization.k8s.io Kubernetes create get list
작업자 tokenreviews.authentication.k8s.io Kubernetes create
작업자 virtualservices.networking.istio.io Kubernetes create delete get list patch update watch
조직 apigeeorganizations.apigee.cloud.google.com Apigee create delete patch update
조직 secrets Kubernetes create delete patch update
조직 serviceaccounts Kubernetes create delete patch update
Redis apigeeredis.apigee.cloud.google.com Apigee create delete patch update
Redis secrets Kubernetes create delete patch update
원격 분석 apigeetelemetry.apigee.cloud.google.com Apigee create delete patch update
원격 분석 secrets Kubernetes create delete patch update
원격 분석 serviceaccounts Kubernetes create delete patch update
가상 호스트 apigeerouteconfigs.apigee.cloud.google.com Apigee create delete patch update
가상 호스트 secrets Kubernetes create delete patch update

참고 항목

설치 준비

Apigee Hybrid 차트는 Google Artifact Registry에서 호스팅됩니다.

oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

Apigee Helm 차트 가져오기

pull 명령어를 사용하여 다음 명령어로 모든 Apigee Hybrid Helm 차트를 로컬 스토리지에 복사합니다.

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.10.4
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar

Apigee Hybrid 설치

설치 시퀀스 개요

다음 그림과 같이 구성요소 설치가 왼쪽에서 오른쪽으로 수행됩니다. 그림에서 수직으로 누적된 구성요소를 순서에 관계없이 함께 설치할 수 있습니다. 구성요소를 설치하면 해당 구성요소를 언제든지 개별적으로 업데이트할 수 있습니다(예: 복제본, 메모리, CPU 등).

설치 시퀀스: 인증서 관리자, CRD, Apigee 연산자, 누적된 구성요소: Redis 및 데이터 스토어, 원격 분석, 인그레스 관리자, 조직, 누적된 구성요소: 환경 및 가상 호스트

Helm 차트로 Apigee Hybrid 설치 준비

  1. apigee 리소스에 사용할 네임스페이스를 만듭니다. 이는 overrides.yaml 파일의 네임스페이스 필드와 일치해야 합니다. overrides.yaml에 없으면 기본값은 apigee입니다.
    1. 네임스페이스가 이미 있는지 확인합니다.

      kubectl get namespace apigee

      네임스페이스가 있으면 출력에 다음이 포함됩니다.

        NAME     STATUS   AGE
        apigee   Active   1d
      
    2. 네임스페이스가 아직 없으면 이를 만듭니다.

      kubectl create namespace apigee
  2. 서비스 계정을 만들고 여기에 적절한 IAM 역할을 할당합니다. Apigee Hybrid는 다음 서비스 계정을 사용합니다.

    서비스 계정 IAM 역할
    apigee-cassandra 스토리지 객체 관리자
    apigee-logger 로그 작성자
    apigee-mart Apigee Connect 에이전트
    apigee-metrics 모니터링 측정항목 작성자
    apigee-runtime 역할 필요 없음
    apigee-synchronizer Apigee 동기화 관리자
    apigee-udca Apigee 애널리틱스 에이전트
    apigee-watcher Apigee 런타임 에이전트

    Apigee는 apigee-operator/etc/tools 디렉터리에 create-service-account 도구를 제공합니다.

    APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account
    

    이 도구는 서비스 계정을 만들고 각 계정에 IAM 역할을 할당하며 각 계정에 JSON 형식의 인증서 파일을 다운로드합니다.

    1. 서비스 계정 인증서 파일을 다운로드할 디렉터리를 만듭니다. SERVICE_ACCOUNTS_PATH 대신 다음 명령어에 이를 지정합니다.
    2. 다음 옵션을 사용하여 단일 명령어로 모든 서비스 계정을 만들 수 있습니다.
      APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
      
    3. 재정의 파일의 서비스 계정 이름을 나열합니다.
      ls service-accounts
      
      my_project-apigee-cassandra.json    my_project-apigee-runtime.json
      my_project-apigee-logger.json       my_project-apigee-synchronizer.json
      my_project-apigee-mart.json         my_project-apigee-udca.json
      my_project-apigee-metrics.json      my_project-apigee-watcher.json
      

      자세한 내용은 다음을 참조하세요.

  3. 설치하기 전에 overrides.yaml 파일에서 설정을 확인합니다.
    instanceID: UNIQUE_ID_TO_IDENTIFY_THIS_CLUSTER
    namespace: apigee # required for Helm charts installation
    
    # By default, logger and metrics are enabled and requires below details
    # Google Cloud project and cluster
    gcp:
      projectID: PROJECT_ID
      region: REGION
    
    k8sCluster:
      name: CLUSTER_NAME
      region: REGION
    
    org: ORG_NAME
    
    envs:
    - name: "ENV_NAME"
      serviceAccountPaths:
        runtime: "PATH_TO_RUNTIME_SVC_ACCOUNT"
        synchronizer: "PATH_TO_SYNCHRONIZER_SVC_ACCOUNT"
        udca: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    ingressGateways:
    - name: GATEWAY_NAME # maximum 17 characters, eg: "ingress-1". See Known issue 243167389.
      replicaCountMin: 1
      replicaCountMax: 2
      svcType: LoadBalancer
    
    virtualhosts:
    - name: ENV_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: GATEWAY_NAME
      sslSecret: SECRET_NAME
    
    mart:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    logger:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_LOGGER_SVC_ACCOUNT"
    
    metrics:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_METRICS_SVC_ACCOUNT"
    
    udca:
      serviceAccountPath: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    connectAgent:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    watcher:
      serviceAccountPath: "PATH_TO_WATCHER_SVC_ACCOUNT"
    

    이는 이 Helm 설치에 사용할 동일한 재정의 구성입니다. 자세한 설정은 구성 속성 참조를 확인하세요.

    재정의 파일의 더 많은 예시는 6단계: 하이브리드 런타임 구성을 참조하세요.

  4. 동기화 담당자 액세스를 사용 설정합니다. 이는 Apigee Hybrid를 설치하기 위한 기본 요건입니다.
    1. 다음 명령어로 동기화 담당자 액세스가 이미 사용 설정되었는지 확인합니다.

      export TOKEN=$(gcloud auth print-access-token)
      
      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:getSyncAuthorization" \
        -d ''
      

      출력이 다음과 같이 표시됩니다.

      {
        "identities":[
           "serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"
        ],
        "etag":"BwWJgyS8I4w="
      }
      
    2. 출력에 서비스 계정 ID가 포함되어 있지 않으면 동기화 담당자 액세스를 사용 설정합니다. 이 태스크를 수행하려면 계정에 Apigee 조직 관리자 IAM 역할(roles/apigee.admin)이 있어야 합니다.

      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:setSyncAuthorization" \
        -d '{"identities":["'"serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"'"]}'
      

      자세한 내용은 Apigee Hybrid 설치 문서의 7단계: 동기화 담당자 액세스 사용 설정을 참조하세요.

  5. 다음 명령어를 사용하여 인증서 관리자를 설치합니다.
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  6. Apigee CRD를 설치합니다.

    1. 다음 명령어를 실행하여 kubectl 테스트 실행 기능을 사용합니다.

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. 테스트 실행 명령어로 유효성을 검사한 후 다음 명령어를 실행합니다.

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
    3. kubectl get crds 명령어를 사용하여 설치를 검증합니다.
      kubectl get crds | grep apigee

      출력이 다음과 같이 표시됩니다.

      apigeedatastores.apigee.cloud.google.com                    2023-10-09T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2023-10-09T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2023-10-09T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2023-10-09T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2023-10-09T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2023-10-09T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2023-10-09T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2023-10-09T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2023-10-09T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2023-10-09T14:48:35Z
      
  7. 클러스터 노드의 기존 라벨을 확인합니다. 기본적으로 Apigee는 cloud.google.com/gke-nodepool=apigee-data 라벨이 있는 노드의 데이터 포드를 예약하고 런타임 포드는 cloud.google.com/gke-nodepool=apigee-runtime 라벨이 있는 노드에 예약됩니다. overrides.yaml 파일에서 노드 풀 라벨을 맞춤설정할 수 있습니다.

    자세한 내용은 전용 노드 풀 구성을 참조하세요.

Apigee Hybrid Helm 차트 설치

  1. Apigee 연산자/컨트롤러를 설치합니다.

    helm upgrade operator apigee-operator/ \
      --install \
      --create-namespace \
      --namespace apigee-system \
      --atomic \
      -f overrides.yaml
    

    Apigee 연산자 설치를 확인합니다.

    helm ls -n apigee-system
    
    NAME           NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    operator    apigee-system   3               2023-06-26 00:42:44.492009 -0800 PST    deployed        apigee-operator-1.10.4   1.10.4
    

    가용성을 확인하여 실행 중인지 확인합니다.

    kubectl -n apigee-system get deploy apigee-controller-manager
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager   1/1     1            1           7d20h
    
  2. Apigee 데이터 스토어를 설치합니다.

    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    상태를 확인하여 apigeedatastore가 실행 중인지 확인합니다.

    kubectl -n apigee get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
    
  3. Apigee 원격 분석을 설치합니다.

    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    상태를 확인하여 실행 중인지 확인합니다.

    kubectl -n apigee get apigeetelemetry apigee-telemetry
    
    NAME               STATE     AGE
    apigee-telemetry   running   2d
    
  4. Apigee Redis를 설치합니다.

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    상태를 확인하여 실행 중인지 확인합니다.

    kubectl -n apigee get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
    
  5. Apigee 인그레스 관리자를 설치합니다.

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    가용성을 확인하여 실행 중인지 확인합니다.

    kubectl -n apigee get deployment apigee-ingressgateway-manager
    
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-ingressgateway-manager   2/2     2            2           2d
    
  6. Apigee 조직을 설치합니다.

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    해당 조직의 상태를 확인하여 실행 중인지 확인합니다.

    kubectl -n apigee get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
    
  7. 환경을 설치합니다.

    한 번에 환경 하나만 설치해야 합니다. --set env=ENV_NAME으로 환경을 지정합니다.

    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides.yaml
    

    해당 환경의 상태를 확인하여 실행 중인지 확인합니다.

    kubectl -n apigee get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d
    
  8. TLS 인증서를 만듭니다. Apigee Hybrid 구성에 런타임 인그레스 게이트웨이에 대한 TLS 인증서를 제공해야 합니다.
    1. 인증서를 만듭니다. 프로덕션 환경에서는 서명된 인증서를 사용해야 합니다. 인증서와 키 쌍 또는 Kubernetes 보안 비밀을 사용할 수 있습니다.

      데모 및 테스트 설치에서 런타임 게이트웨이는 자체 서명 사용자 인증 정보를 수락할 수 있습니다. 다음 예시에서는 자체 서명 사용자 인증 정보를 생성하는 데 openssl이 사용됩니다.

      openssl req -nodes -new -x509 \
        -keyout PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.key \
        -out PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.pem \
        -subj '/CN='YOUR_DOMAIN'' -days 3650
      

      자세한 내용은 5단계: TLS 인증서 만들기를 참조하세요.

    2. 인증서를 참조할 Kubernetes 보안 비밀을 만듭니다.

      kubectl create secret generic NAME \
        --from-file="cert=PATH_TO_CRT_FILE" \
        --from-file="key=PATH_TO_KEY_FILE" \
        -n apigee
      
  9. 가상 호스트를 설치합니다.

    한 번에 환경 그룹(virtualhost) 하나만 설치해야 합니다. --set envgroup=ENV_GROUP_NAME으로 환경 그룹을 지정합니다.

    # repeat the following command for each env group mentioned in the overrides.yaml file
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides.yaml
    

    그러면 Apigee 감시자가 제어 영역에서 환경 그룹 관련 세부정보를 가져오면 내부적으로 ApigeeRoute(AR)를 만드는 ApigeeRouteConfig(ARC)가 생성됩니다. 따라서 해당 AR의 상태가 실행 중인지 확인합니다.

    kubectl -n apigee get arc
    
    NAME                                STATE   AGE
    apigee-org1-dev-egroup                       2d
    
    kubectl -n apigee get ar
    
    NAME                                        STATE     AGE
    apigee-org1-dev-egroup-xxxxxx                running   2d
    

Apigee Hybrid를 사용하는 Helm 차트의 추가 사용 사례

Cassandra 백업 및 복원

  1. 백업을 사용 설정하려면 다음 안내를 따르세요.
    1. overrides.yaml 파일에서 Cassandra 백업 세부정보를 업데이트합니다.

      cassandra:
        backup:
          enabled: true
          serviceAccountPath: PATH_TO_GSA_FILE
          dbStorageBucket: BUCKET_LINK
          schedule: "45 23 * * 6"
      
    2. apigee-datastore 차트에서 Helm 업그레이드를 실행합니다.

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      
  2. 마찬가지로 복원을 사용 설정하려면 다음 안내를 따르세요.
    1. overrides.yaml 파일에서 Cassandra 복원 세부정보를 업데이트합니다.

      cassandra:
        restore:
          enabled: true
          snapshotTimestamp: TIMESTAMP
          serviceAccountPath: PATH_TO_GSA_FILE
          cloudProvider: "CSI"
      
    2. apigee-datastore 차트에서 Helm 업그레이드를 실행합니다.

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      

Cassandra 백업 및 복원에 대한 자세한 내용은 Cassandra 백업 개요를 참조하세요.

멀티 리전 확장

Helm 차트를 사용하는 멀티 리전 설정에는 현재 apigeectl 절차와 동일한 기본 요건이 필요합니다. 자세한 내용은 멀티 리전 배포에 대한 기본 요건을 참조하세요.

멀티 리전에 하이브리드를 구성하는 절차는 멀티 리전 시드 호스트를 구성하고 Kubernetes 클러스터와 컨텍스트를 설정하는 프로세스를 구성하는 기존 절차와 동일합니다.

첫 번째 리전 구성

다음 단계를 수행하여 첫 번째 리전을 구성하고 두 번째 리전 구성을 준비합니다.

  1. 멀티 리전에 Apigee Hybrid 구성의 단계를 수행하여 플랫폼에서 멀티 리전 시드 호스트를 구성합니다.
  2. 첫 번째로 생성된 리전에 대해 apigee 네임스페이스에서 포드를 가져옵니다.

    kubectl get pods -o wide -n apigee
    
  3. 이 리전에서 Cassandra의 멀티 리전 시드 호스트 주소를 식별합니다(예: 10.0.0.11).
  4. 두 번째 리전의 overrides.yaml 파일을 준비하고 다음과 같이 시드 호스트 IP 주소를 추가합니다.

    cassandra:
      multiRegionSeedHost: "SEED_HOST_IP_ADDRESS"
      datacenter: "DATACENTER_NAME"
      rack: "RACK_NAME"
      clusterName: CLUSTER_NAME
      hostNetwork: false
    

    다음을 바꿉니다.

    • SEED_HOST_IP_ADDRESS를 시드 호스트 IP 주소로 바꿉니다(예: 10.0.0.11).
    • DATACENTER_NAME을 데이터 센터 이름으로 바꿉니다(예: dc-2).
    • RACK_NAME을 랙 이름으로 바꿉니다(예: ra-1).
    • CLUSTER_NAME을 Apigee 클러스터 이름으로 바꿉니다. 기본값은 apigeecluster입니다. 다른 클러스터 이름을 사용하는 경우 cassandra.clusterName의 값을 지정해야 합니다. 이 값은 모든 리전에서 동일해야 합니다.

두 번째 리전 구성

새 리전을 설정하려면 다음 안내를 따르세요.

  1. 리전 2에 cert-manager를 설치합니다.

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  2. 서비스 계정의 Kubernetes 보안 비밀을 만듭니다.
  3. 인그레스 인증서의 Kubernetes 보안 비밀을 만듭니다.
  4. 기존 클러스터에서 새 클러스터로 인증서를 복사합니다. 새 CA 루트는 Cassandra 및 mTLS용 기타 하이브리드 구성요소에서 사용됩니다. 따라서 클러스터 간에 일관된 인증서가 있어야 합니다.
    1. 컨텍스트를 원래 네임스페이스로 설정합니다.

      kubectl config use-context ORIGINAL_CLUSTER_NAME
      
    2. 현재 네임스페이스 구성을 파일로 내보냅니다.

      kubectl get namespace apigee -o yaml > apigee-namespace.yaml
      
    3. apigee-ca 보안 비밀을 파일로 내보냅니다.

      kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
      
    4. 컨텍스트를 새 리전의 클러스터 이름으로 설정합니다.

      kubectl config use-context NEW_CLUSTER_NAME
      
    5. 네임스페이스 구성을 새 클러스터로 가져옵니다. 새 리전에서 다른 네임스페이스를 사용하는 경우 파일의 네임스페이스를 업데이트해야 합니다.

      kubectl apply -f apigee-namespace.yaml
      
    6. 보안 비밀을 새 클러스터로 가져옵니다.

      kubectl -n cert-manager apply -f apigee-ca.yaml
      
  5. 이제 Helm 차트를 사용하여 리전 1에서와 같이 다음 Helm 차트 명령어로 새 리전에 Apigee Hybrid를 설치합니다.

    helm upgrade operator apigee-operator \
      --install \
      --create-namespace \
      --namespace apigee-system \
      --atomic
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade datastore apigee-datastore \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade telemetry apigee-telemetry \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade redis apigee-redis \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ingress-manager apigee-ingress-manager \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ORG_NAME apigee-org \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env mentioned on the overrides
    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env group mentioned on the overrides
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides-DATACENTER_NAME.yaml
    
  6. 모든 구성요소가 설치되면 새 데이터 센터의 모든 포드에 Cassandra를 설정합니다. 자세한 내용은 멀티 리전에 Apigee Hybrid 구성을 참조하고 플랫폼을 선택하고 새 리전 설정으로 스크롤한 후 5단계를 찾습니다.
  7. 데이터 복제가 완료되고 확인되면 시드 호스트를 업데이트합니다.
    1. overrides-DATACENTER_NAME.yaml에서 multiRegionSeedHost: 10.0.0.11가 삭제됨
    2. 변경사항을 다시 적용하여 Apigee Datastore CR을 업데이트합니다.

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace apigee \
        --atomic \
        -f overrides-DATACENTER_NAME.yaml
      

이미지를 비공개로 호스팅

공개 Google Cloud 저장소를 사용하는 대신 선택적으로 이미지를 비공개로 호스팅할 수 있습니다. 각 구성요소를 재정의하는 대신 재정의에 허브 세부정보를 추가할 수 있습니다.

hub: PRIVATE_REPO

예를 들어 다음 허브가 제공되면 이미지 경로가 자동으로 확인됩니다.

hub: private-docker-host.com

다음과 같습니다.

## an example of internal component vs 3rd party
containers:
- name: apigee-udca
  image: private-docker-host.com/apigee-udca:1.10.4
  imagePullPolicy: IfNotPresent

containers:
- name: apigee-ingressgateway
  image: private-docker-host.com/apigee-asm-ingress:1.17.2-asm.8-distroless
  imagePullPolicy: IfNotPresent

Google Cloud 저장소에 호스팅된 Apigee 이미지의 목록을 명령줄에 표시하려면 다음 안내를 따르세요.

./apigee-operator/etc/tools/apigee-pull-push.sh --list

톨러레이션(toleration)

Kubernetes의 taint 및 톨러레이션(toleration) 기능을 사용하려면 각 Apigee Hybrid 구성요소의 tolerations 재정의 속성을 정의해야 합니다. 다음 구성요소는 톨러레이션(toleration) 정의를 지원합니다.

  • ao
  • apigeeIngressGateway
  • cassandra
  • cassandraSchemaSetup
  • cassandraSchemaValidation
  • cassandraUserSetup
  • connectAgent
  • istiod
  • logger
  • mart
  • metrics
  • mintTaskScheduler
  • redis
  • runtime
  • synchronizer
  • udca
  • Watcher

이러한 구성요소에 대한 자세한 내용은 구성 속성 참조를 확인하세요.

예를 들어 Apigee 연산자 배포에 톨러레이션(toleration)을 적용하려면 다음 안내를 따르세요.

ao:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

Cassandra StatefulSet에 톨러레이션(toleration)을 적용하려면 다음 안내를 따르세요.

cassandra:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600