APIM Operator: 시작하기 전에

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

Apigee Edge 문서 보기

이 페이지에서는 Kubernetes용 Apigee APIM Operator(미리보기)를 설치하고 구성하기 전에 완료해야 하는 단계를 설명합니다. APIM Operator 사용 이점에 대한 자세한 내용은 Kubernetes용 Apigee APIM Operator 개요를 참조하세요.

필요한 역할

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

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

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

필수 설정 태스크

APIM Operator를 설치하기 전에 다음 태스크를 완료하여 이 기능을 사용하는 데 필요한 리소스를 설정해야 합니다.

  1. 1-14-0-apigee-4 이상 버전을 사용하여 Apigee 인스턴스를 프로비저닝합니다.

    Google Cloud 콘솔의 Apigee UI 인스턴스 세부정보 페이지에서 인스턴스 버전을 볼 수 있습니다. Google Cloud 콘솔의 인스턴스 페이지로 이동하여 인스턴스를 선택하고 세부정보를 봅니다.

    인스턴스로 이동

    구독 또는 사용한 만큼만 지불 Apigee 조직에서 APIM Operator를 사용할 수 있습니다. 유료 Apigee 인스턴스 프로비저닝에 대한 자세한 내용은 시작하기 전에를 참조하세요.

  2. Google Cloud CLI를 설치합니다.

    Google Cloud CLI가 설치되면 gcloud components update 명령어를 실행하여 최신 gcloud 구성요소를 가져옵니다.

  3. kubectl 명령줄 도구를 설치하고 구성합니다.
  4. Helm(버전 v3.14.3 이상)을 설치합니다.
  5. GKE용 워크로드 아이덴티티 제휴GKE 게이트웨이가 사용 설정된 GKE 클러스터를 만듭니다.

    Autopilot 모드를 사용하여 클러스터를 만들고 관리할 경우 기본적으로 GKE용 워크로드 아이덴티티 제휴가 사용 설정됩니다. 자세한 내용은 Autopilot 개요를 참조하세요.

    Autopilot을 사용하여 GKE용 워크로드 아이덴티티 제휴와 GKE 게이트웨이가 사용 설정된 새 클러스터를 만드는 데 필요한 단계는 게이트웨이 배포를 참조하세요.

  6. 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

  7. 백엔드 애플리케이션을 클러스터에 배포합니다.

    생성되어 배포된 global-ext-lb1 게이트웨이에서 노출한 백엔드 애플리케이션을 배포하려면 다음 안내를 따르세요.

    1. target.yaml라는 새 파일을 만듭니다.
    2. 다음 콘텐츠를 새 파일에 복사합니다.
      # 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
    3. 클러스터에 구성을 적용합니다.
      kubectl apply -f target.yaml

    백엔드 애플리케이션을 GKE 클러스터에 배포하는 방법에 대한 자세한 내용은 데모 애플리케이션 배포를 참조하세요.

  8. 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

  9. GKE 게이트웨이 설정이 예상대로 작동하는지 확인합니다.
    1. 다음 명령어를 사용하여 게이트웨이 세부정보를 가져옵니다.
      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인지 확인합니다.

    2. 경로가 연결되었는지 확인할 게이트웨이를 설명합니다.
      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인지 확인합니다. 이는 경로가 연결되었음을 나타냅니다.

    3. 요청을 게이트웨이에 보냅니다.
      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 설치 방법 알아보기