การอ้างอิงการดำเนินการและการกำหนดค่าสำหรับ Edge Microgateway

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

Edge Microgateway v. 3.3.x

หัวข้อนี้จะอธิบายวิธีจัดการและกำหนดค่า Edge Microgateway

การอัปเกรด Edge Microgateway หากมีการเชื่อมต่ออินเทอร์เน็ต

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

Apigee ขอแนะนำให้คุณทดสอบการกำหนดค่าที่มีอยู่กับ เวอร์ชันใหม่ก่อนที่จะอัปเกรดสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์

  1. เรียกใช้คำสั่ง npm ต่อไปนี้เพื่ออัปเกรดเป็น Edge Microgateway เวอร์ชันล่าสุด
    npm upgrade edgemicro -g

    หากต้องการติดตั้ง Edge Microgateway เวอร์ชันใดเวอร์ชันหนึ่ง คุณต้องระบุหมายเลข เวอร์ชันในคำสั่งติดตั้ง เช่น หากต้องการติดตั้งเวอร์ชัน 3.2.3 ให้ใช้คำสั่งต่อไปนี้

    npm install edgemicro@3.2.3 -g
  2. ตรวจสอบหมายเลขเวอร์ชัน เช่น หากคุณติดตั้งเวอร์ชัน 3.2.3 ให้ทำดังนี้
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.2.3
        
  3. สุดท้าย ให้อัปเกรดเป็นพร็อกซี edgemicro-auth เวอร์ชันล่าสุด
    edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME

การเปลี่ยนแปลงการกำหนดค่า

ไฟล์การกำหนดค่าที่คุณต้องทราบมีดังนี้

  • ไฟล์การกำหนดค่าเริ่มต้นของระบบ
  • ไฟล์การกำหนดค่าเริ่มต้นสำหรับอินสแตนซ์ Edge Microgateway ที่เพิ่งเริ่มต้น
  • ไฟล์การกำหนดค่าแบบไดนามิกสำหรับอินสแตนซ์ที่ทำงานอยู่

ส่วนนี้จะอธิบายไฟล์เหล่านี้และสิ่งที่คุณจำเป็นต้องทราบเกี่ยวกับการเปลี่ยนแปลงไฟล์

ไฟล์การกำหนดค่าเริ่มต้นของระบบ

เมื่อติดตั้ง Edge Microgateway ระบบจะวางไฟล์การกำหนดค่าเริ่มต้นของระบบไว้ที่ตำแหน่งต่อไปนี้

prefix/lib/node_modules/edgemicro/config/default.yaml

โดย prefix คือnpmไดเรกทอรีคำนำหน้า ดู ตำแหน่งที่ติดตั้ง Edge Microgateway หากคุณหาไดเรกทอรีนี้ไม่พบ

หากเปลี่ยนไฟล์การกำหนดค่าระบบ คุณต้องเริ่มต้นใหม่ กำหนดค่าใหม่ และรีสตาร์ท Edge Microgateway โดยทำดังนี้

edgemicro init
edgemicro configure [params]
edgemicro start [params]

ไฟล์การกำหนดค่าเริ่มต้นสำหรับอินสแตนซ์ Edge Microgateway ที่เริ่มต้นใหม่

เมื่อเรียกใช้ edgemicro init ระบบจะวางไฟล์การกำหนดค่า (อธิบายไว้ ด้านบน) default.yaml ไว้ในไดเรกทอรี ~/.edgemicro

หากเปลี่ยนไฟล์การกำหนดค่าใน ~/.edgemicro คุณต้องกำหนดค่าใหม่และรีสตาร์ท Edge Microgateway โดยทำดังนี้

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

ไฟล์การกำหนดค่าแบบไดนามิก สำหรับอินสแตนซ์ที่ทำงานอยู่

เมื่อเรียกใช้ edgemicro configure [params] ระบบจะสร้างไฟล์การกำหนดค่าแบบไดนามิก ใน ~/.edgemicro ไฟล์จะมีชื่อตามรูปแบบนี้ org-env-config.yaml โดยที่ org และ env คือ ชื่อองค์กรและสภาพแวดล้อม Apigee Edge ของคุณ คุณสามารถใช้ไฟล์นี้เพื่อทำการเปลี่ยนแปลงการกำหนดค่า แล้วโหลดซ้ำโดยไม่มีการหยุดทำงาน เช่น หากเพิ่มและกำหนดค่าปลั๊กอิน คุณจะโหลดการกำหนดค่าซ้ำได้โดยไม่ต้องหยุดทำงานตามที่อธิบายไว้ด้านล่าง

หาก Edge Microgateway ทำงานอยู่ (ตัวเลือกแบบไม่มีการหยุดทำงาน) ให้ทำดังนี้

  1. โหลดการกำหนดค่า Edge Microgateway ซ้ำ
    edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET

    สถานที่:

    • $ORG คือชื่อองค์กร Edge ของคุณ (คุณต้องเป็นผู้ดูแลระบบองค์กร )
    • $ENV คือสภาพแวดล้อมในองค์กร (เช่น "test" หรือ "prod")
    • $KEY คือคีย์ที่คำสั่งกำหนดค่าส่งคืนก่อนหน้านี้
    • $SECRET คือคีย์ที่คำสั่งกำหนดค่าส่งคืนก่อนหน้านี้

    เช่น

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

หากหยุด Edge Microgateway

  1. รีสตาร์ท Edge Microgateway
    edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    สถานที่:

    • $ORG คือชื่อองค์กร Edge ของคุณ (คุณต้องเป็นผู้ดูแลระบบองค์กร )
    • $ENV คือสภาพแวดล้อมในองค์กร (เช่น "test" หรือ "prod")
    • $KEY คือคีย์ที่คำสั่งกำหนดค่าส่งคืนก่อนหน้านี้
    • $SECRET คือคีย์ที่คำสั่งกำหนดค่าส่งคืนก่อนหน้านี้

    เช่น

    edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \
      -s 05c1435...e34ab0cc824

ตัวอย่างไฟล์การกำหนดค่ามีดังนี้ ดูรายละเอียดเกี่ยวกับการตั้งค่าไฟล์การกำหนดค่าได้ที่ข้อมูลอ้างอิงการกำหนดค่า Edge Microgateway

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

การตั้งค่าตัวแปรสภาพแวดล้อม

คำสั่งอินเทอร์เฟซบรรทัดคำสั่งที่ต้องใช้ค่าสำหรับองค์กรและสภาพแวดล้อม Edge รวมถึงคีย์และข้อมูลลับที่จำเป็นสำหรับการเริ่มต้น Edge Microgateway สามารถจัดเก็บไว้ในตัวแปรสภาพแวดล้อมต่อไปนี้ได้

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

คุณจะตั้งค่าตัวแปรเหล่านี้หรือไม่ก็ได้ หากตั้งค่าไว้ คุณไม่จำเป็นต้องระบุค่า เมื่อใช้อินเทอร์เฟซบรรทัดคำสั่ง (CLI) เพื่อกำหนดค่าและเริ่ม Edge Microgateway

การกำหนดค่า SSL ในเซิร์ฟเวอร์ Edge Microgateway

ดูวิดีโอต่อไปนี้เพื่อเรียนรู้เกี่ยวกับการกำหนดค่า TLS ใน Apigee Edge Microgateway

วิดีโอ คำอธิบาย
กำหนดค่า TLS ขาออกทางเดียว ดูข้อมูลเกี่ยวกับการกำหนดค่า TLS ใน Apigee Edge Microgateway วิดีโอนี้จะให้ภาพรวมของ TLS และความสำคัญของ TLS ใน Edge Microgateway รวมถึงแสดงวิธีกำหนดค่า TLS ทางเดียวขาออก
กำหนดค่า TLS แบบ 2 ทาง นี่คือวิดีโอที่ 2 เกี่ยวกับการกำหนดค่า TLS ใน Apigee Edge Microgateway วิดีโอนี้ อธิบายวิธีกำหนดค่า TLS แบบ 2 ทางที่ส่งจากอุปกรณ์ไปยังเซิร์ฟเวอร์
กำหนดค่า TLS ขาออกแบบทางเดียวและ 2 ทาง วิดีโอที่ 3 เกี่ยวกับการกำหนดค่า TLS ใน Apigee Edge Microgateway นี้อธิบาย วิธีกำหนดค่า TLS ทางเดียวและ 2 ทางที่ส่งออก

คุณกำหนดค่าเซิร์ฟเวอร์ Microgateway ให้ใช้ SSL ได้ เช่น เมื่อกำหนดค่า SSL แล้ว คุณจะ เรียกใช้ API ผ่าน Edge Microgateway ด้วยโปรโตคอล "https" ได้ดังนี้

https://localhost:8000/myapi

หากต้องการกำหนดค่า SSL ในเซิร์ฟเวอร์ Microgateway ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างหรือขอรับใบรับรองและคีย์ SSL โดยใช้ยูทิลิตี openssl หรือวิธีที่คุณต้องการ
  2. เพิ่มแอตทริบิวต์ edgemicro:ssl ลงในไฟล์การกำหนดค่า Edge Microgateway ดูรายการตัวเลือกทั้งหมดได้ในตารางด้านล่าง เช่น
    edgemicro:
      ssl:
       key: <absolute path to the SSL key file>
       cert: <absolute path to the SSL cert file>
       passphrase: admin123 #option added in v2.2.2
       rejectUnauthorized: true #option added in v2.2.2
       requestCert: true
  3. รีสตาร์ท Edge Microgateway ทำตามขั้นตอนที่ระบุไว้ในส่วนทำการเปลี่ยนแปลงการกำหนดค่า โดยขึ้นอยู่กับว่าคุณแก้ไขไฟล์การกำหนดค่าใด ไม่ว่าจะเป็นไฟล์เริ่มต้นหรือไฟล์การกำหนดค่ารันไทม์

ต่อไปนี้คือตัวอย่างส่วน edgemicro ของไฟล์กำหนดค่าที่มีการกำหนดค่า SSL

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

รายการตัวเลือกเซิร์ฟเวอร์ทั้งหมดที่รองรับมีดังนี้

ตัวเลือก คำอธิบาย
key เส้นทางไปยังไฟล์ ca.key (ในรูปแบบ PEM)
cert เส้นทางไปยังไฟล์ ca.cert (ในรูปแบบ PEM)
pfx เส้นทางไปยังไฟล์ pfx ที่มีคีย์ส่วนตัว ใบรับรอง และใบรับรอง CA ของไคลเอ็นต์ในรูปแบบ PFX
passphrase สตริงที่มีพาสเฟรสสำหรับคีย์ส่วนตัวหรือ PFX
ca เส้นทางไปยังไฟล์ที่มีรายการใบรับรองที่เชื่อถือได้ในรูปแบบ PEM
ciphers สตริงที่อธิบายการเข้ารหัสที่จะใช้โดยคั่นด้วย ":"
rejectUnauthorized หากเป็นจริง ระบบจะยืนยันใบรับรองเซิร์ฟเวอร์กับรายการ CA ที่ระบุ หาก การยืนยันไม่สำเร็จ ระบบจะแสดงข้อผิดพลาด
secureProtocol วิธีการ SSL ที่จะใช้ เช่น SSLv3_method เพื่อบังคับให้ SSL เป็นเวอร์ชัน 3
servername ชื่อเซิร์ฟเวอร์สำหรับส่วนขยาย TLS ของ SNI (การระบุชื่อเซิร์ฟเวอร์)
requestCert จริงสำหรับ SSL แบบ 2 ทาง เท็จสำหรับ SSL แบบ 1 ทาง

การใช้ตัวเลือก SSL/TLS ของไคลเอ็นต์

คุณกำหนดค่า Edge Microgateway ให้เป็นไคลเอ็นต์ TLS หรือ SSL ได้เมื่อเชื่อมต่อกับปลายทางเป้าหมาย ในไฟล์การกำหนดค่า Microgateway ให้ใช้องค์ประกอบ targets เพื่อตั้งค่า SSL/TLS โปรดทราบว่าคุณสามารถระบุเป้าหมายที่เฉพาะเจาะจงได้หลายรายการ ตัวอย่างแบบหลายเป้าหมายจะแสดง ด้านล่าง

ตัวอย่างนี้แสดงการตั้งค่าที่จะมีผลกับโฮสต์ทั้งหมด

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

ในตัวอย่างนี้ การตั้งค่าจะมีผลกับโฮสต์ที่ระบุเท่านั้น

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    ssl:
      client:
        key: /Users/myname/twowayssl/ssl/client.key
        cert: /Users/myname/twowayssl/ssl/ca.crt
        passphrase: admin123
        rejectUnauthorized: true

ตัวอย่างสำหรับ TLS

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

ในกรณีที่คุณต้องการใช้การตั้งค่า TLS/SSL กับเป้าหมายที่เฉพาะเจาะจงหลายรายการ คุณต้องระบุ โฮสต์แรกในการกำหนดค่าเป็น "ว่าง" ซึ่งจะเปิดใช้คำขอแบบสากล จากนั้นระบุโฮสต์ที่เฉพาะเจาะจง ตามลำดับใดก็ได้ ในตัวอย่างนี้ ระบบจะใช้การตั้งค่ากับโฮสต์ที่เฉพาะเจาะจงหลายรายการ

targets:
 - host:   ## Note that this value must be "empty"
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       passphrase: admin123
       rejectUnauthorized: true
 - host: 'myserver1.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true
 - host: 'myserver2.example.com'
   ssl:
     client:
       key: /Users/myname/twowayssl/ssl/client.key
       cert: /Users/myname/twowayssl/ssl/ca.crt
       rejectUnauthorized: true

รายการตัวเลือกไคลเอ็นต์ทั้งหมดที่รองรับมีดังนี้

