การอ้างอิงการดำเนินการและการกำหนดค่าสำหรับ 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 อีกครั้ง ดังนี้

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 คุณสามารถใช้ไฟล์นี้เพื่อทําการเปลี่ยนแปลงการกําหนดค่า แล้วโหลดซ้ำโดยไม่มีการหยุดทำงาน เช่น หากเพิ่มและกําหนดค่าปลั๊กอิน คุณจะโหลดการกําหนดค่าซ้ำได้โดยไม่เกิดช่วงพักการใช้งาน ตามที่อธิบายไว้ด้านล่าง

หาก Microgateway ของ Edge ทำงานอยู่ (ตัวเลือกการหยุดทำงานเป็นศูนย์):

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

    สถานที่:

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

    เช่น

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

หาก Microgateway ของ Edge หยุดทำงาน

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

    สถานที่:

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

    เช่น

    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 รวมถึงคีย์และข้อมูลลับที่จําเป็นสําหรับการเริ่ม Microgateway ของ Edge สามารถจัดเก็บไว้ในตัวแปรสภาพแวดล้อมต่อไปนี้

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

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

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

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

วิดีโอ คำอธิบาย
กำหนดค่า TLS ขาออกแบบ 1 ทิศทาง ดูข้อมูลเกี่ยวกับการกำหนดค่า TLS ใน Microgateway ของ Apigee Edge วิดีโอนี้ให้ภาพรวมของ TLS และความสําคัญ แนะนํา TLS ใน Edge Microgateway และสาธิตวิธีกําหนดค่า TLS แบบ 1 ทิศทางที่ส่งออก
กำหนดค่า TLS ขาออกแบบ 2 ทาง นี่เป็นวิดีโอที่ 2 เกี่ยวกับการกำหนดค่า TLS ใน Microgateway ของ Apigee Edge วิดีโอนี้อธิบายวิธีกำหนดค่า TLS แบบ 2 ทางที่ส่งข้อมูลไปทางเหนือ
กำหนดค่า TLS ขาออกแบบ 1 ทางและ 2 ทาง วิดีโอที่ 3 นี้เกี่ยวกับการกำหนดค่า TLS ใน Microgateway ของ Apigee Edge จะอธิบายวิธีกำหนดค่า TLS แบบ 1 ทิศทางและ 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 ของพร็อกซีนี้ในไฟล์การกําหนดค่าของ Microgateway ของ Edge ดังนี้

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 เพื่อระบุไดเรกทอรีไฟล์บันทึกอื่น

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

คุณสามารถกําหนดค่าการบันทึกเพื่อให้ระบบส่งข้อมูลบันทึกไปยังเอาต์พุตมาตรฐานแทนไฟล์บันทึกได้ ตั้งค่า Flag 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

เพิ่มใน v3.2.3

เช่น

edgemicro:
 logging:
   disableStrictLogFile: true

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

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

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

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

edgemicro-HOST_NAME-INSTANCE_ID-api.log

เช่น

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log

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

