이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.
Apigee Edge 문서 보기
이 페이지에서는 Kubernetes용 Apigee APIM Operator(미리보기)를 설치하고 구성하는 데 필요한 단계를 설명합니다. APIM Operator 사용 이점에 대한 자세한 내용은 Kubernetes용 Apigee APIM Operator 개요를 참조하세요.
시작하기 전에
APIM Operator 설치를 시작하기 전에 단계를 완료하는 데 필요한 역할과 권한이 있고 APIM Operator: 시작하기 전에에 설명된 기본 작업을 완료했는지 확인하세요.
필요한 역할
APIM Operator를 설치하는 데 필요한 권한을 얻으려면 관리자에게 조직에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
GKE 클러스터 생성 및 관리: 컨테이너 관리자(
roles/container.admin
) -
서비스 계정 생성 및 관리: 서비스 계정 관리자(
roles/iam.serviceAccountAdmin
) -
서비스 확장 프로그램 생성 및 관리: 서비스 확장 프로그램 관리자(
roles/networkservices.serviceExtensionsAdmin
) -
네트워크 엔드포인트 그룹(NEG) 생성 및 관리: Compute 인스턴스 관리자(
roles/compute.instanceAdmin
) -
백엔드 서비스 생성 및 관리: Compute 부하 분산기 관리자(
roles/compute.loadBalancerAdmin
) -
Apigee 리소스 생성 및 관리: Apigee 관리자(
roles/apigee.admin
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
APIM Operator 설치 및 구성
다음 섹션에서는 APIM Operator를 설치하고 구성하는 데 필요한 단계를 설명합니다.
- 환경 변수 설정
- 필요한 API 사용 설정
- 사용자 인증 정보 검색 및 구성
- APIM Operator 설치
- 워크로드 아이덴티티 만들기
- 선택사항: Apigee 환경 만들기
- 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_ORG
는PROJECT_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 서비스에 연결합니다.
다음 명령어를 사용하여 클러스터 사용자 인증 정보를 가져옵니다.
gcloud container clusters get-credentials ${CLUSTER_NAME} --location=${REGION} --project=${PROJECT_ID}
이 사용자 인증 정보는 기본 단계에서 만든 GKE 클러스터와 통신하는 데 사용됩니다.
- Google Cloud 서비스에 연결할 서비스 계정 사용자 인증 정보를 설정합니다.
gcloud iam service-accounts create apigee-apim-gsa
- 다음 명령어를 사용하여 만든 서비스 계정에 필요한 역할과 권한을 부여합니다.
- 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"
- Apigee 관리자 역할: Apigee 리소스를 만들고 관리하는 데 필요합니다.
커스텀 리소스 정의(CRD) 및 APIM Operator 설치
Kubernetes 커스텀 리소스 정의(CRD) 및 APIM Operator를 설치합니다.
- APIM Operator의 네임스페이스를 만듭니다.
kubectl create ns apim
- 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
- 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 환경을 만듭니다.
curl
명령어에 필요한TOKEN
을 설정합니다.export TOKEN=$(gcloud auth print-access-token)
- 다음 명령어 중 하나를 사용하여 환경을 만듭니다.
- 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
입니다.
- 2021년 구독 조직의 경우:
문제 해결
APIM Operator를 설치할 때 문제가 발생하면 APIM Operator 문제 해결에서 일반적인 오류의 해결 방법을 참조하세요.