4단계: GKE On-Prem에 하이브리드 설치

클러스터에 구성 적용

클러스터에 Apigee Hybrid를 설치하려면 다음 안내를 따르세요.

  1. 현재 위치가 hybrid-base-directory/hybrid-files 디렉터리인지 확인합니다.
  2. kubectl이 올바른 컨텍스트로 설정되어 있는지 확인합니다. 현재 컨텍스트는 배포 중인 클러스터로 설정되어야 합니다.
    kubectl config get-contexts
  3. init 명령어를 실행합니다.
    $APIGEECTL_HOME/apigeectl init -f overrides/overrides.yaml

    init 명령어는 Apigee 배포 서비스인 Apigee 배포 컨트롤러, Apigee 허용 웹훅을 설치하고 Apigee 이외의 구성요소인 IstioCert Manager를 배포합니다.

  4. 배포 상태를 확인하려면 다음 명령어를 사용합니다.
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides.yaml

    그리고

    kubectl get pods -n apigee-system

    그리고

    kubectl get pods -n istio-system

    포드가 준비되면 다음 단계로 이동합니다.

  5. '테스트 실행' 설치를 수행합니다. --dry-run=true 플래그를 사용하여 apply 명령어를 실행합니다. 테스트 실행을 수행하면 클러스터를 실제로 변경하기 전에 오류를 확인할 수 있습니다.
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --dry-run=true
  6. 오류가 없으면 클러스터에 Apigee 관련 런타임 구성요소를 적용할 수 있습니다.
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml
  7. 배포 상태를 확인하려면 다음 명령어를 사용합니다.
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides.yaml

    pod가 모두 준비될 때까지 이 단계를 반복합니다. pod를 시작하는 데 몇 분 정도 걸릴 수 있습니다.

/etc/hosts에서 Cassandra의 정적 호스트 이름 추가(Anthos 1.2.x만 해당)

이 단계에서는 Cassandra에 할당된 워커 노드의 IP 및 호스트 이름을 가져와 /etc/hosts 파일에 추가합니다. 호스트 네트워크를 사용하는 경우 pod는 노드 호스트 이름 및 IP를 사용합니다. 노드 호스트 이름은 DNS에 없으므로 각 Cassandra 워커 노드의 /etc/hosts에 정적 호스트 이름 항목을 추가해야 합니다.

  1. 이 명령어를 실행하여 Cassandra 워커 노드를 가져옵니다. 매개변수 apigee-data는 Cassandra가 할당되는 기본 노드 라벨입니다. 다른 노드 라벨을 사용한 경우 사용한 노드 라벨을 대체합니다. 워커 노드에 라벨을 지정하는 방법을 참조하세요.
    kubectl  get nodes -l apigee.com/apigee-nodepool=apigee-data -o wide

    결과 예시:

    kubectl get nodes -o wide my-cluster1-844788cc8c-2gx7d
    
    NAME                           STATUS   ROLES    AGE   VERSION          INTERNAL-IP    EXTERNAL-IP    OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
    my-cluster1-844788cc8c-2gx7d   Ready    none     19d   v1.14.7-gke.24   21.0.129.248   21.0.129.248   Ubuntu 18.04.3 LTS   4.15.0-62-generic   docker://17.3.2
  2. 각 Cassandra 워커 노드의 이전 명령어에 의해 반환된 노드 이름 및 외부 IP를 /etc/hosts 파일에 추가합니다.
    cat /etc/hosts
    
    127.0.0.1 localhost
    21.0.129.248   my-cluster1-844788cc8c-2gx7d
    