เพิ่มใน v2.3.3

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

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

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

  • port: (ค่าเริ่มต้น: 8000) หมายเลขพอร์ตที่กระบวนการ Microgateway ของ Edge รอรับฟัง
  • 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 - บันทึกข้อความเตือนเท่านั้น
      • error - บันทึกข้อความแสดงข้อผิดพลาดเท่านั้น
      • debug - บันทึกข้อความการแก้ไขข้อบกพร่องพร้อมกับข้อมูล คำเตือน และข้อความแสดงข้อผิดพลาด
      • trace - บันทึกข้อมูลการติดตามข้อผิดพลาดพร้อมกับข้อมูล คำเตือน และข้อความแสดงข้อผิดพลาด
      • none - ไม่สร้างไฟล์บันทึก
    • dir: (ค่าเริ่มต้น: /var/tmp) ไดเรกทอรีที่จัดเก็บไฟล์บันทึก
    • stats_log_interval: (ค่าเริ่มต้น: 60) ช่วงเวลาเป็นวินาทีเมื่อมีการเขียนบันทึกสถิติลงในไฟล์บันทึก API
    • rotate_interval: (ค่าเริ่มต้น: 24) ช่วงเวลาเป็นชั่วโมงเมื่อมีการเวียนไฟล์บันทึก
  • ปลั๊กอิน: ปลั๊กอินจะเพิ่มฟังก์ชันการทำงานให้กับ Edge Microgateway โปรดดูรายละเอียดเกี่ยวกับการพัฒนาปลั๊กอินที่หัวข้อพัฒนาปลั๊กอินที่กำหนดเอง
  • dir: เส้นทางแบบสัมพัทธ์จากไดเรกทอรี ./gateway ไปยังไดเรกทอรี ./plugins หรือเส้นทางแบบสัมบูรณ์
  • sequence: รายการโมดูลปลั๊กอินที่จะเพิ่มลงในอินสแตนซ์ Edge Microgateway โมดูลจะทํางานตามลําดับที่ระบุไว้ที่นี่
  • debug: เพิ่มการแก้ไขข้อบกพร่องจากระยะไกลลงในกระบวนการของ Edge Microgateway
    • port: หมายเลขพอร์ตที่จะรอรับการเชื่อมต่อ เช่น ตั้งค่าโปรแกรมแก้ไขข้อบกพร่อง IDE ให้รับคำสั่งบนพอร์ตนี้
    • args: อาร์กิวเมนต์สําหรับกระบวนการแก้ไขข้อบกพร่อง เช่น args --nolazy
  • config_change_poll_interval: (ค่าเริ่มต้น: 600 วินาที) Edge Microgateway จะโหลดการกําหนดค่าใหม่เป็นระยะๆ และดำเนินการโหลดซ้ำหากมีการเปลี่ยนแปลง การโหวตจะรับการเปลี่ยนแปลงที่ทำใน Edge (การเปลี่ยนแปลงผลิตภัณฑ์ พร็อกซีที่รู้จัก Microgateway ฯลฯ) รวมถึงการเปลี่ยนแปลงที่ทำในไฟล์การกําหนดค่าในเครื่อง
  • disable_config_poll_interval: (ค่าเริ่มต้น: เท็จ) ตั้งค่าเป็น true เพื่อปิดการสำรวจการเปลี่ยนแปลงอัตโนมัติ
  • request_timeout: ตั้งค่าการหมดเวลาสําหรับคําขอเป้าหมาย ระยะหมดเวลาจะตั้งเป็นวินาที หากเกิดเวลาหมดอายุขึ้น Microgateway ของ Edge จะตอบกลับด้วยรหัสสถานะ 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: (สตริง) การดำเนินการที่จะทำ (อนุญาตหรือปฏิเสธการเข้าถึง) หากกฎการจับคู่ที่ระบุไว้ในปลั๊กอิน accesscontrol ไม่สามารถแก้ไขได้ (ไม่ตรงกัน) ค่าที่ใช้ได้: ALLOW หรือ DENY ค่าเริ่มต้น: ALLOW (เพิ่มใน v3.1.7)
  • enableAnalytics: (ค่าเริ่มต้น: true) ตั้งค่าแอตทริบิวต์เป็น false เพื่อป้องกันไม่ให้โหลดปลั๊กอิน Analytics ในกรณีนี้ ระบบจะไม่เรียกใช้ข้อมูลวิเคราะห์ของ Apigee Edge หากตั้งค่าเป็น true หรือไม่ได้ระบุแอตทริบิวต์นี้ ปลั๊กอินข้อมูลวิเคราะห์จะทํางานตามปกติ ดูรายละเอียดได้ที่แอตทริบิวต์ 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: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้ส่งส่วนหัว "via" ไปยังเป้าหมาย

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

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

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

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

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

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

คุณสามารถกรองพร็อกซีที่รู้จัก Microgateway ซึ่งอินสแตนซ์ Edge Microgateway จะประมวลผล เมื่อ Edge 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 ลงใน /products API ที่แสดงในไฟล์ Edge Microgateway *.config.yaml เช่น

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. ในแท็บพัฒนา ให้เปิดนโยบาย 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. บันทึกพร็อกซี

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

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

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

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

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