ตัวเลือก คำอธิบาย
pfx เส้นทางไปยังไฟล์ pfx ที่มีคีย์ส่วนตัว ใบรับรอง และใบรับรอง CA ของไคลเอ็นต์ในรูปแบบ PFX
key เส้นทางไปยังไฟล์ ca.key (ในรูปแบบ PEM)
passphrase สตริงที่มีพาสเฟรสสำหรับคีย์ส่วนตัวหรือ PFX
cert เส้นทางไปยังไฟล์ ca.cert (ในรูปแบบ PEM)
ca เส้นทางไปยังไฟล์ที่มีรายการใบรับรองที่เชื่อถือได้ในรูปแบบ PEM
ciphers สตริงที่อธิบายการเข้ารหัสที่จะใช้โดยคั่นด้วย ":"
rejectUnauthorized หากเป็นจริง ระบบจะยืนยันใบรับรองเซิร์ฟเวอร์กับรายการ CA ที่ระบุ หาก การยืนยันไม่สำเร็จ ระบบจะแสดงข้อผิดพลาด
secureProtocol วิธีการ SSL ที่จะใช้ เช่น SSLv3_method เพื่อบังคับให้ SSL เป็นเวอร์ชัน 3
servername ชื่อเซิร์ฟเวอร์สำหรับส่วนขยาย TLS ของ SNI (การระบุชื่อเซิร์ฟเวอร์)

การปรับแต่งพร็อกซี edgemicro-auth

โดยค่าเริ่มต้น Edge Microgateway จะใช้พร็อกซีที่ติดตั้งใช้งานใน Apigee Edge สำหรับการตรวจสอบสิทธิ์ OAuth2 ระบบจะติดตั้งใช้งานพร็อกซีนี้เมื่อคุณเรียกใช้ edgemicro configure เป็นครั้งแรก คุณสามารถเปลี่ยน การกำหนดค่าเริ่มต้นของพร็อกซีนี้เพื่อเพิ่มการรองรับการอ้างสิทธิ์ที่กำหนดเองในโทเค็นเว็บ JSON (JWT) กำหนดค่าการหมดอายุของโทเค็น และสร้างโทเค็นการรีเฟรช ดูรายละเอียดได้ที่หน้า edgemicro-auth ใน GitHub

การใช้บริการการตรวจสอบสิทธิ์ที่กำหนดเอง

โดยค่าเริ่มต้น Edge Microgateway จะใช้พร็อกซีที่ติดตั้งใช้งานใน Apigee Edge สำหรับการตรวจสอบสิทธิ์ OAuth2 ระบบจะติดตั้งใช้งานพร็อกซีนี้เมื่อคุณเรียกใช้ edgemicro configure เป็นครั้งแรก โดยค่าเริ่มต้น URL ของพร็อกซีนี้จะระบุไว้ในไฟล์การกำหนดค่า Edge Microgateway ดังนี้

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

หากต้องการใช้บริการที่กำหนดเองเพื่อจัดการการตรวจสอบสิทธิ์ ให้เปลี่ยนค่า authUri ในไฟล์กำหนดค่าให้ชี้ไปยังบริการของคุณ เช่น คุณอาจมี บริการที่ใช้ LDAP เพื่อยืนยันตัวตน

การจัดการไฟล์บันทึก

Edge Microgateway จะบันทึกข้อมูลเกี่ยวกับคำขอและการตอบกลับแต่ละรายการ ไฟล์บันทึกให้ข้อมูลที่เป็นประโยชน์ สำหรับการแก้ไขข้อบกพร่องและการแก้ปัญหา

ตำแหน่งที่จัดเก็บไฟล์บันทึก

โดยค่าเริ่มต้น ระบบจะจัดเก็บไฟล์บันทึกไว้ใน /var/tmp

วิธีเปลี่ยนไดเรกทอรีไฟล์บันทึกเริ่มต้น

ไดเรกทอรีที่จัดเก็บไฟล์บันทึกจะระบุไว้ในไฟล์การกำหนดค่า Edge Microgateway ดูการเปลี่ยนแปลงการกำหนดค่าด้วย

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

เปลี่ยนค่า dir เพื่อระบุไดเรกทอรีไฟล์บันทึกอื่น

ส่งบันทึกไปยังคอนโซล

คุณสามารถกำหนดค่าการบันทึกเพื่อให้ระบบส่งข้อมูลบันทึกไปยังเอาต์พุตมาตรฐานแทนที่จะส่งไปยังไฟล์บันทึกได้ ตั้งค่าto_consoleเป็น true ดังนี้

edgemicro:
  logging:
    to_console: true

การตั้งค่านี้จะส่งบันทึกไปยังเอาต์พุตมาตรฐาน ปัจจุบันคุณไม่สามารถส่งบันทึกไปยังทั้ง stdout และไฟล์บันทึกได้

วิธีตั้งค่าระดับการบันทึก

คุณระบุระดับการบันทึกที่จะใช้ในการกำหนดค่า edgemicro ดูรายการระดับบันทึกและคำอธิบายทั้งหมดได้ที่แอตทริบิวต์ edgemicro

ตัวอย่างเช่น การกำหนดค่าต่อไปนี้จะตั้งค่าระดับการบันทึกเป็น debug

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: debug
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

วิธีเปลี่ยนช่วงเวลาของบันทึก

คุณกำหนดค่าช่วงเวลาเหล่านี้ได้ในไฟล์การกำหนดค่า Edge Microgateway ดูการเปลี่ยนแปลงการกำหนดค่าด้วย

แอตทริบิวต์ที่กำหนดค่าได้มีดังนี้

  • stats_log_interval: (ค่าเริ่มต้น: 60) ช่วงเวลาเป็นวินาทีเมื่อระบบเขียนบันทึกสถิติ ลงในไฟล์บันทึก API
  • rotate_interval: (ค่าเริ่มต้น: 24) ช่วงเวลาเป็นชั่วโมงเมื่อระบบหมุนเวียนไฟล์บันทึก เช่น
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

วิธีลดความเข้มงวดของสิทธิ์ในไฟล์บันทึก

โดยค่าเริ่มต้น Edge Microgateway จะสร้างไฟล์บันทึกของแอปพลิเคชัน (api-log.log) โดยมีระดับสิทธิ์ของไฟล์ ตั้งค่าเป็น 0600 สิทธิ์ระดับนี้ไม่อนุญาตให้แอปพลิเคชันหรือผู้ใช้ภายนอก อ่านไฟล์บันทึก หากต้องการลดระดับสิทธิ์ที่เข้มงวดนี้ ให้ตั้งค่า logging:disableStrictLogFile เป็น true เมื่อแอตทริบิวต์นี้เป็น true ระบบจะสร้างไฟล์บันทึกโดยมี สิทธิ์ในไฟล์ตั้งค่าเป็น 0755 หาก false หรือไม่ได้ระบุแอตทริบิวต์ สิทธิ์จะมีค่าเริ่มต้นเป็น 0600

เพิ่มในเวอร์ชัน 3.2.3

เช่น

edgemicro:
 logging:
   disableStrictLogFile: true

แนวทางปฏิบัติที่ดีในการบำรุงรักษาไฟล์บันทึก

เมื่อเวลาผ่านไปข้อมูลไฟล์บันทึกจะเพิ่มขึ้นเรื่อยๆ Apigee ขอแนะนำให้คุณใช้แนวทางต่อไปนี้

  • เนื่องจากไฟล์บันทึกอาจมีขนาดค่อนข้างใหญ่ โปรดตรวจสอบว่าไดเรกทอรีไฟล์บันทึกมีพื้นที่เพียงพอ ดูส่วนตำแหน่งที่จัดเก็บไฟล์บันทึกและวิธีเปลี่ยนไดเรกทอรีไฟล์บันทึกเริ่มต้น
  • ลบหรือย้ายไฟล์บันทึกไปยังไดเรกทอรีที่เก็บถาวรแยกต่างหากอย่างน้อยสัปดาห์ละครั้ง
  • หากนโยบายของคุณคือการลบบันทึก คุณสามารถใช้คำสั่ง CLI edgemicro log -c เพื่อนำบันทึกเก่าออก (ล้าง) ได้

แบบแผนการตั้งชื่อไฟล์บันทึก

อินสแตนซ์ Edge Microgateway แต่ละรายการจะสร้างไฟล์บันทึกที่มีนามสกุล .log แบบแผนการตั้งชื่อไฟล์บันทึกมีดังนี้

edgemicro-HOST_NAME-INSTANCE_ID-api.log

เช่น

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log

เกี่ยวกับเนื้อหาไฟล์บันทึก

เพิ่มใน: v2.3.3

โดยค่าเริ่มต้น บริการบันทึกจะละเว้น JSON ของพร็อกซี ผลิตภัณฑ์ และโทเค็นเว็บ JSON (JWT) ที่ดาวน์โหลด หากต้องการแสดงออบเจ็กต์เหล่านี้ในคอนโซล ให้ตั้งค่าสถานะบรรทัดคำสั่ง DEBUG=* เมื่อคุณเริ่ม Edge Microgateway เช่น

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

เนื้อหาของไฟล์บันทึก "api"

ไฟล์บันทึก "api" มีข้อมูลโดยละเอียดเกี่ยวกับลำดับการทำงานของคำขอและการตอบกลับ ผ่าน Edge Microgateway ไฟล์บันทึก "api" จะมีชื่อดังนี้

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

สำหรับคำขอแต่ละรายการที่ส่งไปยัง Edge Microgateway ระบบจะบันทึกเหตุการณ์ 4 รายการในไฟล์บันทึก "api"

  • คำขอขาเข้าจากไคลเอ็นต์
  • ส่งคำขอขาออกไปยังเป้าหมาย
  • การตอบกลับขาเข้าจากเป้าหมาย
  • การตอบกลับขาออกไปยังไคลเอ็นต์

รายการแยกแต่ละรายการจะแสดงในรูปแบบย่อเพื่อช่วยให้ไฟล์บันทึก มีขนาดกะทัดรัดมากขึ้น ต่อไปนี้คือตัวอย่างรายการ 4 รายการที่แสดงถึงเหตุการณ์ทั้ง 4 รายการ ในไฟล์บันทึก จะมีลักษณะดังนี้ (หมายเลขบรรทัดเป็นเพียงข้อมูลอ้างอิงในเอกสารเท่านั้น ไม่ปรากฏ ในไฟล์บันทึก)

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

มาดูทีละรายการกัน

1. ตัวอย่างคำขอที่เข้ามาจากไคลเอ็นต์

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651 - การประทับวันที่ Unix
  • info - ระดับการบันทึก ค่านี้ขึ้นอยู่กับบริบทของธุรกรรมและระดับการบันทึกที่ตั้งค่าไว้ ในการกำหนดค่า edgemicro ดูวิธีตั้งค่าระดับการบันทึก สำหรับบันทึกสถิติ ระบบจะตั้งค่าระดับเป็น stats ระบบจะรายงานบันทึกสถิติตาม ช่วงเวลาปกติที่ตั้งค่าไว้ด้วยstats_log_interval ดูวิธีเปลี่ยนช่วงเวลาของบันทึกด้วย
  • req - ระบุเหตุการณ์ ในกรณีนี้ ให้ส่งคำขอจาก ไคลเอ็นต์
  • m - กริยา HTTP ที่ใช้ในคำขอ
  • u - ส่วนของ URL ที่อยู่หลัง basepath
  • h - หมายเลขโฮสต์และพอร์ตที่ Edge Microgateway กำลังฟังอยู่
  • r - โฮสต์และพอร์ตระยะไกลที่คำขอของไคลเอ็นต์ เริ่มต้น
  • i - รหัสคำขอ รายการกิจกรรมทั้ง 4 รายการจะใช้รหัสนี้ร่วมกัน ระบบจะกำหนดรหัสคำขอที่ไม่ซ้ำกันให้กับคำขอแต่ละรายการ การเชื่อมโยงบันทึกของบันทึกตามรหัสคำขอจะให้ข้อมูลเชิงลึกที่มีคุณค่าเกี่ยวกับเวลาในการตอบสนองของเป้าหมาย
  • d - ระยะเวลาเป็นมิลลิวินาทีตั้งแต่ Edge Microgateway ได้รับคำขอ ในตัวอย่างข้างต้น ระบบได้รับการตอบกลับของเป้าหมายสำหรับคำขอ 0 หลังจากผ่านไป 7 มิลลิวินาที (บรรทัดที่ 3) และส่งการตอบกลับไปยังไคลเอ็นต์หลังจากผ่านไปอีก 4 มิลลิวินาที (บรรทัดที่ 4) กล่าวคือ เวลาในการตอบสนองของคำขอทั้งหมดคือ 11 มิลลิวินาที ซึ่ง เป้าหมายใช้เวลา 7 มิลลิวินาที และ Edge Microgateway ใช้เวลา 4 มิลลิวินาที

2. ตัวอย่างคำขอขาออกที่ส่งไปยังเป้าหมาย

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651 - การประทับวันที่ Unix
  • info - ระดับการบันทึก ค่านี้ขึ้นอยู่กับบริบทของธุรกรรมและระดับการบันทึกที่ตั้งค่าไว้ ในการกำหนดค่า edgemicro ดูวิธีตั้งค่าระดับการบันทึก สำหรับบันทึกสถิติ ระบบจะตั้งค่าระดับเป็น stats ระบบจะรายงานบันทึกสถิติตาม ช่วงเวลาปกติที่ตั้งค่าไว้ด้วยstats_log_interval ดูวิธีเปลี่ยนช่วงเวลาของบันทึกด้วย
  • treq - ระบุเหตุการณ์ ในกรณีนี้ ให้กำหนดคำขอเป้าหมาย
  • m - กริยา HTTP ที่ใช้ในคำขอเป้าหมาย
  • u - ส่วนของ URL ที่อยู่หลัง basepath
  • h - หมายเลขโฮสต์และพอร์ตของเป้าหมายแบ็กเอนด์
  • i - รหัสของรายการบันทึก รายการเหตุการณ์ทั้ง 4 รายการจะใช้รหัสนี้ร่วมกัน

3. ตัวอย่างการตอบกลับที่เข้ามาจากเป้าหมาย

1436403888672 info tres s=200, d=7, i=0

