Apigee Connect(베타) 사용

이 섹션에서는 하이브리드 관리 영역과 런타임 영역의 MART 서비스 사이의 통신을 위해 Apigee Connect(베타)를 사용하는 방법을 설명합니다.

소개

Apigee Connect를 사용하면 인터넷에 MART 엔드포인트를 노출할 필요 없이 Apigee Hybrid 관리 영역을 런타임 영역의 MART 서비스에 안전하게 연결할 수 있습니다. Apigee Connect를 사용할 경우 호스트 별칭 및 승인된 DNS 인증서로 MART 인그레스 게이트웨이를 구성할 필요가 없습니다.

Apigee Connect가 표시된 하이브리드 런타임 영역에서 실행되는 기본 서비스

기본 요건

Apigee Connect를 설정하려면 먼저 Apigee Hybrid 버전 1.2.0 이상을 설치하고 구성해야 합니다.

  • Apigee Hybrid를 처음 설치하는 경우 Apigee Hybrid 문서의 설치 안내를 따릅니다.
  • 현재 Apigee Hybrid 버전 1.1.x를 사용하는 경우 계속하기 전에 버전 1.2.0으로 설치를 업그레이드해야 합니다. 업그레이드 단계는 Apigee Hybrid 업그레이드를 참조하세요.

하이브리드 런타임에 Apigee Connect 추가

이 섹션에서는 Apigee Hybrid 1.2.0 이상을 설치 또는 업그레이드했다고 가정합니다.

Apigee Connect가 구성되었고 사용 설정되었으면 MART 인그레스가 무시됩니다. 관리 영역은 Apigee Connect를 사용해서만 MART에 연결됩니다. 하이브리드 런타임 영역 간의 모든 MART 트래픽은 안전한 Apigee Connect 연결을 통해 전달됩니다.

Apigee Hybrid에서 Apigee Connect를 사용 설정하고 사용하려면 다음 단계를 따르세요.

  1. Google Cloud API 라이브러리에서 Apigee Connect API를 사용 설정합니다. Google Cloud(GCP) Console에서 또는 gcloud를 사용하여 API를 사용 설정할 수 있습니다. Google Cloud Console에서 API 사용 설정에 대한 자세한 내용은 3단계: API 사용 설정을 참조하세요. gcloud를 사용해서 API를 사용 설정하려면 다음 안내를 따르세요.
    $ gcloud config set project YOUR_GCP_PROJECT_ID
    $ gcloud services enable apigeeconnect.googleapis.com

    YOUR_GCP_PROJECT_ID는 Apigee가 사용 설정되었고 Apigee 조직이 자동으로 프로비저닝된 동일한 GCP 프로젝트입니다.
  2. Apigee Hybrid 설치 안내의 서비스 계정 만들기 단계에서 만든 MART 서비스 계정에 Apigee Connect 에이전트 역할을 추가합니다.
    $ gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT_ID
    --member serviceAccount:YOUR_MART_SERVICE_ACCOUNT_EMAIL --role roles/apigeeconnect.Agent

    YOUR_GCP_PROJECT_ID는 Apigee가 사용 설정되었고 Apigee 조직이 자동으로 프로비저닝된 동일한 GCP 프로젝트이며 YOUR_MART_SERVICE_ACCOUNT_EMAIL 은 MART 서비스 계정 이름입니다. 이름은 이메일 주소 형식입니다. 예를 들면 apigee-mart@my-project.iam.gserviceaccount.com입니다.

    Apigee Connect 에이전트 역할은 사전 정의되어 있으며 다음 권한이 할당됩니다.
    권한 설명
    apigeeconnect.endpoints.connect Apigee Connect 에이전트를 설정할 수 있는 권한입니다.

    GCP Console 또는 API를 통한 액세스 권한 부여 할당에 대한 자세한 내용은 다음을 참조하세요.

  3. 서비스 계정 만들기에 설명된 대로 MART 서비스 계정의 키 파일이 hybrid_files/service_accounts 디렉터리에 있는지 확인합니다.
  4. 재정의 파일을 열고 다음 스탠자를 추가합니다. 이 구성에서는 다운로드된 서비스 계정 키에 대한 경로를 제공해야 합니다. 이 키는 Apigee Connect 에이전트 역할이 있는 서비스 계정용이어야 합니다.
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json

    k8sCluster 제목 아래에 스탠자를 추가합니다. 예를 들면 다음과 같습니다.
    k8sCluster:
      name: your_cluster_name
      region: your_cluster_region
    
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
    # Apigee Connect Agent
    connectAgent:
      enabled: true
      replicaCountMin: 3
      serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
  5. 동기화 담당자 액세스 사용 설정 섹션에 설명된 대로 Apigee Hybrid를 처음 설치할 때 다운로드한 Apigee 조직 관리자 역할이 있는 서비스 계정 키를 찾습니다. 아래 설명된 대로 API 호출을 수행하는 데 필요한 토큰을 생성하려면 이 키가 필요합니다.
  6. 다음 두 명령어를 실행하여 토큰을 가져옵니다.
    $ export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file
    $ export TOKEN=$(gcloud auth application-default print-access-token)

    org-admin-service-account-file은 시스템에서 Apigee 조직 관리자 역할로 다운로드한 서비스 계정 키에 대한 경로입니다.
  7. 다음 Apigee API를 호출하여 조직에 Apigee Connect를 사용 설정하세요.
    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.connect.enabled",
          "value" : "true"
        } ]
      }
    }'

  8. 클러스터에서 Apigee Connect 에이전트를 시작합니다.

    $ $APIGEECTL_HOME/apigeectl apply -f your_overrides_file.yaml -c connect-agent

  9. mart:
      hostAlias: "mart.apigee-hybrid-docs.net"
      serviceAccountPath: ./service-accounts/example-project-apigee-mart.json
      sslCertPath: ./certs/fullchain.pem
      sslKeyPath: ./certs/privkey.key
  10. Apigee Connect 에이전트 로그를 확인합니다. 보고된 오류가 없으면 업그레이드가 성공합니다.
    $ kubectl logs -n namespace apigee-connect-agent-pod-name

    Apigee Connect 에이전트에서 다음 로그 카테고리를 보고합니다.
    감사 로그 카테고리 작업
    DATA_READ ConnectionService.ListConnections
    DATA_WRITE Tether.Egress
    Apigee Hybrid에서 감사 로그 확인에 대한 자세한 내용은 감사 로깅 정보를 참조하세요.
  11. 이 업그레이드를 사용하면 하이브리드 런타임 영역이 Apigee Connect를 통해 관리 영역과 통신합니다.

  12. 설치를 테스트합니다.

