Menginstal dan mengelola Apigee Hybrid dengan diagram Helm

Dokumen ini memandu Anda melakukan proses langkah demi langkah untuk menginstal Apigee Hybrid v1.10 menggunakan chart Helm.

Versi

Diagram Helm hybrid Apigee digunakan dengan Apigee Hybrid v1.10.x. Lihat Histori rilis Apigee Hybrid untuk mengetahui 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, kami akan menggunakan perintah kubectl -k untuk menginstal dan mengupgradenya. Kami bertujuan untuk mengikuti praktik terbaik komunitas dan Google seputar pengelolaan Kubernetes. Deployment CRD melalui Helm belum mencapai status komunitas yang memungkinkan kami mendapatkan dukungan yang luas, atau permintaan untuk model semacam itu. Oleh karena itu, pengelolaan CRD Apigee harus dilakukan menggunakan kubectl seperti yang disebutkan dalam dokumen ini.
  • Di apigeectl, kami telah menggunakan file di seluruh overrides.yaml untuk akun layanan dan sertifikat; tetapi, Helm tidak mendukung file referensi di luar direktori diagram. Pilih salah satu opsi berikut untuk akun layanan dan file sertifikat:
    • Tempatkan 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 keluar 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 dalam tabel platform yang didukung hybrid Apigee.

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, ketik istilah penelusuran, atau klik judul kolom untuk mengurutkan.

Kategori Resource Jenis aset 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
LV apigeeenvironments.apigee.cloud.google.com Apigee create delete patch update
LV secrets Kubernetes create delete patch update
LV serviceaccounts Kubernetes create delete patch update
Pengelola traffic masuk certificates.cert-manager.io Kubernetes create delete patch update
Pengelola traffic masuk configmaps Kubernetes create delete patch update
Pengelola traffic masuk deployments.apps Kubernetes create delete patch update
Pengelola traffic masuk horizontalpodautoscalers.autoscaling Kubernetes create delete patch update
Pengelola traffic masuk issuers.cert-manager.io Kubernetes create delete patch update
Pengelola traffic masuk serviceaccounts Kubernetes create delete patch update
Pengelola traffic masuk 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 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 campuran Apigee dihosting di Google Artifact Registry:

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

Mendapatkan diagram Helm Apigee

Dengan menggunakan perintah pull, salin semua diagram Helm hybrid 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.4
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

Penginstalan komponen dilakukan dari kiri ke kanan secara berurutan seperti yang ditunjukkan pada gambar berikut. Komponen yang ditumpuk secara vertikal dalam gambar dapat dipasang bersamaan 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: cert manager dan kemudian CRDs lalu operator Apigee dan kemudian komponen yang ditumpuk: redis dan datastore serta telemetri dan ingress manager, lalu org dan kemudian komponen yang ditumpuk: env dan virtual host

Bersiap menginstal Apigee Hybrid dengan diagram Helm

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

      kubectl get namespace apigee

      Jika namespace ada, output Anda akan mencakup:

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

      kubectl create namespace apigee
  2. Buat akun layanan dan tetapkan peran IAM yang sesuai untuk akun tersebut. Apigee Hybrid menggunakan akun layanan berikut:

    Akun layanan Peran IAM
    apigee-cassandra Storage Object Admin
    apigee-logger Logs Writer
    apigee-mart Apigee Connect Agent
    apigee-metrics Monitoring Metric Writer
    apigee-runtime Peran tidak diperlukan
    apigee-synchronizer Apigee Synchronizer Manager
    apigee-udca Apigee Analytics Agent
    apigee-watcher Apigee Runtime Agent

    Apigee menyediakan alat, create-service-account, dalam 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 menggunakan satu perintah dengan opsi berikut:
      APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
      
    3. Tampilkan daftar nama akun layanan untuk file penggantian:
      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 lebih lanjut, lihat:

  3. 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 selengkapnya, lihat Referensi properti konfigurasi.

    Untuk contoh file penggantian lainnya, lihat Langkah 6: Konfigurasi runtime hybrid.

  4. 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 Sinkronisasir dalam dokumentasi penginstalan hybrid Apigee untuk mengetahui informasi yang lebih mendetail.

  5. Instal Cert Manager dengan perintah berikut:
    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
    
  6. 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 dry-run, 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
      
  7. Periksa label yang ada pada node cluster. Secara default, Apigee menjadwalkan pod data pada node dengan label cloud.google.com/gke-nodepool=apigee-data, dan pod runtime dijadwalkan pada node dengan label cloud.google.com/gke-nodepool=apigee-runtime. Anda dapat menyesuaikan label kumpulan node dalam file overrides.yaml.

    Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi node pool khusus.