1436403888651 - การประทับวันที่ Unix

  • info - ระดับการบันทึก ค่านี้ขึ้นอยู่กับบริบทของธุรกรรมและระดับการบันทึกที่ตั้งค่าไว้ ในการกำหนดค่า edgemicro ดูวิธีตั้งค่าระดับการบันทึก สำหรับบันทึกสถิติ ระบบจะตั้งค่าระดับเป็น stats ระบบจะรายงานบันทึกสถิติตาม ช่วงเวลาปกติที่ตั้งค่าไว้ด้วยstats_log_interval ดูวิธีเปลี่ยนช่วงเวลาของบันทึกด้วย
  • tres - ระบุเหตุการณ์ ในกรณีนี้ ให้กำหนดเป้าหมายการตอบกลับ
  • s - สถานะการตอบกลับ HTTP
  • d - ระยะเวลาเป็นมิลลิวินาที ระยะเวลาที่ใช้ในการเรียก API โดย เป้าหมาย
  • i - รหัสของรายการบันทึก รายการเหตุการณ์ทั้ง 4 รายการจะใช้รหัสนี้ร่วมกัน

4. ตัวอย่างการตอบกลับขาออกไปยังไคลเอ็นต์

1436403888676 info res s=200, d=11, i=0

1436403888651 - การประทับวันที่ Unix

  • info - ระดับการบันทึก ค่านี้ขึ้นอยู่กับบริบทของธุรกรรมและระดับการบันทึกที่ตั้งค่าไว้ ในการกำหนดค่า edgemicro ดูวิธีตั้งค่าระดับการบันทึก สำหรับบันทึกสถิติ ระบบจะตั้งค่าระดับเป็น stats ระบบจะรายงานบันทึกสถิติตาม ช่วงเวลาปกติที่ตั้งค่าไว้ด้วยstats_log_interval ดูวิธีเปลี่ยนช่วงเวลาของบันทึกด้วย
  • res - ระบุเหตุการณ์ ในกรณีนี้ การตอบกลับ ไคลเอ็นต์
  • s - สถานะการตอบกลับ HTTP
  • d - ระยะเวลาเป็นมิลลิวินาที เวลาทั้งหมดที่ใช้ โดยการเรียก API รวมถึงเวลาที่ใช้โดย API เป้าหมายและเวลาที่ใช้โดย Edge Microgateway เอง
  • i - รหัสของรายการบันทึก รายการเหตุการณ์ทั้ง 4 รายการจะใช้รหัสนี้ร่วมกัน

กำหนดเวลาไฟล์บันทึก

ระบบจะหมุนเวียนไฟล์บันทึกตามช่วงเวลาที่ระบุโดยrotate_interval แอตทริบิวต์การกำหนดค่า ระบบจะเพิ่มรายการไปยังไฟล์บันทึกเดียวกันต่อไปจนกว่าช่วงเวลาการหมุนเวียนจะหมดอายุ อย่างไรก็ตาม ทุกครั้งที่รีสตาร์ท Edge Microgateway ระบบจะกำหนด UID ใหม่และสร้างชุดไฟล์บันทึกใหม่ด้วย UID นี้ ดูเพิ่มเติมที่ แนวทางปฏิบัติที่ดีในการบำรุงรักษาไฟล์บันทึก

ข้อความแสดงข้อผิดพลาด

รายการบันทึกบางรายการจะมีข้อความแสดงข้อผิดพลาด หากต้องการช่วยระบุตำแหน่งและสาเหตุที่เกิดข้อผิดพลาด โปรดดูข้อมูลอ้างอิงข้อผิดพลาดของ Edge Microgateway

ข้อมูลอ้างอิงการกำหนดค่า Edge Microgateway

ตำแหน่งของไฟล์การกำหนดค่า

แอตทริบิวต์การกำหนดค่าที่อธิบายไว้ในส่วนนี้อยู่ในไฟล์การกำหนดค่า Edge Microgateway ดูการเปลี่ยนแปลงการกำหนดค่าด้วย

แอตทริบิวต์ edge_config

การตั้งค่าเหล่านี้ใช้เพื่อกำหนดค่าการโต้ตอบระหว่างอินสแตนซ์ Edge Microgateway กับ Apigee Edge

  • bootstrap: (ค่าเริ่มต้น: ไม่มี) URL ที่ชี้ไปยังบริการเฉพาะของ Edge Microgateway ที่ทำงานใน Apigee Edge Edge Microgateway ใช้บริการนี้เพื่อ สื่อสารกับ Apigee Edge ระบบจะแสดง URL นี้เมื่อคุณเรียกใช้คำสั่งเพื่อสร้างคู่คีย์สาธารณะ/ส่วนตัว: edgemicro genkeys ดูรายละเอียดได้ที่การตั้งค่า และการกำหนดค่า Edge Microgateway
  • jwt_public_key: (ค่าเริ่มต้น: ไม่มี) URL ที่ชี้ไปยังพร็อกซี Edge Microgateway ที่ติดตั้งใช้งานใน Apigee Edge พร็อกซีนี้ทำหน้าที่เป็นปลายทางการตรวจสอบสิทธิ์สำหรับ การออกโทเค็นเพื่อการเข้าถึงที่ลงชื่อแล้วให้กับไคลเอ็นต์ ระบบจะแสดง URL นี้เมื่อคุณเรียกใช้คำสั่งเพื่อ ติดตั้งใช้งานพร็อกซี: edgemicro configure ดูรายละเอียดได้ที่การตั้งค่า และการกำหนดค่า Edge Microgateway
  • quotaUri: ตั้งค่าพร็อพเพอร์ตี้ config นี้ หากต้องการจัดการโควต้าผ่านพร็อกซี edgemicro-auth ที่ ติดตั้งใช้งานในองค์กร หากไม่ได้ตั้งค่าพร็อพเพอร์ตี้นี้ ปลายทางโควต้าจะใช้ปลายทาง Edge Microgateway ภายในเป็นค่าเริ่มต้น
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

แอตทริบิวต์ edgemicro

การตั้งค่าเหล่านี้จะกำหนดค่ากระบวนการ Edge Microgateway

  • port: (ค่าเริ่มต้น: 8000) หมายเลขพอร์ตที่กระบวนการ Edge Microgateway รอรับฟัง
  • max_connections: (ค่าเริ่มต้น: -1) ระบุจำนวนสูงสุดของ การเชื่อมต่อขาเข้าพร้อมกันที่ Edge Microgateway รับได้ หากจำนวนนี้ เกิน ระบบจะแสดงสถานะต่อไปนี้

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (ค่าเริ่มต้น: -1) จำนวนคำขอพร้อมกันสูงสุดที่ Edge Microgateway รับได้ก่อนที่จะปิดการเชื่อมต่อ การตั้งค่านี้ มีไว้เพื่อป้องกันการโจมตีแบบปฏิเสธการให้บริการ โดยปกติแล้ว ให้ตั้งค่าเป็นตัวเลขที่มากกว่า max_connections
  • การบันทึก
    • level: (ค่าเริ่มต้น: error)
      • info - (แนะนํา) บันทึกคําขอและการตอบกลับทั้งหมดที่ไหลผ่านอินสแตนซ์ Edge Microgateway
      • warn - บันทึกเฉพาะข้อความเตือน
      • ข้อผิดพลาด - บันทึกเฉพาะข้อความแสดงข้อผิดพลาด
      • debug - บันทึกข้อความแก้ไขข้อบกพร่องพร้อมกับข้อความ info, warn และ error
      • trace - บันทึกข้อมูลการติดตามข้อผิดพลาดพร้อมกับข้อความ info, warn และ error
      • ไม่มี - ไม่สร้างไฟล์บันทึก
    • dir: (ค่าเริ่มต้น: /var/tmp) ไดเรกทอรีที่จัดเก็บไฟล์บันทึก
    • stats_log_interval: (ค่าเริ่มต้น: 60) ช่วงเวลาเป็นวินาทีเมื่อระบบเขียนบันทึกสถิติ ลงในไฟล์บันทึก API
    • rotate_interval: (ค่าเริ่มต้น: 24) ช่วงเวลาเป็นชั่วโมงเมื่อมีการหมุนเวียนไฟล์บันทึก
  • ปลั๊กอิน: ปลั๊กอินจะเพิ่มฟังก์ชันการทำงานให้กับ Edge Microgateway โปรดดูรายละเอียด เกี่ยวกับการพัฒนาปลั๊กอินที่หัวข้อพัฒนาปลั๊กอินที่กำหนดเอง
  • dir: เส้นทางแบบสัมพัทธ์จากไดเรกทอรี ./gateway ไปยัง ไดเรกทอรี ./plugins หรือเส้นทางแบบสัมบูรณ์
  • ลำดับ: รายการโมดูลปลั๊กอินที่จะเพิ่มลงในอินสแตนซ์ Edge Microgateway โมดูลจะทำงานตามลำดับที่ระบุไว้ที่นี่
  • debug: เพิ่มการแก้ไขข้อบกพร่องจากระยะไกลลงในกระบวนการ Edge Microgateway
    • port: หมายเลขพอร์ตที่จะใช้รับฟัง เช่น ตั้งค่าดีบักเกอร์ IDE ให้รับฟังในพอร์ตนี้
    • args: อาร์กิวเมนต์ของกระบวนการแก้ไขข้อบกพร่อง เช่น args --nolazy
  • config_change_poll_interval: (ค่าเริ่มต้น: 600 วินาที) Edge Microgateway จะโหลดการกำหนดค่าใหม่เป็นระยะๆ และดำเนินการโหลดซ้ำหากมีการเปลี่ยนแปลง การสำรวจ จะตรวจหาการเปลี่ยนแปลงที่เกิดขึ้นใน Edge (การเปลี่ยนแปลงผลิตภัณฑ์, พร็อกซีที่รับรู้ Microgateway ฯลฯ) รวมถึง การเปลี่ยนแปลงที่เกิดขึ้นกับไฟล์กำหนดค่าในเครื่อง
  • disable_config_poll_interval: (ค่าเริ่มต้น: false) ตั้งค่าเป็น true เพื่อปิดการสำรวจการเปลี่ยนแปลงอัตโนมัติ
  • request_timeout: ตั้งค่าการหมดเวลาสำหรับคำขอเป้าหมาย ระยะหมดเวลาจะตั้งค่าเป็นวินาที หากเกิดการหมดเวลา Edge Microgateway จะตอบกลับด้วยรหัสสถานะ 504 (เพิ่มใน v2.4.x)
  • keep_alive_timeout: พร็อพเพอร์ตี้นี้ช่วยให้คุณตั้งค่าการหมดเวลาของ Edge Microgateway (เป็นมิลลิวินาที) ได้ (ค่าเริ่มต้น: 5 วินาที) (เพิ่มใน v3.0.6)
  • headers_timeout: แอตทริบิวต์นี้จำกัดระยะเวลา (เป็นมิลลิวินาที) ที่ตัวแยกวิเคราะห์ HTTP จะรอรับ ส่วนหัว HTTP ที่สมบูรณ์

    เช่น

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

    ภายใน พารามิเตอร์จะตั้งค่าแอตทริบิวต์ Node.js Server.headersTimeout ในคำขอ (ค่าเริ่มต้น: นานกว่าเวลาที่ตั้งไว้ด้วย edgemicro.keep_alive_timeout 5 วินาที การตั้งค่าเริ่มต้นนี้จะป้องกันไม่ให้ตัวจัดสรรภาระงานหรือพร็อกซีตัดการเชื่อมต่อโดยไม่ตั้งใจ) (เพิ่มใน v3.1.1)

  • noRuleMatchAction: (String) การดำเนินการที่จะทำ (อนุญาตหรือปฏิเสธการเข้าถึง) หากกฎการจับคู่ที่ระบุในปลั๊กอิน accesscontrol ไม่ได้รับการแก้ไข (ไม่ตรงกัน) ค่าที่ใช้ได้: ALLOW หรือ DENY ค่าเริ่มต้น: ALLOW (เพิ่มใน v3.1.7)
  • enableAnalytics: (ค่าเริ่มต้น: จริง) ตั้งค่าแอตทริบิวต์เป็น false เพื่อ ป้องกันไม่ให้โหลดปลั๊กอิน Analytics ในกรณีนี้ จะไม่มีการเรียกการวิเคราะห์ Apigee Edge หากตั้งค่าเป็น true หรือเมื่อไม่ได้ระบุแอตทริบิวต์นี้ ปลั๊กอิน Analytics จะทำงานตามปกติ ดูรายละเอียดได้ที่ แอตทริบิวต์ edgemicro (เพิ่มใน v3.1.8)

    ตัวอย่าง

    edgemicro
      enableAnalytics=false|true
  • on_target_response_abort: แอตทริบิวต์นี้ช่วยให้คุณควบคุม ลักษณะการทำงานของ Edge Microgateway ในกรณีที่การเชื่อมต่อระหว่างไคลเอ็นต์ (Edge Microgateway) กับ เซิร์ฟเวอร์เป้าหมายปิดก่อนเวลาอันควร
    ค่า คำอธิบาย
    ค่าเริ่มต้น หากไม่ได้ระบุ on_target_response_abort ลักษณะการทำงานเริ่มต้น คือการตัดการตอบกลับโดยไม่แสดงข้อผิดพลาด ในไฟล์บันทึก ระบบจะแสดงข้อความคำเตือน พร้อม targetResponse aborted และรหัสการตอบกลับ 502
    appendErrorToClientResponseBody ระบบจะแสดงข้อผิดพลาดที่กำหนดเอง TargetResponseAborted ต่อไคลเอ็นต์ ในไฟล์บันทึก ระบบจะแสดงข้อความคำเตือน พร้อม targetResponse aborted และรหัสการตอบกลับ 502 นอกจากนี้ ระบบจะบันทึกข้อผิดพลาด TargetResponseAborted พร้อมข้อความ Target response ended prematurely.
    abortClientRequest Edge Microgateway จะยกเลิกคำขอและเขียนคำเตือนลงในไฟล์บันทึก TargetResponseAborted โดยมีรหัสสถานะคำขอ 502

