Menginstal Operator Apigee untuk Kubernetes untuk Apigee Hybrid

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

Halaman ini menjelaskan langkah-langkah yang diperlukan untuk menginstal dan mengonfigurasi Operator Apigee untuk Kubernetes bagi Apigee Hybrid. Untuk mempelajari lebih lanjut manfaat penggunaan Apigee Operator untuk Kubernetes, lihat Ringkasan Apigee Operator untuk Kubernetes.

Jika Anda tidak menggunakan Apigee hybrid, lihat Menginstal Apigee Operator untuk Kubernetes guna menginstal Apigee Operator untuk Kubernetes bagi Apigee.

Sebelum memulai

Sebelum memulai, pastikan Anda memiliki hal berikut:

Peran yang diperlukan

Untuk izin yang diperlukan guna menyiapkan resource yang diperlukan untuk menginstal dan menggunakan Apigee Operator untuk Kubernetes, minta administrator Anda untuk memberi Anda peran IAM berikut pada organisasi:

  • Membuat dan mengelola akun layanan: Admin Akun Layanan (roles/iam.serviceAccountAdmin)
  • Membuat dan mengelola resource Apigee: Admin Apigee (roles/apigee.admin)

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Tugas penyiapan yang diperlukan

Sebelum menginstal Apigee Operator untuk Kubernetes, pastikan untuk menyelesaikan tugas berikut guna menyiapkan resource yang Anda butuhkan untuk menggunakan fitur ini:

  1. Instal Apigee hybrid menggunakan versi 1.15.0 atau yang lebih baru. Lihat Gambaran besarnya untuk mengetahui petunjuk cara menginstal Apigee hybrid.
  2. Buat cluster Kubernetes di penyedia cloud yang mendukung Istio Gateway, seperti Google Cloud, Azure, atau Amazon.
  3. Instal Istio Gateway ke cluster K8s Anda:
    • Untuk cluster di GKE:
      kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
      curl -L https://istio.io/downloadIstio | sh -
      cd 1.6.11-asm.1
      export PATH=$PWD/bin:$PATH
      istioctl install --set profile=minimal --set values.global.platform=gke -y
      
    • Untuk cluster di penyedia lain:
      kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
      curl -L https://istio.io/downloadIstio | sh -
      cd 1.6.11-asm.1
      export PATH=$PWD/bin:$PATH
      istioctl install --set profile=minimal -y
      
  4. Deploy Gateway Istio ke cluster Kubernetes Anda.
    1. Buat file bernama gateway.yaml dengan konten berikut untuk men-deploy Istio Gateway dengan konten berikut:
      #gateway.yaml
      apiVersion: gateway.networking.k8s.io/v1
      kind: Gateway
      metadata:
        name: istio-gateway
        namespace: default
        annotations:
          service.beta.kubernetes.io/port_80_health-probe_protocol: tcp
      spec:
        gatewayClassName: istio
        listeners:
        - name: default
          hostname: "*.httpbin.com"
          port: 80
          protocol: HTTP
          allowedRoutes:
            namespaces:
              from: All
      
    2. Terapkan file ke cluster Anda dengan perintah berikut:
      kubectl apply -f gateway.yaml
      

Verifikasi penyiapan Istio Gateway (opsional)