เช่น

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

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

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

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

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

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

edgemicro_proxyname-health

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

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

  • relativePath (ไม่บังคับ): ระบุเส้นทางแบบสัมพัทธ์เพื่อแยกในแดชบอร์ด Analytics เช่น หากคุณระบุ /healthcheck การเรียก API ทั้งหมดที่มีเส้นทาง /healthcheck จะปรากฏในแดชบอร์ดเป็น edgemicro_proxyname-health โปรดทราบว่า Flag นี้จะละเว้นเส้นทางฐานของพร็อกซี หากต้องการแยกตามเส้นทางแบบเต็ม รวมถึงเส้นทางฐาน ให้ใช้ 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

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

ใช้พร็อกซี 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: (ไม่บังคับ) เมื่อเป็นจริง Microgateway ของ Edge จะใช้เมธอด HTTP CONNECT เพื่อส่งผ่านคำขอ HTTP ผ่านการเชื่อมต่อ TCP เดียว (เช่นเดียวกับในกรณีที่ตัวแปรสภาพแวดล้อมสำหรับการกำหนดค่าพร็อกซีเปิดใช้ TLS ตามที่ระบุไว้ด้านล่าง) ค่าเริ่มต้น: false
    • url: URL ของพร็อกซี HTTP
    • bypass: (ไม่บังคับ) ระบุ URL โฮสต์เป้าหมายที่คั่นด้วยคอมมาอย่างน้อย 1 รายการที่ควรข้ามพร็อกซี HTTP หากไม่ได้ตั้งค่าพร็อพเพอร์ตี้นี้ ให้ใช้ตัวแปรสภาพแวดล้อม NO_PROXY เพื่อระบุ URL เป้าหมายที่จะข้าม
    • enabled: หากเป็น "จริง" และตั้งค่า 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) เช่น เส้นทางฐานของ /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 และใช้ JWT นั้นในส่วนหัวการอนุญาตของการเรียก 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 ระบบได้สร้าง 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 และใช้เพื่อรองรับการหมุนเวียนคีย์ ค่านี้เหมือนกับคีย์ส่วนตัว

  • 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 โดยคุณต้องระบุองค์กรและสภาพแวดล้อมเดียวกับที่คุณกําหนดค่าให้ไมโครเกตเวย์ใช้
    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" (รหัสคีย์) ที่ไม่ซ้ำกัน จากนั้นไมโครเกตเวย์จะใช้คีย์เหล่านี้เพื่อตรวจสอบโทเค็นการให้สิทธิ์ หากการตรวจสอบโทเค็นไม่สำเร็จ มิโครเกตเวย์จะดูว่ามีคีย์เก่าอยู่ในชุดคีย์หรือไม่ แล้วลองใช้คีย์นั้น รูปแบบของคีย์ที่แสดงผลคือคีย์เว็บ JSON (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 จะช่วยให้คุณระบุเวลาหน่วงเพื่อให้คีย์ส่วนตัวใหม่มีผลได้ ซึ่งจะช่วยให้อินสแตนซ์ Micro Gateway ทั้งหมดมีเวลารีเฟรชและรับคีย์สาธารณะใหม่ ธงใหม่คือ --nbf ซึ่งหมายถึง "ไม่ใช่ก่อน" Flag นี้ใช้ค่าจำนวนเต็ม ซึ่งเป็นจำนวนนาทีที่จะเลื่อนเวลา

ในตัวอย่างนี้ มีการหน่วงเวลาไว้ที่ 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, ตั้งจุดหยุดพัก, ติดตามนิพจน์ และอื่นๆ ได้

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

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

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

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

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

การแคชคีย์