ตัวอย่าง

edgemicro:
 on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest

แอตทริบิวต์ส่วนหัว

การตั้งค่าเหล่านี้จะกำหนดวิธีจัดการส่วนหัว HTTP บางรายการ

  • x-forwarded-for: (ค่าเริ่มต้น: จริง) ตั้งค่าเป็นเท็จเพื่อป้องกัน ไม่ให้ส่งต่อส่วนหัว x-forwarded-for ไปยังเป้าหมาย โปรดทราบว่าหากมีส่วนหัว x-forwarded-for ในคำขอ ระบบจะตั้งค่าเป็นค่า client-ip ใน Edge Analytics
  • x-forwarded-host: (ค่าเริ่มต้น: จริง) ตั้งค่าเป็นเท็จเพื่อป้องกันไม่ให้ ส่งส่วนหัว x-forwarded-host ไปยังเป้าหมาย
  • x-request-id: (ค่าเริ่มต้น: จริง) ตั้งค่าเป็นเท็จเพื่อป้องกันไม่ให้ ส่งส่วนหัว x-request-id ไปยังเป้าหมาย
  • x-response-time: (ค่าเริ่มต้น: จริง) ตั้งค่าเป็นเท็จเพื่อป้องกันไม่ให้ ส่งส่วนหัว x-response-time ไปยังเป้าหมาย
  • via: (ค่าเริ่มต้น: จริง) ตั้งค่าเป็นเท็จเพื่อป้องกันไม่ให้ส่งส่วนหัว via ไปยังเป้าหมาย

แอตทริบิวต์ OAuth

การตั้งค่าเหล่านี้จะกำหนดวิธีที่ Edge Microgateway บังคับใช้การตรวจสอบสิทธิ์ไคลเอ็นต์

  • allowNoAuthorization: (ค่าเริ่มต้น: false) หากตั้งค่าเป็น true ระบบจะอนุญาตให้การเรียก API ผ่าน Edge Microgateway โดยไม่มีส่วนหัวการให้สิทธิ์เลย ตั้งค่าเป็น false เพื่อกำหนดให้ต้องมีส่วนหัวการให้สิทธิ์ (ค่าเริ่มต้น)
  • allowInvalidAuthorization: (ค่าเริ่มต้น: false) หากตั้งค่าเป็น true ระบบจะอนุญาตให้ส่งการเรียก API หากโทเค็นที่ส่งในส่วนหัวการให้สิทธิ์ไม่ถูกต้องหรือหมดอายุ ตั้งค่านี้ เป็น "เท็จ" เพื่อกำหนดให้ต้องใช้โทเค็นที่ถูกต้อง (ค่าเริ่มต้น)
  • authorization-header: (ค่าเริ่มต้น: Authorization: Bearer) ส่วนหัวที่ใช้เพื่อ ส่งโทเค็นเพื่อการเข้าถึงไปยัง Edge Microgateway คุณอาจต้องการเปลี่ยนค่าเริ่มต้นในกรณีต่อไปนี้ เป้าหมายต้องใช้ส่วนหัวการให้สิทธิ์เพื่อวัตถุประสงค์อื่น
  • api-key-header: (ค่าเริ่มต้น: x-api-key) ชื่อของส่วนหัวหรือพารามิเตอร์การค้นหา ที่ใช้เพื่อส่งคีย์ API ไปยัง Edge Microgateway ดูการใช้ คีย์ API ด้วย
  • keep-authorization-header: (ค่าเริ่มต้น: false) หากตั้งค่าเป็น true ระบบจะส่งต่อส่วนหัวการให้สิทธิ์ ที่ส่งในคำขอไปยังเป้าหมาย (ระบบจะเก็บส่วนหัวไว้)
  • allowOAuthOnly -- หากตั้งค่าเป็น true ทุก API ต้องมีส่วนหัวการให้สิทธิ์ พร้อมโทเค็นเพื่อการเข้าถึงแบบ Bearer ช่วยให้คุณอนุญาตเฉพาะโมเดลความปลอดภัย OAuth (ในขณะที่ ยังคงความเข้ากันได้แบบย้อนหลัง) (เพิ่มใน 2.4.x)
  • allowAPIKeyOnly -- หากตั้งค่าเป็น true ทุก API ต้องมี ส่วนหัว x-api-key (หรือตำแหน่งที่กำหนดเอง) พร้อมคีย์ API ซึ่งจะช่วยให้คุณอนุญาต เฉพาะรูปแบบความปลอดภัยของคีย์ API (ในขณะที่ยังคงความเข้ากันได้แบบย้อนหลัง) (เพิ่มใน 2.4.x)
  • gracePeriod - พารามิเตอร์นี้ช่วยป้องกันข้อผิดพลาดที่เกิดจากความคลาดเคลื่อนเล็กน้อยระหว่างนาฬิกาของระบบกับเวลา Not Before (nbf) หรือ Issued At (iat) ที่ระบุไว้ในโทเค็นการให้สิทธิ์ JWT ตั้งค่าพารามิเตอร์นี้เป็นจำนวนวินาทีที่อนุญาต สำหรับความคลาดเคลื่อนดังกล่าว (เพิ่มเมื่อ 2.5.7)

แอตทริบิวต์เฉพาะปลั๊กอิน

ดูรายละเอียดเกี่ยวกับแอตทริบิวต์ที่กำหนดค่าได้สำหรับปลั๊กอินแต่ละรายการได้ที่การใช้ปลั๊กอิน

พร็อกซีการกรอง

คุณสามารถกรองพร็อกซีที่รับรู้ Microgateway ซึ่งอินสแตนซ์ Edge Microgateway จะประมวลผลได้ เมื่อ Edge Microgateway เริ่มทำงาน ระบบจะดาวน์โหลดพร็อกซีที่รับรู้ Microgateway ทั้งหมดในองค์กรที่เชื่อมโยงอยู่ ใช้การกำหนดค่าต่อไปนี้เพื่อจำกัดพร็อกซีที่ Microgateway จะประมวลผล ตัวอย่างเช่น การกำหนดค่านี้จะจำกัดพร็อกซีที่ Microgateway จะประมวลผลไว้ที่ 3 รายการ ได้แก่ edgemicro_proxy-1, edgemicro_proxy-2 และ edgemicro_proxy-3

edgemicro:
  proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

การกรองผลิตภัณฑ์ตามชื่อ

ใช้การกำหนดค่าต่อไปนี้เพื่อจำกัดจำนวนผลิตภัณฑ์ API ที่ Edge Microgateway ดาวน์โหลดและประมวลผล หากต้องการกรองผลิตภัณฑ์ที่ดาวน์โหลด ให้เพิ่มพารามิเตอร์การค้นหา productnamefilter ลงใน API /products ที่ระบุไว้ในไฟล์ *.config.yaml ของ Edge Microgateway เช่น

edge_config:
  bootstrap: >-
    https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
  jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'

โปรดทราบว่าค่าของพารามิเตอร์การค้นหาต้องระบุในรูปแบบนิพจน์ทั่วไปและ ต้องเข้ารหัส URL ตัวอย่างเช่น นิพจน์ทั่วไป ^[Ee]dgemicro.*$ จะจับชื่อต่างๆ เช่น "edgemicro-test-1" , "edgemicro_demo" และ "Edgemicro_New_Demo" ค่าที่เข้ารหัส URL ซึ่งเหมาะสําหรับ ใช้ในพารามิเตอร์การค้นหาคือ %5E%5BEe%5Ddgemicro.%2A%24

เอาต์พุตการแก้ไขข้อบกพร่องต่อไปนี้แสดงให้เห็นว่ามีการดาวน์โหลดเฉพาะผลิตภัณฑ์ที่กรองแล้ว

...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
   "apiProduct":[
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590549037549,
         "createdBy":"k***@g********m",
         "displayName":"test upper case in name",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590549037549,
         "lastModifiedBy":"k***@g********m",
         "name":"Edgemicro_New_Demo",
         "proxies":[
            "catchall"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590548328998,
         "createdBy":"k***@g********m",
         "displayName":"edgemicro test 1",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590548328998,
         "lastModifiedBy":"k***@g********m",
         "name":"edgemicro-test-1",
         "proxies":[
            "Lets-Encrypt-Validation-DoNotDelete"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1558182193472,
         "createdBy":"m*********@g********m",
         "displayName":"Edge microgateway demo product",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1569077897465,
         "lastModifiedBy":"m*********@g********m",
         "name":"edgemicro_demo",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_hello"
         ],
         "quota":"600",
         "quotaInterval":"1",
         "quotaTimeUnit":"minute",
         "scopes":[

         ]
      }
   ]
}

การกรองผลิตภัณฑ์ตามแอตทริบิวต์ที่กำหนดเอง

วิธีกรองผลิตภัณฑ์ตามแอตทริบิวต์ที่กำหนดเอง

  1. ใน UI ของ Edge ให้เลือกพร็อกซี edgemicro_auth ในองค์กร/สภาพแวดล้อม ที่คุณกำหนดค่า Edge Microgateway
  2. ในแท็บ Develop ให้เปิดนโยบาย JavaCallout ในเครื่องมือแก้ไข
  3. เพิ่มแอตทริบิวต์ที่กำหนดเองด้วยคีย์ products.filter.attributes โดยมีรายการชื่อแอตทริบิวต์ที่คั่นด้วยคอมมา ระบบจะส่งคืนเฉพาะผลิตภัณฑ์ที่มีชื่อแอตทริบิวต์ที่กำหนดเอง ไปยัง Edge Microgateway
  4. คุณเลือกปิดใช้การตรวจสอบ เพื่อดูว่าผลิตภัณฑ์เปิดใช้สำหรับสภาพแวดล้อมปัจจุบันหรือไม่ได้โดยการตั้งค่า แอตทริบิวต์ที่กำหนดเอง products.filter.env.enable เป็น false (ค่าเริ่มต้นคือ True)
  5. (Private Cloud เท่านั้น) หากคุณใช้ Edge สำหรับ Private Cloud ให้ตั้งค่าพร็อพเพอร์ตี้ org.noncps เป็น true เพื่อดึงผลิตภัณฑ์สำหรับสภาพแวดล้อมที่ไม่ใช่ CPS
  6. เช่น

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
        <DisplayName>JavaCallout</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="products.filter.attributes">attrib.one, attrib.two</Property>
            <Property name="products.filter.env.enable">false</Property>
            <Property name="org.noncps">true</Property>
        </Properties>
        <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
        <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
    </JavaCallout>

การกรองผลิตภัณฑ์ตามสถานะการเพิกถอน

ผลิตภัณฑ์ API มีรหัสสถานะ 3 รหัส ได้แก่ รอดำเนินการ ได้รับอนุมัติ และถูกเพิกถอน เพิ่มพร็อพเพอร์ตี้ใหม่ชื่อ allowProductStatus ลงในนโยบายตัวแปร JWT ในพร็อกซี edgemicro-auth หากต้องการใช้พร็อพเพอร์ตี้นี้เพื่อกรองผลิตภัณฑ์ API ที่แสดงใน JWT ให้ทำดังนี้

  1. เปิดพร็อกซี edgemicro-auth ในเครื่องมือแก้ไขพร็อกซี Apigee
  2. เพิ่มพร็อพเพอร์ตี้ allowProductStatus ลงใน XML ของนโยบาย SetJWTVariables และระบุรายการรหัสสถานะที่คั่นด้วยคอมมาเพื่อใช้กรอง เช่น หากต้องการกรองตามสถานะรอดำเนินการและเพิกถอนแล้ว ให้ทำดังนี้
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript timeLimit="20000" async="false" continueOnError="false"
        enabled="true" name="Set-JWT-Variables">
        <DisplayName>Set JWT Variables</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="allowProductStatus">Pending,Revoked</Property>
        </Properties>
        <ResourceURL>jsc://set-jwt-variables.js</ResourceURL>
    </Javascript>

    หากต้องการให้แสดงเฉพาะผลิตภัณฑ์ที่ได้รับอนุมัติ ให้ตั้งค่าพร็อพเพอร์ตี้ดังนี้

    <Property name="allowProductStatus">Approved</Property>
  3. บันทึกพร็อกซี

    หากไม่มีแท็กพร็อพเพอร์ตี้ ระบบจะแสดงผลิตภัณฑ์ที่มีรหัสสถานะทั้งหมดใน JWT

    หากต้องการใช้พร็อพเพอร์ตี้ใหม่นี้ คุณต้องอัปเกรดพร็อกซี edgemicro-auth

การกำหนดค่าความถี่ในการส่งข้อมูลวิเคราะห์

ใช้พารามิเตอร์การกำหนดค่าเหล่านี้เพื่อควบคุมความถี่ที่ Edge Microgateway ส่งข้อมูลวิเคราะห์ไปยัง Apigee

  • bufferSize (ไม่บังคับ): จำนวนสูงสุดของบันทึกการวิเคราะห์ที่บัฟเฟอร์ สามารถเก็บได้ก่อนที่จะเริ่มทิ้งบันทึกที่เก่าที่สุด ค่าเริ่มต้น: 10000
  • batchSize (ไม่บังคับ): ขนาดสูงสุดของกลุ่มบันทึกการวิเคราะห์ ที่ส่งไปยัง Apigee ค่าเริ่มต้น: 500
  • flushInterval (ไม่บังคับ): จำนวนมิลลิวินาทีระหว่างการล้างข้อมูลแต่ละครั้งของ บันทึกการวิเคราะห์กลุ่มที่ส่งไปยัง Apigee ค่าเริ่มต้น: 5000

เช่น

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

การมาสก์ข้อมูลวิเคราะห์

การกำหนดค่าต่อไปนี้จะป้องกันไม่ให้ข้อมูลเส้นทางคำขอแสดงในข้อมูลวิเคราะห์ของ Edge เพิ่มข้อมูลต่อไปนี้ลงในการกำหนดค่า Microgateway เพื่อมาสก์ URI ของคำขอและ/หรือเส้นทางของคำขอ โปรดทราบว่า URI ประกอบด้วยชื่อโฮสต์และส่วนเส้นทางของคำขอ

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

