6단계: 클러스터 구성

구성 재정의 지정

Apigee Hybrid 설치 프로그램은 많은 설정에 기본값을 사용합니다. 하지만 기본값이 없는 몇 가지 설정이 있습니다. 다음에 설명된 대로 이 설정에 값을 제공해야 합니다.

시작하기 전에

다음 시나리오를 검토하여 클러스터를 구성할지 여부를 결정하는 것이 좋습니다. 이러한 구성은 선택사항입니다.

클러스터 구성

일반적으로 구성 재정의는 $HYBRID_FILES/overrides 디렉터리에 overrides.yaml이라는 파일로 작성됩니다.

  1. $HYBRID_FILES/overrides 디렉터리에 overrides.yaml이라는 새 파일을 만듭니다. 예를 들면 다음과 같습니다.
    vi $HYBRID_FILES/overrides/overrides.yaml

    overrides.yaml은 고유 Apigee Hybrid 설치에 대한 구성을 제공합니다. 이 단계의 재정의 파일은 첫 번째 설치에 적합한 소규모 하이브리드 런타임 설치를 위한 기본 구성을 제공합니다.

  2. overrides.yaml에서 아래 표시된 필요한 속성 값을 추가합니다. 각 속성에 대한 자세한 설명은 다음과 같습니다.

    GKE에 Apigee Hybrid를 설치하고 워크로드 아이덴티티를 사용하여 하이브리드 구성요소를 인증하려는 경우 GKE - 워크로드 아이덴티티 탭을 선택하여 overrides.yaml 파일을 구성합니다.

    다른 모든 설치의 경우 4단계: 서비스 계정 및 사용자 인증 정보 만들기에서 선택한 내용에 따라 비프로덕션, Non-prod 또는 프로덕션 Prod 환경에 대한 탭을 선택합니다.

    프로덕션 환경의 설치에 대해 프로덕션용 Cassandra 구성에서 Cassandra 데이터베이스에 대한 스토리지 요구사항을 확인합니다.

    GKE - 워크로드 아이덴티티

    overrides.yaml 파일에 다음 구조와 구문이 있는지 확인합니다. red, bold italics의 값은 제공해야 하는 속성 값이며, 다음 표에 설명되어 있습니다.

    GKE에 Apigee Hybrid를 설치하는 경우 Google API, 워크로드 아이덴티티를 인증하고 요청할 수 있는 대안이 있습니다. 워크로드 아이덴티티의 개요는 다음을 참조하세요.

    GKE에서 Apigee Hybrid와 함께 워크로드 아이덴티티를 사용하려면 이 템플릿을 사용하고 8단계: 하이브리드 런타임 설치의 단계에 따라 Kubernetes 서비스 계정을 만든 후 이를 4단계: 서비스 계정 및 사용자 인증 정보에서 만든 Google 서비스 계정과 연결합니다.

    gcp:
      region: ANALYTICS_REGION
      projectID: GCP_PROJECT_ID
      workloadIdentityEnabled: true
    
    k8sCluster:
      name: CLUSTER_NAME
      region: CLUSTER_LOCATION # Must be the closest Google Cloud region to your cluster.
    org: ORG_NAME
    
    instanceID: "UNIQUE_INSTANCE_IDENTIFIER"
      
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2
    
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2 
    
    cassandra:
      hostNetwork: false
        # false for all GKE installations.
        # See Multi-region deployment: Prerequisites
      replicaCount: 3
        # Use 1 for demo installations and multiples of 3 for production.
        # See Configure Cassandra for production for guidelines.
      backup:
        enabled: true
        # Set to true for initial installation.
        # This triggers apigeectl to create the apigee-cassandra-backup Kubernetes service account.
        # See Cassandra backup overview for instructions on using cassandra.backup.
    
    virtualhosts:
    - name: ENVIRONMENT_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: INGRESS_NAME
      sslCertPath: ./certs/CERT_NAME.pem
      sslKeyPath: ./certs/KEY_NAME.key
    
    ingressGateways:
    - name: INGRESS_NAME # maximum 17 characters.
      replicaCountMin: 2
      replicaCountMax: 10
      svcAnnotations:  # optional. If you are on AKS, see Known issue #260772383
        SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE
      svcLoadBalancerIP: SVC_LOAD_BALANCER_IP  # optional
    
    envs:
    - name: ENVIRONMENT_NAME
    
    logger:
      enabled: false # Set to false for all GKE installations.
    
    

    비프로덕션

    overrides.yaml 파일에 다음 구조와 문법이 있는지 확인합니다. red, bold italics의 값은 제공해야 하는 속성 값이며, 다음 표에 설명되어 있습니다.

    Google Cloud 프로젝트 리전과 Kubernetes 클러스터 리전에 대한 플랫폼은 서로 다릅니다. Apigee Hybrid를 설치할 플랫폼을 선택합니다.

    gcp:
      region: ANALYTICS_REGION
      projectID: GCP_PROJECT_ID
    
    k8sCluster:
      name: CLUSTER_NAME
      region: CLUSTER_LOCATION # Must be the closest Google Cloud region to your cluster.
    org: ORG_NAME
    
    instanceID: "UNIQUE_INSTANCE_IDENTIFIER"
      
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2
    
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2 
    
    cassandra:
      replicaCount: 1
        # Use 1 for non-prod or "demo" installations and multiples of 3 for production.
        # See Configure Cassandra for production for guidelines.
      hostNetwork: false
        # Set to false for single region installations and multi-region installations
        # with connectivity between pods in different clusters, for example GKE installations.
        # Set to true  for multi-region installations with no communication between
        # pods in different clusters, for example GKE On-prem, GKE on AWS, Anthos on bare metal,
        # AKS, EKS, and OpenShift installations.
        # See Multi-region deployment: Prerequisites
    
    virtualhosts:
    - name: ENVIRONMENT_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: INGRESS_NAME
      sslCertPath: ./certs/CERT_NAME.pem
      sslKeyPath: ./certs/KEY_NAME.key
    
    ingressGateways:
    - name: INGRESS_NAME # maximum 17 characters.
      replicaCountMin: 2
      replicaCountMax: 10
      svcAnnotations:  # optional. If you are on AKS, see Known issue #260772383
        SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE
      svcLoadBalancerIP: SVC_LOAD_BALANCER_IP  # optional
    
    envs:
    - name: ENVIRONMENT_NAME
      serviceAccountPaths:
        synchronizer: NON_PROD_SERVICE_ACCOUNT_FILEPATH
          # For example: "./service-accounts/GCP_PROJECT_ID-apigee-non-prod.json"
        udca: NON_PROD_SERVICE_ACCOUNT_FILEPATH
        runtime: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    
    mart:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    connectAgent:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    metrics:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    udca:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    watcher:
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    logger:
      enabled: false
            # Set to false to disable logger for GKE installations.
            # Set to true for all platforms other than GKE.
            # See apigee-logger in Service accounts and roles used by hybrid components.
      serviceAccountPath: NON_PROD_SERVICE_ACCOUNT_FILEPATH
    
    

    프로덕션

    overrides.yaml 파일에 다음 구조와 구문이 있는지 확인합니다. red, bold italics의 값은 제공해야 하는 속성 값이며, 다음 표에 설명되어 있습니다.

    Google Cloud 프로젝트 리전과 Kubernetes 클러스터 리전에 대한 플랫폼은 서로 다릅니다. Apigee Hybrid를 설치할 플랫폼을 선택합니다.

    gcp:
      region: ANALYTICS_REGION
      projectID: GCP_PROJECT_ID
    
    k8sCluster:
      name: CLUSTER_NAME
      region: CLUSTER_LOCATION # Must be the closest Google Cloud region to your cluster.
    org: ORG_NAME
    
    instanceID: "UNIQUE_INSTANCE_IDENTIFIER"
      
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2
    
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2 
    
    cassandra:
      hostNetwork: false
        # Set to false for single region installations and multi-region installations
        # with connectivity between pods in different clusters, for example GKE installations.
        # Set to true  for multi-region installations with no communication between
        # pods in different clusters, for example GKE On-prem, GKE on AWS, Anthos on bare metal,
        # AKS, EKS, and OpenShift installations.
        # See Multi-region deployment: Prerequisites
      replicaCount: 3
        # Use multiples of 3 for production.
        # See Configure Cassandra for production for guidelines.
      storage:
        capacity: 500Gi
      resources:
        requests:
          cpu: 7
          memory: 15Gi
      maxHeapSize: 8192M
      heapNewSize: 1200M
        # Minimum storage requirements for a production environment.
        # See Configure Cassandra for production.
    
    virtualhosts:
    - name: ENVIRONMENT_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: INGRESS_NAME
      sslCertPath: ./certs/CERT_NAME.pem
      sslKeyPath: ./certs/KEY_NAME.key
    
    ingressGateways:
    - name: INGRESS_NAME # maximum 17 characters.
      replicaCountMin: 2
      replicaCountMax: 10
      svcAnnotations:  # optional. If you are on AKS, see Known issue #260772383
        SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE
    
    envs:
    - name: ENVIRONMENT_NAME
      serviceAccountPaths:
        synchronizer: SYNCHRONIZER_SERVICE_ACCOUNT_FILEPATH
          # For example: "./service-accounts/GCP_PROJECT_ID-apigee-synchronizer.json"
        udca: UDCA_SERVICE_ACCOUNT_FILEPATH
          # For example: "./service-accounts/GCP_PROJECT_ID-apigee-udca.json"
        runtime: RUNTIME_SERVICE_ACCOUNT_FILEPATH
          # For example: "./service-accounts/GCP_PROJECT_ID-apigee-runtime.json"
    
    mart:
      serviceAccountPath: MART_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-mart.json"
    
    connectAgent:
      serviceAccountPath: MART_SERVICE_ACCOUNT_FILEPATH
            # Use the same service account for mart and connectAgent
    
    metrics:
      serviceAccountPath: METRICS_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-metrics.json"
    
    udca:
      serviceAccountPath: UDCA_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-udca.json"
    
    watcher:
      serviceAccountPath: WATCHER_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-watcher.json"
    
    logger:
      enabled: false
            # Set to false to disable logger for GKE installations.
            # Set to true for all platforms other than GKE.
            # See apigee-logger in Service accounts and roles used by hybrid components.
      serviceAccountPath: LOGGER_SERVICE_ACCOUNT_FILEPATH
            # For example: "./service-accounts/GCP_PROJECT_ID-apigee-logger.json"
    

    다음 예시에서는 예시 속성 값이 추가된, 완료된 재정의 파일을 보여줍니다.

    gcp:
      region: us-central1
      projectID: hybrid-example
    
    k8sCluster:
      name: apigee-hybrid
      region: us-central1
    
    org: hybrid-example
    
    instanceID: "my_hybrid_example"
      
    ao:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-operators"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2
    
    runtime:
      image:
        url: "gcr.io/apigee-release/hybrid/apigee-runtime"
        tag: "1.11.2-hotfix.2" # Required for Apigee hybrid v1.11.2 
    
    cassandra:
      hostNetwork: false
      replicaCount: 3
    
    virtualhosts:
    - name: example-env-group
      selector:
        app: apigee-ingressgateway
        ingress_name: my-ingress-1
      sslCertPath: ./certs/keystore.pem
      sslKeyPath: ./certs/keystore.key
    
    ingressGateways:
    - name: my-ingress-1
      replicaCountMin: 2
      replicaCountMax: 10
    
    envs:
    - name: test
      serviceAccountPaths:
        synchronizer: ./service-accounts/my-hybrid-project-apigee-non-prod.json
          # for production environments, my-hybrid-project-apigee-synchronizer.json
        udca: ./service-accounts/my-hybrid-project-apigee-non-prod.json
          # for production environments, my-hybrid-project-apigee-udca.json
        runtime: ./service-accounts/my-hybrid-project-apigee-non-prod.json
          # for production environments, my-hybrid-project-apigee-runtime.json
    
    mart:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, my-hybrid-project-apigee-mart.json
    
    connectAgent:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, example-hybrid-apigee-mart.json
    
    metrics:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, my-hybrid-project-apigee-metrics.json
    
    udca:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, my-hybrid-project-apigee-udca.json
    
    watcher:
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, my-hybrid-project-apigee-watcher.json
    
    logger:
      enabled: false # Set to "false" for GKE. Set to "true" for all other Kubernetes platforms.
      serviceAccountPath: ./service-accounts/my-hybrid-project-apigee-non-prod.json
        # for production environments, LOGGER_SERVICE_ACCOUNT_NAME.json
    
  3. 완료되면 파일을 저장합니다.