동기화 담당자 액세스 사용 설정

  1. GCP 서비스 계정을 만들고 이 계정에 Apigee 조직 관리자 역할을 추가합니다. 이 서비스 계정은 이후 단계에서 수행할 API 호출을 인증하는 데 사용됩니다. GCP Console을 사용하면 서비스 계정을 쉽게 만들 수 있습니다. 자세한 내용은 GCP 문서의 서비스 계정 만들기 및 관리를 참조하세요.
  2. 서비스 계정 키를 시스템에 다운로드합니다. GCP 문서의 서비스 계정 키 만들기의 안내를 따릅니다.
  3. 다운로드한 서비스 계정 키를 서비스 계정 디렉터리로 이동합니다. /hybrid-base-directory/hybrid-files/service-accounts
  4. 다음 두 명령어를 실행하여 토큰을 가져옵니다.
    export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    export TOKEN=$(gcloud auth application-default print-access-token)

    여기서 org-admin-service-account-fileApigee 조직 관리자 역할로 다운로드한 서비스 계정 키에 대한 시스템의 경로입니다.

  5. setSyncAuthorization API를 호출하여 동기화 담당자에 필요한 권한을 사용 설정합니다.
    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/your_org_name:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:synchronizer-manager-service-account-email"]}'
    

    각 항목의 의미는 다음과 같습니다.

    • your_org_name: 하이브리드 조직의 이름입니다.
    • synchronizer-manager-service-account-email: Apigee 동기화 담당자 관리자 역할이 있는 서비스 계정의 이름입니다. 이름은 이메일 주소 형식과 같습니다. 예를 들면 apigee-synchronizer@my-project.iam.gserviceaccount.com입니다.

    예를 들면 다음과 같습니다.

    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/my_org:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:apigee-synchronizer@my-project.iam.gserviceaccount.com"]}'
    
  6. 서비스 계정이 설정되었는지 확인하려면 다음 API를 호출하여 서비스 계정 목록을 가져옵니다.
    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/your_org_name:getSyncAuthorization" \
       -d ''
    

    결과는 다음과 유사합니다.

    {
       "identities":[
          "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"
       ],
       "etag":"BwWJgyS8I4w="
    }
        

조직에 MART IP 추가

MART 엔드포인트의 IP 주소를 Apigee 조직에 추가해야 합니다. 재정의 파일에서 mart.hostAlias 속성 값을 설정하는 경우 이전에 이 값을 설정합니다. 관리 영역에는 MART를 통해 런타임 영역과 통신할 수 있도록 이 주소가 필요합니다.

조직에 MART IP를 추가하려면 다음 단계를 따르세요.

  1. mart.hostAlias 속성의 재정의 파일에서 이전에 설정한 값을 가져옵니다. MART가 작동하려면 호스트 별칭이 정규화된 도메인 이름이어야 합니다.
  2. 이전에 동기화 담당자 액세스 사용 설정 섹션에서 다운로드한 Apigee 조직 관리자 역할이 있는 서비스 계정 키를 찾습니다.
  3. 다음 두 명령어를 실행하여 토큰을 가져옵니다.
    export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    export TOKEN=$(gcloud auth application-default print-access-token)

    여기서 org-admin-service-account-fileApigee 조직 관리자 역할로 다운로드한 서비스 계정 키에 대한 시스템의 경로입니다.

  4. 다음 Management API를 호출하여 MART 엔드포인트로 조직을 업데이트합니다.
    curl -v -X PUT \
       https://apigee.googleapis.com/v1/organizations/your_org_name \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $TOKEN" \
      -d '{
      "name" : "your_org_name",
      "properties" : {
        "property" : [ {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.mart.server.endpoint",
          "value" : "https://HOST_ALIAS_DNS"
        } ]
      }
    }'

    예를 들면 다음과 같습니다. 도메인 이름에 프리픽스 'https://'를 추가해야 합니다.

    curl -v -X PUT \
       https://apigee.googleapis.com/v1/organizations/my_organization \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $TOKEN" \
      -d '{
      "name" : "my_organization",
      "properties" : {
        "property" : [ {
          "name" : "features.hybrid.enabled",
          "value" : "true"
        }, {
          "name" : "features.mart.server.endpoint",
          "value" : "https://foo-mart.example.com"
        } ]
      }
    }'

재정의 파일 저장

재정의 파일을 저장해야 합니다. 클러스터 구성에 향후 업그레이드, 패치 또는 기타 다른 수정을 수행하려면 이 파일이 필요합니다.