Menginstal diagram Helm hybrid Apigee

  1. Instal Operator/Pengontrol Apigee:

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

    Verifikasi penginstalan Operator Apigee:

    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.4   1.10.4

    Pastikan aplikasi 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
    

    Pastikan apigeedatastore 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
    

    Verifikasi bahwa aplikasi 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
    

    Verifikasi bahwa aplikasi 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 aplikasi 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. Instal organisasi Apigee:

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

    Verifikasi bahwa SDK ini aktif dan berjalan dengan memeriksa statusnya dari masing-masing organisasi:

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

    Anda harus menginstal lingkungan satu per satu. 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
    

    Verifikasi bahwa server tersebut aktif dan berjalan dengan memeriksa status lingkungan masing-masing:

    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 masuk runtime dalam konfigurasi hybrid Apigee.
    1. Buat sertifikat. Dalam lingkungan produksi, Anda harus menggunakan sertifikat yang ditandatangani. Anda dapat menggunakan sertifikat dan pasangan kunci atau rahasia Kubernetes.

      Untuk demonstrasi dan pengujian penginstalan, gateway runtime dapat menerima kredensial yang ditandatangani sendiri. Dalam 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 mengetahui informasi selengkapnya, lihat Langkah 5: Buat sertifikat TLS.

    2. Buat rahasia 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
    

    Langkah ini menghasilkan ApigeeRouteConfig (ARC) yang secara internal membuat ApigeeRoute (AR) setelah Apigee watcher mengambil detail terkait grup env dari bidang kontrol. Oleh karena itu, periksa apakah 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 di file overrides.yaml:

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

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

      cassandra:
        restore:
          enabled: true
          snapshotTimestamp: TIMESTAMP
          serviceAccountPath: PATH_TO_GSA_FILE
          cloudProvider: "CSI"
    2. Jalankan upgrade Helm pada chart 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.

Ekspansi 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 mengonfigurasi hybrid untuk multi-region sama dengan prosedur yang ada melalui proses konfigurasi seed host multi-region serta penyiapan cluster dan konteks Kubernetes.

Mengonfigurasi region pertama

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

  1. Ikuti langkah-langkah di 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 inti multi-region untuk Cassandra di wilayah ini, misalnya 10.0.0.11.
  4. Siapkan file overrides.yaml untuk region kedua, lalu 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 awal, 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 wilayah.

Mengonfigurasi region kedua

Untuk menyiapkan region 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. Buat secret Kubernetes untuk akun layanan Anda.
  3. Buat rahasia Kubernetes untuk sertifikat ingress Anda.
  4. Salin sertifikat Anda dari cluster yang ada ke cluster baru. Root CA yang baru digunakan oleh Cassandra dan komponen hibrida lainnya untuk mTLS. Oleh karena itu, penting untuk memiliki sertifikat yang konsisten di seluruh cluster.
    1. Setel 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 rahasia 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 berbeda di region baru:

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

      kubectl -n cert-manager apply -f apigee-ca.yaml
      
  5. Sekarang, gunakan chart Helm untuk menginstal Apigee Hybrid di region baru dengan perintah Helm Chart berikut (seperti yang dilakukan di region 1):

    helm upgrade operator apigee-operator \
      --install \
      --create-namespace \
      --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
    
  6. 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.
  7. Setelah replikasi data selesai dan diverifikasi, perbarui host seed:
    1. Menghapus multiRegionSeedHost: 10.0.0.11 dari overrides-DATACENTER_NAME.yaml.
    2. Terapkan kembali perubahan untuk memperbarui CR apigee datastore:

      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 juga dapat menghosting image secara pribadi. Daripada mengganti setiap komponen, Anda dapat menambahkan detail hub pada penggantian:

hub: PRIVATE_REPO

Misalnya, jika hub berikut disediakan, hub ini akan otomatis me-resolve jalur image:

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.4
  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 pada command line:

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

Toleransi

Untuk menggunakan fitur Taint dan Toleransi di Kubernetes, Anda harus menentukan properti pengganti tolerations untuk setiap komponen hybrid Apigee. Komponen berikut mendukung penetapan 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 Cassandra StatefulSet:

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