다음 표에서는 재정의 파일에 제공해야 하는 각 속성 값을 설명합니다. 자세한 내용은 구성 속성 참조를 참조하세요.

변수 설명
ANALYTICS_REGION GKE에서 클러스터가 실행되는 동일한 리전으로 이 값을 설정해야 합니다. 다른 모든 플랫폼에서 애널리틱스 지원을 가진 클러스터에 가장 가까운 애널리틱스 리전을 선택합니다(파트 1, 2단계: 조직 만들기의 테이블 참조).

이전에 환경 변수 ANALYTICS_REGION에 할당한 값입니다.

GCP_PROJECT_ID apigee-loggerapigee-metrics가 데이터를 푸시하는 Google Cloud 프로젝트를 식별합니다. 환경 변수 PROJECT_ID에 할당된 값입니다.
CLUSTER_NAME Kubernetes 클러스터 이름입니다. 환경 변수 CLUSTER_NAME에 할당된 값입니다.
CLUSTER_LOCATION 클러스터가 실행 중인 리전입니다. 1단계: 클러스터 만들기에서 클러스터를 만든 리전입니다.

이전에 환경 변수 CLUSTER_LOCATION에 할당한 값입니다.

ORG_NAME Apigee 하이브리드 조직의 ID입니다. 환경 변수 ORG_NAME에 할당된 값입니다.
UNIQUE_INSTANCE_IDENTIFIER