참조: Apigee Connect 제거

설치 테스트

  1. Apigee Hybrid UI를 엽니다.
  2. 이전에 만든 개발자 및 개발자 앱이 UI에 있는지 확인합니다. 이러한 항목은 MART 서버에서 쿼리되었기 때문에 관리 영역과 런타임 영역 간 통신이 올바르게 구성된 경우에만 제공됩니다.
  3. 요청이 MART 인그레스가 아니라 Apigee Connect를 통과하는지 확인하려면 MART 서버 로그를 확인합니다. apigee-connect-agent-1.0이라는 Apigee Connect 에이전트에 대한 항목이 표시됩니다.
    $ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart | grep connect

    예를 들면 다음과 같습니다.
    "2019-12-11 04:59:52,321 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576040392317 /v1/organizations/apigee-connect-hybrid-prod/developers/ count=100&expand=true&startKey=4ee9e8f7-12b2-4cde-bf10-32d991469876 200 GET apigee-connect-hybrid-prod 10.40.11.3 10.40.0.5 apigee-connect-agent-1.0 null"
  4. 하이브리드 UI에서 API 제품, 개발자, 개발자 앱을 만듭니다. 그런 다음 MART 서비스 로그를 확인하여 로그 항목이 항목을 런타임 영역으로 전송했는지 확인합니다. 예를 들어 다음 로그 항목은 foo-product라는 API 제품이 수신되었음을 보여줍니다.
    $ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart

    2019-12-16 22:15:29,572 org: env: target: action: context-id: mode: pool-1-thread-1 INFO  MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534529566 /v1/organizations/myorg/apiproducts/foo-product/ -NA- 201 CREATE myorg 10.16.1.61  10.16.1.64 apigee-connect-agent-1.0 null
    
    2019-12-16 22:15:30,412 org: env: target: action: context-id: mode: pool-1-thread-1 INFO  MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534530407 /v1/organizations/myorg/apps/ apiProduct=foo-product&expand=false 200 GET myorg 10.16.1.61  10.16.1.64 apigee-connect-agent-1.0 null
  5. 프록시 만들기 및 배포에 설명된 대로 새 프록시를 만들고 배포합니다.
  6. 다음 API 키를 요구하여 API 프록시 보호의 단계에 따라 API 키 확인으로 프록시를 구성합니다. 런타임은 Apigee Connect를 통해 관리 영역에서 API 키를 검증하는 데 필요한 데이터를 가져옵니다. 따라서 API 키 확인이 작동한다면 Apigee Connect가 제대로 작동하는 것을 알 수 있습니다. Apigee Connect 로그를 확인하여 데이터 전송 보고서를 볼 수 있습니다.

Apigee Connect 삭제

Apigee Connect 배포를 삭제할 경우 pod 상태는 최대 7분 동안 '종료 중' 상태로 유지될 수 있습니다. 이 시간은 예상 값입니다. Apigee Connect 에이전트는 연결을 갑자기 중지하는 대신 기존 연결이 종료될 때까지 기다립니다. 이러한 지연 시간은 진행 중인 요청이 손실되지 않도록 보장합니다.