การใช้ Docker สำหรับ Edge Microgateway

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

หัวข้อนี้จะอธิบายวิธีเรียกใช้ 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-aware, ผลิตภัณฑ์ API, นักพัฒนาซอฟต์แวร์ และแอปนักพัฒนาซอฟต์แวร์ สำหรับคำแนะนำทั้งหมด โปรดดูสร้างเอนทิตีใน Apigee Edge

เรียกใช้ Edge Micro เป็นคอนเทนเนอร์ Docker

  1. ดาวน์โหลดอิมเมจ Docker สำหรับ Edge Microgateway:

    docker pull gcr.io/apigee-microgateway/edgemicro:latest
  2. ก่อนที่จะไปยังขั้นตอนถัดไป โปรดตรวจสอบว่าคุณได้ทำตามขั้นตอนทั้งหมดในส่วนข้อกำหนดเบื้องต้นแล้ว

  3. เรียกใช้คำสั่งต่อไปนี้เพื่อเข้ารหัส base64 สำหรับไฟล์การกำหนดค่า Edge Microgateway ที่อยู่ใน $HOME/.edgemicro

    export 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`
  4. เรียกใช้ Edge Microgateway เป็นคอนเทนเนอร์ คำสั่งนี้จะตั้งค่าตัวแปรสภาพแวดล้อมหลายรายการที่รันไทม์ของคอนเทนเนอร์ใช้เพื่อเริ่มต้น Edge Microgateway ดังนี้

    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 SERVICE_NAME=edgemicro \
    --security-opt=no-new-privileges \
    --cap-drop=ALL \
    gcr.io/apigee-microgateway/edgemicro:latest

    พารามิเตอร์

    พารามิเตอร์ คำอธิบาย
    -P เผยแพร่พอร์ตที่เปิดเผยทั้งหมดไปยังโฮสต์ โปรดดูเพิ่มเติมที่ข้อมูลอ้างอิงการเรียกใช้ Docker
    -p แมปพอร์ตเดียวหรือช่วงของพอร์ตอย่างชัดเจน โปรดดูเพิ่มเติมที่ข้อมูลอ้างอิงการเรียกใช้ Docker
    -d ทำงานในโหมดปลดออก โปรดดูเพิ่มเติมที่ข้อมูลอ้างอิงการเรียกใช้ Docker
    -v, --volume ระบุการต่อเชื่อมวอลุ่ม โปรดทราบว่าหากกำหนดค่า Edge Microgateway เพื่อใช้ TLS ในคอนเทนเนอร์ Docker คุณต้องเปิดเผยพอร์ต 8443 หาก ต่อเชื่อมไดเรกทอรีไฟล์บันทึก โปรดดูเพิ่มเติมที่ VOLUME [ระบบไฟล์ที่แชร์] โปรดดูเพิ่มเติมที่การใช้ TLS ในคอนเทนเนอร์ Docker
    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
    SERVICE_NAME หากคุณใช้ Kubernetes ระบบจะป้อนข้อมูลพารามิเตอร์นี้โดยอัตโนมัติ หรือ ตั้งค่าได้ตามต้องการ หากไม่ระบุชื่อ ระบบจะตั้งชื่อบริการเป็น default
    DEBUG ตั้งค่าเป็น * เพื่อเปิดใช้การแก้ไขข้อบกพร่อง
    HTTP_PROXY HTTPS_PROXY ใช้เมื่อ Edge Microgateway ทำงานหลังไฟร์วอลล์และเกตเวย์สื่อสารกับ Apigee Edge ไม่ได้ ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่า Edge Microgateway หลังไฟร์วอลล์ของบริษัท

    เช่น HTTP_PROXY=http://10.203.0.1:5187/

    NO_PROXY รายการโดเมนที่คั่นด้วยคอมมาซึ่ง Edge Microgateway ไม่ควรทำหน้าที่เป็นพร็อกซี สำหรับข้อมูลเพิ่มเติม โปรดดูที่การตั้งค่า Edge Microgateway เบื้องหลังไฟร์วอลล์ของบริษัท

    เช่น localhost,127.0.0.1,localaddress,.localdomain.com

    NODE_EXTRA_CA_CERTS (ไม่บังคับ) ใช้พารามิเตอร์นี้หากคุณใช้ CA ที่ Node.js ไม่เชื่อถือโดยค่าเริ่มต้น ตั้งค่าของพารามิเตอร์นี้เป็นเส้นทางไปยังไฟล์ที่มีใบรับรองที่เชื่อถือได้อย่างน้อย 1 รายการในรูปแบบ PEM โปรดดูรายละเอียดที่หัวข้อใบรับรอง TLS
    --security-opt (ไม่บังคับ) ตั้งค่าตัวเลือกความปลอดภัย Docker ที่ต้องการ โปรดดูการกำหนดค่าความปลอดภัยในเอกสารประกอบของ Docker
    --cap-drop (ไม่บังคับ) ตั้งค่าขีดจำกัดสำหรับความสามารถของ Linux ที่ได้รับอนุญาตในคอนเทนเนอร์ โปรดดูสิทธิ์รันไทม์และความสามารถของ Linux ในเอกสารของ Docker

    เช่น

    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
  5. วิธีตรวจสอบว่าคอนเทนเนอร์กำลังทำงานอยู่หรือไม่

    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
    

การทดสอบการเรียก API

หลังจากที่เริ่มใช้งาน Edge Microgateway ในคอนเทนเนอร์แล้ว คุณจะเรียก API ไปยังคอนเทนเนอร์นั้นได้ ตัวอย่างเช่น หากเส้นทางฐานของ API คือ /hello

http://localhost:8000/hello

ตัวอย่างเอาต์พุต:

{"error":"missing_authorization","error_description":"Missing Authorization header"}

หากคุณเห็นการตอบกลับนี้ แสดงว่า Edge Microgateway จัดการการเรียก API สำเร็จแล้ว อย่างไรก็ตาม Edge Microgateway ต้องใช้คีย์ API สำหรับการตรวจสอบสิทธิ์โดยค่าเริ่มต้น ในส่วนถัดไป คุณจะได้ทดสอบ API ด้วยคีย์ API ที่ถูกต้อง

ทดสอบ API ด้วยคีย์ API ที่ถูกต้อง

ใน Edge UI ให้ไปที่แอปนักพัฒนาซอฟต์แวร์ที่คุณสร้างก่อนหน้านี้ ในหน้าแอปนักพัฒนาซอฟต์แวร์ ให้แสดงคีย์ของผู้บริโภคและคัดลอกคีย์ ค่านี้คือคีย์ 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: Secure Edge Microgateway

การหยุด Microgateway ของ Edge

ใช้คำสั่ง 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 ขอบเขตทิศใต้

เช่น

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 ไม่ได้มีอยู่ในคอนเทนเนอร์ Edge Microgateway Docker โดยค่าเริ่มต้น คุณต้องสร้างอิมเมจ Docker ที่กำหนดเองสำหรับ Edge Microgateway เพื่อทำงานให้สำเร็จ ด้านล่างนี้คือวิธีการทั่วไปสำหรับการสร้างอิมเมจที่กำหนดเองและการปิดการตรวจสอบ TLS

  1. โคลนหรือดาวน์โหลดที่เก็บต้นทางของ Edge Microgateway จาก https://github.com/apigee-internal/microgateway

  2. cd ไปยังไดเรกทอรี microgateway/kubernetes/docker/edgemicro ในไดเรกทอรีซอร์สโค้ด

    เช่น

    cd $HOME/git/microgateway/kubernetes/docker/edgemicro
    
  3. เปิดไฟล์ entrypoint.sh และแก้ไขโค้ดเพื่อยอมรับตัวแปรสภาพแวดล้อม NODE_TLS_REJECT_UNAUTHORIZED หลังจากนั้น เมื่อคุณเรียกใช้คอนเทนเนอร์ คุณจะต้องระบุค่าของตัวแปรนี้

  4. สร้างคอนเทนเนอร์ Docker ด้วยคำสั่งต่อไปนี้

    docker build -t edgemicro .
    
  5. เมื่อคุณเรียกใช้คอนเทนเนอร์ ให้ระบุตัวเลือก -e NODE_TLS_REJECT_UNAUTHORIZED = 1 เช่น

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. ขั้นตอนการตั้งค่าเบื้องต้น

  1. ค้นหาไฟล์ openssl.cnf ในระบบของคุณ เช่น /etc/ssl/openssl.cnf
  2. เปิดไฟล์ opensssl.cnf เพื่อแก้ไข
  3. โปรดตรวจสอบว่ามี req_extensions อยู่ในไฟล์การกำหนดค่า ตัวอย่างเช่น คุณควรมีข้อมูลที่คล้ายกับข้อมูลต่อไปนี้ในไฟล์

    [ req ]
    ...
    req_extensions          = v3_req
    ...
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
  4. เพิ่ม stanza ต่อไปนี้ใน 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
    
  5. ทำตามขั้นตอนที่ระบุไว้ในส่วนข้อกำหนดเบื้องต้นเพื่อเริ่มต้นและกำหนดค่า Edge Microgateway หากยังไม่ได้ดำเนินการ เมื่อทำเสร็จแล้ว คุณควรสร้าง Edge Microgateway-aware Proxy, ผลิตภัณฑ์ API, นักพัฒนาซอฟต์แวร์ และแอปนักพัฒนาซอฟต์แวร์ นอกจากนี้ คุณควรเรียกใช้คำสั่ง edgemicro configure และรับคีย์และข้อมูลลับแล้ว

2. สร้างใบรับรองที่ลงนามด้วยตนเอง

ต่อไป ให้สร้างใบรับรองและคีย์ที่ต้องใช้สร้าง TLS โดยทำดังนี้

  1. cd ไปยังไดเรกทอรี $HOME/.edgemicro
  2. สร้างสคริปต์ 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
    
  3. ในไฟล์ Bash ให้ตรวจสอบว่าเส้นทางไปยังไฟล์ openssl.cnf ถูกต้อง

  4. เรียกใช้ไฟล์ Bash คุณจะได้รับแจ้งให้ใส่ข้อมูลใบรับรอง อย่าลืมใช้ localhost แทนชื่อทั่วไป

  5. ตรวจสอบว่าสร้างไฟล์ต่อไปนี้แล้ว

    • rootca.key
    • rootca.pem
    • tls.key
    • tls.csr
    • rootca.srl
    • tls.crt

3. แก้ไขไฟล์การกําหนดค่า Edge Microgateway

  1. เปิดไฟล์การกำหนดค่า Edge Micro ในตัวแก้ไข เช่น

    vi $HOME/.edgemicro/myorg-test-config.yaml
    
  2. แก้ไขกลุ่มข้อความ 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:
    ...
    
  3. ใช้คำสั่งต่อไปนี้เพื่อเข้ารหัส base64 สำหรับไฟล์การกำหนดค่า Edge Microgateway ที่อยู่ใน $HOME/.edgemicro

    export 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. เรียกใช้คอนเทนเนอร์

  1. เรียกใช้คำสั่งต่อไปนี้เพื่อเรียกใช้คอนเทนเนอร์ Docker ด้วย Edge Microgateway

    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
    
  2. โปรดสังเกตพารามิเตอร์ต่อไปนี้ที่ใช้ในคำสั่ง ซึ่งแตกต่างจากคำสั่งพื้นฐานที่อธิบายไว้ในเรียกใช้ Edge Micro เป็นคอนเทนเนอร์ Docker

    • ตั้งค่า port เป็น 8443
    • การต่อเชื่อมวอลุ่มใช้เพื่อต่อเชื่อมไฟล์คีย์และใบรับรอง
    • ตัวแปร NODE_EXTRA_CA_CERTS ใช้เพื่อเพิ่ม CA ที่กำหนดเอง (ตามความจำเป็นในกรณีของใบรับรองแบบ Self-signed)

5. ทดสอบการกำหนดค่า TLS

  1. เรียกใช้คำสั่ง cURL ต่อไปนี้เพื่อทดสอบการตั้งค่า แทนที่ Basepath และคีย์ API ในคำสั่ง ตัวอย่างต่อไปนี้จะถือว่าคุณอยู่ในไดเรกทอรีที่ rootca.pem อยู่ และพร็อกซีที่คุณสร้างมีเส้นทางฐาน /hello

    curl -v https://localhost:8443/hello --cacert rootca.pem \
    -H "x-api-key: Az82fdnfONVCOOE4NKhajxAboDgA3FAo"
    
  2. เอาต์พุต 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. ขั้นตอนการตั้งค่าเบื้องต้น

  1. ค้นหาไฟล์ openssl.cnf ในระบบของคุณ เช่น /etc/ssl/openssl.cnf
  2. เปิดไฟล์ opensssl.cnf เพื่อแก้ไข
  3. โปรดตรวจสอบว่ามี req_extensions อยู่ในไฟล์การกำหนดค่า ตัวอย่างเช่น คุณควรมีข้อมูลที่คล้ายกับข้อมูลต่อไปนี้ในไฟล์

    [ req ]
    ...
    req_extensions          = v3_req
    ...
    
    [ v3_req ]
    extendedKeyUsage = serverAuth, clientAuth, codeSigning, emailProtection
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    
  4. เพิ่ม stanza ต่อไปนี้ใน 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
    
  5. เรียกใช้คำสั่ง edgemicro configure

    edgemicro configure -o your_org -e your_env -u your_username

    โปรดดูรายละเอียดเพิ่มเติมเกี่ยวกับการกำหนดค่าในส่วนที่ 1: กำหนดค่า Edge Microgateway

  6. คัดลอกข้อมูลเข้าสู่ระบบของคีย์และข้อมูลลับที่ส่งคืนจาก edgemicro configure คุณจะต้องใช้ค่าเหล่านี้เพื่อเรียกใช้คอนเทนเนอร์ เช่น

    The following credentials are required to start edge micro
      key: d9c34e1aff68ed969273c016699eabf48780e4f652242e72fc88a43e21252cb0
      secret: 3bc95a71c86a3c8ce04537fbcb788158731t51dfc6cdec13b7c05aa0bd969430
    

2. สร้างแอปพลิเคชันเป้าหมาย Node.js

  1. cd ไปยังไดเรกทอรี .edgemicro

  2. สร้างสคริปต์ 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
    
  3. ในไฟล์ Bash ให้ตรวจสอบว่าเส้นทางไปยังไฟล์ openssl.cnf ถูกต้อง

  4. เรียกใช้ไฟล์ Bash คุณจะได้รับแจ้งให้ใส่ข้อมูลใบรับรอง อย่าลืมใช้ hellworld แทนชื่อทั่วไป

  5. ตรวจสอบว่าสร้างไฟล์ต่อไปนี้แล้ว

    • rootca.key
    • rootca.pem
    • tls.key
    • tls.csr
    • rootca.srl
    • tls.crt
  6. สร้างไฟล์ใหม่ชื่อ 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);
    
  7. สร้างไฟล์ 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"
      }
    }
    
  8. เรียกใช้ npm install เพื่อรับทรัพยากร Dependency

  9. สร้าง Dockerfile ใหม่ในไดเรกทอรีเดียวกับ server.js โดยที่ WORKDIR คือเส้นทางไปยังรูทของแอป Node.js:

    FROM node:8-alpine
    WORKDIR path-to-your-node-app
    COPY package*.json ./
    
    RUN npm install
    COPY . .
    EXPOSE 9443
    CMD [ "npm", "start" ]
    
  10. สร้างอิมเมจ Docker ด้วยคำสั่งต่อไปนี้

    docker build -t helloworld . 
    
  11. เริ่มแอปตัวอย่างด้วยคำสั่งต่อไปนี้

    docker run -P -p 9443:9443 --name helloworld helloworld
    

3. สร้างเอนทิตีบน Apigee Edge

  1. สร้างพร็อกซีที่รับรู้ถึง Edge Microgateway ด้วยการตั้งค่าเหล่านี้ ดูข้อมูลเพิ่มเติมได้ที่สร้างพร็อกซี Edge Microgateway-aware API ใน Edge

    • ชื่อพร็อกซี: edgemicro_local
    • การแก้ไข: 1
    • เส้นทางพื้นฐาน: /local
    • เป้าหมาย: https://helloworld:9443
  2. สร้างผลิตภัณฑ์ API โปรดดูรายละเอียดที่สร้างผลิตภัณฑ์

  3. สร้างนักพัฒนาซอฟต์แวร์ โปรดดูรายละเอียดที่หัวข้อสร้างนักพัฒนาซอฟต์แวร์

  4. สร้างแอปนักพัฒนาซอฟต์แวร์ โปรดดูรายละเอียดที่สร้างแอปนักพัฒนาซอฟต์แวร์

4. เรียกใช้คอนเทนเนอร์

  1. เปิดไฟล์การกำหนดค่า Edge Micro ในตัวแก้ไข เช่น

    vi $HOME/.edgemicro/myorg-test-config.yaml
    
  2. แก้ไขกลุ่มข้อความ 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:
    ...
    
  3. ใช้คำสั่งต่อไปนี้เพื่อเข้ารหัส base64 สำหรับไฟล์การกำหนดค่า Edge Microgateway ที่อยู่ใน $HOME/.edgemicro

    export 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`
  4. เรียกใช้คำสั่งต่อไปนี้เพื่อเริ่ม Edge Microgateway ในคอนเทนเนอร์ Docker

    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

  1. เรียกใช้คำสั่ง cURL ต่อไปนี้เพื่อทดสอบการตั้งค่า แทนที่เส้นทางพื้นฐานที่คุณใช้ในพร็อกซี microgateway-aware และคีย์ 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"}
    
  2. เรียกใช้ Edge Microgateway อีกครั้ง แต่ครั้งนี้เพิ่มตัวแปร NODE_EXTRA_CA_CERTS

    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
    
  3. เรียกใช้คำสั่ง cURL ต่อไปนี้ แทนที่ Basepath และคีย์ API เหมือนก่อนหน้านี้ เช่น

    curl https://localhost:8443/local -k -H "x-api-key: xxxx" -v
    
  4. ตรวจสอบเอาต์พุต เมื่อเสร็จสมบูรณ์ คุณจะได้รับการตอบกลับสถานะ 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 ได้

