Kubernetes용 Apigee APIM Operator 설치

이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.

Apigee Edge 문서 보기

이 페이지에서는 Kubernetes용 Apigee APIM Operator를 설치하고 구성하는 데 필요한 단계를 설명합니다. APIM Operator 사용 이점에 대한 자세한 내용은 Kubernetes용 Apigee APIM Operator 개요를 참조하세요.

시작하기 전에

APIM Operator 설치를 시작하기 전에 단계를 완료하는 데 필요한 역할과 권한이 있고 APIM Operator: 시작하기 전에에 설명된 기본 요건 태스크를 완료했는지 확인합니다.

필요한 역할

APIM Operator를 설치하는 데 필요한 권한을 얻으려면 관리자에게 조직에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

APIM Operator 설치 및 구성

다음 섹션에서는 APIM Operator를 설치하고 구성하는 데 필요한 단계를 설명합니다.

  1. 환경 변수 설정
  2. 필요한 API 사용 설정
  3. 사용자 인증 정보 검색 및 구성
  4. APIM Operator 설치
  5. 워크로드 아이덴티티 만들기
  6. Apigee 환경 만들기
  7. GKE 게이트웨이 설정 확인

환경 변수 설정하기

Apigee 인스턴스가 포함된 Google Cloud 프로젝트에서 다음 명령어를 사용하여 환경 변수를 설정합니다.

export PROJECT_ID=PROJECT_ID
export CLUSTER_NAME=CLUSTER_NAME
export REGION=REGION
export APIGEE_ORG=APIGEE_ORG

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

  • PROJECT_ID는 Apigee 인스턴스가 있는 프로젝트의 ID입니다.
  • CLUSTER_NAME은 GKE 클러스터의 이름입니다.
  • REGION은 GKE 클러스터의 리전입니다.
  • APIGEE_ORGPROJECT_ID와 동일한 값으로 설정됩니다.

환경 변수가 올바르게 설정되었는지 확인하려면 다음 명령어를 실행합니다.

echo $PROJECT_ID $CLUSTER_NAME $REGION $APIGEE_ORG

필요한 API 사용 설정

APIM Operator에는 다음 API에 대한 액세스 권한이 필요합니다.

이름 제목
apigee.googleapis.com Apigee API
compute.googleapis.com Compute Engine API
networkservices.googleapis.com Network Services API
container.googleapis.com Google Kubernetes Engine API

다음 명령어를 사용하여 필요한 API가 사용 설정되어 있는지 확인합니다.

gcloud services list --project=$PROJECT_ID

명령어 출력에 필요한 API가 표시되지 않으면 다음과 같이 사용 설정하세요.

gcloud services enable apigee.googleapis.com --project=$PROJECT_ID
gcloud services enable compute.googleapis.com --project=$PROJECT_ID
gcloud services enable networkservices.googleapis.com --project=$PROJECT_ID
gcloud services enable container.googleapis.com --project=$PROJECT_ID

사용자 인증 정보 검색 및 구성

클러스터 사용자 인증 정보를 검색하고 서비스 계정을 만들어 Google Cloud 서비스에 연결합니다.

  1. 다음 명령어를 사용하여 클러스터 사용자 인증 정보를 가져옵니다.

    gcloud container clusters get-credentials $CLUSTER_NAME --location=$REGION --project=$PROJECT_ID

    이 사용자 인증 정보는 기본 단계에서 만든 GKE 클러스터와 통신하는 데 사용됩니다.

  2. Google Cloud 서비스에 연결할 서비스 계정 사용자 인증 정보를 설정합니다.
    gcloud iam service-accounts create apigee-apim-gsa
  3. 다음 명령어를 사용하여 만든 서비스 계정에 필요한 역할과 권한을 부여합니다.
    • Apigee 관리자 역할: Apigee 리소스를 만들고 관리하는 데 필요합니다.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/apigee.admin"
    • 서비스 확장 프로그램 관리자 역할: 서비스 확장 프로그램을 만들고 관리하는 데 필요합니다.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/networkservices.serviceExtensionsAdmin"
    • 네트워킹 관리자 역할: 서비스 확장 프로그램을 사용하여 Apigee에 대한 액세스 권한을 관리하는 데 필요합니다.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/compute.networkAdmin"
    • 부하 분산기 관리자 역할: 네트워크 엔드포인트 그룹(NEG)과 백엔드 서비스 간의 액세스를 관리하는 데 필요합니다.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/compute.loadBalancerAdmin"
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com" \
          --role "roles/iam.workloadIdentityUser"

워크로드 아이덴티티 만들기

다음 단계에서 APIM Operator를 helm에 설치하면 apim 네임스페이스에 필수 Kubernetes 서비스 계정(KSA) apim-ksa가 생성됩니다. 생성된 KSA에는 APIM Operator가 필요한 Apigee 및 서비스 네트워킹 리소스에 액세스하는 데 사용하는 워크로드 아이덴티티와 연결하는 데 필요한 주석이 포함됩니다.

워크로드 아이덴티티를 만들려면 다음 명령어를 사용합니다.

gcloud iam service-accounts add-iam-policy-binding apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com --role roles/iam.workloadIdentityUser --member "serviceAccount:$PROJECT_ID.svc.id.goog[apim/apim-ksa]"

이 명령어는 KSA를 사용자 인증 정보 검색 및 구성에서 만든 Google 서비스 계정과 바인딩하고 workloadIdentityUser 역할을 할당합니다.

워크로드 아이덴티티 변경사항이 시스템 전체에 전파되는 데 7분 이상 걸릴 수 있습니다.

워크로드 아이덴티티가 생성되었는지 확인하려면 다음 명령어를 사용합니다.

