คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
การเพิ่มปลั๊กอินที่กำหนดเอง
คุณสามารถเพิ่มคุณลักษณะและความสามารถใหม่ๆ ใน Microgateway โดยเขียน custom ปลั๊กอินต่างๆ ปลั๊กอินที่กำหนดเองช่วยให้คุณโต้ตอบกับคำขอแบบเป็นโปรแกรมได้ และการตอบสนองที่ไหลผ่านไมโครเกตเวย์
ส่วนนี้จะอธิบายวิธีการจัดแพ็กเกจและทำให้ปลั๊กอินใช้งานได้กับ Edge Microgateway กำลังทำงานในคลัสเตอร์ Kubernetes ของคุณ
ส่วนที่เหลือของส่วนนี้ถือว่า ที่คุณคุ้นเคยกับการเขียนและกำหนดค่า ปลั๊กอินสำหรับการตั้งค่า Edge Microgateway มาตรฐาน มิฉะนั้น โปรดดูพัฒนาปลั๊กอินที่กำหนดเอง
รวมปลั๊กอินเป็นแพ็กเกจ
ในการสร้างแพ็กเกจปลั๊กอินที่กำหนดเอง ให้ทำตามขั้นตอนต่อไปนี้
เขียนและทดสอบปลั๊กอินของคุณตามคำแนะนำในเขียนปลั๊กอินแบบง่าย
วางโค้ดปลั๊กอินในโครงสร้างไดเรกทอรีที่เหมาะสม ไดเรกทอรีปลั๊กอินต้องเป็นไปตามโครงสร้างที่ตั้งไว้ ตัวอย่างต่อไปนี้แสดง ที่คุณต้องทำตาม โดยที่
response-uppercase
และrequest-headers
คือ ชื่อของโฟลเดอร์ที่มีโค้ดปลั๊กอินที่กำหนดเอง (ชื่อเหล่านี้เป็นเพียงตัวอย่างเท่านั้น ชื่อโฟลเดอร์อาจแตกต่างกัน):plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
cd
ไปยังโฟลเดอร์plugin
ในโฟลเดอร์
plugin
ให้บีบอัดทั้งโฟลเดอร์plugins
zip -r plugins.zip plugins/
สร้างอิมเมจ Docker
- สร้างไฟล์ใหม่ชื่อ
Dockerfile
ในไดเรกทอรีเดียวกับที่มีไฟล์ ZIP เพิ่มโค้ดต่อไปนี้ใน
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"]
สร้างอิมเมจ Edge Microgateway Docker ใหม่ด้วยปลั๊กอินและพุช อิมเมจไปยัง Docker Registry คุณสามารถใช้รีจิสทรีใดก็ได้ เช่น ด้วย
docker.io
หรือgcr.io
:docker build -t edgemicroplugins .
docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
docker push container-registry/your-project/edgemicroplugins
เช่น
docker build -t edgemicroplugins .
docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
docker 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 configure
your_environment
- สภาพแวดล้อมที่คุณระบุในคำสั่งedgemicro configure
configuration_key
- คีย์ที่แสดงผลจากคำสั่งedgemicro configure
configuration_secret
- ข้อมูลลับที่แสดงผลจากคำสั่งedgemicro configure
config_file_path
- เส้นทางไปยังไฟล์การกำหนดค่า Edge Micro ที่แสดงผลจากคำสั่งedgemicro configure
container-registry
- รีจิสทรี Docker ที่คุณพุชอิมเมจ เช่นgcr.io
หรือdocker.io
your_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 เพื่อดูว่าคุณได้รับลักษณะการทำงานตามที่คาดไว้หรือไม่ สำหรับ เช่น ในกรณีที่ใช้ "ข้อความตอบกลับเป็นตัวพิมพ์ใหญ่" ปลั๊กอิน ข้อความตอบกลับจะถูกแปลงเป็น ตัวพิมพ์ใหญ่ดังที่แสดงด้านล่าง
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 configure
your_env
- สภาพแวดล้อมที่คุณระบุในคำสั่งedgemicro configure
your_key
- คีย์ที่แสดงผลจากคำสั่งedgemicro configure
your_secret
- ข้อมูลลับที่แสดงผลจากคำสั่งedgemicro configure
config_file_path
- เส้นทางไปยังไฟล์การกำหนดค่า Edge Micro ที่แสดงผลจากคำสั่งedgemicro configure
container-registry
- รีจิสทรี Docker ที่คุณพุชอิมเมจ เช่นgcr.io
หรือdocker.io
your_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 บริการเพื่อ เพื่อดูว่าได้รับลักษณะการทำงานตามที่คาดไว้หรือไม่ เช่น สำหรับ "ข้อความตอบกลับเป็นตัวพิมพ์ใหญ่" ปลั๊กอิน ระบบจะแปลงข้อความตอบกลับเป็นตัวพิมพ์ใหญ่ทั้งหมด ดังที่ปรากฏด้านล่าง
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
ระบุค่าฐาน 64 ที่เข้ารหัสของ
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'
ทำการเปลี่ยนแปลงไฟล์การกำหนดค่า 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
พ็อด Microgateway ที่มีอยู่จะไม่เลือกการเปลี่ยนแปลงใหม่เหล่านี้โดยอัตโนมัติ อย่างไรก็ตาม พ็อดใหม่จะได้รับการเปลี่ยนแปลง คุณลบพ็อดที่มีอยู่ได้เพื่อให้ การทำให้ใช้งานได้จะสร้างพ็อดใหม่ที่รับการเปลี่ยนแปลง
ตัวอย่างบริการ
ตัวอย่างต่อไปนี้จะแสดงวิธีอัปเดตการทำให้บริการใช้งานได้ด้วย
รับพ็อด
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-microgateway
kubectl 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-microgateway
มีการปรับขนาดkubectl 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 กรณีการใช้งานนี้ช่วยให้คุณกำหนดค่าอินสแตนซ์ Microgateway แต่ละรายการได้ พร้อมชุดปลั๊กอินและพารามิเตอร์ของตนเอง เช่น
- Edge Microgateway บริการ A ต้องการเฉพาะปลั๊กอินหยุดตรวจจับการเพิ่มขึ้นอย่างฉับพลันเท่านั้น
- Edge Microgateway บริการ B ต้องใช้โควต้าและปลั๊กอิน OAuth แต่ไม่ได้หยุดการทำงานชั่วคราว
หากต้องการจัดการกรณีการใช้งานนี้ ให้ใช้ Namespace ของ Kubernetes เช่น คุณสามารถทำให้
Edge Microgateway Service A ไปยังเนมสเปซ foo
และบริการ Edge Microgateway B ไปยัง
Namespace 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