คุณมี 2 ตัวเลือกในการทำให้ปลั๊กอินใช้งานได้ในอินสแตนซ์ Edge Microgateway ที่ทำงานในคอนเทนเนอร์ Docker ดังนี้

เนื้อหาที่เหลือของส่วนนี้จะสมมติว่าคุณคุ้นเคยกับการเขียนและกำหนดค่าปลั๊กอินสำหรับการตั้งค่า Edge Microgateway แบบมาตรฐาน หากยังไม่ได้สร้าง โปรดดูที่พัฒนาปลั๊กอินที่กำหนดเอง

ตัวเลือก 1: ต่อเชื่อมไดเรกทอรีปลั๊กอินบนวอลุ่ม

(เพิ่มใน v.2.5.27) ขั้นตอนการเพิ่มปลั๊กอินผ่านการต่อเชื่อมวอลุ่มจะคล้ายกับขั้นตอนที่จำเป็นในการเพิ่มปลั๊กอินที่กำหนดเองลงใน Edge Microgateway เมื่อเรียกใช้คอนเทนเนอร์ Docker คุณจะต่อเชื่อมไดเรกทอรีปลั๊กอินกับระบบภายใน (วอลุ่ม) บนจุดต่อเชื่อมคอนเทนเนอร์ ซึ่งก็คือ /opt/apigee/plugins ได้ จากนั้นระบุไดเรกทอรีวอลุ่มในเครื่องในไฟล์การกำหนดค่า Edge Microgateway

