Menginstal dan mengelola Apigee hybrid dengan diagram Helm

Dokumen ini memandu Anda melalui proses langkah demi langkah untuk menginstal Apigee hybrid v1.10 menggunakan diagram Helm.

Versi

Diagram Helm Apigee hybrid ditujukan untuk digunakan dengan Apigee hybrid v1.10.x. Lihat Histori rilis Apigee hybrid untuk daftar rilis hybrid.

Prasyarat

Cakupan

Platform dan versi Kubernetes yang didukung

Platform Versi
GKE 1.24, 1.25, 1.26
AKS 1.24, 1.25, 1.26
EKS 1.24, 1.25, 1.26
OpenShift 4.11, 4.12

Batasan

  • Diagram Helm tidak sepenuhnya mendukung CRD; oleh karena itu, kita akan menggunakan perintah kubectl -k untuk menginstal dan mengupgradenya. Kami berupaya mengikuti praktik terbaik komunitas dan Google terkait pengelolaan Kubernetes. Deployment CRD melalui Helm belum mencapai status komunitas tempat kami melihat dukungan yang luas, atau permintaan untuk model tersebut. Oleh karena itu, pengelolaan CRD Apigee harus dilakukan menggunakan kubectl seperti yang disebutkan dalam dokumen ini.
  • Di apigeectl, kita telah menggunakan file di seluruh overrides.yaml untuk akun layanan dan sertifikat; namun, Helm tidak mendukung file referensi di luar direktori diagram. Pilih salah satu opsi berikut untuk akun layanan dan file sertifikat:
    • Menempatkan salinan file yang relevan dalam setiap direktori diagram
    • Buat link simbolis dalam setiap direktori diagram untuk setiap file, atau folder. Helm akan mengikuti link simbolis dari direktori diagram, tetapi akan menampilkan peringatan seperti berikut:
      apigee-operator/gsa -> ../gsa
    • Menggunakan secret Kubernetes. Misalnya, untuk akun layanan:
      kubectl create secret generic SECRET_NAME \
        --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \
        -n apigee
      

Platform dan versi Kubernetes yang didukung

Untuk mengetahui daftar platform yang didukung, lihat kolom v1.10 di tabel platform yang didukung Apigee hybrid.

Izin diperlukan

Tabel ini mencantumkan resource dan izin yang diperlukan untuk Kubernetes dan Apigee.

Untuk memfilter tabel ini, lakukan satu atau beberapa tindakan berikut: pilih kategori, ketikkan istilah penelusuran, atau klik judul kolom untuk mengurutkan.

