이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.
Apigee Edge 문서 보기
이 페이지에서는 Kubernetes용 Apigee APIM Operator(미리보기)를 설치하고 구성하기 전에 완료해야 하는 단계를 설명합니다. APIM Operator 사용 이점에 대한 자세한 내용은 Kubernetes용 Apigee APIM Operator 개요를 참조하세요.
필요한 역할
APIM Operator를 설치하고 사용하는 데 필요한 리소스를 설정하는 데 필요한 권한을 얻으려면 관리자에게 조직에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.
-
Google Kubernetes Engine(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를 설치하기 전에 다음 태스크를 완료하여 이 기능을 사용하는 데 필요한 리소스를 설정해야 합니다.
1-14-0-apigee-4
이상 버전을 사용하여 Apigee 인스턴스를 프로비저닝합니다.Google Cloud 콘솔의 Apigee UI 인스턴스 세부정보 페이지에서 인스턴스 버전을 볼 수 있습니다. Google Cloud 콘솔의 인스턴스 페이지로 이동하여 인스턴스를 선택하고 세부정보를 봅니다.
구독 또는 사용한 만큼만 지불 Apigee 조직에서 APIM Operator를 사용할 수 있습니다. 유료 Apigee 인스턴스 프로비저닝에 대한 자세한 내용은 시작하기 전에를 참조하세요.
Google Cloud CLI를 설치합니다.
Google Cloud CLI가 설치되면
gcloud components update
명령어를 실행하여 최신 gcloud 구성요소를 가져옵니다.kubectl
명령줄 도구를 설치하고 구성합니다.- Helm(버전 v3.14.3 이상)을 설치합니다.
GKE용 워크로드 아이덴티티 제휴 및 GKE 게이트웨이가 사용 설정된 GKE 클러스터를 만듭니다.
Autopilot 모드를 사용하여 클러스터를 만들고 관리할 경우 기본적으로 GKE용 워크로드 아이덴티티 제휴가 사용 설정됩니다. 자세한 내용은 Autopilot 개요를 참조하세요.
Autopilot을 사용하여 GKE용 워크로드 아이덴티티 제휴와 GKE 게이트웨이가 사용 설정된 새 클러스터를 만드는 데 필요한 단계는 게이트웨이 배포를 참조하세요.
- GKE 게이트웨이를 클러스터에 배포합니다.
APIM Operator와 함께 사용할 내부 게이트웨이 또는 외부 게이트웨이를 구성하고 배포할 수 있습니다. 내부 게이트웨이를 배포하려면 프록시 전용 서브넷과 공유 VPC가 필요합니다. 이 가이드의 목적상 외부 게이트웨이를 배포하는 것이 좋습니다. 자세한 내용은 GKE 게이트웨이 컨트롤러 요구사항을 참조하세요.
GKE 게이트웨이를 배포하려면 외부 게이트웨이 배포에 설명된 단계를 수행합니다. 게이트웨이를 만들 때 다음
yaml
구성을 사용합니다.# gateway.yaml kind: Gateway apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: global-ext-lb1 namespace: default spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: http protocol: HTTP allowedRoutes: kinds: - kind: HTTPRoute namespaces: from: All port: 80
- 백엔드 애플리케이션을 클러스터에 배포합니다.
생성되어 배포된
global-ext-lb1
게이트웨이에서 노출한 백엔드 애플리케이션을 배포하려면 다음 안내를 따르세요.target.yaml
라는 새 파일을 만듭니다.- 다음 콘텐츠를 새 파일에 복사합니다.
# target.yaml apiVersion: v1 kind: Namespace metadata: name: http --- apiVersion: v1 kind: ServiceAccount metadata: name: httpbin namespace: http --- apiVersion: v1 kind: Service metadata: name: httpbin namespace: http labels: app: httpbin service: httpbin spec: type: LoadBalancer ports: - name: https port: 80 targetPort: 80 selector: app: httpbin --- apiVersion: apps/v1 kind: Deployment metadata: name: httpbin namespace: http spec: replicas: 1 selector: matchLabels: app: httpbin version: v1 template: metadata: labels: app: httpbin version: v1 spec: serviceAccountName: httpbin containers: - image: docker.io/kennethreitz/httpbin imagePullPolicy: IfNotPresent name: httpbin ports: - containerPort: 80 resources: requests: cpu: 1 memory: 1024Mi limits: cpu: 1 memory: 1024Mi
- 클러스터에 구성을 적용합니다.
kubectl apply -f target.yaml
백엔드 애플리케이션을 GKE 클러스터에 배포하는 방법에 대한 자세한 내용은 데모 애플리케이션 배포를 참조하세요.
- HTTPRoute 리소스를 클러스터에 배포하여 게이트웨이의 트래픽을 백엔드 서비스에 매핑합니다.
HTTPRoute 리소스에 대한 자세한 내용은 HTTPRoute 배포(내부 게이트웨이의 경우) 또는 HTTPRoute 만들기(외부 게이트웨이의 경우)를 참조하세요.
이 가이드의 목적상 HTTPRoute 만들기의 단계를 수행하여 외부 게이트웨이와 HTTPRoute를 배포하는 것이 좋습니다. HTTPRoute를 만들 때 다음
yaml
구성을 사용합니다.# httproute.yaml kind: HTTPRoute apiVersion: gateway.networking.k8s.io/v1beta1 metadata: name: http-bin-route namespace: http spec: parentRefs: - kind: Gateway name: global-ext-lb1 namespace: default hostnames: - apigee-apim-operator-test.apigee.net rules: - matches: - path: value: / backendRefs: - name: httpbin kind: Service port: 80 namespace: http
- GKE 게이트웨이 설정이 예상대로 작동하는지 확인합니다.
- 다음 명령어를 사용하여 게이트웨이 세부정보를 가져옵니다.
kubectl get gateway GATEWAY_NAME
여기서 GATEWAY_NAME은 생성된 GKE 게이트웨이의 이름입니다.
예를 들면 다음과 같습니다.
kubectl get gateway global-ext-lb1
출력은 다음과 비슷하게 표시됩니다.
NAME CLASS ADDRESS PROGRAMMED AGE global-ext-lb1 gke-l7-global-external-managed 34.54.193.72 True 11d
IP 주소가 게이트웨이에 할당되어 있고
PROGRAMMED
값이True
인지 확인합니다. - 경로가 연결되었는지 확인할 게이트웨이를 설명합니다.
kubectl describe gateway GATEWAY_NAME
예를 들면 다음과 같습니다.
kubectl describe gateway global-ext-lb1
출력은 다음과 비슷하게 표시됩니다.
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
Attached Routes
값이1
인지 확인합니다. 이는 경로가 연결되었음을 나타냅니다. - 요청을 게이트웨이에 보냅니다.
curl http://GATEWAY_IP_ADDRESS/get -k \ -H "Host: HOST_NAME"
각 항목의 의미는 다음과 같습니다.
GATEWAY_IP_ADDRESS
는 게이트웨이 IP 주소입니다. 다음 명령어를 사용하여 게이트웨이 IP 주소를 검색할 수 있습니다. 여기서GATEWAY_NAME
은 게이트웨이 이름입니다.kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
은 게이트웨이의HTTPRoute
에 정의된 호스트 이름입니다. 다음 명령어를 사용하여 HOST_NAME을 검색할 수 있습니다.kubectl get HTTPRoute HTTPROUTE_NAME -n NAMESPACE
For example:
curl http://34.54.193.72/get -k \ -H "Host: apigee-apim-operator-test.apigee.net"
다음과 비슷한 응답이 표시됩니다.
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "http://apigee-apim-operator-test.apigee.net/get" }
- 다음 명령어를 사용하여 게이트웨이 세부정보를 가져옵니다.
다음 단계
APIM Operator 설치 방법 알아보기