Anda 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 mengemas dan men-deploy plugin ke instance Edge Microgateway yang berjalan di cluster Kubernetes Anda.
Bagian lainnya dari bagian ini mengasumsikan bahwa Anda sudah memahami cara menulis dan mengonfigurasi plugin untuk penyiapan Edge Microgateway standar. Jika belum, lihat Mengembangkan plugin kustom.
Mengemas plugin
Untuk mengemas plugin kustom, ikuti langkah-langkah berikut:
Tulis dan uji plugin Anda, sesuai dengan petunjuk di Menulis plugin sederhana.
Tempatkan kode plugin Anda dalam struktur direktori yang tepat. Direktori plugin harus mengikuti struktur yang ditetapkan. Contoh berikut menunjukkan struktur yang harus Anda ikuti, dengan
response-uppercasedanrequest-headersadalah 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.jsoncdke folderplugin.Di folder
plugin, zip seluruh folderpluginsfolder:zip -r plugins.zip plugins/
Membuat image Docker
- Di direktori yang sama dengan lokasi file zip, buat file baru bernama
Dockerfile. Tambahkan kode berikut ke
Dockerfiledan 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"]Buat image Docker Edge Microgateway baru dengan plugin Anda dan kirim image ke registry Docker Anda. Anda dapat menggunakan registry yang diinginkan, seperti
docker.ioataugcr.io:docker build -t edgemicroplugins .docker tag edgemicroplugins container-registry/your-project/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsContoh:
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker push gcr.io/my-project/edgemicroplugins
Memperbarui konfigurasi Edge Microgateway
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
Memperbarui cluster Kubernetes
Langkah terakhir adalah menerapkan perubahan konfigurasi ke cluster Kubernetes Anda. Kubernetes akan mengambil image baru dengan kode plugin yang Anda kirim ke container registry dan menggunakannya untuk pod yang baru dibuat.
Jika Anda men-deploy Edge Microgateway sebagai layanan
Gunakan perintah edgemicroctl untuk menyisipkan konfigurasi Edge Microgateway yang diperbarui:
Perbarui 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)
dengan:
your_organization- Organisasi Apigee yang Anda tentukan dalam perintahedgemicro configure.your_environment- Lingkungan yang Anda tentukan dalam perintahedgemicro configure.configuration_key- Kunci yang ditampilkan dari perintahedgemicro configure.configuration_secret- Secret yang ditampilkan dari perintahedgemicro configure.config_file_path- Jalur ke file konfigurasi Edge Micro yang ditampilkan dari perintahedgemicro configure.container-registry- Registry Docker tempat Anda mengirim image. Misalnya,gcr.ioataudocker.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)
Uji plugin. Panggil API untuk melihat apakah Anda mendapatkan perilaku yang diharapkan. Misalnya, untuk plugin "response uppercase", teks respons dikonversi menjadi huruf besar semua, seperti yang ditunjukkan di bawah:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Output:
HELLO WORLD
Menyisipkan konfigurasi baru secara manual
Penyisipan manual adalah pendekatan yang mudah, dengan menyisipkan konfigurasi baru dari command line.
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)
dengan:
your_org- Organisasi Apigee yang Anda tentukan dalam perintahedgemicro configure.your_env- Lingkungan yang Anda tentukan dalam perintahedgemicro configure.your_key- Kunci yang ditampilkan dari perintahedgemicro configure.your_secret- Secret yang ditampilkan dari perintahedgemicro configure.config_file_path- Jalur ke file konfigurasi Edge Micro yang ditampilkan dari perintahedgemicro configure.container-registry- Registry Docker tempat Anda mengirim image. Misalnya,gcr.ioataudocker.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)
Uji plugin. Panggil API layanan untuk melihat apakah Anda mendapatkan perilaku yang diharapkan. Misalnya, untuk plugin "response uppercase", teks respons dikonversi menjadi huruf besar semua, seperti yang ditunjukkan di bawah:
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
Output:
HELLO WORLD
Melakukan 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 ke Edge Microgateway yang berjalan di Kubernetes.
Buat file konfigurasi
secret.yamlseperti yang ditunjukkan di bawah:apiVersion: v1 kind: Secret metadata: name: mgwsecret type: Opaque data: mgorg: EDGEMICRO_ORG mgenv: EDGEMICRO_ENV mgkey: EDGEMICRO_KEY mgsecret: EDGEMICRO_SECRET mgconfig: EDGEMICRO_CONFIGTentukan 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'Buat perubahan pada file konfigurasi Edge Microgateway untuk organisasi dan lingkungan Anda:
$HOME/.edgemicro/your_org-your_env-config.yaml
Enkode Base64 dua kali konten file konfigurasi:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
Terapkan perubahan ke Kubernetes di namespace tempat layanan Anda berjalan.
kubectl apply -f secret.yaml -n
Perubahan baru ini tidak diambil secara otomatis oleh pod microgateway yang ada; namun, pod baru akan mendapatkan perubahan tersebut. Anda dapat menghapus pod yang ada sehingga deployment membuat pod baru yang mengambil perubahan tersebut.
Contoh layanan
Contoh berikut mengilustrasikan cara memperbarui deployment layanan dengan
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 1dHapus pod
edge-microgateway.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Contoh output:
pod "edge-microgateway-57ccc7776b-g7nrg" deletedDapatkan pod lagi. Pod baru akan diaktifkan 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
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 1dOutput menunjukkan satu replika di-deploy.
Skalakan deployment dari 1 ke replika sebanyak yang Anda inginkan. Dalam contoh ini, layanan
edge-microgatewaydiskalakan.kubectl scale deployment edge-microgateway --replicas=2
(Opsional) Jika Anda ingin menggunakan penskalaan otomatis, gunakan perintah ini:
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
Periksa deployment untuk memverifikasi bahwa 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 1dStatus telah diubah untuk menyertakan dua replika.
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 1dOutput menunjukkan bahwa kedua replika berada 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. Kasus penggunaan ini memungkinkan Anda mengonfigurasi setiap instance microgateway dengan kumpulan plugin dan parameternya sendiri. Contoh:
- Layanan Edge Microgateway A hanya memerlukan plugin spike arrest.
- Layanan Edge Microgateway B memerlukan plugin kuota dan oauth, tetapi tidak memerlukan spike arrest.
Untuk mengatasi kasus penggunaan ini, gunakan namespace Kubernetes. Misalnya, Anda dapat men-deploy Layanan Edge Microgateway A ke namespace foo, dan Layanan Edge Microgateway 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, pada contoh berikut, Edge Microgateway yang dikonfigurasi di 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