Kategori Resource Jenis resource Izin RBAC Kubernetes
Datastore apigeedatastores.apigee.cloud.google.com Apigee create delete patch update
Datastore certificates.cert-manager.io Kubernetes create delete patch update
Datastore cronjobs.batch Kubernetes create delete patch update
Datastore jobs.batch Kubernetes create delete patch update
Datastore secrets Kubernetes create delete patch update
Env apigeeenvironments.apigee.cloud.google.com Apigee create delete patch update
Env secrets Kubernetes create delete patch update
Env serviceaccounts Kubernetes create delete patch update
Pengelola ingress certificates.cert-manager.io Kubernetes create delete patch update
Pengelola ingress configmaps Kubernetes create delete patch update
Pengelola ingress deployments.apps Kubernetes create get delete patch update
Pengelola ingress horizontalpodautoscalers.autoscaling Kubernetes create delete patch update
Pengelola ingress issuers.cert-manager.io Kubernetes create delete patch update
Pengelola ingress serviceaccounts Kubernetes create delete patch update
Pengelola ingress services Kubernetes create delete patch update
Operator apigeedatastores.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeedatastores.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeedatastores.apigee.cloud.google.com/status Apigee get patch update
Operator apigeedeployments.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeedeployments.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeedeployments.apigee.cloud.google.com/status Apigee get patch update
Operator apigeeenvironments.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeeenvironments.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeeenvironments.apigee.cloud.google.com/status Apigee get patch update
Operator apigeeissues.apigee.cloud.google.com Apigee create delete get list watch
Operator apigeeorganizations.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeeorganizations.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeeorganizations.apigee.cloud.google.com/status Apigee get patch update
Operator apigeeredis.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeeredis.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeeredis.apigee.cloud.google.com/status Apigee get patch update
Operator apigeerouteconfigs.apigee.cloud.google.com Apigee get list
Operator apigeeroutes.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeeroutes.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeeroutes.apigee.cloud.google.com/status Apigee get patch update
Operator apigeetelemetries.apigee.cloud.google.com Apigee create delete get list patch update watch
Operator apigeetelemetries.apigee.cloud.google.com/finalizers Apigee get patch update
Operator apigeetelemetries.apigee.cloud.google.com/status Apigee get list patch update
Operator cassandradatareplications.apigee.cloud.google.com Apigee get list patch update watch
Operator cassandradatareplications.apigee.cloud.google.com/finalizers Apigee get patch update
Operator cassandradatareplications.apigee.cloud.google.com/status Apigee get patch update
Operator *.networking.x.k8s.io Kubernetes get list watch
Operator apiservices.apiregistration.k8s.io Kubernetes create delete get list patch update watch
Operator certificates.cert-manager.io Kubernetes create delete get list patch update watch
Operator certificates.cert-manager.io/finalizers Kubernetes create delete get list patch update watch
Operator certificatesigningrequests.certificates.k8s.io Kubernetes create delete get update watch
Operator certificatesigningrequests.certificates.k8s.io/approval Kubernetes create delete get update watch
Operator certificatesigningrequests.certificates.k8s.io/status Kubernetes create delete get update watch
Operator clusterissuers.cert-manager.io Kubernetes create get watch
Operator clusterrolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operator clusterroles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operator configmaps Kubernetes create delete get list patch update watch
Operator configmaps/status Kubernetes get patch update
Operator cronjobs.batch Kubernetes create delete get list patch update watch
Operator customresourcedefinitions.apiextensions.k8s.io Kubernetes get list watch
Operator daemonsets.apps Kubernetes create delete get list patch update watch
Operator deployments.apps Kubernetes get list watch
Operator deployments.extensions Kubernetes get list watch
Operator destinationrules.networking.istio.io Kubernetes create delete get list patch update watch
Operator endpoints Kubernetes get list watch
Operator endpointslices.discovery.k8s.io Kubernetes get list watch
Operator events Kubernetes create delete get list patch update watch
Operator gateways.networking.istio.io Kubernetes create delete get list patch update watch
Operator horizontalpodautoscalers.autoscaling Kubernetes create delete get list patch update watch
Operator ingressclasses.networking.k8s.io Kubernetes get list watch
Operator ingresses.networking.k8s.io/status Kubernetes all verbs
Operator issuers.cert-manager.io Kubernetes create delete get list patch update watch
Operator jobs.batch Kubernetes create delete get list patch update watch
Operator leases.coordination.k8s.io Kubernetes create get list update
Operator namespaces Kubernetes create get list watch
Operator nodes Kubernetes get list watch
Operator peerauthentications.security.istio.io Kubernetes create delete get list patch update watch
Operator persistentvolumeclaims Kubernetes create delete get list patch update watch
Operator persistentvolumes Kubernetes get list watch
Operator poddisruptionbudgets.policy Kubernetes create delete get list patch update watch
Operator pods Kubernetes create delete get list patch update watch
Operator pods/exec Kubernetes create
Operator replicasets.apps Kubernetes create delete get list patch update watch
Operator replicasets.extensions Kubernetes get list watch
Operator resourcequotas Kubernetes create delete get list patch update watch
Operator rolebindings.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operator roles.rbac.authorization.k8s.io Kubernetes create delete get list patch update watch
Operator secrets Kubernetes batch create delete get list patch update watch
Operator securitycontextconstraints.security.openshift.io Kubernetes create get list
Operator serviceaccounts Kubernetes create delete get list patch update watch
Operator services Kubernetes batch create delete get list patch update watch
Operator signers.certificates.k8s.io Kubernetes approve
Operator statefulsets.apps Kubernetes create delete get list patch update watch
Operator subjectaccessreviews.authorization.k8s.io Kubernetes create get list
Operator tokenreviews.authentication.k8s.io Kubernetes create
Operator virtualservices.networking.istio.io Kubernetes create delete get list patch update watch
Org apigeeorganizations.apigee.cloud.google.com Apigee create delete patch update
Org secrets Kubernetes create delete patch update
Org serviceaccounts Kubernetes create delete patch update
Redis apigeeredis.apigee.cloud.google.com Apigee create delete patch update
Redis secrets Kubernetes create delete patch update
Telemetri apigeetelemetry.apigee.cloud.google.com Apigee create delete patch update
Telemetri secrets Kubernetes create delete patch update
Telemetri serviceaccounts Kubernetes create delete patch update
Host virtual apigeerouteconfigs.apigee.cloud.google.com Apigee create delete patch update
Host virtual secrets Kubernetes create delete patch update

