คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
หัวข้อนี้อธิบายวิธีเรียกใช้ Edge Microgateway ในคอนเทนเนอร์ Docker ขั้นตอน ที่กล่าวถึงในหัวข้อนี้ถือว่าคุณมีความเข้าใจพื้นฐานเกี่ยวกับ Docker, คำสั่ง Docker รวมถึงการตั้งค่าและการกำหนดค่า Edge Microgateway ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบสำหรับ Docker และ Edge Microgateway
ข้อกำหนดเบื้องต้น
ก่อนเรียกใช้ Edge Microgateway ในคอนเทนเนอร์ Docker คุณต้องทําสิ่งต่อไปนี้
กำหนดค่า Edge Microgateway สำหรับองค์กร/สภาพแวดล้อม Apigee ดังนี้
edgemicro configure -o your_org -e your_env -u your_username
ดูรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่าได้ที่ส่วนที่ 1: กำหนดค่า Edge Microgateway
หลังจากทำตามขั้นตอนการกำหนดค่าแล้ว ให้ค้นหาไฟล์การกำหนดค่า ตำแหน่งเริ่มต้นคือ
$HOME/.edgemicro/your_org-your_env-config.yaml
โดย
your_orgและyour_envคือองค์กร และสภาพแวดล้อมที่คุณใช้เมื่อเรียกใช้คำสั่งedgemicro configคุณจะต้องใช้ไฟล์นี้เมื่อเริ่ม Edge Microgateway ในคอนเทนเนอร์ Dockerตรวจสอบว่าคุณมีข้อมูลเข้าสู่ระบบคีย์และข้อมูลลับที่ระบบส่งคืนเมื่อคุณเรียกใช้คำสั่ง
edgemicro configเช่นThe following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430ก่อนที่จะเริ่ม Edge Microgateway ในคอนเทนเนอร์ Docker คุณต้องสร้าง (หรือสร้างไว้แล้ว) เอนทิตี Apigee Edge ที่จำเป็น ในการเรียกพร็อกซี API ที่ตรวจสอบสิทธิ์แล้ว เอนทิตีเหล่านี้ประกอบด้วยพร็อกซีที่รับรู้ Edge Microgateway ผลิตภัณฑ์ API นักพัฒนาแอป และแอปของนักพัฒนาแอป ดูวิธีการทั้งหมดได้ที่ สร้างเอนทิตีใน Apigee Edge
เรียกใช้ Edge Micro เป็นคอนเทนเนอร์ Docker
ดาวน์โหลดอิมเมจ Docker สำหรับ Edge Microgateway
docker pull gcr.io/apigee-microgateway/edgemicro:latest
ก่อนที่จะไปยังขั้นตอนถัดไป โปรดตรวจสอบว่าคุณได้ทำตามขั้นตอนทั้งหมดในส่วนข้อกำหนดเบื้องต้นแล้ว
เรียกใช้คำสั่งต่อไปนี้เพื่อเข้ารหัสไฟล์การกำหนดค่า Edge Microgateway แบบ Base64 ซึ่งอยู่ใน
$HOME/.edgemicroexport EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
โดย
your_orgและyour_envคือองค์กรและสภาพแวดล้อมที่คุณใช้เมื่อ เรียกใช้คำสั่งedgemicro configอย่าลืมใส่เครื่องหมายแบ็กทิก (`) รอบคำสั่ง เช่น
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
เรียกใช้ Edge Microgateway เป็นคอนเทนเนอร์ คำสั่งนี้จะตั้งค่าตัวแปรสภาพแวดล้อมหลายรายการ ที่รันไทม์ของคอนเทนเนอร์ใช้เพื่อเริ่ม Edge Microgateway ดังนี้
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e "LOG_CONSOLE_OUTPUT_TO_FILE=false" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL \ gcr.io/apigee-microgateway/edgemicro:latest
พารามิเตอร์
<tr> <td><code>SERVICE_NAME</code></td> <td>If you are on Kubernetes, this parameter is auto-populated. Otherwise, you can set it to anything you wish. If you specify nothing, the service name is set to <code>default</code>.</td> </tr> <tr> <tr> <td><code>DEBUG</code></td> <td>Set to <code>*</code> to enable debugging. </td> </tr> <tr> <td><code>HTTP_PROXY</code> <code>HTTPS_PROXY</code></td> <td>Use when Edge Microgateway is running behind a firewall and the gateway cannot communicate with Apigee Edge. For more information, see <a href="operation-and-configuration-reference-edge-microgateway#settingupedgemicrogatewaybehindacompanyfirewall">Setting up Edge Microgateway behind a company firewall</a>. <p>For example: <code>HTTP_PROXY=http://10.203.0.1:5187/</code></p></td> </tr> <tr> <td><code>NO_PROXY</code></td> <td>A comma delimited list of domains that Edge Microgateway should not proxy to. For more information, see <a href="operation-and-configuration-reference-edge-microgateway#settingupedgemicrogatewaybehindacompanyfirewall">Setting up Edge Microgateway behind a company firewall</a>. <p>For example: <code>localhost,127.0.0.1,localaddress,.localdomain.com</code></p></td> </tr> <tr> <tr> <tr> <td><code>NODE_EXTRA_CA_CERTS</code></td> <td>(Optional) Use this parameter if you are using a CA that's not trusted by default by Node.js. Set the value of this parameter to the path to a file containing one or more trusted certificates in PEM format. For details, see <a href="#tls_certificates">TLS certificates</a>.</td> </tr> <tr> <td><code>--security-opt</code></td> <td>(Optional) Sets desired Docker security options. See <a href="https://docs.docker.com/engine/reference/run/#security-configuration">Security configuration</a> in the Docker documentation.</td> </tr> <tr> <td><code>--cap-drop</code></td> <td>(Optional) Sets limits on Linux capabilities permitted in the container. See <a href="https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities">Runtime privilege and Linux capabilities</a> in the Docker documentation.</td> </tr> </tbody>พารามิเตอร์ คำอธิบาย -Pเผยแพร่พอร์ตที่เปิดเผยทั้งหมดไปยังโฮสต์ โปรดดูข้อมูลอ้างอิงของ Docker Run ด้วย -pจับคู่พอร์ตเดียวหรือช่วงของพอร์ตอย่างชัดแจ้ง โปรดดูข้อมูลอ้างอิงของ Docker Run ด้วย -dเรียกใช้ในโหมดแยก โปรดดูข้อมูลอ้างอิงของ Docker Run ด้วย -v, -- volumeระบุการติดตั้งโวลุ่ม โปรดทราบว่าหากกำหนดค่า Edge Microgateway ให้ใช้ TLS ในคอนเทนเนอร์ Docker คุณต้องเปิดเผยพอร์ต 8443 หาก เมานต์ไดเรกทอรีไฟล์บันทึก ดู VOLUME [shared filesystems] เพิ่มเติม ดูเพิ่มเติมที่การใช้ TLS ในคอนเทนเนอร์ Docker -w, -- workdir(ไม่บังคับ) ระบุเส้นทางไปยังไดเรกทอรีที่ควรสร้างไฟล์ edgemicro.sockและedgemicro.pidคุณแก้ไขรูทของชื่อไฟล์edgemicroไม่ได้ ค่าเริ่มต้นคือเส้นทางไดเรกทอรีที่ใช้งานปัจจุบันตัวอย่าง
docker run -P -p 8000:8000 -d -w /tmp --name edgemicro
...EDGEMICRO_ORGชื่อองค์กร Apigee ที่คุณใช้กำหนดค่า Edge Microgateway EDGEMICRO_ENVชื่อสภาพแวดล้อม Apigee ที่คุณใช้กำหนดค่า Edge Microgateway EDGEMICRO_PROCESSESจำนวนกระบวนการที่จะเริ่มต้น EDGEMICRO_KEYคีย์ที่แสดงเมื่อคุณกำหนดค่า Edge Microgateway EDGEMICRO_SECRETข้อมูลลับที่ส่งคืนเมื่อคุณกำหนดค่า Edge Microgateway EDGEMICRO_CONFIGตัวแปรที่มีไฟล์การกำหนดค่า Edge Microgateway ที่เข้ารหัส Base64 LOG_CONSOLE_OUTPUT_TO_FILE(บูลีน) ช่วยให้คุณระบุตำแหน่งที่จะส่งเอาต์พุตบันทึกได้ ดูการระบุตัวเลือกไฟล์บันทึก เช่น
chown -R 100:101 ~/.edgemicro/
docker run -P -p 8000:8000 -d --name edgemicro
-v /var/tmp:/opt/apigee/logs
-e EDGEMICRO_PROCESS=1
-e EDGEMICRO_ORG=docs
-e EDGEMICRO_ENV=test
-e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0
-e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430
-e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG"
-e SERVICE_NAME=edgemicro
--security-opt=no-new-privileges
--cap-drop=ALL
gcr.io/apigee-microgateway/edgemicroวิธีตรวจสอบว่าคอนเทนเนอร์ทำงานอยู่หรือไม่
docker ps
คุณควรเห็นเอาต์พุตคล้ายกับตัวอย่างต่อไปนี้
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b92e082ea9c edgemicro "/tmp/entrypoint.sh" 12 minutes ago Up 12 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:32775->8443/tcp edgemicro
การระบุตัวเลือกเอาต์พุตของไฟล์บันทึก
พารามิเตอร์การกำหนดค่า Edge Microgateway to_console ช่วยให้คุณเลือกส่งข้อมูลบันทึกไปยังเอาต์พุตมาตรฐานแทนที่จะส่งไปยังไฟล์บันทึกได้ หากทำตามขั้นตอนเพื่อเรียกใช้ Edge Microgateway ในคอนเทนเนอร์ Docker คอนเทนเนอร์จะเปลี่ยนเส้นทาง stdout และเอาต์พุตข้อผิดพลาดไปยังไฟล์ที่อยู่ในคอนเทนเนอร์ที่ตำแหน่ง
${APIGEE_ROOT}/logs/edgemicro.logโดยค่าเริ่มต้นหากต้องการป้องกันไม่ให้ระบบส่งข้อมูลบันทึกไปยัง
edgemicro.logให้ใช้ตัวแปรLOG_CONSOLE_OUTPUT_TO_FILEเมื่อเรียกใช้คอนเทนเนอร์ตารางต่อไปนี้อธิบายลักษณะการทำงานของเอาต์พุตบันทึกเมื่อใช้
LOG_CONSOLE_OUTPUT_TO_FILEกับto_consoleto_console: trueLOG_CONSOLE_OUTPUT_TO_FILE=false- ระบบจะไม่ส่งบันทึกไปยังไฟล์บันทึกของ Edge Microgateway ตามที่อธิบายไว้ในการจัดการไฟล์บันทึก
- ระบบจะไม่ส่งบันทึกไปยังไฟล์
edgemicro.log
to_console: trueLOG_CONSOLE_OUTPUT_TO_FILE=true- ระบบจะไม่ส่งบันทึกไปยังไฟล์บันทึกของ Edge Microgateway ตามที่อธิบายไว้ในการจัดการไฟล์บันทึก
- ระบบจะส่งบันทึกลงในไฟล์
edgemicro.log
to_console: falseLOG_CONSOLE_OUTPUT_TO_FILE=true- ระบบจะส่งบันทึกลงในไฟล์บันทึกของ Edge Microgateway ตามที่อธิบายไว้ในการจัดการไฟล์บันทึก
- ระบบจะส่งบันทึกลงในไฟล์
edgemicro.log
การทดสอบการเรียก API
หลังจากเริ่ม Edge Microgateway ในคอนเทนเนอร์แล้ว คุณจะเรียก API ไปยัง Edge Microgateway ได้ ตัวอย่างเช่น หากเส้นทางฐานของ API คือ
/hellohttp://localhost:8000/hello
ตัวอย่างเอาต์พุต
{"error":"missing_authorization","error_description":"Missing Authorization header"}หากเห็นการตอบกลับนี้ แสดงว่า Edge Microgateway จัดการการเรียก API ได้สำเร็จ อย่างไรก็ตาม โดยค่าเริ่มต้น Edge Microgateway จะต้องใช้คีย์ API ในการตรวจสอบสิทธิ์ ในส่วนถัดไป คุณจะทดสอบ API ด้วยคีย์ API ที่ถูกต้อง
ทดสอบ API ด้วยคีย์ API ที่ถูกต้อง
ใน UI ของ Edge ให้ไปที่แอปสำหรับนักพัฒนาซอฟต์แวร์ที่คุณสร้างไว้ก่อนหน้านี้ ในหน้าแอปของนักพัฒนาซอฟต์แวร์ ให้แสดงคีย์ผู้ใช้และคัดลอก ค่านี้คือคีย์ API คุณจะใช้คีย์นี้เพื่อทำการเรียก API ที่มีการตรวจสอบสิทธิ์
เรียก API ด้วยส่วนหัว
x-api-keyดังนี้ ค่าคีย์ผู้ใช้ที่คุณ คัดลอกจากแอปนักพัฒนาซอฟต์แวร์คือคีย์ API โดยค่าเริ่มต้น Edge Microgateway จะคาดหวังให้คุณส่งคีย์ในส่วนหัวที่ชื่อx-api-keyดังนี้curl -i http://localhost:8000/hello -H "x-api-key:apikey"
เช่น
curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz"
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียก API ที่มีการตรวจสอบสิทธิ์ผ่าน Edge Microgateway ด้วยคีย์ API และโทเค็น OAuth โปรดดูส่วนที่ 4: รักษาความปลอดภัย Edge Microgateway
การหยุด Edge Microgateway
ใช้คำสั่ง Docker ต่อไปนี้เพื่อหยุด Edge Microgateway
docker stop edgemicroการรีสตาร์ท Edge Microgateway
หลังจากหยุด Edge Microgateway แล้ว คุณจะรีสตาร์ทได้ด้วยคำสั่ง Docker นี้
docker start edgemicroการใช้ TLS ในคอนเทนเนอร์ Docker
ส่วนนี้จะอธิบายวิธีกำหนดค่า TLS สำหรับ Edge Microgateway ที่ทำงาน ในคอนเทนเนอร์ Docker คุณสามารถกำหนดค่าเซิร์ฟเวอร์ Edge Microgateway ให้ใช้ TLS สำหรับคำขอขาเข้า (ทิศทางเหนือ) และกำหนดค่า Edge Microgateway ให้เป็นไคลเอ็นต์ TLS สำหรับคำขอขาออกไปยังปลายทางเป้าหมาย (ทิศทางใต้)
ตำแหน่งที่จะวางไฟล์ใบรับรอง
คอนเทนเนอร์ Docker ที่เรียกใช้ Edge Microgateway มีจุดต่อเชื่อมใน
/opt/apigee/.edgemicroเมื่อกำหนดค่า Edge Microgateway ให้ใช้ใบรับรอง TLS คุณจะทำให้ไฟล์ใบรับรองพร้อมใช้งานในจุดต่อเชื่อมนั้นและอ้างอิงถึงไฟล์เหล่านั้นในไฟล์การกำหนดค่า Edge Microgateway ได้ โดยปกติแล้วไฟล์กำหนดค่านี้จะอยู่ในไดเรกทอรี$HOME/.edgemicroและมีชื่อว่าyour_org-your_env-config.yamlเช่น... edgemicro: ssl: key: /opt/apigee/.edgemicro/southbound/tls.key cert: /opt/apigee/.edgemicro/southbound/tls.crt ...การใช้ CA ที่ Node.js ไม่เชื่อถือ
หากคุณใช้ผู้ออกใบรับรอง (CA) ที่ Node.js ไม่เชื่อถือโดยค่าเริ่มต้น (เช่น กรณีของใบรับรองแบบ Self-signed) ให้พิจารณาใช้พารามิเตอร์
NODE_EXTRA_CA_CERTSเมื่อเรียกใช้คอนเทนเนอร์ตั้งค่าพารามิเตอร์นี้เป็นเส้นทางไปยังไฟล์ที่มีใบรับรองที่เชื่อถือได้อย่างน้อย 1 รายการในรูปแบบ PEM ดูวิธีใช้พารามิเตอร์นี้ได้ที่ตัวอย่างวิธีกำหนดค่า TLS ขาออกและวิธีกำหนดค่า TLS ขาเข้า
เช่น
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v $HOME/.edgemicro:/opt/apigee/.edgemicro \ -v $HOME/.edgemicro:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \ -e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicroดูเรียกใช้ Edge Micro เป็นคอนเทนเนอร์ Docker ด้วย
การปิดการตรวจสอบ TLS
แม้ว่าเราจะไม่แนะนำ แต่ในบางกรณี คุณอาจต้องการปิดใช้การตรวจสอบ TLS สำหรับ Edge Microgateway ที่ทำงานในคอนเทนเนอร์ ความสามารถในการปิดใช้ TLS ไม่ได้สร้างไว้ในคอนเทนเนอร์ Docker ของ Edge Microgateway โดยค่าเริ่มต้น หากต้องการทำงานนี้ให้เสร็จสมบูรณ์ คุณต้องสร้างอิมเมจ Docker ที่กำหนดเองสำหรับ Edge Microgateway ด้านล่างนี้ เป็นวิธีการทั่วไปในการสร้างอิมเมจที่กำหนดเองและปิดการตรวจสอบ TLS
โคลนหรือดาวน์โหลดที่เก็บแหล่งที่มาของ Edge Microgateway จาก
https://github.com/apigee-internal/microgatewaycdไปยังไดเรกทอรีmicrogateway/kubernetes/docker/edgemicroในไดเรกทอรีซอร์สโค้ดเช่น
cd $HOME/git/microgateway/kubernetes/docker/edgemicroเปิดไฟล์
entrypoint.shแล้วแก้ไขโค้ดเพื่อยอมรับตัวแปรสภาพแวดล้อมNODE_TLS_REJECT_UNAUTHORIZEDต่อมาเมื่อเรียกใช้คอนเทนเนอร์ คุณจะต้องระบุค่าสำหรับตัวแปรนี้สร้างคอนเทนเนอร์ Docker
docker build -t edgemicro .เมื่อเรียกใช้คอนเทนเนอร์ ให้ระบุตัวเลือก
-e NODE_TLS_REJECT_UNAUTHORIZED = 1เช่น
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v $HOME/.edgemicro:/opt/apigee/.edgemicro \ -v $HOME/.edgemicro:/opt/apigee/logs \ -e NODE_TLS_REJECT_UNAUTHORIZED = 1 \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=ac36574905fb54fdae65fc5433e831bec2680efb98220a355f2e917e52973c \ -e EDGEMICRO_SECRET=aac81dff6c326eaa222d53c15c8841fa78ea863bf4472568c9ce2d80a3bc56 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicroตัวอย่าง: วิธีกำหนดค่า TLS ขาออก
ส่วนนี้จะอธิบายวิธีตั้งค่าการเชื่อมต่อ TLS ขาเข้า (ขาขึ้น) ในเซิร์ฟเวอร์ Edge Microgateway TLS ขาออกช่วยให้ไคลเอ็นต์ใช้ HTTPS เมื่อทำการเรียก API ไปยัง Edge Microgateway ได้ ตัวอย่างด้านล่างใช้ใบรับรอง Self-signed
1. ขั้นตอนการตั้งค่าเริ่มต้น
- ค้นหาไฟล์
openssl.cnfในระบบ เช่น/etc/ssl/openssl.cnf - เปิดไฟล์
opensssl.cnfเพื่อแก้ไข ตรวจสอบว่ามี
req_extensionsในไฟล์การกำหนดค่า ตัวอย่างเช่น คุณ ควรมีข้อมูลที่คล้ายกับข้อมูลต่อไปนี้ในไฟล์[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEnciphermentเพิ่มส่วนต่อไปนี้ลงใน
openssl.cnfเพื่อสร้างแอตทริบิวต์ SNI ที่ถูกต้อง[ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1ตัวอย่างไฟล์
opensssl.cnf[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = www.example.com DNS.2 = example.com DNS.3 = localhost DNS.4 = localhost.localdomain DNS.5 = 127.0.0.1 DNS.6 = ::1 DNS.7 = fe80::1ทำตามขั้นตอนที่ระบุไว้ในส่วนข้อกำหนดเบื้องต้นเพื่อเริ่มต้นและ กำหนดค่า Edge Microgateway หากยังไม่ได้ดำเนินการ เมื่อเสร็จแล้ว คุณ ควรสร้างพร็อกซีที่รับรู้ Edge Microgateway, ผลิตภัณฑ์ API, นักพัฒนาแอป และแอปของนักพัฒนาแอป นอกจากนี้ คุณควรเรียกใช้คำสั่ง
edgemicro configureและได้รับคีย์และรหัสลับ
2. สร้างใบรับรองที่ลงนามด้วยตนเอง
จากนั้นสร้างใบรับรองและคีย์ที่คุณจะต้องใช้เพื่อสร้าง TLS โดยทำดังนี้
cdไปยังไดเรกทอรี$HOME/.edgemicroสร้างสคริปต์ Bash ต่อไปนี้ คุณตั้งชื่อได้ตามต้องการ ตัวอย่างเช่น
keygen.sh#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
ในไฟล์ Bash ให้ตรวจสอบว่าเส้นทางไปยังไฟล์
openssl.cnfถูกต้องเรียกใช้ไฟล์ Bash ระบบจะแจ้งให้คุณระบุข้อมูลใบรับรอง โปรดใช้
localhostสำหรับชื่อทั่วไปตรวจสอบว่ามีการสร้างไฟล์ต่อไปนี้
rootca.keyrootca.pemtls.keytls.csrrootca.srltls.crt
3. แก้ไขไฟล์การกำหนดค่า Edge Microgateway
เปิดไฟล์การกำหนดค่า Edge Micro ในโปรแกรมแก้ไข เช่น
vi $HOME/.edgemicro/myorg-test-config.yamlแก้ไข Stanza
edgemicroดังนี้ โปรดทราบว่าคุณกำลังทำการเปลี่ยนแปลง แอตทริบิวต์portและsslดังนี้edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...เรียกใช้คำสั่งต่อไปนี้เพื่อเข้ารหัส base64 ไฟล์การกำหนดค่า Edge Microgateway ซึ่งอยู่ใน
$HOME/.edgemicroexport EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
โดย
your_orgและyour_envคือองค์กรและสภาพแวดล้อมที่คุณใช้เมื่อ เรียกใช้คำสั่งedgemicro configอย่าลืมใส่เครื่องหมายแบ็กทิก (`) รอบคำสั่ง เช่น
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
ดูเรียกใช้ Edge Micro เป็นคอนเทนเนอร์ Docker ด้วย
4. เรียกใช้คอนเทนเนอร์
เรียกใช้คำสั่งต่อไปนี้เพื่อเรียกใช้คอนเทนเนอร์ Docker ด้วย Edge Microgateway
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ gcr.io/apigee-microgateway/edgemicro:latest
โปรดทราบพารามิเตอร์ต่อไปนี้ที่ใช้ในคำสั่ง ซึ่งแตกต่างจากคำสั่งพื้นฐานที่อธิบายไว้ในเรียกใช้ Edge Micro เป็นคอนเทนเนอร์ Docker
- ตั้งค่า
portเป็น8443 - ใช้การติดตั้งโวลุ่มเพื่อติดตั้งไฟล์คีย์และไฟล์ใบรับรอง
- ตัวแปร
NODE_EXTRA_CA_CERTSใช้เพื่อเพิ่ม CA ที่กำหนดเอง (ตามที่จำเป็นในกรณีของใบรับรองที่ลงนามด้วยตนเอง)
- ตั้งค่า
5. ทดสอบการกำหนดค่า TLS
เรียกใช้คำสั่ง cURL ต่อไปนี้เพื่อทดสอบการตั้งค่า แทนที่ basepath และคีย์ API ในคำสั่ง ตัวอย่างต่อไปนี้ถือว่าคุณอยู่ในไดเรกทอรีที่มี
rootca.pemและพร็อกซีที่คุณสร้างมีเส้นทางฐาน/hellocurl -v https://localhost:8443/hello --cacert rootca.pem \ -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"เอาต์พุต cURL แบบละเอียดจะแสดงแต่ละขั้นตอนของ การแฮนด์เชค TLS หากเห็นการตอบกลับ HTTP 200 แสดงว่าการกำหนดค่าสำเร็จ
* Trying ::1...ey:Az82fdnfONVCOOE4NKhajxAboDgA3FAo" * TCP_NODELAY set * Connected to localhost (::1) port 8443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: rootca.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use http/1.1 * Server certificate: * subject: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * start date: Dec 14 22:35:28 2018 GMT * expire date: Oct 3 22:35:28 2021 GMT * common name: localhost (matched) * issuer: C=US; ST=CO; L=Boulder; O=Docs; OU=Docs; CN=localhost; emailAddress=docs@apigee.com * SSL certificate verify ok. > GET /hello HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key:Az82fdnfaONVCOE4NKhajxAboDA3FAo > < HTTP/1.1 200 OK < x-powered-by: Apigee < access-control-allow-origin: * < x-frame-options: ALLOW-FROM RESOURCE-URL < x-xss-protection: 1 < x-content-type-options: nosniff < content-type: text/plain; charset=utf-8 < etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw" < date: Fri, 14 Dec 2018 22:43:13 GMT < via: 1.1 google < alt-svc: clear < x-response-time: 1325 < Connection: keep-alive < Transfer-Encoding: chunked < * Connection #0 to host localhost left intact Hello, Guest!
ตัวอย่าง: วิธีกำหนดค่า TLS ขาออก
ส่วนนี้อธิบายวิธีตั้งค่าการเชื่อมต่อ TLS ขาออกระหว่างเซิร์ฟเวอร์ Edge Microgateway กับแอปพลิเคชันเป้าหมายแบ็กเอนด์ ตัวอย่างด้านล่างใช้ ใบรับรองแบบ Self-signed
1. ขั้นตอนการตั้งค่าเบื้องต้น
- ค้นหาไฟล์
openssl.cnfในระบบ เช่น/etc/ssl/openssl.cnf - เปิดไฟล์
opensssl.cnfเพื่อแก้ไข ตรวจสอบว่ามี
req_extensionsในไฟล์การกำหนดค่า ตัวอย่างเช่น คุณ ควรมีข้อมูลที่คล้ายกับข้อมูลต่อไปนี้ในไฟล์[ req ] ... req_extensions = v3_req ... [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEnciphermentเพิ่มส่วนต่อไปนี้ลงใน
openssl.cnfเพื่อสร้างแอตทริบิวต์ SNI ที่ถูกต้อง[ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1ตัวอย่างไฟล์
opensssl.cnf[ req ] distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req [ v3_req ] extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) localityName = Locality Name (eg, city) 0.organizationName = Organization Name (eg, company) organizationalUnitName = Organizational Unit Name (eg, section) commonName = Common Name (eg, fully qualified host name) commonName_max = 64 emailAddress = Email Address emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 [ alt_names ] DNS.1 = helloworld DNS.2 = localhost DNS.3 = localhost.localdomain DNS.4 = 127.0.0.1 DNS.5 = ::1 DNS.6 = fe80::1เรียกใช้คำสั่ง
edgemicro configureedgemicro configure -o your_org -e your_env -u your_username
ดูรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่าได้ที่ส่วนที่ 1: กำหนดค่า Edge Microgateway
คัดลอกข้อมูลเข้าสู่ระบบคีย์และลับที่ส่งคืนจาก
edgemicro configureคุณจะต้องใช้ค่าเหล่านี้เพื่อเรียกใช้คอนเทนเนอร์ เช่นThe following credentials are required to start edge micro key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0 secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
2. สร้างแอปพลิเคชันเป้าหมาย Node.js
cdไปยังไดเรกทอรี.edgemicroสร้างสคริปต์ Bash ต่อไปนี้ คุณตั้งชื่อได้ตามต้องการ ตัวอย่างเช่น
keygen.sh#!/bin/bash # generate ca openssl genrsa -out rootca.key 2048 openssl req -x509 -new -nodes -key rootca.key -sha256 -days 1024 -out rootca.pem # generate key openssl genrsa -out tls.key 2048 openssl req -new -key tls.key -out tls.csr # sign cert openssl x509 -req -in tls.csr -CA rootca.pem -CAkey rootca.key -CAcreateserial -out tls.crt -days 1024 -sha256 -extensions 'v3_req' -extfile path/openssl.cnf
ในไฟล์ Bash ให้ตรวจสอบว่าเส้นทางไปยังไฟล์
openssl.cnfถูกต้องเรียกใช้ไฟล์ Bash ระบบจะแจ้งให้คุณระบุข้อมูลใบรับรอง โปรดใช้
hellworldสำหรับชื่อทั่วไปตรวจสอบว่ามีการสร้างไฟล์ต่อไปนี้
rootca.keyrootca.pemtls.keytls.csrrootca.srltls.crt
สร้างไฟล์ใหม่ชื่อ
server.js'use strict'; const express = require('express'); const https = require('https'); const fs = require('fs'); const options = { key: fs.readFileSync("tls.key"), cert: fs.readFileSync("tls.crt") }; // Constants const PORT = 9443; const HOST = '0.0.0.0'; // App const app = express(); app.get('/', (req, res) => { res.send('Hello world\n'); }); https.createServer(options, app).listen(PORT);สร้างไฟล์
package.jsonในไดเรกทอรีเดียวกับserver.jsเช่น{ "name": "helloworld", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.16.4", "fs": "0.0.1-security", "https": "^1.0.0" } }เรียกใช้
npm installเพื่อรับการอ้างอิงสร้าง Dockerfile ใหม่ในไดเรกทอรีเดียวกับ
server.jsโดยที่WORKDIRคือเส้นทางไปยังรูทของแอป Node.jsFROM node:8-alpine WORKDIR path-to-your-node-app COPY package*.json ./ RUN npm install COPY . . EXPOSE 9443 CMD [ "npm", "start" ]
สร้างอิมเมจ Docker โดยใช้คำสั่งต่อไปนี้
docker build -t helloworld .เปิดแอปตัวอย่างโดยทำดังนี้
docker run -P -p 9443:9443 --name helloworld helloworld
3. สร้างเอนทิตีใน Apigee Edge
สร้างพร็อกซีที่รับรู้ Edge Microgateway ด้วยการตั้งค่าต่อไปนี้ ดูข้อมูลเพิ่มเติมได้ที่สร้างพร็อกซี API ที่รับรู้ Edge Microgateway ใน Edge
- ชื่อพร็อกซี:
edgemicro_local - การแก้ไข:
1 - Basepath:
/local - เป้าหมาย:
https://helloworld:9443
- ชื่อพร็อกซี:
สร้างผลิตภัณฑ์ API ดูรายละเอียดได้ที่สร้างผลิตภัณฑ์
สร้างนักพัฒนาแอป โปรดดูรายละเอียดที่หัวข้อสร้างนักพัฒนาแอป
สร้างแอปนักพัฒนาซอฟต์แวร์ ดูรายละเอียดได้ที่สร้างแอปนักพัฒนาซอฟต์แวร์
4. เรียกใช้คอนเทนเนอร์
เปิดไฟล์การกำหนดค่า Edge Micro ในโปรแกรมแก้ไข เช่น
vi $HOME/.edgemicro/myorg-test-config.yamlแก้ไข Stanza
edgemicroดังนี้ โปรดทราบว่าคุณกำลังทำการเปลี่ยนแปลง แอตทริบิวต์portและsslดังนี้edge_config: ... edgemicro: port: 8443 max_connections: 1000 config_change_poll_interval: 600 ssl: key: /opt/apigee/.edgemicro/tls.key cert: /opt/apigee/.edgemicro/tls.crt passphrase: admin123 rejectUnauthorized: true requestCert: false logging: ...เรียกใช้คำสั่งต่อไปนี้เพื่อเข้ารหัส base64 ไฟล์การกำหนดค่า Edge Microgateway ที่อยู่ใน
$HOME/.edgemicroexport EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
โดย
your_orgและyour_envคือองค์กรและสภาพแวดล้อมที่คุณใช้เมื่อ เรียกใช้คำสั่งedgemicro configอย่าลืมใส่เครื่องหมายแบ็กทิก (`) รอบคำสั่ง เช่น
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
เรียกใช้คำสั่งต่อไปนี้เพื่อเริ่ม Edge Microgateway ในคอนเทนเนอร์ Docker
chown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
5. ทดสอบการกำหนดค่า TLS
เรียกใช้คำสั่ง cURL ต่อไปนี้เพื่อทดสอบการตั้งค่า แทนที่ เส้นทางฐานที่คุณใช้ในพร็อกซีที่รองรับ Microgateway และ คีย์ API ที่ได้จากแอปนักพัฒนาซอฟต์แวร์ที่คุณสร้างใน Apigee Edge เช่น
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -vคุณควรเห็นข้อผิดพลาดนี้
... * subject: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * start date: Dec 10 02:12:22 2018 GMT * expire date: Sep 29 02:12:22 2021 GMT * issuer: C=CA; ST=Ontario; L=Toronto; O=Google Canada; OU=Google Cloud Platform; CN=edgemicro; emailAddress=srinandans@google.com * SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway. > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 502 Bad Gateway < Date: Wed, 12 Dec 2018 05:25:01 GMT < Connection: keep-alive < Content-Length: 93 < * Connection #0 to host localhost left intact {"message":"unable to verify the first certificate","code":"UNABLE_TO_VERIFY_LEAF_SIGNATURE"}เรียกใช้ Edge Microgateway อีกครั้ง แต่คราวนี้ให้เพิ่มตัวแปร
NODE_EXTRA_CA_CERTSchown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8443:8443 -d --name edgemicro \ -v path_to_your_edgemicro_dir:/opt/apigee/.edgemicro \ -v path_to_your_logs_dir:/opt/apigee/logs \ -e NODE_EXTRA_CA_CERTS=/opt/apigee/.edgemicro/rootca.pem \ -e EDGEMICRO_PORT=8443 \ -e EDGEMICRO_ORG=$EDGEMICRO_ORG \ -e EDGEMICRO_ENV=$EDGEMICRO_ENV \ -e EDGEMICRO_KEY=$EDGEMICRO_KEY \ -e EDGEMICRO_SECRET=$EDGEMICRO_SECRET \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ --link helloworld:helloworld gcr.io/apigee-microgateway/edgemicro
เรียกใช้คำสั่ง cURL ต่อไปนี้ แทนที่ basepath และคีย์ API ของคุณเช่นเดิม เช่น
curl https://localhost:8443/local -k -H "x-api-key: xxxx" -vตรวจสอบเอาต์พุต เมื่อสำเร็จ คุณจะได้รับการตอบกลับสถานะ HTTP 200 ดังนี้
... > GET /local HTTP/1.1 > Host: localhost:8443 > User-Agent: curl/7.54.0 > Accept: */* > x-api-key: 9fVC65pFj8LrmlPmVyxFjx4KgAHTxqSd > < HTTP/1.1 200 OK < x-powered-by: Express < content-type: text/html; charset=utf-8 < etag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0" < date: Wed, 12 Dec 2018 05:49:28 GMT < x-response-time: 421 < Connection: keep-alive < Transfer-Encoding: chunked < Hello world
การเพิ่มปลั๊กอินที่กำหนดเอง
คุณเพิ่มฟีเจอร์และความสามารถใหม่ๆ ลงใน Microgateway ได้โดยการเขียนปลั๊กอินที่กำหนดเอง ปลั๊กอินที่กำหนดเองช่วยให้คุณโต้ตอบกับคำขอและการตอบกลับที่ไหลผ่าน Microgateway ได้แบบเป็นโปรแกรม
คุณมี 2 ตัวเลือกในการติดตั้งใช้งานปลั๊กอินกับอินสแตนซ์ Edge Microgateway ที่ทำงานในคอนเทนเนอร์ Docker ดังนี้
ส่วนที่เหลือของส่วนนี้จะถือว่าคุณคุ้นเคยกับการเขียนและการกำหนดค่าปลั๊กอิน สำหรับการตั้งค่า Edge Microgateway มาตรฐาน หากไม่เป็นเช่นนั้น โปรดดูพัฒนาปลั๊กอินที่กำหนดเอง
ตัวเลือก ก: เมานต์ไดเรกทอรีปลั๊กอินบนวอลุ่ม
(เพิ่มใน v.2.5.27) ขั้นตอนการเพิ่มปลั๊กอินผ่านการติดตั้งโวลุ่มจะคล้ายกับขั้นตอนที่จำเป็นในการเพิ่มปลั๊กอินที่กำหนดเองลงใน Edge Microgateway เมื่อเรียกใช้คอนเทนเนอร์ Docker คุณจะต่อเชื่อมไดเรกทอรีปลั๊กอินในระบบภายใน (วอลุ่ม) ที่จุดต่อเชื่อมคอนเทนเนอร์ ซึ่งก็คือ
/opt/apigee/pluginsได้ จากนั้นระบุไดเรกทอรีของโวลุ่มในเครื่องในไฟล์การกำหนดค่า Edge Microgatewayขั้นตอนต่อไปนี้แสดงวิธีใช้จุดต่อเชื่อม Docker เพื่อรวมปลั๊กอินที่กำหนดเอง
หยุด Edge Microgateway
edgemicro stopสร้างไดเรกทอรีสำหรับปลั๊กอินที่กำหนดเอง เช่น สร้าง
$HOME/edgemicro/custom/pluginsเพิ่มไดเรกทอรีปลั๊กอินที่กำหนดเองลงในไฟล์การกำหนดค่า Edge Microgateway เช่น
plugins: dir: $HOME/edgemicro/custom/plugins sequence: - oauth - response-uppercase ````เขียนและทดสอบปลั๊กอินตามวิธีการในเขียนปลั๊กอินอย่างง่าย อย่าลืม วางโค้ดปลั๊กอินในโครงสร้างไดเรกทอรีที่เหมาะสม เช่น
custom | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.jsonเรียกใช้คอนเทนเนอร์ Docker ด้วยคำสั่งที่คล้ายกับคำสั่งต่อไปนี้ โดยคุณใช้ตัวเลือก
-vเพื่อติดตั้งไดเรกทอรีปลั๊กอินในวอลุ่ม Docker ในคำสั่งตัวอย่างต่อไปนี้ ไดเรกทอรีปลั๊กอิน$HOME/edgemicro/custom/plugins(ที่เก็บปลั๊กอินที่กำหนดเอง) จะแมปกับจุดต่อเชื่อมของคอนเทนเนอร์/opt/apigee/pluginschown -R 100:101 ~/.edgemicro/ \ docker run -P -p 8000:8000 -d --name edgemicro \ -v /var/tmp:/opt/apigee/logs \ -v $HOME/edgemicro/custom/plugins:/opt/apigee/plugins \ -e EDGEMICRO_PROCESSES=1 \ -e EDGEMICRO_ORG=jdoe \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=39c4b561100cd7f258768d1072f3e1d7c17b5f36a18fe89972bb5c9ce7e58fb \ -e EDGEMICRO_SECRET=f5f9e239a38b4e6cc99c2aa067716a84aebdcff9580a7925fc500e402b1a5fa \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicro \ --security-opt=no-new-privileges \ --cap-drop=ALL gcr.io/apigee-microgateway/edgemicro:latestเรียก API เพื่อทดสอบปลั๊กอิน
ดูข้อมูลเพิ่มเติมได้ที่ VOLUME [ระบบไฟล์ที่ใช้ร่วมกัน]
ตัวเลือก ข: สร้างปลั๊กอินลงในคอนเทนเนอร์
ในตัวเลือกนี้ คุณจะสร้างปลั๊กอินลงในคอนเทนเนอร์
1. แพ็กเกจปลั๊กอิน
เขียนและทดสอบปลั๊กอินตามวิธีการในเขียนปลั๊กอินอย่างง่าย
วางโค้ดปลั๊กอินในโครงสร้างไดเรกทอรีที่เหมาะสม ไดเรกทอรีปลั๊กอินต้องมีโครงสร้างที่กำหนด ตัวอย่างต่อไปนี้แสดงโครงสร้างที่คุณต้องทำตาม โดย
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/
2. สร้างอิมเมจ Docker
จากนั้นสร้าง Dockerfile เพื่อเพิ่มโค้ดปลั๊กอินลงในอิมเมจ Edge Microgateway
- ในไดเรกทอรีเดียวกันกับที่ไฟล์ ZIP อยู่ ให้สร้างไฟล์ใหม่ชื่อ
Dockerfile เพิ่มโค้ดต่อไปนี้ลงใน
Dockerfileแล้วบันทึกไฟล์USER root RUN apk update && \ apk upgrade && \ apk add zipapk add zip && \ mkdir /opt/apigee/customplugins && \ chown apigee:apigee /opt/apigee/customplugins COPY plugins.zip /opt/apigee/customplugins RUN su - apigee -c "unzip /opt/apigee/customplugins/plugins.zip -d /opt/apigee/customplugins" EXPOSE 8000 EXPOSE 8443 USER apigee ENTRYPOINT ["entrypoint"]สร้างอิมเมจ Docker ของ Edge Microgateway ใหม่ด้วยปลั๊กอินของคุณ
docker build -t image-name .เช่น
docker build -t edgemicroplugins .
3. อัปเดตการกำหนดค่า Edge Microgateway
เมื่อแพ็กเกจปลั๊กอินแล้ว คุณต้องเพิ่มปลั๊กอินลงในไฟล์การกำหนดค่า Edge Microgateway
เปิดไฟล์การกำหนดค่า Edge Microgateway ในโปรแกรมแก้ไข
$HOME/.edgemicro/org-env-config.yaml
เช่น
vi $HOME/.edgemicro/myorg-test-config.yaml
เพิ่มไดเรกทอรีปลั๊กอินลงในไฟล์การกำหนดค่า ในตัวอย่างต่อไปนี้ แอตทริบิวต์
dirจะระบุตำแหน่งของโค้ดปลั๊กอิน (ซึ่งคุณระบุไว้ใน Dockerfile) นอกจากนี้ คุณต้องระบุชื่อของไดเรกทอรีปลั๊กอินด้วย ซึ่งในตัวอย่างด้านล่างคือresponse-uppercaseedgemicro: ... plugins: dir: /opt/apigee/plugins sequence: - oauth - response-uppercase
4. เริ่ม Microgateway
สุดท้าย คุณต้องเริ่ม Microgateway ในคอนเทนเนอร์
เรียกใช้คำสั่งต่อไปนี้เพื่อเข้ารหัสไฟล์การกำหนดค่า Edge Microgateway แบบ Base64 ซึ่งอยู่ใน
$HOME/.edgemicroexport EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/your_org-your_env-config.yaml`
โดย
your_orgและyour_envคือองค์กรและสภาพแวดล้อมที่คุณใช้เมื่อ เรียกใช้คำสั่งedgemicro configอย่าลืมใส่เครื่องหมายแบ็กทิก (`) รอบคำสั่ง เช่น
export EDGEMICRO_CONFIG=`base64 $HOME/.edgemicro/docs-test-config.yaml`
เรียกใช้ Edge Microgateway เป็นคอนเทนเนอร์ คำสั่งนี้จะตั้งค่าตัวแปรสภาพแวดล้อมหลายรายการ ที่รันไทม์ของคอนเทนเนอร์ใช้เพื่อเริ่ม Edge Microgateway ดังนี้
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=your_org \ -e EDGEMICRO_ENV=your_env \ -e EDGEMICRO_KEY=your_key \ -e EDGEMICRO_SECRET=your_secret \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins image_name
เช่น
docker run -P -p 8000:8000 -d --name edgemicroplugins \ -e EDGEMICRO_PLUGIN_DIR=/opt/apigee/customplugins/plugins \ -e EDGEMICRO_ORG=docs \ -e EDGEMICRO_ENV=test \ -e EDGEMICRO_KEY=d9c34e1aff68ed969273b016699eabf48780e4f652242e72fc88a23e21252cb0 \ -e EDGEMICRO_SECRET=3bc95a71c86a3c8ce04137fbcb788158731t51dfc6cdec13b7c05aa0bd969430 \ -e "EDGEMICRO_CONFIG=$EDGEMICRO_CONFIG" \ -e SERVICE_NAME=edgemicroplugins edgemicroplugins
เรียก API เพื่อทดสอบปลั๊กอิน
ทดสอบว่าโค้ดปลั๊กอินทำงานโดยการเรียก API และตรวจสอบว่าเอาต์พุตเป็นไปตามที่คาดไว้หรือไม่
curl -i http://localhost:8000/hello -H "x-api-key:apikey"
เช่น ปลั๊กอิน
response-uppercaseอาจแสดงคำตอบดังนี้curl -i http://localhost:8000/hello -H "x-api-key:PydUKRDGIXRqF2xh4usn1FLHbhGKVIz" HELLO, WORLD!