이 인스턴스를 식별하는 고유한 문자열입니다. 문자와 숫자 조합을 최대 63자(영문 기준)까지 사용할 수 있습니다.

동일한 클러스터에 여러 조직을 만들 수 있지만 instanceID는 동일한 Kubernetes 클러스터의 모든 조직에 대해 동일해야 합니다.

ENVIRONMENT_GROUP_NAME 환경이 할당된 환경 그룹의 이름입니다. 프로젝트 및 조직 설정 - 3단계: 환경 그룹 만들기에서 만든 그룹입니다. 환경 변수 ENV_GROUP에 할당된 값입니다.
CERT_NAME
KEY_NAME
5단계: TLS 인증서 만들기에서 이전에 생성한 자체 서명 TLS 키 및 인증서 파일의 이름을 입력합니다. 이러한 파일은 base_directory/hybrid-files/certs 디렉터리에 있어야 합니다. 예를 들면 다음과 같습니다.
sslCertPath: ./certs/keystore.pem
sslKeyPath: ./certs/keystore.key
INGRESS_NAME 배포의 Apigee 인그레스 게이트웨이의 이름입니다. 다음 요구사항을 충족하는 이름이면 됩니다.
  • 최대 길이는 17자(영문 기준)입니다.
  • 소문자 영숫자 문자, '-' 또는 '.'만 포함해야 합니다.
  • 영숫자 문자로 시작해야 합니다.
  • 영숫자 문자로 끝나야 합니다.