Lihat juga:

Menyiapkan penginstalan

Diagram hybrid Apigee dihosting di Google Artifact Registry:

oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts

Menarik diagram Helm Apigee

Dengan menggunakan perintah pull, salin semua diagram Helm hibrida Apigee ke penyimpanan lokal Anda dengan perintah berikut:

export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
export CHART_VERSION=1.10.5
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar

Menginstal Apigee Hybrid

Ringkasan urutan penginstalan

Pemasangan komponen dilakukan dari kiri ke kanan secara berurutan seperti yang ditunjukkan pada gambar berikut. Komponen yang ditumpuk secara vertikal dalam gambar dapat diinstal bersama dan dalam urutan apa pun. Setelah menginstal komponen apa pun, Anda dapat mengupdate komponen tersebut satu per satu dan kapan saja; misalnya, replika, memori, CPU, dan sebagainya.

urutan penginstalan: pengelola sertifikat, lalu CRD, lalu operator Apigee, lalu komponen yang ditumpuk: redis dan datastore serta telemetri dan pengelola ingress, lalu organisasi, lalu komponen yang ditumpuk: env dan host virtual

Bersiap untuk menginstal Apigee hybrid dengan diagram Helm

  1. Buat namespace yang akan digunakan untuk resource apigee. Nama ini harus cocok dengan kolom namespace dalam file overrides.yaml. Jika tidak ada di overrides.yaml, defaultnya adalah apigee.
    1. Periksa apakah namespace sudah ada:

      kubectl get namespace apigee

      Jika namespace ada, output Anda akan menyertakan:

        NAME     STATUS   AGE
        apigee   Active   1d
    2. Jika namespace belum ada, buat namespace:

      kubectl create namespace apigee
  2. Buat namespace apigee-system yang digunakan oleh resource operator Apigee.
    1. Periksa apakah namespace sudah ada:

      kubectl get namespace apigee-system
    2. Jika namespace belum ada, buat namespace:

      kubectl create namespace apigee-system
  3. Buat akun layanan dan tetapkan peran IAM yang sesuai kepada akun tersebut. Apigee hybrid menggunakan akun layanan berikut:

    Akun layanan Peran IAM
    apigee-cassandra Storage Object Admin
    apigee-logger Penulis Log
    apigee-mart Apigee Connect Agent
    apigee-metrics Penulis Metrik Pemantauan
    apigee-runtime Tidak ada peran yang diperlukan
    apigee-synchronizer Apigee Synchronizer Manager
    apigee-udca Apigee Analytics Agent
    apigee-watcher Apigee Runtime Agent

    Apigee menyediakan alat, create-service-account, di direktori apigee-operator/etc/tools:

    APIGEE_HELM_CHARTS_HOME/
    └── apigee-operator/
        └── etc/
            └── tools/
                └── create-service-account
    

    Alat ini membuat akun layanan, menetapkan peran IAM ke setiap akun, dan mendownload file sertifikat dalam format JSON untuk setiap akun.

    1. Buat direktori tempat Anda ingin mendownload file sertifikat akun layanan. Anda akan menentukannya dalam perintah berikut sebagai pengganti SERVICE_ACCOUNTS_PATH.
    2. Anda dapat membuat semua akun layanan dengan satu perintah dengan opsi berikut:
      APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
      
    3. Cantumkan nama akun layanan untuk file penggantian Anda:
      ls service-accounts
      
      my_project-apigee-cassandra.json    my_project-apigee-runtime.json
      my_project-apigee-logger.json       my_project-apigee-synchronizer.json
      my_project-apigee-mart.json         my_project-apigee-udca.json
      my_project-apigee-metrics.json      my_project-apigee-watcher.json

      Untuk informasi selengkapnya, lihat:

  4. Sebelum menginstal, lihat file overrides.yaml untuk memverifikasi setelan:
    instanceID: UNIQUE_ID_TO_IDENTIFY_THIS_CLUSTER
    namespace: apigee # required for Helm charts installation
    
    # By default, logger and metrics are enabled and requires below details
    # Google Cloud project and cluster
    gcp:
      projectID: PROJECT_ID
      region: REGION
    
    k8sCluster:
      name: CLUSTER_NAME
      region: REGION
    
    org: ORG_NAME
    
    envs:
    - name: "ENV_NAME"
      serviceAccountPaths:
        runtime: "PATH_TO_RUNTIME_SVC_ACCOUNT"
        synchronizer: "PATH_TO_SYNCHRONIZER_SVC_ACCOUNT"
        udca: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    ingressGateways:
    - name: GATEWAY_NAME # maximum 17 characters, eg: "ingress-1". See Known issue 243167389.
      replicaCountMin: 1
      replicaCountMax: 2
      svcType: LoadBalancer
    
    virtualhosts:
    - name: ENV_GROUP_NAME
      selector:
        app: apigee-ingressgateway
        ingress_name: GATEWAY_NAME
      sslSecret: SECRET_NAME
    
    mart:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    logger:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_LOGGER_SVC_ACCOUNT"
    
    metrics:
      enabled: TRUE_FALSE # lowercase without quotes, eg: true
      serviceAccountPath: "PATH_TO_METRICS_SVC_ACCOUNT"
    
    udca:
      serviceAccountPath: "PATH_TO_UDCA_SVC_ACCOUNT"
    
    connectAgent:
      serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT"
    
    watcher:
      serviceAccountPath: "PATH_TO_WATCHER_SVC_ACCOUNT"

    Ini adalah konfigurasi penggantian yang sama dengan yang akan Anda gunakan untuk penginstalan Helm ini. Untuk setelan lainnya, lihat Referensi properti konfigurasi.

    Untuk contoh file penggantian lainnya, lihat Langkah 6: Mengonfigurasi runtime campuran.

  5. Aktifkan akses sinkronisasi. Ini adalah prasyarat untuk menginstal Apigee hybrid.
    1. Periksa apakah akses sinkronisasi sudah diaktifkan dengan perintah berikut:

      export TOKEN=$(gcloud auth print-access-token)
      
      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:getSyncAuthorization" \
        -d ''
      

      Output Anda akan terlihat seperti berikut:

      {
        "identities":[
           "serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"
        ],
        "etag":"BwWJgyS8I4w="
      }
    2. Jika output tidak menyertakan ID akun layanan, aktifkan akses sinkronisasi. Akun Anda harus memiliki peran IAM Admin Organisasi Apigee (roles/apigee.admin) untuk melakukan tugas ini.

      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type:application/json" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME:setSyncAuthorization" \
        -d '{"identities":["'"serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"'"]}'
      

      Lihat Langkah 7: Mengaktifkan akses Synchronizer dalam dokumentasi penginstalan hybrid Apigee untuk mengetahui informasi yang lebih mendetail.

  6. Instal Pengelola Sertifikat dengan perintah berikut:
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  7. Instal CRD Apigee:

    1. Gunakan fitur uji coba kubectl dengan menjalankan perintah berikut:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. Setelah memvalidasi dengan perintah uji coba, jalankan perintah berikut:

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false
      
    3. Validasi penginstalan dengan perintah kubectl get crds:
      kubectl get crds | grep apigee

      Output Anda akan terlihat seperti berikut:

      apigeedatastores.apigee.cloud.google.com                    2023-10-09T14:48:30Z
      apigeedeployments.apigee.cloud.google.com                   2023-10-09T14:48:30Z
      apigeeenvironments.apigee.cloud.google.com                  2023-10-09T14:48:31Z
      apigeeissues.apigee.cloud.google.com                        2023-10-09T14:48:31Z
      apigeeorganizations.apigee.cloud.google.com                 2023-10-09T14:48:32Z
      apigeeredis.apigee.cloud.google.com                         2023-10-09T14:48:33Z
      apigeerouteconfigs.apigee.cloud.google.com                  2023-10-09T14:48:33Z
      apigeeroutes.apigee.cloud.google.com                        2023-10-09T14:48:33Z
      apigeetelemetries.apigee.cloud.google.com                   2023-10-09T14:48:34Z
      cassandradatareplications.apigee.cloud.google.com           2023-10-09T14:48:35Z
      
  8. Periksa label yang ada di node cluster. Secara default, Apigee menjadwalkan pod data di node dengan label cloud.google.com/gke-nodepool=apigee-data dan pod runtime dijadwalkan di node dengan label cloud.google.com/gke-nodepool=apigee-runtime. Anda dapat menyesuaikan label node pool di file overrides.yaml.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi node pool khusus.