ขั้นตอนต่อไปนี้จะแสดงวิธีใช้จุดต่อเชื่อมของ Docker เพื่อรวมปลั๊กอินที่กำหนดเอง

  1. หยุด Edge Microgateway:

    edgemicro stop
    
  2. สร้างไดเรกทอรีสำหรับปลั๊กอินที่กำหนดเองของคุณ เช่น สร้าง

    $HOME/edgemicro/custom/plugins
    
  3. เพิ่มไดเรกทอรีปลั๊กอินที่กำหนดเองลงในไฟล์การกำหนดค่า Edge Microgateway เช่น

      plugins:
        dir: $HOME/edgemicro/custom/plugins
        sequence:
          - oauth
          - response-uppercase
      ````
    
  4. เขียนและทดสอบปลั๊กอินตามคำแนะนำในเขียนปลั๊กอินอย่างง่าย อย่าลืมวางโค้ดปลั๊กอินในโครงสร้างไดเรกทอรีที่เหมาะสม เช่น

    custom
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  5. เรียกใช้คอนเทนเนอร์ Docker ด้วยคำสั่งที่คล้ายกับคำสั่งต่อไปนี้ ซึ่งคุณจะใช้ตัวเลือก -v เพื่อต่อเชื่อมไดเรกทอรีปลั๊กอินบนวอลุ่ม Docker ในคำสั่งตัวอย่างต่อไปนี้ ไดเรกทอรีปลั๊กอิน $HOME/edgemicro/custom/plugins (ที่มีปลั๊กอินที่กำหนดเองอยู่) จะแมปกับจุดต่อเชื่อม /opt/apigee/plugins ของคอนเทนเนอร์

    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
    
  6. เรียก API เพื่อทดสอบปลั๊กอิน

