คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
การเพิ่มปลั๊กอินที่กำหนดเอง
คุณสามารถเพิ่มฟีเจอร์และความสามารถใหม่ๆ ลงในไมโครเกตเวย์ได้โดยการเขียนปลั๊กอิน ที่กำหนดเอง ปลั๊กอินที่กำหนดเองช่วยให้คุณโต้ตอบกับคำขอและการตอบกลับที่ไหลผ่านไมโครเกตเวย์ได้โดยใช้โปรแกรม
ส่วนนี้อธิบายวิธีสร้างแพ็กเกจและติดตั้งใช้งานปลั๊กอินในอินสแตนซ์ Edge Microgateway ที่ทำงานในคลัสเตอร์ Kubernetes
ส่วนที่เหลือของส่วนนี้จะถือว่าคุณคุ้นเคยกับการเขียนและกำหนดค่าปลั๊กอินสำหรับการตั้งค่า Edge Microgateway มาตรฐาน หากไม่คุ้นเคย โปรดดูพัฒนาปลั๊กอินที่กำหนดเอง
สร้างแพ็กเกจปลั๊กอิน
หากต้องการสร้างแพ็กเกจปลั๊กอินที่กำหนดเอง ให้ทำตามขั้นตอนต่อไปนี้
เขียนและทดสอบปลั๊กอินตามวิธีการในหัวข้อเขียนปลั๊กอินอย่างง่าย
วางโค้ดปลั๊กอินในโครงสร้างไดเรกทอรีที่เหมาะสม ไดเรกทอรีปลั๊กอินต้องเป็นไปตามโครงสร้างที่กำหนด ตัวอย่างต่อไปนี้แสดงโครงสร้างที่คุณต้องทำตาม โดย
response-uppercaseและrequest-headersเป็นชื่อโฟลเดอร์ที่มีโค้ดปลั๊กอินที่กำหนดเอง (ชื่อเหล่านี้เป็นเพียงตัวอย่าง ชื่อโฟลเดอร์ของคุณอาจแตกต่างกัน)plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsoncdไปที่โฟลเดอร์pluginในโฟลเดอร์
pluginให้บีบอัดโฟลเดอร์pluginsทั้งหมดzip -r plugins.zip plugins/
สร้างอิมเมจ Docker
- ในไดเรกทอรีเดียวกับที่เก็บไฟล์ ZIP ให้สร้างไฟล์ใหม่ชื่อ
Dockerfile เพิ่มโค้ดต่อไปนี้ลงใน
Dockerfileแล้วบันทึกไฟล์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"]สร้างอิมเมจ Docker ของ Edge Microgateway ใหม่ด้วยปลั๊กอิน แล้วพุชอิมเมจไปยังรีจิสทรี Docker คุณสามารถใช้รีจีสทรีใดก็ได้ที่ต้องการ เช่น
docker.ioหรือgcr.iodocker build -t edgemicroplugins .docker tag edgemicroplugins container-registry/your-project/edgemicropluginsdocker push container-registry/your-project/edgemicropluginsเช่น
docker build -t edgemicroplugins .docker tag edgemicroplugins gcr.io/my-project/edgemicropluginsdocker push gcr.io/my-project/edgemicroplugins
อัปเดตการกำหนดค่า Edge Microgateway
เพิ่มปลั๊กอินลงในไฟล์การกำหนดค่า Edge Microgateway คุณดูไฟล์การกำหนดค่าได้ที่นี่
$HOME/.edgemicro/org-env-config.yaml
เช่น
$HOME/.edgemicro/myorg-test-config.yaml
ในตัวอย่างการกำหนดค่าต่อไปนี้ มีการเพิ่มปลั๊กอินที่กำหนดเอง response-uppercase
ปลั๊กอิน oauth มีอยู่แล้วโดยค่าเริ่มต้น
edgemicro:
...
plugins:
sequence:
- oauth
- response-uppercase
อัปเดตคลัสเตอร์ Kubernetes
ขั้นตอนสุดท้ายคือการใช้การเปลี่ยนแปลงการกำหนดค่ากับคลัสเตอร์ Kubernetes Kubernetes จะดึงอิมเมจใหม่ที่มีโค้ดปลั๊กอินที่คุณพุชไปยังรีจีสทรีคอนเทนเนอร์ แล้วใช้โค้ดดังกล่าวสำหรับพ็อดที่สร้างขึ้นใหม่
หากคุณติดตั้งใช้งาน Edge Microgateway เป็นบริการ
ใช้คำสั่ง edgemicroctl เพื่อแทรกการกำหนดค่า Edge Microgateway ที่อัปเดตแล้ว
อัปเดตการติดตั้งใช้งาน Edge Microgateway ด้วยอิมเมจใหม่ เช่น
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)
โดยที่
your_organization- องค์กร Apigee ที่คุณระบุในคำสั่งedgemicro configureyour_environment- สภาพแวดล้อมที่คุณระบุในคำสั่งedgemicro configureconfiguration_key- คีย์ที่ส่งคืนจากคำสั่งedgemicro configureconfiguration_secret- Secret ที่ส่งคืนจากคำสั่งedgemicro configureconfig_file_path- เส้นทางไปยังไฟล์การกำหนดค่า Edge Micro ที่ส่งคืนจากคำสั่งedgemicro configurecontainer-registry- รีจีสทรี Docker ที่คุณพุชอิมเมจ เช่นgcr.ioหรือdocker.ioyour_project_name- ชื่อโปรเจ็กต์สำหรับที่เก็บ Docker ที่คุณพุชอิมเมจ Dockerimage_name- ชื่ออิมเมจ Docker ที่คุณพุช
ตัวอย่าง
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)
ทดสอบปลั๊กอิน เรียก API เพื่อดูว่าคุณได้รับลักษณะการทำงานที่คาดไว้หรือไม่ เช่น สำหรับปลั๊กอิน "response uppercase" ข้อความตอบกลับจะถูกแปลงเป็นตัวพิมพ์ใหญ่ทั้งหมด ดังที่แสดงด้านล่าง
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
เอาต์พุต
HELLO WORLD
การแทรกการกำหนดค่าใหม่ด้วยตนเอง
การแทรกด้วยตนเองเป็นวิธีที่ตรงไปตรงมา ซึ่งคุณจะแทรกการกำหนดค่าใหม่จากบรรทัดคำสั่ง
เรียกใช้คำสั่งต่อไปนี้
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)
โดยที่
your_org- องค์กร Apigee ที่คุณระบุในคำสั่งedgemicro configureyour_env- สภาพแวดล้อมที่คุณระบุในคำสั่งedgemicro configureyour_key- คีย์ที่ส่งคืนจากคำสั่งedgemicro configureyour_secret- Secret ที่ส่งคืนจากคำสั่งedgemicro configureconfig_file_path- เส้นทางไปยังไฟล์การกำหนดค่า Edge Micro ที่ส่งคืนจากคำสั่งedgemicro configurecontainer-registry- รีจีสทรี Docker ที่คุณพุชอิมเมจ เช่นgcr.ioหรือdocker.ioyour_project_name- ชื่อโปรเจ็กต์สำหรับที่เก็บ Docker ที่คุณพุชอิมเมจ Dockerimage_name- ชื่ออิมเมจ Docker ที่คุณพุชservice_deployment_file- เส้นทางไปยังไฟล์การติดตั้งใช้งานของบริการที่จะใช้ปลั๊กอิน เช่นsamples/helloworld/helloworld.yaml
เช่น
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)
ทดสอบปลั๊กอิน เรียก API ของบริการเพื่อดูว่าคุณได้รับลักษณะการทำงานที่คาดไว้หรือไม่ เช่น สำหรับปลั๊กอิน "response uppercase" ข้อความตอบกลับจะถูกแปลงเป็นตัวพิมพ์ใหญ่ทั้งหมด ดังที่แสดงด้านล่าง
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
เอาต์พุต
HELLO WORLD
การเปลี่ยนแปลงการกำหนดค่า Edge Microgateway
ในบางกรณี คุณอาจต้องแก้ไขการกำหนดค่า Edge Microgateway เช่น คุณอาจต้องการเพิ่มปลั๊กอินใหม่ลงใน Edge Microgateway หรือเปลี่ยนพารามิเตอร์การกำหนดค่า ส่วนนี้อธิบายวิธีทำการเปลี่ยนแปลงการกำหนดค่าและใช้การเปลี่ยนแปลงดังกล่าวกับ Edge Microgateway ที่ทำงานใน Kubernetes
สร้างไฟล์การกำหนดค่า
secret.yamlดังที่แสดงด้านล่าง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ระบุค่าที่เข้ารหัส Base64 ของ
EDGEMICRO_ORG,EDGEMICRO_ENV,EDGEMICRO_KEY,EDGEMICRO_SECRETecho -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'ทำการเปลี่ยนแปลงไฟล์การกำหนดค่า Edge Microgateway สำหรับองค์กรและ สภาพแวดล้อมของคุณ:
$HOME/.edgemicro/your_org-your_env-config.yaml
เข้ารหัส Base64 เนื้อหาของไฟล์การกำหนดค่า 2 ครั้ง
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
ใช้การเปลี่ยนแปลงกับ Kubernetes ในเนมสเปซที่บริการของคุณทำงานอยู่
kubectl apply -f secret.yaml -n
พ็อดไมโครเกตเวย์ที่มีอยู่จะไม่รับการเปลี่ยนแปลงใหม่เหล่านี้โดยอัตโนมัติ แต่พ็อดใหม่จะรับการเปลี่ยนแปลง คุณสามารถลบพ็อดที่มีอยู่เพื่อให้การติดตั้งใช้งานสร้างพ็อดใหม่ที่รับการเปลี่ยนแปลง
ตัวอย่างบริการ
ตัวอย่างต่อไปนี้แสดงวิธีอัปเดตการติดตั้งใช้งานบริการด้วย
รับพ็อด
kubectl get pods
ตัวอย่างเอาต์พุต
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-g7nrg 1/1 Running 0 19h helloworld-6987878fc4-cltc2 1/1 Running 0 1dลบพ็อด
edge-microgatewaykubectl delete pod edge-microgateway-57ccc7776b-g7nrg
ตัวอย่างเอาต์พุต
pod "edge-microgateway-57ccc7776b-g7nrg" deletedรับพ็อดอีกครั้ง พ็อดใหม่จะเริ่มทำงานและรับการเปลี่ยนแปลงการกำหนดค่า
kubectl get pods
ตัวอย่างเอาต์พุต
NAME READY STATUS RESTARTS AGE edge-microgateway-57ccc7776b-7f6tc 1/1 Running 0 5s helloworld-6987878fc4-cltc2 1/1 Running 0 1d
การปรับขนาดการติดตั้งใช้งาน
ส่วนนี้อธิบายวิธีใช้หลักการปรับขนาดของ Kubernetes เพื่อปรับขนาดการติดตั้งใช้งาน
การปรับขนาดการติดตั้งใช้งานบริการ
ตรวจสอบการติดตั้งใช้งาน
kubectl get deployments
ตัวอย่างเอาต์พุต
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 1 1 1 1 18h helloworld 1 1 1 1 1dเอาต์พุตระบุว่ามีการติดตั้งใช้งาน 1 รีพลิกา
ปรับขนาดการติดตั้งใช้งานจาก 1 เป็นรีพลิกาจำนวนเท่าใดก็ได้ที่ต้องการ ในตัวอย่างนี้ ระบบจะปรับขนาดบริการ
edge-microgatewaykubectl scale deployment edge-microgateway --replicas=2
(ไม่บังคับ) หากต้องการใช้การปรับขนาดอัตโนมัติ ให้ใช้คำสั่งนี้
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
ตรวจสอบการติดตั้งใช้งานเพื่อยืนยันว่าได้เปิดใช้การปรับขนาดแล้ว
kubectl get deployments
ตัวอย่างเอาต์พุต
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE edge-microgateway 2 2 2 2 18h helloworld 1 1 1 1 1dสถานะมีการเปลี่ยนแปลงให้รวมรีพลิกา 2 รายการ
ตรวจสอบพ็อด
kubectl get pods
ตัวอย่างเอาต์พุต
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เอาต์พุตแสดงว่ารีพลิกาทั้ง 2 รายการอยู่ในสถานะกำลังทำงาน
ใช้เนมสเปซสำหรับการกำหนดค่า Edge Microgateway หลายรายการ
คุณสามารถติดตั้งใช้งานและกำหนดค่าอินสแตนซ์บริการ Edge Microgateway หลายรายการลงในคลัสเตอร์ Kubernetes ได้ กรณีการใช้งานนี้ช่วยให้คุณกำหนดค่าอินสแตนซ์ไมโครเกตเวย์แต่ละรายการด้วยชุดปลั๊กอินและพารามิเตอร์ของตัวเองได้ เช่น
- บริการ Edge Microgateway A ต้องการเพียงปลั๊กอินการป้องกันการเพิ่มขึ้นของปริมาณการเข้าชมอย่างฉับพลัน
- บริการ Edge Microgateway B ต้องการปลั๊กอินโควต้าและ OAuth แต่ไม่ต้องการปลั๊กอินการป้องกันการเพิ่มขึ้นของปริมาณการเข้าชมอย่างฉับพลัน
หากต้องการจัดการกรณีการใช้งานนี้ ให้ใช้เนมสเปซ ของ Kubernetes เช่น คุณสามารถติดตั้งใช้งานบริการ Edge Microgateway A ในเนมสเปซ foo และบริการ Edge Microgateway B ในเนมสเปซ bar
ในตัวอย่างต่อไปนี้ ระบบจะติดตั้งใช้งาน Edge Microgateway ที่กำหนดค่าไว้ในองค์กร OrgA เป็นบริการในเนมสเปซ foo โดยใช้ตัวเลือก -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
เช่นเดียวกัน ในตัวอย่างต่อไปนี้ ระบบจะติดตั้งใช้งาน Edge Microgateway ที่กำหนดค่าไว้ในองค์กร OrgB เป็นบริการในเนมสเปซ bar โดยใช้ตัวเลือก -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