Menginstal diagram Helm Apigee hybrid

  1. Instal Operator/Pengontrol Apigee:

    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f overrides.yaml
    

    Verifikasi penginstalan Apigee Operator:

    helm ls -n apigee-system
    
    NAME           NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
    operator    apigee-system   3               2023-06-26 00:42:44.492009 -0800 PST    deployed        apigee-operator-1.10.5   1.10.5

    Pastikan server sudah aktif dan berjalan dengan memeriksa ketersediaannya:

    kubectl -n apigee-system get deploy apigee-controller-manager
    
    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-controller-manager   1/1     1            1           7d20h
  2. Instal datastore Apigee:

    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Verifikasi bahwa apigeedatastore sudah aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n apigee get apigeedatastore default
    
    NAME      STATE       AGE
    default   running    2d
  3. Instal telemetri Apigee:

    helm upgrade telemetry apigee-telemetry/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Pastikan server tersebut aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n apigee get apigeetelemetry apigee-telemetry
    
    NAME               STATE     AGE
    apigee-telemetry   running   2d
  4. Instal Apigee Redis:

    helm upgrade redis apigee-redis/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Pastikan server tersebut aktif dan berjalan dengan memeriksa statusnya:

    kubectl -n apigee get apigeeredis default
    
    NAME      STATE     AGE
    default   running   2d
  5. Instal pengelola ingress Apigee:

    helm upgrade ingress-manager apigee-ingress-manager/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Pastikan server sudah aktif dan berjalan dengan memeriksa ketersediaannya:

    kubectl -n apigee get deployment apigee-ingressgateway-manager
    
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    apigee-ingressgateway-manager   2/2     2            2           2d
  6. Menginstal organisasi Apigee:

    helm upgrade ORG_NAME apigee-org/ \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides.yaml
    

    Pastikan aplikasi tersebut sudah aktif dan berjalan dengan memeriksa status organisasi masing-masing:

    kubectl -n apigee get apigeeorg
    
    NAME                      STATE     AGE
    apigee-org1-xxxxx          running   2d
  7. Instal lingkungan.

    Anda harus menginstal satu lingkungan dalam satu waktu. Tentukan lingkungan dengan --set env=ENV_NAME:

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

    Pastikan aplikasi sudah aktif dan berjalan dengan memeriksa status setiap lingkungan:

    kubectl -n apigee get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    apigee-org1-dev-xxx            running     2d
  8. Buat sertifikat TLS. Anda harus memberikan sertifikat TLS untuk gateway ingress runtime dalam konfigurasi campuran Apigee.
    1. Buat sertifikat. Di lingkungan produksi, Anda harus menggunakan sertifikat yang ditandatangani. Anda dapat menggunakan sertifikat dan pasangan kunci atau secret Kubernetes.

      Untuk penginstalan demonstrasi dan pengujian, gateway runtime dapat menerima kredensial yang ditandatangani sendiri. Pada contoh berikut, openssl digunakan untuk membuat kredensial yang ditandatangani sendiri:

      openssl req -nodes -new -x509 \
        -keyout PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.key \
        -out PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.pem \
        -subj '/CN='YOUR_DOMAIN'' -days 3650
      

      Untuk informasi selengkapnya, lihat Langkah 5: Membuat sertifikat TLS.

    2. Buat secret Kubernetes untuk mereferensikan sertifikat:

      kubectl create secret generic NAME \
        --from-file="cert=PATH_TO_CRT_FILE" \
        --from-file="key=PATH_TO_KEY_FILE" \
        -n apigee
      
  9. Instal host virtual.

    Anda harus menginstal satu grup lingkungan (virtualhost) dalam satu waktu. Tentukan grup lingkungan dengan --set envgroup=ENV_GROUP_NAME:

    # repeat the following command for each env group mentioned in the overrides.yaml file
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides.yaml
    

    Tindakan ini akan membuat ApigeeRouteConfig (ARC) yang secara internal membuat ApigeeRoute (AR) setelah pengamat Apigee mengambil detail terkait grup env dari bidang kontrol. Oleh karena itu, pastikan status AR yang sesuai sedang berjalan:

    kubectl -n apigee get arc
    
    NAME                                STATE   AGE
    apigee-org1-dev-egroup                       2d
    kubectl -n apigee get ar
    
    NAME                                        STATE     AGE
    apigee-org1-dev-egroup-xxxxxx                running   2d

