Tugas integrasi Kubernetes

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Menambahkan plugin kustom

Anda dapat menambahkan fitur dan kemampuan baru ke microgateway dengan menulis plugin kustom. Plugin kustom memungkinkan Anda berinteraksi secara terprogram dengan permintaan dan respons yang mengalir melalui microgateway.

Bagian ini menjelaskan cara memaketkan dan men-deploy plugin ke instance Edge Microgateway yang berjalan di cluster Kubernetes Anda.

Bagian selanjutnya mengasumsikan bahwa Anda telah terbiasa menulis dan mengonfigurasi plugin untuk penyiapan Edge Microgateway standar. Jika belum, lihat Mengembangkan plugin kustom.

Mengemas plugin Anda

Untuk memaketkan plugin kustom, ikuti langkah-langkah berikut:

  1. Tulis dan uji plugin Anda, sesuai dengan petunjuk dalam Menulis plugin sederhana.

  2. Tempatkan kode plugin Anda di struktur direktori yang tepat. Direktori plugin harus mengikuti struktur yang ditetapkan. Contoh berikut menunjukkan struktur yang harus Anda ikuti, dengan response-uppercase dan request-headers adalah nama folder yang berisi kode plugin kustom (nama ini hanya contoh, nama folder Anda mungkin berbeda):

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd ke folder plugin.

  4. Dalam folder plugin, zip seluruh folder plugins:

    zip -r plugins.zip plugins/

Membuat image Docker

  1. Di direktori yang sama dengan tempat file ZIP berada, buat file baru bernama Dockerfile.
  2. Tambahkan kode berikut ke Dockerfile dan simpan file:

    FROM gcr.io/apigee-microgateway/edgemicro:latest
    RUN apt-get install unzip
    COPY plugins.zip /opt/apigee/
    RUN chown apigee:apigee /opt/apigee/plugins.zip
    RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee"
    EXPOSE 8000
    EXPOSE 8443
    ENTRYPOINT ["entrypoint"]
    
  3. Buat image Docker Edge Microgateway baru dengan plugin Anda, lalu kirim image tersebut ke registry docker. Anda dapat menggunakan registry mana pun yang diinginkan, seperti docker.io atau gcr.io:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
    docker push container-registry/your-project/edgemicroplugins
    

    Contoh:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
    docker push   gcr.io/my-project/edgemicroplugins
    

Memperbarui konfigurasi Edge Microgateway

  1. Tambahkan plugin ke file konfigurasi Edge Microgateway Anda. Anda dapat menemukan file konfigurasi di sini:

    $HOME/.edgemicro/org-env-config.yaml
    

    Contoh:

    $HOME/.edgemicro/myorg-test-config.yaml

Dalam contoh konfigurasi berikut, plugin kustom response-uppercase telah ditambahkan. Plugin oauth sudah ada secara default.

  edgemicro:
    ...
    plugins:
      sequence:
        - oauth
        - response-uppercase

Mengupdate cluster Kubernetes Anda

Langkah terakhir adalah menerapkan perubahan konfigurasi ke cluster Kubernetes Anda. Kubernetes akan mengambil image baru yang berisi kode plugin yang Anda dorong ke container registry dan menggunakannya untuk setiap pod yang baru dibuat.

Jika Anda men-deploy Edge Microgateway sebagai layanan

Gunakan perintah edgemicroctl untuk memasukkan konfigurasi Edge Microgateway yang telah diperbarui:

  1. Update deployment Edge Microgateway dengan image baru. Contoh:

    kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)

    dalam hal ini:

    • your_organization - Organisasi Apigee yang Anda tentukan dalam perintah edgemicro configure.
    • your_environment - Lingkungan yang Anda tentukan dalam perintah edgemicro configure.
    • configuration_key - Kunci yang ditampilkan dari perintah edgemicro configure.
    • configuration_secret - Rahasia yang ditampilkan dari perintah edgemicro configure.
    • config_file_path - Jalur ke file konfigurasi Edge Micro yang ditampilkan dari perintah edgemicro configure.
    • container-registry - Registry Docker tempat Anda mengirim image. Misalnya, gcr.io atau docker.io.
    • your_project_name - Nama project untuk repositori Docker tempat Anda mengirim image Docker.
    • image_name - Nama image Docker yang Anda kirim.

    Contoh:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
  2. Menguji plugin. Panggil API untuk mengetahui apakah Anda mendapatkan perilaku yang diharapkan. Misalnya, untuk plugin "huruf besar respons", teks respons dikonversi menjadi huruf besar semua, seperti ditunjukkan di bawah ini:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    Output:

    HELLO WORLD
    
Memasukkan konfigurasi baru secara manual

Injeksi manual adalah pendekatan langsung, yang memungkinkan Anda memasukkan konfigurasi baru dari command line.

  1. Jalankan perintah berikut:

    kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)

    dalam hal ini:

    • your_org - Organisasi Apigee yang Anda tentukan dalam perintah edgemicro configure.
    • your_env - Lingkungan yang Anda tentukan dalam perintah edgemicro configure.
    • your_key - Kunci yang ditampilkan dari perintah edgemicro configure.
    • your_secret - Rahasia yang ditampilkan dari perintah edgemicro configure.
    • config_file_path - Jalur ke file konfigurasi Edge Micro yang ditampilkan dari perintah edgemicro configure.
    • container-registry - Registry Docker tempat Anda mengirim image. Misalnya, gcr.io atau docker.io.
    • your_project_name - Nama project untuk repositori Docker tempat Anda mengirim image Docker.
    • image_name - Nama image Docker yang Anda kirim.
    • service_deployment_file - Jalur ke file deployment layanan tempat plugin akan diterapkan. Contoh: samples/helloworld/helloworld.yaml.

    Contoh:

    kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
  2. Menguji plugin. Panggil API layanan untuk mengetahui apakah Anda mendapatkan perilaku yang diharapkan. Misalnya, untuk plugin "respons kapitalisasi", teks respons dikonversi ke huruf besar semua, seperti ditunjukkan di bawah ini:

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    Output:

    HELLO WORLD
    