gcloud config set project $PROJECT_ID
kubectl run --rm -it --image google/cloud-sdk:slim \
  --namespace apim workload-identity-test \
  --overrides='{ "spec": { "serviceAccountName": "apim-ksa" } }'  \
  -- gcloud auth list

출력은 다음과 비슷하게 표시됩니다.

Credentialed Accounts
  ACTIVE  ACCOUNT
  *       GSA@$PROJECT_ID.iam.gserviceaccount.com

커스텀 리소스 정의(CRD) 및 APIM Operator 설치

Kubernetes 커스텀 리소스 정의(CRD) 및 APIM Operator를 설치합니다.

  1. APIM Operator의 네임스페이스를 만듭니다.
    kubectl create ns apim
  2. APIM Operator 커스텀 리소스 정의(CRD)를 설치합니다.
    helm install apigee-apim-crds -n apim \
      oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-crds \
      --version 1.0.0 \
      --atomic
  3. APIM Operator를 설치합니다.
    helm install apigee-apim-operator -n apim \
      oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-helm \
      --version 1.0.0 \
      --set projectId=$PROJECT_ID \
      --set serviceAccount=apigee-apim-gsa@$PROJECT_ID.iam.gserviceaccount.com \
      --set apigeeOrg=$PROJECT_ID \
      --set generateEnv=TRUE \
      --atomic
  4. 설치가 성공적으로 완료되었는지 확인합니다.
    helm list -n apim

    출력은 다음과 비슷하게 표시됩니다.

    NAME                	NAMESPACE	REVISION	UPDATED                                	STATUS  	CHART                          	APP VERSION
    apigee-apim-crds    	apim     	1       	2025-02-01 00:17:03.399810627 +0000 UTC	deployed	apigee-apim-operator-crds-1.0.0	1.0.0
    apigee-apim-operator	apim     	1       	2025-02-01 00:15:00.362829981 +0000 UTC	deployed	apigee-apim-operator-helm-1.0.0	1.0.0   

  5. 필요한 주석과 함께 KSA가 생성되었는지 확인합니다.
    kubectl describe serviceaccounts apim-ksa -n apim

    출력은 다음과 비슷하게 표시됩니다.

    Name:                apim-ksa
    Namespace:           apim
    ...
    Annotations:         iam.gke.io/gcp-service-account: apigee-apim-gsa@my-project-id.iam.gserviceaccount.com
  6. APIM 연산자가 클러스터의 포드에서 실행되는지 확인합니다.
    kubectl get pods -n apim

    출력은 다음과 비슷하게 표시됩니다.

    NAME                                    READY   STATUS    RESTARTS     AGE
    apigee-apim-operator-8559d4994b-h55fl   1/1     Running   0            8m34s
    

    STATUSRunning이 아니거나 READY1/1이 표시되지 않으면 APIM Operator 문제 해결을 참조하여 설치 문제를 해결합니다.

Apigee 환경 만들기

이전 단계에서 generateEnv=TRUE를 사용하여 APIM Operator를 설치한 경우 APIM 확장 프로그램 정책이 생성되어 적용되면 연산자가 새 Apigee 환경을 만듭니다. 새 환경 이름에는 apim-enabled-dep-env 프리픽스가 추가됩니다.

generateEnv=FALSE로 APIM Operator를 설치한 경우 새 Apigee 환경을 만들어야 합니다.

  1. curl 명령어에 필요한 TOKEN을 설정합니다.
    export TOKEN=$(gcloud auth print-access-token)
  2. 다음 명령어 중 하나를 사용하여 환경을 만듭니다.
    • 2021년 구독 조직의 경우:
      curl -X POST "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H \
        "Authorization: Bearer $TOKEN" -H "content-type:application/json" \
          -d '{
            "name": "ENV_NAME",
            "displayName": "ENV_NAME",
            "state": "ACTIVE",
            "deploymentType": "PROXY",
            "apiProxyType": "PROGRAMMABLE",
            "properties": {
              "property": [
                {
                  "name": "apigee-service-extension-enabled",
                  "value": "true"
                }
              ]
            }
        }'

      여기서 ENV_NAME은 만들 환경의 이름입니다.

    • 2024년 구독 및 사용한 만큼만 지불 조직의 경우:
      curl -i -X POST -H "Authorization: Bearer $TOKEN"  "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments" -H "Content-Type:application/json" -d '{
        "name": "ENV_NAME",
        "displayName": "ENV_NAME",
        "state": "ACTIVE",
        "deploymentType": "PROXY",
        "apiProxyType": "PROGRAMMABLE",
        "type" : "COMPREHENSIVE",
        "properties": {
          "property": [
            {
              "name": "apigee-service-extension-enabled",
              "value": "true"
            }
          ]
        }
      }'

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

      • ENV_NAME은 만들 환경의 이름입니다.
      • ENV_TYPE은 만들 환경의 유형입니다. 예를 들면 INTERMEDIATE 또는 COMPREHENSIVE입니다.

    환경이 성공적으로 생성되었는지 확인하려면 다음 안내를 따르세요.

    curl -i -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/environments"

  3. 환경을 Apigee 인스턴스에 연결합니다.
    curl -i -X POST -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/instances/INSTANCE_NAME/attachments" \
      -H "Content-Type:application/json" -d '{"environment": "ENV_NAME"}'

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

    • INSTANCE_NAME은 Apigee 인스턴스의 이름입니다.
    • ENV_NAME은 이전 단계에서 만든 환경의 이름입니다.

    환경 연결 작업 상태를 확인하려면 다음 안내를 따르세요.

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/operations/OPERATION_ID"

    여기서 OPERATION_ID는 환경 연결 작업 ID입니다.

문제 해결

APIM Operator를 설치할 때 문제가 발생하면 APIM Operator 문제 해결에서 일반적인 오류 해결 방법을 참조하세요.

다음 단계