Kasus penggunaan tambahan untuk diagram Helm dengan Apigee Hybrid

Pencadangan dan pemulihan Cassandra

  1. Untuk mengaktifkan pencadangan:
    1. Perbarui detail pencadangan Cassandra dalam file overrides.yaml:

      cassandra:
        backup:
          enabled: true
          serviceAccountPath: PATH_TO_GSA_FILE
          dbStorageBucket: BUCKET_LINK
          schedule: "45 23 * * 6"
    2. Jalankan upgrade Helm pada diagram apigee-datastore:

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      
  2. Demikian pula, untuk mengaktifkan pemulihan:
    1. Perbarui detail pemulihan Cassandra dalam file overrides.yaml:

      cassandra:
        restore:
          enabled: true
          snapshotTimestamp: TIMESTAMP
          serviceAccountPath: PATH_TO_GSA_FILE
          cloudProvider: "CSI"
    2. Jalankan upgrade Helm pada diagram apigee-datastore:

      helm upgrade datastore apigee-datastore/ \
        --namespace apigee \
        --atomic \
        -f overrides.yaml
      

Lihat Ringkasan pencadangan Cassandra untuk mengetahui detail selengkapnya tentang pencadangan dan pemulihan Cassandra.

Perluasan multi-region

Penyiapan multi-region dengan diagram Helm memerlukan prasyarat yang sama dengan prosedur apigeectl saat ini. Untuk mengetahui detailnya, lihat prasyarat untuk deployment multi-region.