โปรดดูข้อมูลเพิ่มเติมที่ VOLUME [shared filesystems]

ตัวเลือก ข: สร้างปลั๊กอินลงในคอนเทนเนอร์

ในตัวเลือกนี้ คุณจะได้สร้างปลั๊กอินลงในคอนเทนเนอร์

1. สร้างแพ็กเกจปลั๊กอิน

  1. เขียนและทดสอบปลั๊กอินตามคำแนะนำในเขียนปลั๊กอินอย่างง่าย

  2. วางโค้ดปลั๊กอินของคุณในโครงสร้างไดเรกทอรีที่เหมาะสม ไดเรกทอรีปลั๊กอินต้องเป็นไปตามโครงสร้างชุด ตัวอย่างต่อไปนี้แสดงโครงสร้างที่คุณต้องทำตาม โดย response-uppercase และ request-headers คือชื่อโฟลเดอร์ที่มีโค้ดปลั๊กอินที่กำหนดเอง (ชื่อเหล่านี้เป็นตัวอย่างเท่านั้น ชื่อโฟลเดอร์อาจแตกต่างกัน)

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. cd ไปยังโฟลเดอร์ plugin

  4. ในโฟลเดอร์ plugin ให้บีบอัดโฟลเดอร์ plugins ทั้งโฟลเดอร์:

    zip -r plugins.zip plugins/