구성 속성 참조의 ingressGateways[].name을 참조하세요.

SVC_ANNOTATIONS_KEY: SVC_ANNOTATIONS_VALUE (선택사항) 기본 인그레스 서비스의 주석을 제공하는 키-값 쌍입니다. 주석은 부하 분산기 유형을 내부 또는 외부로 설정하는 등, 클라우드 플랫폼에서 하이브리드 설치를 구성하는 데 사용됩니다.

주석은 플랫폼마다 다릅니다. 필수 및 추천 주석은 플랫폼 문서를 참조하세요.

이 섹션을 사용하지 않는 경우 주석 처리하거나 삭제합니다.

SVC_LOAD_BALANCER_IP (선택사항) 부하 분산기에 대해 예약한 IP 주소입니다. 부하 분산기 IP 주소 지정을 지원하는 플랫폼에서 이 IP 주소로 부하 분산기가 생성됩니다. 부하 분산기 IP를 지정할 수 없는 플랫폼에서 이 속성은 무시됩니다.

이 섹션을 사용하지 않는 경우 주석 처리하거나 삭제합니다.

ENVIRONMENT_NAME 프로젝트 및 조직 설정 - 3단계: 환경 그룹 만들기에 설명된 대로 UI에서 환경을 만들 때 사용한 이름과 동일한 이름을 사용합니다.
*_SERVICE_ACCOUNT_FILEPATH service-accounts/ 디렉터리에 있는 서비스 계정 JSON 파일의 경로 및 파일 이름 계정입니다. 이름에는 서비스 계정 파일에 대한 경로가 포함되어야 합니다. 전체 경로이거나 hybrid-files/ 디렉터리 기준의 상대 경로일 수 있습니다. 상대 경로를 포함할 경우 hybrid-files/ 디렉터리에서 이 구성을 적용하는 명령어인 apigeectl을 호출해야 합니다.

비프로덕션 환경의 경우 단일 서비스 계정의 이름은 GCP_PROJECT_ID-non-prod.json(기본값)입니다.

프로덕션 환경의 경우 하이브리드 런타임 설정 - 4단계: 서비스 계정 및 사용자 인증 정보 만들기에서 create-service-account 도구로 생성한 서비스 계정 키 파일의 이름입니다.

service-accounts/ 디렉터리에서 서비스 계정 파일 목록을 볼 수 있습니다.

프로덕션 환경 서비스 계정의 기본 이름은 다음과 같습니다.

  • Cassandra: GCP_PROJECT_ID-apigee-cassandra.json
  • Logger: GCP_PROJECT_ID-apigee-logger.json
  • MART: GCP_PROJECT_ID-apigee-mart.json
  • Connect agent: GCP_PROJECT_ID-apigee-mart.json
  • 측정항목: GCP_PROJECT_ID-apigee-metrics.json
  • Apigee 런타임: GCP_PROJECT_ID-
  • 동기화 담당자: GCP_PROJECT_ID-apigee-synchronizer.json
  • UDCA: GCP_PROJECT_ID-apigee-udca.json
  • 감시자: GCP_PROJECT_ID-apigee-watcher.json

요약

구성 파일은 하이브리드 구성요소를 클러스터에 배포하는 방법을 Kubernetes에 지정합니다. 그런 후 Apigee 런타임 및 관리 영역이 통신을 수행할 수 있도록 동기화 담당자 액세스를 사용 설정합니다.

1 2 3 4 5 6 (NEXT) Step 7: Enable Synchronizer access 8 9 10