Prosedur untuk mengonfigurasi hybrid untuk multi-region sama dengan prosedur yang ada hingga proses mengonfigurasi host seed multi-region dan menyiapkan cluster dan konteks Kubernetes.

Mengonfigurasi region pertama

Gunakan langkah-langkah berikut untuk mengonfigurasi region pertama dan bersiap untuk mengonfigurasi region kedua:

  1. Ikuti langkah-langkah di artikel Mengonfigurasi Apigee Hybrid untuk multi-region guna Mengonfigurasi host seed multi-region di platform Anda.
  2. Untuk region pertama yang dibuat, dapatkan pod di namespace apigee:

    kubectl get pods -o wide -n apigee
    
  3. Identifikasi alamat host seed multi-region untuk Cassandra di region ini, misalnya 10.0.0.11.
  4. Siapkan file overrides.yaml untuk region kedua dan tambahkan alamat IP host seed sebagai berikut:

    cassandra:
      multiRegionSeedHost: "SEED_HOST_IP_ADDRESS"
      datacenter: "DATACENTER_NAME"
      rack: "RACK_NAME"
      clusterName: CLUSTER_NAME
      hostNetwork: false

    Ganti kode berikut:

    • SEED_HOST_IP_ADDRESS dengan alamat IP host seed, misalnya 10.0.0.11.
    • DATACENTER_NAME dengan nama pusat data, misalnya dc-2.
    • RACK_NAME dengan nama rak, misalnya ra-1.
    • CLUSTER_NAME dengan nama cluster Apigee Anda. Secara default, nilainya adalah apigeecluster. Jika menggunakan nama cluster yang berbeda, Anda harus menentukan nilai untuk cassandra.clusterName. Nilai ini harus sama di semua region.