Membuat perubahan konfigurasi Edge Microgateway

Dalam beberapa kasus, Anda mungkin perlu mengubah konfigurasi Edge Microgateway. Misalnya, Anda mungkin ingin menambahkan plugin baru ke Edge Microgateway atau mengubah parameter konfigurasi. Bagian ini menjelaskan cara membuat dan menerapkan perubahan konfigurasi pada Edge Microgateway yang berjalan di Kubernetes.

  1. Buat file konfigurasi secret.yaml seperti yang ditunjukkan di bawah ini:

    apiVersion: v1
    kind: Secret
    metadata:
      name: mgwsecret
    type: Opaque
    data:
      mgorg: EDGEMICRO_ORG
      mgenv: EDGEMICRO_ENV
      mgkey: EDGEMICRO_KEY
      mgsecret: EDGEMICRO_SECRET
      mgconfig: EDGEMICRO_CONFIG
    
  2. Tentukan nilai yang dienkode base64 dari EDGEMICRO_ORG, EDGEMICRO_ENV, EDGEMICRO_KEY, EDGEMICRO_SECRET:

    echo -n "your-org" | base64 | tr -d '\n'
    echo -n "your-org-env" | base64 | tr -d '\n'
    echo -n "your-mg-key" | base64 | tr -d '\n'
    echo -n "your-mg-secret" | base64 | tr -d '\n'
    
  3. Buat perubahan pada file konfigurasi Edge Microgateway untuk organisasi dan lingkungan Anda:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. Base64 Melakukan enkode dua kali konten file konfigurasi:

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. Terapkan perubahan pada kubernetes di namespace tempat layanan Anda berjalan.

    kubectl apply -f secret.yaml -n 

Perubahan baru ini tidak diambil secara otomatis oleh pod microgateway yang sudah ada; tetapi, pod baru yang akan mendapatkan perubahan tersebut. Anda dapat menghapus pod yang ada agar deployment dapat membuat pod baru yang mengambil perubahan.

Contoh layanan

Contoh berikut mengilustrasikan cara mengupdate deployment layanan dengan

  1. Dapatkan pod.

    kubectl get pods

    Contoh output:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          19h
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    
  2. Hapus pod edge-microgateway.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    Contoh output:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. Dapatkan pod lagi. Pod baru akan dijalankan dan mendapatkan perubahan konfigurasi Anda.

    kubectl get pods

    Contoh output:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-7f6tc   1/1       Running   0          5s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

Menskalakan deployment

Bagian ini menjelaskan cara menggunakan prinsip penskalaan Kubernetes untuk menskalakan deployment Anda.

Menskalakan deployment layanan

  1. Periksa deployment:

    kubectl get deployments

    Contoh output:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   1         1         1            1           18h
    helloworld          1         1         1            1           1d
    

    Output menunjukkan bahwa satu replika di-deploy.

  2. Skalakan deployment dari 1 menjadi replika sebanyak yang Anda inginkan. Dalam contoh ini, layanan edge-microgateway diskalakan.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (Opsional) Jika Anda ingin menggunakan penskalaan otomatis, gunakan perintah ini:

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. Periksa deployment untuk memastikan penskalaan diaktifkan:

    kubectl get deployments

    Contoh output:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   2         2         2            2           18h
    helloworld          1         1         1            1           1d
    

    Status telah diubah untuk menyertakan dua replika.

  5. Periksa pod:

    kubectl get pods

    Contoh output:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          18h
    edge-microgateway-57ccc7776b-rvfz4   1/1       Running   0          41s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

    Output menunjukkan bahwa kedua replika dalam status berjalan.

Menggunakan namespace untuk beberapa konfigurasi Edge Microgateway

Anda dapat men-deploy dan mengonfigurasi beberapa instance layanan Edge Microgateway ke cluster Kubernetes Anda. Dengan kasus penggunaan ini, Anda dapat mengonfigurasi setiap instance microgateway dengan kumpulan plugin dan parameternya sendiri. Contoh:

  • Layanan Edge Microgateway A hanya memerlukan plugin lonjakan penangkapan.
  • Layanan Edge Microgateway B memerlukan plugin kuota dan oauth, tetapi tidak ada penangkapan lonjakan.

Untuk mengatasi kasus penggunaan ini, gunakan namespace Kubernetes. Misalnya, Anda dapat men-deploy Edge Microgateway Layanan A ke namespace foo, dan Edge Microgateway Service B ke namespace bar.

Pada contoh berikut, Edge Microgateway yang dikonfigurasi di organisasi OrgA di-deploy sebagai layanan ke namespace foo menggunakan opsi -n:

kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo

Demikian pula, dalam contoh berikut, Edge Microgateway yang dikonfigurasi dalam organisasi OrgB di-deploy sebagai layanan ke namespace bar menggunakan opsi -n:

kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar