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"

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

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

  1. APIM Operator의 네임스페이스를 만듭니다.
    kubectl create ns apim
  2. APIM Operator 커스텀 리소스 정의(CRD)를 설치합니다.
    helm install apigee-apim-crds oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-crds --version 0.6.0 -n apim --atomic
  3. APIM Operator를 설치합니다.
    helm install apigee-apim-operator oci://us-docker.pkg.dev/apigee-release/apigee-k8s-tooling-helm-charts/apigee-apim-operator-helm --version 0.6.0 --set project_id=${PROJECT_ID} --set serviceAccount=apigee-apim-gsa@${PROJECT_ID}.iam.gserviceaccount.com --set apigeeOrg=${PROJECT_ID} --set generateEnv=TRUE --set apigeeMgmtUrl="https://apigee.googleapis.com" -n apim --atomic

다음 명령어를 사용하여 설치가 완료되었는지 확인합니다.

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-0.6.0	0.6.0      
apigee-apim-operator	apim     	1       	2025-02-01 00:15:00.362829981 +0000 UTC	deployed	apigee-apim-operator-helm-0.6.0	0.6.0   

helm 설치는 apim 네임스페이스에 apim-ksa라는 필수 Kubernetes 서비스 계정(KSA)을 만듭니다. KSA에는 다음 단계에서 만든 워크로드 아이덴티티와 연결하는 데 필요한 주석이 포함됩니다.

완료

필요한 주석과 함께 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

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

APIM Operator에서 필요한 Apigee 및 Service Networking 리소스에 액세스하는 데 사용하는 워크로드 아이덴티티를 만들려면 KSA를 사용자 인증 정보 검색 및 구성에서 만든 Google 서비스 계정과 바인딩하고 workloadIdentityUser 역할을 할당합니다.

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]"

선택사항: Apigee 환경 만들기

이 단계는 선택사항입니다. Apigee 환경을 만들고 싶지 않은 경우 APIM Operator에서 환경을 만듭니다. 새 환경의 이름에는 apim-enabled-dep-env 프리픽스가 붙습니다.

Apigee 환경을 만듭니다.

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

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

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

문제 해결

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

다음 단계