Mengonfigurasi region kedua

Untuk menyiapkan wilayah baru:

  1. Instal cert-manager di region 2:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  2. Salin sertifikat Anda dari cluster yang ada ke cluster baru. Root CA baru digunakan oleh Cassandra dan komponen campuran lainnya untuk mTLS. Oleh karena itu, penting untuk memiliki sertifikat yang konsisten di seluruh cluster.
    1. Tetapkan konteks ke namespace asli:

      kubectl config use-context ORIGINAL_CLUSTER_NAME
      
    2. Ekspor konfigurasi namespace saat ini ke file:

      kubectl get namespace apigee -o yaml > apigee-namespace.yaml
      
    3. Ekspor secret apigee-ca ke file:

      kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
      
    4. Tetapkan konteks ke nama cluster region baru:

      kubectl config use-context NEW_CLUSTER_NAME
      
    5. Impor konfigurasi namespace ke cluster baru. Pastikan untuk memperbarui namespace dalam file jika Anda menggunakan namespace yang berbeda di region baru:

      kubectl apply -f apigee-namespace.yaml
      
    6. Impor secret ke cluster baru:

      kubectl -n cert-manager apply -f apigee-ca.yaml
      
  3. Sekarang, gunakan diagram Helm untuk menginstal Apigee hybrid di region baru dengan perintah Diagram Helm berikut (seperti yang dilakukan di region 1):

    helm upgrade operator apigee-operator \
      --install \
      --namespace apigee-system \
      --atomic
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade datastore apigee-datastore \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade telemetry apigee-telemetry \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade redis apigee-redis \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ingress-manager apigee-ingress-manager \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    helm upgrade ORG_NAME apigee-org \
      --install \
      --namespace apigee \
      --atomic \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env mentioned on the overrides
    helm upgrade apigee-env-ENV_NAME apigee-env/ \
      --install \
      --namespace apigee \
      --atomic \
      --set env=ENV_NAME \
      -f overrides-DATACENTER_NAME.yaml
    # repeat the below command for each env group mentioned on the overrides
    helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \
      --install \
      --namespace apigee \
      --atomic \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides-DATACENTER_NAME.yaml
    
  4. Setelah semua komponen diinstal, siapkan Cassandra di semua pod di pusat data baru. Untuk mengetahui petunjuknya, lihat Mengonfigurasi Apigee Hybrid untuk multi-region, pilih platform Anda, scroll ke Menyiapkan region baru, lalu temukan langkah 5.
  5. Setelah replikasi data selesai dan diverifikasi, perbarui host seed:
    1. Menghapus multiRegionSeedHost: 10.0.0.11 dari overrides-DATACENTER_NAME.yaml.

      Entri multiRegionSeedHost tidak lagi diperlukan setelah replikasi data dibuat, dan IP pod diperkirakan akan berubah dari waktu ke waktu.

    2. Terapkan kembali perubahan untuk memperbarui CR datastore apigee:

      helm upgrade datastore apigee-datastore/ \
        --install \
        --namespace apigee \
        --atomic \
        -f overrides-DATACENTER_NAME.yaml
      

Menghosting gambar secara pribadi

Daripada mengandalkan repositori Google Cloud publik, Anda dapat memilih untuk menghosting image secara pribadi. Daripada mengganti setiap komponen, Anda dapat menambahkan detail hub pada penggantian:

hub: PRIVATE_REPO

Misalnya, jika hub berikut disediakan, hub tersebut akan otomatis me-resolve jalur gambar:

hub: private-docker-host.com

sebagai:

## an example of internal component vs 3rd party
containers:
- name: apigee-udca
  image: private-docker-host.com/apigee-udca:1.10.5
  imagePullPolicy: IfNotPresent

containers:
- name: apigee-ingressgateway
  image: private-docker-host.com/apigee-asm-ingress:1.17.2-asm.8-distroless
  imagePullPolicy: IfNotPresent

Untuk menampilkan daftar image Apigee yang dihosting di repositori Google Cloud di command line:

./apigee-operator/etc/tools/apigee-pull-push.sh --list

Toleransi

Untuk menggunakan fitur Taints dan Tolerations Kubernetes, Anda harus menentukan properti penggantian tolerations untuk setiap komponen campuran Apigee. Komponen berikut mendukung penentuan toleransi:

  • ao
  • apigeeIngressGateway
  • cassandra
  • cassandraSchemaSetup
  • cassandraSchemaValidation
  • cassandraUserSetup
  • connectAgent
  • istiod
  • logger
  • mart
  • metrics
  • mintTaskScheduler
  • redis
  • runtime
  • synchronizer
  • udca
  • Watcher

Lihat Referensi properti konfigurasi untuk mengetahui informasi selengkapnya tentang komponen ini.

Misalnya, untuk menerapkan toleransi ke deployment operator Apigee:

ao:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

Untuk menerapkan toleransi ke StatefulSet Cassandra:

cassandra:
  tolerations:
  - key: "key1"
    operator: "Equal"
    value: "value1"
    effect: "NoExecute"
    tolerationSeconds: 3600

Meng-uninstal Apigee hybrid dengan Helm

Untuk meng-uninstal update atau rilis tertentu, Anda dapat menggunakan perintah helm [uninstall/delete] RELEASE-NAME -n NAMESPACE.

Gunakan langkah-langkah berikut untuk meng-uninstal Apigee Hybrid sepenuhnya dari cluster:

  1. Hapus virtualhost. Jalankan perintah ini untuk setiap virtualhost:
    helm -n apigee delete VIRTUALHOST_RELEASE-NAME
    
  2. Hapus lingkungan. Jalankan perintah ini untuk setiap env:
    helm -n apigee delete ENV_RELEASE-NAME
    
  3. hapus organisasi Apigee:
    helm -n apigee delete ORG_RELEASE-NAME
    
  4. hapus telemetri:
    helm -n apigee delete TELEMETRY_RELEASE-NAME
    
  5. Menghapus redis:
    helm -n apigee delete REDIS_RELEASE-NAME
    
  6. Hapus pengelola ingress:
    helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
    
  7. Hapus datastore:
    helm -n apigee delete DATASTORE_RELEASE-NAME
    
  8. Menghapus operator.
    1. Pastikan semua CR dihapus sebelum:
      kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
      
    2. Hapus Operator Apigee:
      helm -n apigee-system delete OPERATOR_RELEASE-NAME
      
  9. Hapus CRD hybrid Apigee:
    kubectl delete -k  apigee-operator/etc/crds/default/