การแยกการเรียก API ใน Edge Analytics

คุณสามารถกำหนดค่าปลั๊กอินการวิเคราะห์เพื่อแยกเส้นทาง API ที่เฉพาะเจาะจงเพื่อให้ปรากฏเป็น พร็อกซีแยกต่างหากในแดชบอร์ดข้อมูลวิเคราะห์ Edge เช่น คุณสามารถ แยก API การตรวจสอบสถานะในแดชบอร์ดเพื่อไม่ให้สับสนกับการเรียกพร็อกซี API จริง ใน แดชบอร์ด Analytics พร็อกซีที่แยกจากกันจะมีรูปแบบการตั้งชื่อดังนี้

edgemicro_proxyname-health

รูปภาพต่อไปนี้แสดงพร็อกซีที่แยกกัน 2 รายการในแดชบอร์ด Analytics ได้แก่ edgemicro_hello-health และ edgemicro_mock-health

ใช้พารามิเตอร์ต่อไปนี้เพื่อแยกเส้นทางสัมพัทธ์และเส้นทางสมบูรณ์ในแดชบอร์ด Analytics เป็นพร็อกซีแยกต่างหาก

  • relativePath (ไม่บังคับ): ระบุเส้นทางที่เกี่ยวข้องเพื่อแยกในแดชบอร์ด Analytics เช่น หากคุณระบุ /healthcheck การเรียก API ทั้งหมดที่มีเส้นทาง /healthcheck จะปรากฏในแดชบอร์ดเป็น edgemicro_proxyname-health โปรดทราบว่า Flag นี้จะไม่สนใจเส้นทางพื้นฐานของพร็อกซี หากต้องการแยกตามเส้นทางแบบเต็ม รวมถึงเส้นทางฐาน ให้ใช้แฟล็ก proxyPath
  • proxyPath (ไม่บังคับ): ระบุเส้นทางพร็อกซี API แบบเต็ม รวมถึงเส้นทางฐานของพร็อกซี เพื่อแยกในแดชบอร์ดข้อมูลวิเคราะห์ ตัวอย่างเช่น หากคุณระบุ /mocktarget/healthcheck, โดยที่ /mocktarget คือเส้นทางฐานของพร็อกซี การเรียก API ทั้งหมดที่มีเส้นทาง /mocktarget/healthcheck จะ ปรากฏในแดชบอร์ดเป็น edgemicro_proxyname-health

ตัวอย่างเช่น ในการกำหนดค่าต่อไปนี้ เส้นทาง API ที่มี /healthcheck จะ แยกโดยปลั๊กอินการวิเคราะห์ ซึ่งหมายความว่า /foo/healthcheck และ /foo/bar/healthcheck จะแยกเป็นพร็อกซีต่างหากชื่อ edgemicro_proxyname-health ในแดชบอร์ดข้อมูลวิเคราะห์

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

ในการกำหนดค่าต่อไปนี้ API ที่มีเส้นทางพร็อกซี /mocktarget/healthcheck จะ แยกเป็นพร็อกซีแยกต่างหากชื่อ edgemicro_proxyname-health ใน แดชบอร์ดข้อมูลวิเคราะห์

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  proxyPath: /mocktarget/healthcheck

การตั้งค่า Edge Microgateway ที่อยู่หลังไฟร์วอลล์ของบริษัท

ใช้พร็อกซี HTTP เพื่อสื่อสารกับ Apigee Edge

เพิ่มในเวอร์ชัน 3.1.2

หากต้องการใช้พร็อกซี HTTP สำหรับการสื่อสารระหว่าง Edge Microgateway กับ Apigee Edge ให้ทำดังนี้

  1. ตั้งค่าตัวแปรสภาพแวดล้อม HTTP_PROXY, HTTPS_PROXY และ NO_PROXY ตัวแปรเหล่านี้ จะควบคุมโฮสต์สำหรับพร็อกซี HTTP แต่ละรายการที่คุณต้องการใช้ในการสื่อสารกับ Apigee Edge หรือโฮสต์ที่ไม่ควรจัดการการสื่อสารกับ Apigee Edge เช่น
    export HTTP_PROXY='http://localhost:3786'
    export HTTPS_PROXY='https://localhost:3786'
    export NO_PROXY='localhost,localhost:8080'

    โปรดทราบว่า NO_PROXY อาจเป็นรายการโดเมนที่คั่นด้วยคอมมาซึ่ง Edge Microgateway ไม่ควรพร็อกซี

    ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรเหล่านี้ได้ที่ https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables

  2. รีสตาร์ท Edge Microgateway

ใช้พร็อกซี HTTP สำหรับการสื่อสารเป้าหมาย

เพิ่มในเวอร์ชัน 3.1.2

หากต้องการใช้พร็อกซี HTTP สำหรับการสื่อสารระหว่าง Edge Microgateway กับเป้าหมายแบ็กเอนด์ ให้ทำดังนี้

  1. เพิ่มการกำหนดค่าต่อไปนี้ลงในไฟล์การกำหนดค่าของ Microgateway
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    สถานที่:

    • tunnel: (ไม่บังคับ) เมื่อเป็นจริง Edge Microgateway จะใช้เมธอด HTTP CONNECT เพื่อส่งคำขอ HTTP ผ่านการเชื่อมต่อ TCP รายการเดียว (เช่นเดียวกับกรณีที่ตัวแปรสภาพแวดล้อมตามที่กล่าวถึงด้านล่าง สำหรับการกำหนดค่าพร็อกซีเปิดใช้ TLS) ค่าเริ่มต้น: false
    • url: URL ของพร็อกซี HTTP
    • bypass: (ไม่บังคับ) ระบุ URL โฮสต์เป้าหมายอย่างน้อย 1 รายการที่คั่นด้วยคอมมาซึ่ง ควรข้ามพร็อกซี HTTP หากไม่ได้ตั้งค่าพร็อพเพอร์ตี้นี้ ให้ใช้ตัวแปรสภาพแวดล้อม NO_PROXY เพื่อระบุ URL เป้าหมายที่จะข้าม
    • เปิดใช้: หากเป็นจริงและตั้งค่า proxy.url ไว้ ให้ใช้ค่า proxy.url สำหรับพร็อกซี HTTP หากเป็นจริงและไม่ได้ตั้งค่า proxy.url ให้ใช้พร็อกซีที่ระบุในตัวแปรสภาพแวดล้อมพร็อกซี HTTP HTTP_PROXY และ HTTPS_PROXY ตามที่อธิบายไว้ในใช้พร็อกซี HTTP เพื่อสื่อสารกับ Apigee Edge

    เช่น

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. รีสตาร์ท Edge Microgateway

การใช้ไวลด์การ์ดในพร็อกซีที่รับรู้ Microgateway

คุณสามารถใช้ไวลด์การ์ด "*" อย่างน้อย 1 รายการในเส้นทางฐานของพร็อกซี edgemicro_* (Microgateway-aware) เช่น เส้นทางฐาน /team/*/members ช่วยให้ไคลเอ็นต์เรียก https://[host]/team/blue/members และ https://[host]/team/green/members ได้โดยที่คุณไม่ต้องสร้างพร็อกซี API ใหม่เพื่อรองรับทีมใหม่ โปรดทราบว่าระบบไม่รองรับ /**/

