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 custom plugin. 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 Edge Microgateway instance yang berjalan di cluster Kubernetes Anda.
Selanjutnya, bagian ini mengasumsikan membuat Anda terbiasa menulis dan mengonfigurasi plugin untuk pengaturan Edge Microgateway standar. Jika tidak, lihat Mengembangkan plugin kustom.
Kemas plugin Anda
Untuk mengemas plugin kustom, ikuti langkah-langkah berikut:
Tulis dan uji plugin Anda, sesuai dengan petunjuk dalam Menulis plugin sederhana.
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
danrequest-headers
adalah nama folder yang berisi kode plugin khusus (nama-nama ini hanya contoh, nama folder Anda mungkin berbeda):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
ke folderplugin
.Di folder
plugin
, zip seluruh folderplugins
:zip -r plugins.zip plugins/
Membuat image Docker
- Di direktori yang sama tempat file zip berada, buat file baru bernama
Dockerfile
. 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"]
Membuat image Docker Edge Microgateway baru dengan plugin dan push Anda image ke registry Docker Anda. Anda dapat menggunakan {i>registry<i} mana pun yang Anda inginkan, seperti sebagai
docker.io
ataugcr.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
Mengupdate 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
Pada 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 menarik image baru dengan kode plugin yang Anda masukkan ke container registry dan menggunakannya untuk pod yang dibuat.
Jika Anda men-deploy Edge Microgateway sebagai layanan
Gunakan perintah edgemicroctl
untuk memasukkan konfigurasi Edge Microgateway yang diperbarui:
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 di perintahedgemicro configure
.your_environment
- Lingkungan yang Anda tentukan di perintahedgemicro configure
.configuration_key
- Kunci yang ditampilkan dari perintahedgemicro configure
.configuration_secret
- Rahasia 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.io
ataudocker.io
.your_project_name
- Nama project untuk repositori Docker tempat Anda mengirimkan 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. Memanggil API untuk mengetahui apakah Anda mendapatkan perilaku yang diharapkan. Sebagai misalnya, untuk "respons huruf besar" teks respons dikonversi menjadi semua huruf besar, seperti yang 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, di mana Anda memasukkan konfigurasi baru dari baris perintah.
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 di perintahedgemicro configure
.your_env
- Lingkungan yang Anda tentukan di perintahedgemicro configure
.your_key
- Kunci yang ditampilkan dari perintahedgemicro configure
.your_secret
- Rahasia 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.io
ataudocker.io
.your_project_name
- Nama project untuk repositori Docker tempat Anda mengirimkan image Docker.image_name
- Nama image Docker yang Anda kirim.service_deployment_file
- Jalur ke file deployment layanan untuk mana plugin yang 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 ke lihat apakah Anda mendapatkan perilaku yang diharapkan. Misalnya, untuk "respons huruf besar" plugin, teks respons dikonversi menjadi huruf besar semua, seperti yang 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. Sebagai contoh, Anda mungkin ingin menambahkan plugin baru ke Edge Microgateway atau mengubah parameter konfigurasi. Ini menjelaskan cara membuat dan menerapkan perubahan konfigurasi pada Edge Microgateway yang berjalan di Kubernetes.
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
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'
Buat perubahan pada file konfigurasi Edge Microgateway untuk organisasi Anda dan lingkungan:
$HOME/.edgemicro/your_org-your_env-config.yaml
Encode Base64 dua kali isi file konfigurasi:
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
Terapkan perubahan pada Kubernetes di namespace tempat layanan Anda berjalan.
kubectl apply -f secret.yaml -n
Perubahan baru ini tidak otomatis diterapkan oleh pod microgateway yang sudah ada; namun, pod yang baru akan menerima perubahan. Anda dapat menghapus pod yang ada sehingga deployment membuat pod baru yang dapat mengambil perubahan.
Contoh layanan
Contoh berikut mengilustrasikan cara mengupdate deployment layanan dengan
Mendapatkan 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
Hapus pod
edge-microgateway
.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
Contoh output:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
Mendapatkan pod lagi. Pod baru 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 Anda
Bagian ini menjelaskan cara menggunakan prinsip-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 1d
Output menunjukkan satu replika di-deploy.
Skalakan deployment dari 1 ke replika sebanyak yang Anda inginkan. Dalam contoh ini, layanan
edge-microgateway
diskalakan.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 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.
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 kedua replika dalam status berjalan.
Menggunakan namespace untuk beberapa konfigurasi Edge Microgateway
Anda dapat men-deploy dan mengonfigurasi beberapa instance layanan Edge Microgateway ke Kubernetes. Kasus penggunaan ini memungkinkan Anda mengonfigurasi setiap instance microgateway dengan kumpulan plugin dan parameternya sendiri. Contoh:
- Layanan Edge Microgateway A hanya memerlukan plugin penangkapan lonjakan.
- Layanan B Edge Microgateway memerlukan kuota dan plugin OAuth, tetapi tidak mengaktifkan penghentian lonjakan.
Untuk mengatasi kasus penggunaan ini, gunakan namespace Kubernetes. Misalnya, Anda dapat men-deploy
Layanan Edge Microgateway A ke namespace foo
, dan Layanan B Edge Microgateway 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 di organisasi OrgB
di-deploy sebagai layanan untuk 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