Untuk tujuan panduan ini, sebaiknya Anda men-deploy aplikasi httpbin contoh di namespace default untuk menguji gateway yang Anda deploy.

  1. Deploy aplikasi backend ke cluster Kubernetes Anda untuk menguji gateway.
    1. Buat file baru bernama target.yaml dengan konten berikut ke dalam file baru
      kubectl apply -f - <<EOF
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: httpbin
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: httpbin
        labels:
          app: httpbin
          service: httpbin
      spec:
        ports:
        - name: http
          port: 8000
          targetPort: 8080
        selector:
          app: httpbin
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: httpbin
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: httpbin
            version: v1
        template:
          metadata:
            labels:
              app: httpbin
              version: v1
          spec:
            serviceAccountName: httpbin
            containers:
            - image: docker.io/mccutchen/go-httpbin:v2.15.0
              imagePullPolicy: IfNotPresent
              name: httpbin
              ports:
              - containerPort: 8080
      EOF
      
    2. Deploy resource HTTPRoute ke cluster Anda untuk memetakan traffic dari Gateway ke layanan backend Anda.

      Untuk tujuan panduan ini, sebaiknya Anda men-deploy Gateway dan HTTPRoute eksternal, dengan mengikuti langkah-langkah di Membuat HTTPRoute.

      Untuk mengetahui informasi selengkapnya tentang resource HTTPRoute, lihat Men-deploy HTTPRoute (untuk Gateway internal) atau Membuat HTTPRoute (untuk Gateway eksternal).

      1. Buat HTTPRoute dengan mengikuti petunjuk di membuat HTTPRoute menggunakan konfigurasi YAML berikut:
        apiVersion: gateway.networking.k8s.io/v1
        kind: HTTPRoute
        metadata:
          name: http-bin-route
          namespace: default
        spec:
          parentRefs:
          - name: istio-gateway
            namespace: default
          hostnames: ["example.httpbin.com"]
          rules:
          - matches:
            - path:
                type: PathPrefix
                value: /get
            backendRefs:
            - name: httpbin
              port: 8000
        
      2. Terapkan file ke cluster Anda:
        kubectl apply -f httproute.yaml
        
    3. Verifikasi penyiapan GKE Gateway untuk mengonfirmasi bahwa penyiapan berfungsi seperti yang diharapkan.
      1. Dapatkan detail Gateway menggunakan perintah berikut
        kubectl get gateway global-ext-lb1
        

        Output akan muncul seperti berikut:

        NAME            CLASS   ADDRESS        PROGRAMMED   AGE
        istio-gateway   istio   34.54.193.72   True         11d
        

        Pastikan alamat IP ditetapkan ke Gateway dan nilai PROGRAMMED adalah True.

      2. Jelaskan Gateway untuk mengonfirmasi bahwa rute terlampir:
        kubectl describe gateway istio-gateway
        

        Output-nya akan terlihat seperti berikut:

        ...
          Listeners:
            Attached Routes: 1
            Conditions:
              Last Transition Time:  2024-10-03T03:10:17Z
        ...
        

        Konfirmasi bahwa nilai Rute Terlampir adalah 1, yang menunjukkan bahwa rute terlampir.

      3. Mengirim permintaan ke Gateway
        curl http://GATEWAY_IP_ADDRESS/get \
          -H "Host: example.httpbin.com"
        

        Dengan: GATEWAY_IP_ADDRESS adalah alamat IP Gateway. Anda dapat mengambil alamat IP Gateway menggunakan perintah berikut, dengan GATEWAY_NAME adalah nama Gateway:

        kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses.value}"
        

        Contoh:

        curl http://34.54.193.72/get -H "Host: example.httpbin.com"
        

        Responsnya akan muncul seperti berikut:

        {
            "args": {},
            "headers": {
              "Accept": "*/*",
              "Host": "http://example.httpbin.com",
              "User-Agent": "curl/8.7.1",
              "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701"
            },
            "origin": "67.164.1.10,34.54.193.72",
            "url": "http://example.httpbin.com/get"
        }
        

    Menginstal Apigee Operator untuk Kubernetes

    Prosedur ini menjelaskan langkah-langkah yang diperlukan untuk menginstal dan mengonfigurasi Apigee Operator untuk Kubernetes.

    Menginstal dan mengonfigurasi Apigee Operator untuk Kubernetes

    Bagian berikut menjelaskan langkah-langkah yang diperlukan untuk menginstal dan mengonfigurasi Apigee Operator untuk Kubernetes:

    1. Tetapkan variabel lingkungan.
    2. Buat dan konfigurasi akun layanan APIM.
    3. Instal Apigee Operator untuk Kubernetes.
    4. Buat lingkungan Apigee Hybrid.
    5. Instal Lingkungan Apigee Hybrid menggunakan helm.

    Menetapkan variabel lingkungan

    Di project Google Cloud yang berisi instance Apigee, gunakan perintah berikut untuk menetapkan variabel lingkungan:

    export PROJECT_ID=PROJECT_ID
    export APIGEE_ORG=APIGEE_ORG
    

    Dengan:

    • PROJECT_ID adalah ID project dengan instance Apigee Hybrid Anda.
    • APIGEE_ORG adalah nama Organisasi instance Apigee Hybrid Anda.

    Pastikan variabel lingkungan ditetapkan dengan benar menggunakan perintah berikut:

    echo $PROJECT_ID $APIGEE_ORG
    

    Buat dan konfigurasi akun layanan APIM

    Buat akun layanan untuk terhubung ke bidang konfigurasi Apigee Hybrid.

    1. Buat akun layanan apigee-apim-gsa untuk terhubung ke layanan Google Cloud
    2. gcloud iam service-accounts create apigee-apim-gsa
      
    3. Berikan peran Apigee Admin ke akun layanan yang Anda buat menggunakan perintah berikut. Peran ini diperlukan untuk membuat dan mengelola resource Apigee
      gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member "serviceAccount:apigee-apim-gsa@$PROJECT_ID." \
        --role "roles/apigee.admin"
      
    4. Download file kunci json yang sesuai untuk akun layanan.
      1. Buat dan download file kunci $PROJECT_ID-apigee-apim-gsa.json dengan perintah berikut:
        gcloud iam service-accounts keys create $PROJECT_ID-apigee-apim-gsa.json \
          --iam-account=apigee-apim-gsa@$PROJECT_ID.
          --project=$PROJECT_ID
                
      2. Pastikan file didownload dengan benar:
        ls $PROJECT_ID-apigee-apim-gsa.json
                

    Menginstal Apigee Operator untuk Kubernetes

    Instal definisi resource kustom (CRD) Kubernetes dan Apigee Operator untuk Kubernetes:

    1. Buat namespace untuk Apigee Operator for Kubernetes
      kubectl create namespace apim
      
    2. Instal definisi resource kustom (CRD) Apigee Operator untuk Kubernetes:
      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.1.0 \
        --atomic
      
    3. Instal Apigee Operator untuk Kubernetes:
      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.1.0 \
        --set serviceAccount=apigee-apim-gsa@$PROJECT_ID. \
        --set apigeeOrg=$APIGEE_ORG \
        --set apigeeEnv=ENV_NAME \
        --set-file serviceAccountKeyFileContent=$PROJECT_ID-apigee-apim-gsa-key.json \
        --atomic
      

      Dengan ENV_NAME adalah nama lingkungan Apigee Hybrid tempat Anda ingin menginstal Apigee Operator untuk Kubernetes.

    4. Pastikan penginstalan berhasil diselesaikan:
      helm list -n apim
      

      Output-nya akan terlihat seperti berikut:

      NAME  NAMESPACE  REVISION  UPDATED  STATUS  CHART  APP VERSION
      apigee-apim-crds  apim  1  2025-09-01 00:17:03.399810627 +0000 UTC  deployed  apigee-apim-operator-crds-1.1.0  1.1.0
      apigee-apim-operator  apim  1  2025-09-01 00:15:00.362829981 +0000 UTC  deployed  apigee-apim-operator-helm-1.1.0  1.1.0
      
    5. Pastikan akun layanan Kubernetes (KSA) dibuat dengan anotasi yang diperlukan:
      kubectl describe serviceaccounts apim-ksa -n apim
      

      Output-nya akan terlihat seperti berikut:

      Name:                apim-ksa
      Namespace:           apim
      ...
      Annotations:         iam.gke.io/gcp-service-account: apigee-apim-gsa@my-project-id.
      
    6. Konfirmasi bahwa Apigee Operator untuk Kubernetes sudah aktif dan berjalan di pod cluster:
      kubectl get pods -n apim
      

      Output-nya akan terlihat seperti berikut:

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

      Jika STATUS bukan Running, atau READY tidak menampilkan 1/1, lihat Memecahkan masalah Apigee Operator untuk Kubernetes guna memecahkan masalah penginstalan.

    Membuat lingkungan Apigee hybrid

    Untuk menggunakan Apigee Operator for Kubernetes di Apigee Hybrid, Anda harus membuat lingkungan dengan tanda khusus untuk ekstensi layanan.

    1. Dapatkan token untuk melakukan autentikasi ke Apigee API.

      Di command line, dapatkan kredensial autentikasi gcloud Anda, seperti yang ditunjukkan contoh berikut:

      TOKEN=$(gcloud auth print-access-token)

      Untuk memeriksa apakah token Anda terisi, gunakan echo, seperti yang ditunjukkan contoh berikut:

      echo $TOKEN

      Tindakan ini akan menampilkan token Anda sebagai string yang dienkode.

      Untuk mengetahui informasi selengkapnya, lihat ringkasan alat command line gcloud.

    2. Buat lingkungan menggunakan salah satu perintah berikut:
      • Untuk organisasi Subscription 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_DISPLAY_NAME",
              "state": "ACTIVE",
              "deploymentType": "PROXY",
              "apiProxyType": "PROGRAMMABLE",
              "properties": {
                "property": [
                  {
                    "name": "apigee-service-extension-enabled",
                    "value": "true"
                  }
                ]
              }
            }'
        

        Dengan ENV_NAME adalah nama lingkungan yang ingin Anda buat.

      • Untuk organisasi Berlangganan 2024 dan Bayar sesuai penggunaan:
        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"
              }
            ]
          }
        }'
        

        Dengan:

        • ENV_NAME adalah nama lingkungan yang ingin Anda buat.
        • ENV_TYPE adalah jenis lingkungan yang ingin Anda buat. Misalnya INTERMEDIATE atau COMPREHENSIVE.

      Periksa apakah lingkungan berhasil dibuat:

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

      Lihat Membuat lingkungan dalam petunjuk penginstalan Apigee Hybrid untuk mengetahui informasi selengkapnya.

    3. Buat Grup Lingkungan dengan perintah berikut:
      curl -i -X POST -H "Authorization: Bearer $TOKEN"  "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/envgroups" -H "Content-Type:application/json" -d '{
           "name": "'"$ENV_GROUP"'",
           "hostnames":["'"$DOMAIN"'"]
         }'
      

      Dengan:

      • ENV_GROUP (Wajib) Nama lingkungan dapat berisi huruf kecil, tanda hubung, dan angka, serta harus diawali dengan huruf kecil. Nama ini akan digunakan sebagai ID dan tidak dapat diubah setelah dibuat.
      • DOMAIN (Wajib) Ini adalah nama host yang akan digunakan oleh semua proxy yang di-deploy ke lingkungan dalam grup ini. Ini harus berupa domain yang Anda kelola. Alamat dapat berupa domain itu sendiri, seperti example.com, atau dapat menyertakan subdomain seperti my-proxies.example.com. Jika Anda tidak memiliki domain terkelola, Anda dapat memasukkan placeholder untuk saat ini. Anda dapat mengubah alamat domain nanti.

      Lihat Membuat grup lingkungan dalam petunjuk penginstalan hybrid Apigee untuk mengetahui informasi selengkapnya.

    4. Lampirkan Lingkungan ke Grup Lingkungan yang baru saja Anda buat dengan perintah berikut:
      curl -i -X POST -H "Authorization: Bearer $TOKEN"  "https://apigee.googleapis.com/v1/organizations/$APIGEE_ORG/envgroups/$ENV_GROUP/attachments" -H "Content-Type:application/json" -d '{
           "environment": "'"$ENV_NAME"'",
         }'
      

    Menginstal Lingkungan Apigee Hybrid menggunakan helm

    Prosedur untuk menginstal lingkungan baru di cluster Apigee Hybrid mirip dengan cara Anda menginstal lingkungan lain di cluster. Hal ini diperlukan untuk menambahkan detail lingkungan dan grup lingkungan baru ke cluster Kubernetes tempat Apigee Hybrid diinstal.

    1. Buat sertifikat TLS untuk domain Grup Lingkungan dengan perintah berikut:
      openssl req -nodes -new -x509 -keyout $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.key -out $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem -subj "/CN=$DOMAIN" -addext "subjectAltName = DNS:$DOMAIN" -days 3650
      

      Dengan:

      • APIGEE_HELM_CHARTS_HOME (Wajib) Direktori tempat Anda mendownload Apigee Helm Charts selama Penginstalan Apigee Hybrid.
    2. Enkode sertifikat publik TLS dengan Base64 menggunakan perintah berikut:
      cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem | base64 -w0 > $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_$ENV_GROUP.pem.base64
      
    3. Perbarui file overrides.yaml dengan entri berikut di bagian envs
      - name: ENV_NAME
        serviceAccountPaths:
          # Provide the path relative to the apigee-env chart directory.
          synchronizer: SYNCHRONIZER_SERVICE_ACCOUNT_FILEPATH
          # For example: "PROJECT_ID-apigee-synchronizer.json"
          runtime: RUNTIME_SERVICE_ACCOUNT_FILEPATH
          # For example: "PROJECT_ID-apigee-runtime.json"
          udca: UDCA_SERVICE_ACCOUNT_FILEPATH
          # For example: "PROJECT_ID-apigee-udca.json"
      

      Dengan *_SERVICE_ACCOUNT_FILEPATH (Wajib) adalah file kunci json akun layanan yang Anda gunakan selama penginstalan Apigee Hybrid, lihat Buat penggantian dalam petunjuk penginstalan Apigee Hybrid untuk mengetahui informasi selengkapnya.

    4. Tambahkan entri berikut dalam file overrides.yaml di bagian virtualhosts
      - name: 
        selector:
          app: apigee-ingressgateway
          ingress_name: INGRESS_NAME
        sslCertPath: certs/keystore_$ENV_GROUP.pem
        sslKeyPath: certs/keystore_$ENV_GROUP.key
      

      Dengan INGRESS_NAME (Wajib) adalah nama gateway ingress Apigee untuk deployment Anda, lihat di sini untuk mengetahui informasi selengkapnya.

    5. Instal lingkungan dan grup lingkungan
      1. Instal lingkungan.

        Anda harus menginstal satu lingkungan dalam satu waktu. Tentukan lingkungan dengan --set env=ENV_NAME. Jika telah menetapkan variabel lingkungan $ENV_NAME di shell, Anda dapat menggunakannya dalam perintah berikut:

        Uji coba:

        helm upgrade ENV_RELEASE_NAME apigee-env/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          --set env=$ENV_NAME \
          -f overrides.yaml \
          --dry-run=server
        

          ENV_RELEASE_NAME adalah nama yang digunakan untuk melacak penginstalan dan upgrade diagram apigee-env. Nama ini harus unik dari nama rilis Helm lainnya di penginstalan Anda. Biasanya ini sama dengan ENV_NAME. Namun, jika lingkungan Anda memiliki nama yang sama dengan grup lingkungan, Anda harus menggunakan nama rilis yang berbeda untuk lingkungan dan grup lingkungan, misalnya dev-env-release dan dev-envgroup-release. Untuk mengetahui informasi selengkapnya tentang rilis di Helm, lihat Tiga konsep penting di dokumentasi Helm.

        Instal diagram:

        helm upgrade ENV_RELEASE_NAME apigee-env/ \
          --install \
          --namespace APIGEE_NAMESPACE \
          --atomic \
          --set env=$ENV_NAME \
          -f overrides.yaml
        

        Verifikasi bahwa aplikasi sudah aktif dan berjalan dengan memeriksa status env masing-masing:

        kubectl -n APIGEE_NAMESPACE get apigeeenv
        
        NAME                    STATE       AGE   GATEWAYTYPE
        apigee-org1-dev-1       running     2d
        
      2. Instal grup lingkungan (virtualhosts).
        1. Anda harus menginstal satu grup lingkungan (virtualhost) dalam satu waktu. Tentukan grup lingkungan dengan --set envgroup=ENV_GROUP. Jika telah menetapkan variabel lingkungan $ENV_GROUP di shell, Anda dapat menggunakannya dalam perintah berikut. Ulangi perintah berikut untuk setiap grup env yang disebutkan dalam file overrides.yaml Anda:

          Uji coba:

          helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
            --install \
            --namespace APIGEE_NAMESPACE \
            --atomic \
            --set envgroup=$ENV_GROUP \
            -f overrides.yaml \
            --dry-run=server
          

            ENV_GROUP_RELEASE_NAME adalah nama yang digunakan untuk melacak penginstalan dan upgrade diagram apigee-virtualhosts. Nama ini harus unik dari nama rilis Helm lainnya di penginstalan Anda. Biasanya ini sama dengan ENV_GROUP. Namun, jika grup lingkungan memiliki nama yang sama dengan lingkungan dalam penginstalan, Anda harus menggunakan nama rilis yang berbeda untuk grup lingkungan dan lingkungan, misalnya dev-envgroup-release dan dev-env-release. Untuk mengetahui informasi selengkapnya tentang rilis di Helm, lihat Tiga konsep penting dalam dokumentasi Helm.

          Instal diagram:

          helm upgrade $ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
            --install \
            --namespace APIGEE_NAMESPACE \
            --atomic \
            --set envgroup=$ENV_GROUP \
            -f overrides.yaml
          

      Org Apigee Hybrid Anda kini siap dengan lingkungan baru untuk menguji ekstensi layanan.

      Lanjutkan dengan prosedur di Membuat APIMExtensionPolicy untuk membuat kebijakan ekstensi.