สำคัญ: Apigee ไม่รองรับการใช้ไวลด์การ์ด "*" เป็น องค์ประกอบแรกของเส้นทางฐาน เช่น ระบบไม่รองรับการค้นหา /*/

การหมุนเวียนคีย์ JWT

หลังจากสร้าง JWT ครั้งแรก คุณอาจต้องเปลี่ยนคู่คีย์สาธารณะ/ส่วนตัวที่จัดเก็บไว้ใน KVM ที่เข้ารหัสของ Edge กระบวนการสร้างคู่คีย์ใหม่นี้เรียกว่าการหมุนเวียนคีย์

วิธีที่ Edge Microgateway ใช้ JWT

JSON Web Token (JWT) เป็นมาตรฐานโทเค็นที่อธิบายไว้ใน RFC7519 JWT เป็นวิธีลงนามในชุดการอ้างสิทธิ์ ซึ่งผู้รับ JWT สามารถยืนยันได้อย่างน่าเชื่อถือ

คุณสร้าง JWT โดยใช้ CLI และใช้ในส่วนหัวการให้สิทธิ์ของการเรียก API แทนคีย์ API ได้ เช่น

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

ดูข้อมูลเกี่ยวกับการสร้าง JWT ด้วย CLI ได้ที่หัวข้อสร้างโทเค็น

การหมุนเวียนคีย์คืออะไร

หลังจากสร้าง JWT ครั้งแรก คุณอาจต้องเปลี่ยนคู่คีย์สาธารณะ/ส่วนตัวที่จัดเก็บไว้ใน KVM ที่เข้ารหัสของ Edge กระบวนการสร้างคู่คีย์ใหม่นี้เรียกว่าการหมุนเวียนคีย์ เมื่อหมุนเวียนคีย์ ระบบจะสร้างคู่คีย์ส่วนตัว/สาธารณะใหม่และ จัดเก็บไว้ใน KVM ของ "microgateway" ในองค์กร/สภาพแวดล้อม Apigee Edge นอกจากนี้ ระบบจะเก็บคีย์สาธารณะเก่าไว้พร้อมกับค่ารหัสคีย์เดิม

Edge ใช้ข้อมูลที่จัดเก็บไว้ใน KVM ที่เข้ารหัสเพื่อสร้าง JWT A มีการสร้าง KVM ที่ชื่อ microgatewayและป้อนข้อมูลด้วยคีย์เมื่อคุณตั้งค่า (กำหนดค่า) Edge Microgateway ในตอนแรก ระบบจะใช้คีย์ใน KVM เพื่อลงชื่อและเข้ารหัส JWT

คีย์ KVM มีดังนี้

  • private_key - คีย์ส่วนตัว RSA ล่าสุด (สร้างล่าสุด) ที่ใช้เพื่อลงชื่อ JWT

  • public_key - ใบรับรองล่าสุด (สร้างล่าสุด) ที่ใช้เพื่อยืนยัน JWT ที่ลงชื่อด้วย private_key

  • private_key_kid - รหัสคีย์ส่วนตัวล่าสุด (สร้างล่าสุด) รหัสคีย์นี้ เชื่อมโยงกับค่า private_key และใช้เพื่อรองรับการหมุนเวียนคีย์

  • public_key1_kid - รหัสคีย์สาธารณะล่าสุด (สร้างล่าสุด) คีย์นี้เชื่อมโยงกับค่า public_key1 และใช้เพื่อรองรับการหมุนเวียนคีย์ ค่านี้ จะเหมือนกับ kid ของคีย์ส่วนตัว

  • public_key1 - คีย์สาธารณะล่าสุด (สร้างล่าสุด)

เมื่อหมุนเวียนคีย์ ระบบจะแทนที่ค่าคีย์ที่มีอยู่ในแผนที่และเพิ่มคีย์ใหม่ เพื่อเก็บคีย์สาธารณะเก่าไว้ เช่น

  • public_key2_kid - รหัสคีย์สาธารณะเดิม คีย์นี้เชื่อมโยงกับค่า public_key2 และใช้เพื่อรองรับการหมุนเวียนคีย์

  • public_key2 - คีย์สาธารณะเดิม

ระบบจะยืนยัน JWT ที่แสดงเพื่อการยืนยันโดยใช้คีย์สาธารณะใหม่ หากการยืนยันไม่สำเร็จ ระบบจะใช้คีย์สาธารณะเดิมจนกว่า JWT จะหมดอายุ (หลังจากช่วงเวลา token_expiry* โดยค่าเริ่มต้นคือ 30 นาที) ใน วิธีนี้ คุณสามารถ "หมุนเวียน" คีย์ได้โดยไม่ขัดขวางการเข้าชม API ทันที

วิธีการหมุนเวียนคีย์

ส่วนนี้อธิบายวิธีหมุนเวียนคีย์

  1. หากต้องการอัปเกรด KVM ให้ใช้คำสั่ง edgemicro upgradekvm ดูรายละเอียด เกี่ยวกับการเรียกใช้คำสั่งนี้ได้ที่การอัปเกรด KVM คุณต้องทำขั้นตอนนี้เพียงครั้งเดียว
  2. หากต้องการอัปเกรดพร็อกซี edgemicro-oauth ให้ใช้คำสั่ง edgemicro upgradeauth ดูรายละเอียดเกี่ยวกับการเรียกใช้คำสั่งนี้ได้ที่ การอัปเกรดพร็อกซี edgemicro-auth คุณต้องทำขั้นตอนนี้เพียงครั้งเดียว
  3. เพิ่มบรรทัดต่อไปนี้ในไฟล์ ~/.edgemicro/org-env-config.yaml โดยคุณต้อง ระบุองค์กรและสภาพแวดล้อมเดียวกันกับที่คุณกำหนดค่า Microgateway ให้ใช้
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. เรียกใช้คำสั่งการหมุนเวียนคีย์เพื่อหมุนเวียนคีย์ ดูรายละเอียดเกี่ยวกับคำสั่งนี้ได้ที่ การหมุนเวียนคีย์

    edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET

    เช่น

    edgemicro rotatekey -o docs -e test \
    -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
    -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

หลังจากหมุนเวียนคีย์แล้ว Edge จะส่งคืนคีย์หลายรายการไปยัง Edge Microgateway โปรดสังเกตในตัวอย่างต่อไปนี้ว่าแต่ละคีย์มีค่า "kid" (รหัสคีย์) ที่ไม่ซ้ำกัน จากนั้น Microgateway จะใช้คีย์เหล่านี้ เพื่อตรวจสอบโทเค็นการให้สิทธิ์ หากการตรวจสอบโทเค็นไม่สำเร็จ Microgateway จะตรวจสอบว่ามีคีย์ที่เก่ากว่าในชุดคีย์หรือไม่ แล้วลองใช้คีย์นั้น รูปแบบของคีย์ที่ส่งคืนคือ JSON Web Key (JWK) คุณอ่านเกี่ยวกับรูปแบบนี้ได้ใน RFC 7517

{
  "keys": [
    {
      "kty": "RSA",
      "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
      "e": "AQAB",
      "kid": "2"
    },
    {
      "kty": "RSA",
      "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
      "e": "AQAB",
      "kid": "1"
    }
  ]
}

การกำหนดค่าความล่าช้า "ไม่ก่อน"

สำหรับเวอร์ชัน 3.1.5 และก่อนหน้านี้ คีย์ส่วนตัวใหม่ที่สร้างขึ้นโดยใช้คำสั่ง rotatekey จะมีผลทันที และระบบจะลงนามโทเค็นใหม่ที่สร้างขึ้นด้วยคีย์ส่วนตัวใหม่ อย่างไรก็ตาม คีย์สาธารณะใหม่จะพร้อมใช้งานในอินสแตนซ์ Edge Microgateway ทุกๆ 10 นาที (โดยค่าเริ่มต้น) เมื่อรีเฟรชการกำหนดค่า Microgateway เนื่องจากความล่าช้าระหว่างการลงนามโทเค็น และการรีเฟรชอินสแตนซ์ Microgateway โทเค็นที่ลงนามด้วยคีย์ล่าสุดจะถูกปฏิเสธจนกว่า อินสแตนซ์ทั้งหมดจะได้รับคีย์สาธารณะล่าสุด

ในกรณีที่มีอินสแตนซ์ Microgateway หลายรายการ ความล่าช้าของคีย์สาธารณะอาจส่งผลให้เกิดข้อผิดพลาดรันไทม์เป็นระยะๆ ที่มีสถานะ 403 เนื่องจากระบบจะตรวจสอบโทเค็นผ่านในอินสแตนซ์หนึ่ง แต่อาจไม่ผ่านในอีกอินสแตนซ์หนึ่งจนกว่าจะรีเฟรชอินสแตนซ์ทั้งหมด

ตั้งแต่เวอร์ชัน 3.1.6 เป็นต้นไป แฟล็กใหม่ในคำสั่ง rotatekey จะช่วยให้คุณระบุการหน่วงเวลาสำหรับคีย์ส่วนตัวใหม่ให้มีผลได้ ซึ่งจะช่วยให้มีเวลาในการรีเฟรชอินสแตนซ์ Microgateway ทั้งหมดและรับคีย์สาธารณะใหม่ โดยแฟล็กใหม่คือ --nbf ซึ่งย่อมาจาก "not before" โดยแฟล็กนี้จะใช้ค่าจำนวนเต็ม ซึ่งเป็นจำนวนนาทีที่จะหน่วงเวลา

ในตัวอย่างต่อไปนี้ เราตั้งค่าการหน่วงเวลาเป็น 15 นาที

edgemicro rotatekey -o docs -e test \
-k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
-s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \
--nbf 15

โปรดทราบว่าแนวทางปฏิบัติที่ดีคือการตั้งค่าการหน่วงเวลาให้มากกว่าconfig_change_poll_internalการตั้งค่าการกำหนดค่า ซึ่งโดยค่าเริ่มต้นคือ 10 นาที ดูแอตทริบิวต์ edgemicro ด้วย

การกรองพร็อกซีที่ดาวน์โหลด

โดยค่าเริ่มต้น Edge Microgateway จะดาวน์โหลดพร็อกซีทั้งหมดในองค์กร Edge ที่ขึ้นต้นด้วยคำนำหน้าการตั้งชื่อ "edgemicro_" คุณเปลี่ยนค่าเริ่มต้นนี้เพื่อดาวน์โหลดพร็อกซี ที่มีชื่อตรงกับรูปแบบได้

  1. เปิดไฟล์การกำหนดค่า Edge Micro: ~/.edgemicro/org-env-config.yaml
  2. เพิ่มองค์ประกอบ proxyPattern ภายใต้ edge_config เช่น รูปแบบต่อไปนี้จะ ดาวน์โหลดพร็อกซี เช่น edgemicro_foo, edgemicro_fast และ edgemicro_first
    edge_config:
    …
    proxyPattern: edgemicro_f*

การระบุผลิตภัณฑ์โดยไม่มีพร็อกซี API

ใน Apigee Edge คุณสามารถสร้างผลิตภัณฑ์ API ที่ไม่มีพร็อกซี API ได้ การกำหนดค่าผลิตภัณฑ์นี้ช่วยให้คีย์ API ที่เชื่อมโยงกับผลิตภัณฑ์นั้นทำงานร่วมกับพร็อกซีที่ติดตั้งใช้งานในองค์กรได้ ตั้งแต่เวอร์ชัน 2.5.4 เป็นต้นไป Edge Microgateway รองรับการกำหนดค่าผลิตภัณฑ์นี้

การแก้ไขข้อบกพร่องและการแก้ปัญหา

การเชื่อมต่อกับโปรแกรมแก้ไขข้อบกพร่อง

คุณเรียกใช้ Edge Microgateway ด้วยโปรแกรมแก้ไขข้อบกพร่องได้ เช่น node-inspector ซึ่งจะเป็นประโยชน์สำหรับการแก้ปัญหาและการแก้ไขข้อบกพร่องของปลั๊กอินที่กำหนดเอง

  1. รีสตาร์ท Edge Microgateway ในโหมดแก้ไขข้อบกพร่อง โดยให้เพิ่ม DEBUG=* ที่ จุดเริ่มต้นของคำสั่ง start ดังนี้
    DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    หากต้องการส่งเอาต์พุตการแก้ไขข้อบกพร่องไปยังไฟล์ คุณสามารถใช้คำสั่งต่อไปนี้

    export DEBUG=* nohup edgemicro start \
    -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log

  2. เริ่มโปรแกรมแก้ไขข้อบกพร่องและตั้งค่าให้รับฟังหมายเลขพอร์ตสำหรับกระบวนการแก้ไขข้อบกพร่อง
  3. ตอนนี้คุณสามารถดูโค้ด Edge Microgateway ทีละขั้นตอน ตั้งค่าเบรกพอยต์ ดูนิพจน์ และอื่นๆ ได้แล้ว

คุณระบุแฟล็กมาตรฐานของ Node.js ที่เกี่ยวข้องกับโหมดแก้ไขข้อบกพร่องได้ เช่น --nolazy ช่วยในการแก้ไขข้อบกพร่องของโค้ดแบบอะซิงโครนัส

การตรวจสอบไฟล์บันทึก

หากพบปัญหา โปรดตรวจสอบไฟล์บันทึกเพื่อดูรายละเอียดการดำเนินการและข้อมูลข้อผิดพลาด โปรดดูรายละเอียดที่หัวข้อการจัดการไฟล์บันทึก

การใช้ความปลอดภัยของคีย์ API

คีย์ API เป็นกลไกง่ายๆ สำหรับการตรวจสอบสิทธิ์ไคลเอ็นต์ที่ส่งคำขอไปยัง Edge Microgateway คุณขอรับคีย์ API ได้โดยการคัดลอกค่าคีย์ผู้ใช้ (หรือที่เรียกว่ารหัสไคลเอ็นต์) จากผลิตภัณฑ์ Apigee Edge ที่มีพร็อกซีการตรวจสอบสิทธิ์ Edge Microgateway

การแคชคีย์

ระบบจะแลกเปลี่ยนคีย์ API เป็นโทเค็น Bearer ซึ่งจะแคชไว้ คุณปิดใช้การแคชได้โดยตั้งค่า ส่วนหัว Cache-Control: no-cache ในคำขอขาเข้าที่ส่งไปยัง Edge Microgateway

การใช้คีย์ API

คุณส่งคีย์ API ในคำขอ API ได้ทั้งเป็นพารามิเตอร์การค้นหาหรือในส่วนหัว โดยค่าเริ่มต้น ชื่อส่วนหัวและพารามิเตอร์การค้นหาจะเป็น x-api-key

ตัวอย่างพารามิเตอร์การค้นหา

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

ตัวอย่างส่วนหัว

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

การกำหนดค่าชื่อคีย์ API

โดยค่าเริ่มต้น x-api-key คือชื่อที่ใช้สำหรับทั้งส่วนหัวคีย์ API และพารามิเตอร์การค้นหา คุณเปลี่ยนค่าเริ่มต้นนี้ได้ในไฟล์การกำหนดค่าตามที่อธิบายไว้ในการเปลี่ยนแปลงการกำหนดค่า เช่น หากต้องการเปลี่ยนชื่อ เป็น apiKey ให้ทำดังนี้

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

ในตัวอย่างนี้ ทั้งพารามิเตอร์การค้นหาและชื่อส่วนหัวจะเปลี่ยนเป็น apiKey ชื่อ x-api-key จะใช้งานไม่ได้อีกต่อไปในทั้ง 2 กรณี ดูเพิ่มเติม การเปลี่ยนแปลงการกำหนดค่า

เช่น

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้คีย์ API กับคำขอพร็อกซีได้ที่ Secure Edge Microgateway

เปิดใช้รหัสการตอบกลับต้นทาง

โดยค่าเริ่มต้น oauth ปลั๊กอินจะแสดงเฉพาะรหัสสถานะข้อผิดพลาด 4xx หากการตอบกลับไม่ใช่สถานะ 200 คุณเปลี่ยนลักษณะการทำงานนี้เพื่อให้ระบบแสดงรหัส 4xx หรือ 5xx ที่ตรงกันเสมอได้ ทั้งนี้ขึ้นอยู่กับข้อผิดพลาด

หากต้องการเปิดใช้ฟีเจอร์นี้ ให้เพิ่มพร็อพเพอร์ตี้ oauth.useUpstreamResponse: true ลงในการกำหนดค่า Edge Microgateway เช่น

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

การใช้ความปลอดภัยของโทเค็น OAuth2

ส่วนนี้จะอธิบายวิธีรับโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรช OAuth2 โทเค็นเพื่อการเข้าถึงใช้เพื่อทำการเรียก API ที่ปลอดภัยผ่าน Microgateway ระบบจะใช้โทเค็นการรีเฟรชเพื่อขอโทเค็นเพื่อการเข้าถึงใหม่

วิธีรับโทเค็นเพื่อการเข้าถึง

ส่วนนี้จะอธิบายวิธีใช้พร็อกซี edgemicro-auth เพื่อรับโทเค็นเพื่อการเข้าถึง

นอกจากนี้ คุณยังรับโทเค็นเพื่อการเข้าถึงได้โดยใช้edgemicro tokenคำสั่ง CLI โปรดดูรายละเอียดเกี่ยวกับ CLI ที่หัวข้อการจัดการโทเค็น

API 1: ส่งข้อมูลเข้าสู่ระบบเป็นพารามิเตอร์ของเนื้อหา

แทนที่ชื่อองค์กรและสภาพแวดล้อมใน URL และ แทนที่ค่ารหัสผู้ใช้และค่าลับของผู้ใช้ที่ได้จากแอปสำหรับนักพัฒนาซอฟต์แวร์ใน Apigee Edge สำหรับพารามิเตอร์ในส่วนเนื้อหา client_id และ client_secret ดังนี้

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"

API 2: ส่งข้อมูลเข้าสู่ระบบในส่วนหัวการตรวจสอบสิทธิ์ขั้นพื้นฐาน

ส่งข้อมูลเข้าสู่ระบบไคลเอ็นต์เป็นส่วนหัวการตรวจสอบสิทธิ์พื้นฐานและ grant_typeเป็นพารามิเตอร์แบบฟอร์ม รูปแบบคำสั่งนี้ยังอธิบายไว้ใน RFC 6749: กรอบการให้สิทธิ์ OAuth 2.0 ด้วย

http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \
-d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"

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

API จะแสดงการตอบกลับเป็น JSON โปรดทราบว่าพร็อพเพอร์ตี้ token และ access_token ไม่มีความแตกต่างกัน คุณจะใช้ตัวใดตัวหนึ่งก็ได้ โปรดทราบว่า expires_in เป็นค่าจำนวนเต็มที่ระบุเป็นวินาที
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": 1799
}

วิธีรับโทเค็นการรีเฟรช

หากต้องการรับโทเค็นการรีเฟรช ให้เรียก API ไปยังปลายทาง /token ของพร็อกซี edgemicro-auth คุณต้องทำการเรียก API นี้ด้วยประเภทการให้สิทธิ์ password ขั้นตอนต่อไปนี้จะอธิบายกระบวนการ

  1. รับโทเค็นเพื่อการเข้าถึงและโทเค็นรีเฟรชด้วย /token API โปรดทราบว่า ประเภทการให้สิทธิ์คือ password
    curl -X POST \
      https://your_organization-your_environment.apigee.net/edgemicro-auth/token \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq",
       "client_secret":"bUdDcFgv3nXffnU",
       "grant_type":"password",
       "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq",
       "password":"bUdD2FvnMsXffnU"
    }'

    API จะแสดงโทเค็นเพื่อการเข้าถึงและโทเค็นการรีเฟรช การตอบกลับจะมีลักษณะคล้ายกับ ข้อความนี้ โปรดทราบว่าค่า expires_in เป็นจำนวนเต็มและระบุเป็นวินาที

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": 108,
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": 431,
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. ตอนนี้คุณใช้โทเค็นการรีเฟรชเพื่อรับโทเค็นเพื่อการเข้าถึงใหม่ได้โดยการเรียกใช้ /refresh ปลายทางของ API เดียวกัน เช่น
    curl -X POST \
      https://willwitman-test.apigee.net/edgemicro-auth/refresh \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq",
       "client_secret":"bUdDc2Fv3nMXffnU",
       "grant_type":"refresh_token",
       "refresh_token":"your-refresh-token"
    }'

    API จะแสดงโทเค็นเพื่อการเข้าถึงใหม่ คำตอบจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้

    {
        "token": "your-new-access-token"
        }

การตรวจสอบตลอดเวลา

การระบุปลายทางไฟล์การกำหนดค่า

หากเรียกใช้อินสแตนซ์ Edge Microgateway หลายรายการ คุณอาจต้องการจัดการการกำหนดค่าจากที่เดียว คุณทำได้โดยการระบุปลายทาง HTTP ที่ Edge Micro สามารถดาวน์โหลดไฟล์การกำหนดค่าได้ คุณระบุปลายทางนี้ได้เมื่อเริ่มใช้ Edge Micro โดยใช้แฟล็ก -u

เช่น

edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key

โดยที่ปลายทาง mgconfig จะแสดงเนื้อหาของไฟล์การกำหนดค่า นี่คือไฟล์ ซึ่งโดยค่าเริ่มต้นจะอยู่ใน ~/.edgemicro และมีรูปแบบการตั้งชื่อดังนี้ org-env-config.yaml

การปิดใช้การบัฟเฟอร์ข้อมูลการเชื่อมต่อ TCP

คุณใช้nodelayแอตทริบิวต์การกำหนดค่าเพื่อปิดใช้การบัฟเฟอร์ข้อมูลสำหรับการเชื่อมต่อ TCP ที่ Edge Microgateway ใช้ได้

โดยค่าเริ่มต้น การเชื่อมต่อ TCP จะใช้อัลกอริทึม Nagleเพื่อบัฟเฟอร์ข้อมูลก่อนส่ง การตั้งค่า nodelay เป็น true จะปิดใช้ลักษณะการทำงานนี้ (ข้อมูลจะส่งออกทันทีทุกครั้งที่มีการเรียกใช้ socket.write()) ดูรายละเอียดเพิ่มเติมได้ในเอกสารประกอบของ Node.js

หากต้องการเปิดใช้ nodelay ให้แก้ไขไฟล์การกำหนดค่าของ Edge Micro ดังนี้

edgemicro:
  nodelay: true
  port: 8000
  max_connections: 1000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

การเรียกใช้ Edge Microgateway ในโหมดสแตนด์อโลน

คุณเรียกใช้ Edge Microgateway ได้โดยไม่ต้องเชื่อมต่อกับ Apigee Edge สถานการณ์นี้เรียกว่าโหมดสแตนด์อโลน ซึ่งช่วยให้คุณเรียกใช้และทดสอบ Edge Microgateway ได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต

ในโหมดสแตนด์อโลน ฟีเจอร์ต่อไปนี้จะใช้งานไม่ได้เนื่องจากต้องเชื่อมต่อกับ Apigee Edge

  • OAuth และคีย์ API
  • โควต้า
  • Analytics

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

การกำหนดค่าและการเริ่มต้นเกตเวย์

วิธีเรียกใช้ Edge Microgateway ในโหมดสแตนด์อโลน

  1. สร้างไฟล์การกำหนดค่าโดยตั้งชื่อดังนี้ $HOME/.edgemicro/$ORG-$ENV-config.yaml

    เช่น

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. วางโค้ดต่อไปนี้ลงในไฟล์
    edgemicro:
      port: 8000
      max_connections: 1000
      config_change_poll_interval: 600
      logging:
        level: error
        dir: /var/tmp
        stats_log_interval: 60
        rotate_interval: 24
      plugins:
        sequence:
          - extauth
          - spikearrest
    headers:
      x-forwarded-for: true
      x-forwarded-host: true
      x-request-id: true
      x-response-time: true
      via: true
    extauth:
      publickey_url: https://www.googleapis.com/oauth2/v1/certs
    spikearrest:
      timeUnit: second
      allow: 10
      buffersize: 0
  3. ส่งออกตัวแปรสภาพแวดล้อมต่อไปนี้ด้วยค่า "1"
    export EDGEMICRO_LOCAL=1
  4. เรียกใช้คำสั่ง start ต่อไปนี้ โดยระบุค่าเพื่อสร้างอินสแตนซ์ของพร็อกซีภายใน
    edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \
      -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH

    สถานที่:

    • $ORG คือชื่อ "org" ที่คุณใช้ในชื่อไฟล์การกำหนดค่า
    • $ENV คือชื่อ "env" ที่คุณใช้ในไฟล์การกำหนดค่า name
    • $LOCAL_PROXY_NAME คือชื่อของพร็อกซีในเครื่องที่จะสร้าง คุณใช้ ชื่อใดก็ได้ตามต้องการ
    • $LOCAL_PROXY_VERSION คือหมายเลขเวอร์ชันของพร็อกซี
    • $TARGET_URL คือ URL สำหรับเป้าหมายของพร็อกซี (เป้าหมายคือ บริการที่พร็อกซีเรียก)
    • $BASE_PATH คือเส้นทางฐานของพร็อกซี ค่านี้ต้องขึ้นต้นด้วยเครื่องหมายทับ สำหรับเส้นทางฐานราก ให้ระบุเครื่องหมายทับไปข้างหน้าเท่านั้น เช่น "/"

    เช่น

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. ทดสอบการกำหนดค่า
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    เนื่องจากปลั๊กอิน extauth อยู่ในไฟล์ foo-bar-config.yaml คุณจึงได้รับข้อผิดพลาด "missing_authorization" ปลั๊กอินนี้จะตรวจสอบ JWT ซึ่งต้องอยู่ในส่วนหัวการให้สิทธิ์ ของการเรียก API ในส่วนถัดไป คุณจะได้รับ JWT ที่จะอนุญาตให้การเรียก API ผ่านไปได้โดยไม่มีข้อผิดพลาด

ตัวอย่าง: การขอโทเค็นการให้สิทธิ์

ตัวอย่างต่อไปนี้แสดงวิธีรับ JWT จากปลายทาง JWT ของ Edge Microgateway ใน Apigee Edge (edgemicro-auth/jwkPublicKeys) ระบบจะติดตั้งใช้งานปลายทางนี้เมื่อคุณตั้งค่าและกำหนดค่ามาตรฐานของ Edge Microgateway หากต้องการรับ JWT จากปลายทาง Apigee คุณต้องตั้งค่า Edge Microgateway มาตรฐานก่อน และ เชื่อมต่ออินเทอร์เน็ต ในที่นี้เราใช้ปลายทาง Apigee เป็นตัวอย่างเท่านั้น และคุณไม่จำเป็นต้องใช้ คุณสามารถใช้ปลายทางโทเค็น JWT อื่นได้หากต้องการ หากต้องการ คุณจะต้องขอรับ JWT โดยใช้ API ที่มีให้สำหรับปลายทางนั้น

ขั้นตอนต่อไปนี้อธิบายวิธีรับโทเค็นโดยใช้ปลายทาง edgemicro-auth/jwkPublicKeys

  1. คุณต้องตั้งค่าและกำหนดค่า มาตรฐานของ Edge Microgateway เพื่อติดตั้งใช้งานพร็อกซี edgemicro-auth ในองค์กร/สภาพแวดล้อมของคุณใน Apigee Edge หากเคยทำขั้นตอนนี้แล้ว คุณก็ไม่จำเป็นต้องทำซ้ำ
  2. หากคุณติดตั้งใช้งาน Edge Microgateway ใน Apigee Cloud คุณต้องเชื่อมต่ออินเทอร์เน็ตเพื่อให้ได้รับ JWT จากปลายทางนี้
  3. หยุด Edge Microgateway
    edgemicro stop
  4. ในไฟล์การกำหนดค่าที่คุณสร้างไว้ก่อนหน้านี้ ($HOME/.edgemicro/org-env-config.yaml) ให้ชี้แอตทริบิวต์ extauth:publickey_url ไปยังปลายทาง edgemicro-auth/jwkPublicKeys ในองค์กร/สภาพแวดล้อม Apigee Edge เช่น
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. รีสตาร์ท Edge Microgateway เหมือนที่เคยทำ โดยใช้ชื่อองค์กร/สภาพแวดล้อมที่คุณใช้ในชื่อไฟล์การกำหนดค่า เช่น
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. รับโทเค็น JWT จากปลายทางการให้สิทธิ์ เนื่องจากคุณใช้ปลายทาง edgemicro-auth/jwkPublicKeys คุณจึงใช้คำสั่ง CLI นี้ได้

คุณสร้าง JWT สำหรับ Edge Microgateway ได้โดยใช้คำสั่ง edgemicro token หรือ API เช่น

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

สถานที่:

  • your_org คือชื่อองค์กร Apigee ที่คุณกำหนดค่า Edge Microgateway ไว้ก่อนหน้านี้
  • your_env คือสภาพแวดล้อมในองค์กร
  • ตัวเลือก i จะระบุคีย์ผู้ใช้จากแอปของนักพัฒนาแอปที่มีผลิตภัณฑ์ ซึ่งมีพร็อกซี edgemicro-auth
  • ตัวเลือก s จะระบุรหัสลับผู้บริโภคจากแอปของนักพัฒนาซอฟต์แวร์ที่มีผลิตภัณฑ์ซึ่งรวมพร็อกซี edgemicro-auth

คำสั่งนี้ขอให้ Apigee Edge สร้าง JWT ซึ่งจะใช้เพื่อยืนยันการเรียก API ได้

ดูหัวข้อสร้างโทเค็นด้วย

ทดสอบการกำหนดค่าแบบสแตนด์อโลน

หากต้องการทดสอบการกำหนดค่า ให้เรียก API โดยใช้โทเค็นที่เพิ่มในส่วนหัวการให้สิทธิ์ดังนี้

curl http://localhost:8000/echo -H "Authorization: Bearer your_token

ตัวอย่าง

curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"

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

{
   "headers":{
      "user-agent":"curl/7.54.0",
      "accept":"*/*",
      "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
      "client_received_start_timestamp":"1535134472699",
      "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
      "target_sent_start_timestamp":"1535134472702",
      "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
      "x-forwarded-proto":"http",
      "x-forwarded-host":"localhost:8000",
      "host":"mocktarget.apigee.net",
      "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
      "via":"1.1 localhost, 1.1 google",
      "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
      "connection":"Keep-Alive"
   },
   "method":"GET",
   "url":"/",
   "body":""
}