2. สร้างอิมเมจ Docker

ขั้นต่อไป ให้สร้าง Dockerfile เพื่อเพิ่มโค้ดปลั๊กอินไปยังอิมเมจ Edge Microgateway

  1. สร้างไฟล์ใหม่ชื่อ Dockerfile ในไดเรกทอรีเดียวกันกับที่มีไฟล์ ZIP
  2. เพิ่มโค้ดต่อไปนี้ลงใน 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"]
    
  3. สร้างอิมเมจ Edge Microgateway Docker ใหม่ด้วยปลั๊กอินของคุณ:

    docker build -t image-name .
    

    เช่น

    docker build -t edgemicroplugins .
    

3. อัปเดตการกำหนดค่า Edge Microgateway

เมื่อมีการรวมปลั๊กอินแล้ว คุณจะต้องเพิ่มปลั๊กอินเหล่านั้นลงในไฟล์การกำหนดค่า Edge Microgateway

  1. เปิดไฟล์การกำหนดค่า Edge Microgateway ในตัวแก้ไขดังนี้

    $HOME/.edgemicro/org-env-config.yaml
    

    เช่น

    vi $HOME/.edgemicro/myorg-test-config.yaml
  2. เพิ่มไดเรกทอรีปลั๊กอินลงในไฟล์การกำหนดค่า ในตัวอย่างต่อไปนี้ แอตทริบิวต์ dir ระบุตำแหน่งของโค้ดปลั๊กอิน (ที่คุณระบุไว้ใน Dockerfile) คุณต้องระบุชื่อของไดเรกทอรีปลั๊กอินด้วย ซึ่งในตัวอย่างด้านล่างคือ response-uppercase

    edgemicro:
      ...
      plugins:
        dir: /opt/apigee/plugins
        sequence:
          - oauth
          - response-uppercase
    

4. เริ่มต้น Microgateway

สุดท้าย คุณต้องเริ่มต้น Microgateway ในคอนเทนเนอร์

  1. เรียกใช้คำสั่งต่อไปนี้เพื่อเข้ารหัส base64 สำหรับไฟล์การกำหนดค่า Edge Microgateway ที่อยู่ใน $HOME/.edgemicro

    export 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`
  2. เรียกใช้ 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
  3. เรียก 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!