ระบบจะแลกเปลี่ยนคีย์ API กับโทเค็นของผู้ถือสิทธิ์ซึ่งมีการแคชไว้ คุณปิดใช้การแคชได้โดยการตั้งค่าส่วนหัว 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 จะใช้งานไม่ได้อีกต่อไปไม่ว่าในกรณีใดก็ตาม โปรดดูหัวข้อการเปลี่ยนแปลงการกําหนดค่าด้วย

เช่น

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

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

เปิดใช้โค้ดตอบกลับจาก upstream

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

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

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

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

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

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

ส่วนนี้จะอธิบายวิธีใช้พร็อกซี 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 โดยใช้ Flag -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" ที่คุณใช้ในชื่อไฟล์การกําหนดค่า
    • $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 คุณต้องตั้งค่า Microgateway มาตรฐานของ Edge ก่อน และเชื่อมต่อกับอินเทอร์เน็ต ระบบใช้ปลายทาง Apigee ที่นี่เพื่อวัตถุประสงค์ในการยกตัวอย่างเท่านั้น และไม่จำเป็นต้องใช้ คุณใช้ปลายทางโทเค็น JWT อื่นได้หากต้องการ ในกรณีนี้ คุณจะต้องรับ JWT โดยใช้ API ที่ระบุไว้สําหรับปลายทางนั้น

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

  1. คุณต้องตั้งค่าและกำหนดค่ามาตรฐานของ Microgateway ของ Edge เพื่อทำให้พร็อกซี edgemicro-auth ใช้งานได้ในองค์กร/สภาพแวดล้อมบน Apigee Edge หากเคยทำขั้นตอนนี้ไปแล้ว คุณก็ไม่จำเป็นต้องทำซ้ำ
  2. หากติดตั้งใช้งาน Edge Microgateway ใน Apigee Cloud คุณต้องเชื่อมต่อกับอินเทอร์เน็ตจึงจะได้รับ JWT จากปลายทางนี้
  3. หยุด Microgateway ของ Edge
    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 ตามที่ทําก่อนหน้านี้ โดยใช้ชื่อ org/env ที่คุณใช้ในชื่อไฟล์การกําหนดค่า เช่น
    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":""
}

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

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

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

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

Edgemicro เป็นอุปกรณ์เสริม

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

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

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

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

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

  3. ใน Apigee Edge ให้สร้างผลิตภัณฑ์ API และปฏิบัติตามข้อกำหนดในการกําหนดค่าที่จําเป็นต่อไปนี้ (คุณจัดการการกําหนดค่าอื่นๆ ทั้งหมดได้ตามต้องการ)
  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

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

คุณสามารถทดสอบการกำหนดค่าพร็อกซีในเครื่องได้โดยเรียกใช้ปลายทางพร็อกซี ตัวอย่างเช่น หากระบุ BasePath เป็น /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 หยุดชะงัก อินสแตนซ์ของไมโครเกตเวย์จะยังคงทํางานต่อไปได้เนื่องจากมีการแคชข้อมูลการกําหนดค่าล่าสุดไว้ อย่างไรก็ตาม อินสแตนซ์ Micro Gateway ใหม่จะเริ่มต้นไม่ได้หากไม่มีการเชื่อมต่อที่ชัดเจน นอกจากนี้ การหยุดชะงักของอินเทอร์เน็ตอาจส่งผลให้อินสแตนซ์ของไมโครเกตเวย์อย่างน้อย 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 ได้ เนื่องจากอินสแตนซ์ Micro Gateway ทั้งหมดดึงข้อมูลการกําหนดค่าจากฐานข้อมูลในเครื่อง อินสแตนซ์จึงสามารถเริ่มต้นและประมวลผลคําขอ 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 ที่จะใช้ ค่าเริ่มต้น: 0
redisPassword รหัสผ่านฐานข้อมูล

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

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

เมื่อตัวซิงค์ทํางานอยู่ คุณจะกําหนดค่าโหนด Microgateway ของ Edge เพิ่มเติมเพื่อเรียกใช้อินสแตนซ์ 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 ไม่พร้อมใช้งานหรือหากฐานข้อมูลว่างเปล่า มิโครเกตเวย์จะค้นหาไฟล์ 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>