การใช้โหมดพร็อกซีในเครื่อง

ในโหมดพร็อกซีภายใน Edge Microgateway ไม่จำเป็นต้องมีพร็อกซีที่รองรับ Microgateway เพื่อนำไปใช้งานใน Apigee Edge แต่คุณจะกำหนดค่า "พร็อกซีในเครื่อง" โดยระบุ ชื่อพร็อกซีในเครื่อง, basepath และ URL เป้าหมายเมื่อ เริ่มต้น Microgateway จากนั้นระบบจะส่งการเรียก API ไปยัง Microgateway ไปยัง URL เป้าหมายของพร็อกซีในเครื่อง ในด้านอื่นๆ ทั้งหมด โหมดพร็อกซีในเครื่องจะทำงานเหมือนกับการเรียกใช้ Edge Microgateway ในโหมดปกติทุกประการ การตรวจสอบสิทธิ์จะทำงานเหมือนเดิม เช่นเดียวกับการป้องกันการเพิ่มขึ้นของทราฟิกและการบังคับใช้โควต้า ปลั๊กอินที่กำหนดเอง และอื่นๆ

กรณีการใช้งานและตัวอย่าง

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

Edgemicro เป็นไฟล์ช่วยเหลือ

ข้อดีของสถาปัตยกรรมรูปแบบนี้คือ Edge Microgateway มีการจัดการ API สำหรับบริการแต่ละรายการที่นำไปใช้งานในสภาพแวดล้อมคอนเทนเนอร์ เช่น คลัสเตอร์ Kubernetes

การกำหนดค่าโหมดพร็อกซีในเครื่อง

หากต้องการกำหนดค่า Edge Microgateway ให้ทำงานในโหมดพร็อกซีภายใน ให้ทำตามขั้นตอนต่อไปนี้

  1. เรียกใช้ edgemicro init เพื่อตั้งค่าสภาพแวดล้อมการกำหนดค่าภายใน เหมือนกับ ที่คุณจะทำในการตั้งค่า Edge Microgateway ทั่วไป ดูเพิ่มเติม กำหนดค่า Edge Microgateway
  2. เรียกใช้ edgemicro configure ตามที่คุณจะทำในการตั้งค่า Edge Microgateway ทั่วไป เช่น
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    คำสั่งนี้จะติดตั้งใช้งานนโยบาย edgemicro-auth กับ Edge และแสดงคีย์ และข้อมูลลับที่คุณจะต้องใช้เพื่อเริ่ม Microgateway หากต้องการความช่วยเหลือ โปรดดู กำหนดค่า Edge Microgateway

  3. ใน Apigee Edge ให้สร้างผลิตภัณฑ์ API และกำหนดค่าที่จำเป็นต่อไปนี้ (คุณจัดการการกำหนดค่าอื่นๆ ทั้งหมดได้ตามต้องการ)
    • คุณต้องเพิ่มพร็อกซี edgemicro-auth ลงในผลิตภัณฑ์ พร็อกซีนี้ ได้รับการติดตั้งใช้งานโดยอัตโนมัติเมื่อคุณเรียกใช้ edgemicro configure
    • คุณต้องระบุเส้นทางทรัพยากร Apigee ขอแนะนำให้เพิ่มเส้นทางนี้ลงใน ผลิตภัณฑ์: /** ดูข้อมูลเพิ่มเติมได้ที่กำหนดค่าลักษณะการทำงานของเส้นทางทรัพยากร ดูสร้างผลิตภัณฑ์ APIในเอกสารประกอบของ Edge ด้วย
  4. ใน Apigee Edge ให้สร้างนักพัฒนาแอป หรือจะใช้นักพัฒนาแอปที่มีอยู่ก็ได้หากต้องการ หากต้องการความช่วยเหลือ โปรดดูการเพิ่มนักพัฒนาแอปโดยใช้ UI การจัดการ Edge

  5. สร้างแอปของนักพัฒนาซอฟต์แวร์ใน Apigee Edge คุณต้องเพิ่มผลิตภัณฑ์ API ที่เพิ่งสร้างลงในแอป หากต้องการความช่วยเหลือ โปรดดูการลงทะเบียนแอปใน UI การจัดการของ Edge
  6. ในเครื่องที่ติดตั้ง Edge Microgateway ให้ส่งออกตัวแปรสภาพแวดล้อมต่อไปนี้ โดยมีค่าเป็น "1"
    export EDGEMICRO_LOCAL_PROXY=1
  7. เรียกใช้คำสั่ง start ต่อไปนี้
    edgemicro start -o your_org -e your_environment -k your_key -s your_secret \
        -a local_proxy_name -v local_proxy_version -t target_url -b base_path

    สถานที่:

    • your_org คือองค์กร Apigee ของคุณ
    • your_environment คือสภาพแวดล้อมในองค์กรของคุณ
    • your_key คือคีย์ที่ระบบแสดงเมื่อคุณเรียกใช้ edgemicro configure
    • your_secret คือข้อมูลลับที่ระบบส่งคืนเมื่อคุณเรียกใช้ edgemicro configure
    • local_proxy_name คือชื่อของพร็อกซีในเครื่องที่จะสร้าง
    • local_proxy_version คือหมายเลขเวอร์ชันของพร็อกซี
    • target_url คือ URL สำหรับเป้าหมายของพร็อกซี (บริการที่พร็อกซีจะเรียก)
    • base_path คือเส้นทางฐานของพร็อกซี ค่านี้ต้องขึ้นต้นด้วยเครื่องหมายทับ สำหรับเส้นทางฐานราก ให้ระบุเครื่องหมายทับไปข้างหน้าเท่านั้น เช่น "/"

    เช่น

    edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \
      -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \
      -t http://mocktarget.apigee.net -b /echo

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

คุณทดสอบการกำหนดค่าพร็อกซีในเครื่องได้โดยการเรียกใช้ปลายทางของพร็อกซี ตัวอย่างเช่น หากคุณระบุเส้นทางฐานเป็น /echo คุณจะเรียกพร็อกซีได้ดังนี้

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

การเรียก API ครั้งแรกนี้ทำให้เกิดข้อผิดพลาดเนื่องจากคุณไม่ได้ระบุคีย์ API ที่ถูกต้อง คุณดูคีย์ได้ ในแอปนักพัฒนาแอปที่คุณสร้างไว้ก่อนหน้านี้ เปิดแอปใน UI ของ Edge คัดลอก คีย์ผู้บริโภค แล้วใช้คีย์ดังกล่าวดังนี้

curl  http://localhost:8000/echo -H 'x-api-key:your_api_key'

เช่น

curl  http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"

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

{
  "headers":{
    "user-agent":"curl/7.54.0",
    "accept":"*/*",
    "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
    "client_received_start_timestamp":"1535134472699",
    "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
    "target_sent_start_timestamp":"1535134472702",
    "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
    "x-forwarded-proto":"http",
    "x-forwarded-host":"localhost:8000",
    "host":"mocktarget.apigee.net",
    "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
    "via":"1.1 localhost, 1.1 google",
    "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
    "connection":"Keep-Alive"
  },
  "method":"GET",
  "url":"/",
  "body":""
}

การใช้ตัวซิงโครไนซ์

ส่วนนี้จะอธิบายวิธีใช้ตัวซิงโครไนซ์ ซึ่งเป็นฟีเจอร์ที่ไม่บังคับที่ ปรับปรุงความยืดหยุ่นของ Edge Microgateway โดยอนุญาตให้ ดึงข้อมูลการกำหนดค่าจาก Apigee Edge และเขียนลงในฐานข้อมูล Redis ในเครื่อง เมื่ออินสแตนซ์ตัวซิงโครไนซ์ทำงานอยู่ อินสแตนซ์ Edge Microgateway อื่นๆ ที่ทำงานในโหนดต่างๆ จะเรียกข้อมูลการกำหนดค่าจากฐานข้อมูลนี้ได้โดยตรง

ปัจจุบันฟีเจอร์ตัวซิงโครไนซ์รองรับการทำงานกับ Redis 5.0.x

ตัวซิงโครไนซ์คืออะไร

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

โดยค่าเริ่มต้น อินสแตนซ์ Edge Microgateway ต้องสื่อสารกับ Apigee Edge ได้เพื่อ เรียกและรีเฟรชข้อมูลการกำหนดค่า เช่น การกำหนดค่าพร็อกซี API และผลิตภัณฑ์ API หากการเชื่อมต่ออินเทอร์เน็ตกับ Edge ถูกขัดขวาง อินสแตนซ์ Microgateway จะยังคงทำงานได้เนื่องจากระบบแคชข้อมูลการกำหนดค่าล่าสุด อย่างไรก็ตาม อินสแตนซ์ Microgateway ใหม่ จะเริ่มต้นไม่ได้หากไม่มีการเชื่อมต่อที่ชัดเจน นอกจากนี้ การหยุดชะงักของอินเทอร์เน็ตอาจส่งผลให้มีอินสแตนซ์ของ Microgateway อย่างน้อย 1 รายการที่ทำงานโดยมีข้อมูลการกำหนดค่าซึ่งไม่ซิงค์กับอินสแตนซ์อื่นๆ

ตัวซิงโครไนซ์ Edge Microgateway มีกลไกทางเลือกสำหรับอินสแตนซ์ Edge Microgateway ในการเรียกข้อมูลการกำหนดค่าที่จำเป็นต่อการเริ่มต้นและประมวลผลการเข้าชมพร็อกซี API ข้อมูลการกำหนดค่าที่ดึงมาจากการเรียกไปยัง Apigee Edge ได้แก่ การเรียก jwk_public_keys การเรียก jwt_public_key การเรียก Bootstrap และการเรียกผลิตภัณฑ์ API ตัวซิงค์ช่วยให้อินสแตนซ์ Edge Microgateway ทั้งหมดที่ทำงานในโหนดต่างๆ เริ่มต้นทำงานได้อย่างถูกต้องและซิงค์อยู่เสมอ แม้ว่า การเชื่อมต่ออินเทอร์เน็ตระหว่าง Edge Microgateway กับ Apigee Edge จะถูกขัดจังหวะก็ตาม

ตัวซิงโครไนซ์คืออินสแตนซ์ของ Edge Microgateway ที่กำหนดค่าไว้เป็นพิเศษ โดยมีวัตถุประสงค์เพียงเพื่อสำรวจ Apigee Edge (กำหนดเวลาได้) ดึงข้อมูลการกำหนดค่า และเขียนลงในฐานข้อมูล Redis ในเครื่อง อินสแตนซ์ตัวซิงค์เองไม่สามารถประมวลผลพร็อกซี API ได้ อินสแตนซ์อื่นๆ ของ Edge Microgateway ที่ทำงานในโหนดต่างๆ สามารถกำหนดค่าให้เรียกข้อมูลการกำหนดค่าจากฐานข้อมูล Redis แทนที่จะมาจาก Apigee Edge ได้ เนื่องจากอินสแตนซ์ของ Microgateway ทั้งหมดดึงข้อมูลการกำหนดค่าจากฐานข้อมูลในเครื่อง จึงสามารถเริ่มต้นและประมวลผลคำขอ API ได้แม้ในกรณีที่อินเทอร์เน็ต หยุดทำงาน

การกำหนดค่าอินสแตนซ์ตัวซิงโครไนซ์

เพิ่มการกำหนดค่าต่อไปนี้ลงในไฟล์ org-env/config.yaml สำหรับ การติดตั้ง Edge Microgateway ที่คุณต้องการใช้เป็นตัวซิงโครไนซ์

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true

เช่น

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true
ตัวเลือก คำอธิบาย
redisHost โฮสต์ที่อินสแตนซ์ Redis ทำงานอยู่ ค่าเริ่มต้น: 127.0.0.1
redisPort พอร์ตของอินสแตนซ์ Redis ค่าเริ่มต้น: 6379
redisDb Redis DB ที่จะใช้ ค่าเริ่มต้น: 0
redisPassword รหัสผ่านฐานข้อมูล

สุดท้าย ให้บันทึกไฟล์การกำหนดค่าและเริ่มอินสแตนซ์ Edge Microgateway โดยจะเริ่ม สำรวจ Apigee Edge และจัดเก็บข้อมูลการกำหนดค่าที่ดาวน์โหลดไว้ในฐานข้อมูล Redis

การกำหนดค่าอินสแตนซ์ Edge Microgateway ปกติ

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

เพิ่มการกำหนดค่าต่อไปนี้ลงในไฟล์ org-env/config.yaml ของโหนด Edge Microgateway เพิ่มเติมแต่ละรายการ โปรดทราบว่าได้ตั้งค่าพร็อพเพอร์ตี้ synchronizerMode เป็น 0 พร็อพเพอร์ตี้นี้จะตั้งค่าอินสแตนซ์ให้ทํางานเป็นอินสแตนซ์ Edge Microgateway ปกติ ที่ประมวลผลการรับส่งข้อมูลพร็อกซี API และอินสแตนซ์จะรับ ข้อมูลการกําหนดค่าจากฐานข้อมูล Redis

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

เช่น

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

พร็อพเพอร์ตี้การกำหนดค่า

เราได้เพิ่มพร็อพเพอร์ตี้การกำหนดค่าต่อไปนี้เพื่อรองรับการใช้เครื่องมือซิงค์

แอตทริบิวต์ ค่า คำอธิบาย
edge_config.synchronizerMode 0 หรือ 1

หากเป็น 0 (ค่าเริ่มต้น) Edge Microgateway จะทำงานในโหมดมาตรฐาน

หากเป็น 1 ให้เริ่มอินสแตนซ์ Edge Microgateway เพื่อดำเนินการเป็นตัวซิงโครไนซ์ ในโหมดนี้ อินสแตนซ์จะดึงข้อมูลการกำหนดค่าจาก Apigee Edge และจัดเก็บไว้ในฐานข้อมูล Redis ในเครื่อง อินสแตนซ์นี้ไม่สามารถประมวลผลคำขอพร็อกซี API ได้ โดยมี วัตถุประสงค์เพียงอย่างเดียวคือการสำรวจ Apigee Edge เพื่อหาข้อมูลการกำหนดค่าและเขียนลงใน ฐานข้อมูลในเครื่อง จากนั้นคุณต้องกำหนดค่าอินสแตนซ์ Microgateway อื่นๆ เพื่ออ่านจากฐานข้อมูล

edge_config.redisBasedConfigCache จริงหรือเท็จ หากเป็นจริง อินสแตนซ์ Edge Microgateway จะดึงข้อมูลการกำหนดค่าจาก ฐานข้อมูล Redis แทนที่จะดึงจาก Apigee Edge ฐานข้อมูล Redis ต้องเป็นฐานข้อมูลเดียวกันกับที่กำหนดค่าตัวซิงโครไนซ์ให้เขียน หากฐานข้อมูล Redis ไม่พร้อมใช้งานหรือ หากฐานข้อมูลว่างเปล่า Microgateway จะค้นหาไฟล์ cache-config.yaml ที่มีอยู่เพื่อใช้ในการกำหนดค่า

หากเป็นเท็จ (ค่าเริ่มต้น) อินสแตนซ์ Edge Microgateway จะเรียกข้อมูลการกำหนดค่าจาก Apigee Edge ตามปกติ

edgemicro.config_change_poll_interval ช่วงเวลาเป็นวินาที ระบุช่วงเวลาการสำรวจสำหรับตัวซิงโครไนซ์เพื่อดึงข้อมูลจาก Apigee Edge

การกำหนดค่า URL ที่ยกเว้นสำหรับปลั๊กอิน

คุณสามารถกำหนดค่า Microgateway ให้ข้ามการประมวลผลปลั๊กอินสำหรับ URL ที่ระบุได้ คุณสามารถกำหนดค่า URL "ยกเว้น" เหล่านี้ได้ทั่วโลก (สำหรับปลั๊กอินทั้งหมด) หรือสำหรับปลั๊กอินที่เฉพาะเจาะจง

เช่น

...
edgemicro:
  ...
  plugins:
    excludeUrls: '/hello,/proxy_one' # global exclude urls
    sequence:
      - oauth
      - json2xml
      - quota
json2xml:
  excludeUrls: '/hello/xml'  # plugin level exclude urls
...

ในตัวอย่างนี้ ปลั๊กอินจะไม่ประมวลผลการเรียกพร็อกซี API ขาเข้าที่มีเส้นทาง /hello หรือ /proxy_one นอกจากนี้ ระบบจะข้ามปลั๊กอิน json2xml สำหรับ API ที่มี /hello/xml ในเส้นทาง

การตั้งค่าแอตทริบิวต์การกำหนดค่าด้วยค่าตัวแปรสภาพแวดล้อม

คุณระบุตัวแปรสภาพแวดล้อมได้โดยใช้แท็กในไฟล์การกำหนดค่า ระบบจะแทนที่แท็กตัวแปรสภาพแวดล้อมที่ระบุด้วยค่าตัวแปรสภาพแวดล้อมจริง ระบบจะจัดเก็บการแทนที่ไว้ในหน่วยความจำเท่านั้น และจะไม่จัดเก็บไว้ในไฟล์การกำหนดค่าหรือแคชเดิม

ในตัวอย่างนี้ ระบบจะแทนที่แอตทริบิวต์ key ด้วยค่าของตัวแปรสภาพแวดล้อม TARGETS_SSL_CLIENT_KEY และอื่นๆ

targets:
  - ssl:
      client:
        key: <E>TARGETS_SSL_CLIENT_KEY</E>
        cert: <E>TARGETS_SSL_CLIENT_CERT</E>
        passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>

ในตัวอย่างนี้ ใช้แท็ก <n> เพื่อระบุค่าจำนวนเต็ม รองรับเฉพาะจำนวนเต็มบวก

edgemicro:
  port: <E><n>EMG_PORT</n></E>

ในตัวอย่างนี้ ใช้แท็ก <b> เพื่อระบุค่าบูลีน ( กล่าวคือ จริงหรือ เท็จ)

quotas:
  useRedis: <E><b>EMG_USE_REDIS</b></E>