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

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

Edge Microgateway เวอร์ชัน 3.2.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

การตั้งค่าตัวแปรเหล่านี้เป็นตัวเลือกที่ไม่บังคับ หากคุณตั้งค่าไว้ คุณไม่ต้องระบุค่าเมื่อใช้ Command-Line Interface (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 แบบ 1 ทางและ 2 ทางทางใต้ วิดีโอที่ 3 เกี่ยวกับการกำหนดค่า TLS ใน Apigee Edge Microgateway อธิบายวิธีกำหนดค่า 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 แบบทางเดียว

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

คุณกำหนดค่า Edge Microgateway เป็นไคลเอ็นต์ TLS หรือ SSL ได้เมื่อเชื่อมต่อกับปลายทางเป้าหมาย ในไฟล์การกำหนดค่า Microgateway ให้ใช้องค์ประกอบเป้าหมายเพื่อตั้งค่าตัวเลือก 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 Web Token (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 เป็น "จริง" ดังนี้

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 จึงขอแนะนำให้ทำตามแนวทางปฏิบัติต่อไปนี้

  • เนื่องจากไฟล์บันทึกอาจมีขนาดค่อนข้างใหญ่ โปรดตรวจสอบว่าไดเรกทอรีของไฟล์บันทึกนั้นมีพื้นที่ว่างเพียงพอ โปรดดูหัวข้อตำแหน่งจัดเก็บไฟล์บันทึกและวิธีเปลี่ยนไดเรกทอรีไฟล์บันทึกเริ่มต้น
  • ลบหรือย้ายไฟล์บันทึกไปยังไดเรกทอรีที่เก็บถาวรแยกต่างหากอย่างน้อยสัปดาห์ละครั้ง
  • หากนโยบายคือการลบบันทึก คุณจะใช้คำสั่ง 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 Web Token (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 นี้จะส่งคืนเมื่อคุณเรียกใช้คำสั่งเพื่อทำให้พร็อกซีใช้งานได้: edgemicroconfigure โปรดดูรายละเอียดที่การตั้งค่าและการกำหนดค่า Edge Microgateway
  • quotaUri: ตั้งค่าพร็อพเพอร์ตี้การกำหนดค่านี้หากต้องการจัดการโควต้าผ่านพร็อกซี 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_connects
  • การบันทึก:
    • level: (ค่าเริ่มต้น: ข้อผิดพลาด)
      • 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-aware เป็นต้น) รวมถึงการเปลี่ยนแปลงไฟล์การกำหนดค่าในเครื่อง
  • disable_config_poll_interval: (ค่าเริ่มต้น: เท็จ) ตั้งค่าเป็น 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: (สตริง) การดำเนินการที่ต้องทำ (อนุญาตหรือปฏิเสธการเข้าถึง) หากกฎการจับคู่ที่ระบุไว้ในปลั๊กอิน accesscontrol ไม่ได้รับการแก้ไข (ไม่ตรงกัน) ค่าที่ถูกต้อง: ALLOW หรือ DENY ค่าเริ่มต้น: ALLOW (เพิ่มแล้ว: v3.1.7)
  • enableAnalytics: (ค่าเริ่มต้น: true) ตั้งค่าแอตทริบิวต์เป็น 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: (ค่าเริ่มต้น: true) ตั้งค่าเป็น "เท็จ" เพื่อป้องกันไม่ให้มีการส่งส่วนหัว x-forwarded-for ไปยังเป้าหมาย โปรดทราบว่าหากส่วนหัว x-forwarded-for อยู่ในคำขอ ระบบจะกำหนดค่าของส่วนหัวเป็นค่า client-ip ใน Edge Analytics
  • x-forwarded-host: (ค่าเริ่มต้น: true) ตั้งค่าเป็น "เท็จ" เพื่อป้องกันไม่ให้มีการส่งส่วนหัว x-forwarded-host ไปยังเป้าหมาย
  • x-request-id: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้มีการส่งส่วนหัว x-request-id ไปยังเป้าหมาย
  • x-Response-time: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้มีการส่งส่วนหัว x-response-time ไปยังเป้าหมาย
  • via: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้มีการส่งผ่านส่วนหัวไปยังเป้าหมาย

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

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

  • allowNoAuthorization: (ค่าเริ่มต้น: เท็จ) หากตั้งค่าเป็น "จริง" ระบบจะอนุญาตให้การเรียก API ผ่าน Edge Microgateway ได้โดยไม่ต้องมีส่วนหัวการให้สิทธิ์เลย ตั้งค่าเป็น "เท็จ" เพื่อกำหนดให้มีส่วนหัวการให้สิทธิ์ (ค่าเริ่มต้น)
  • allowInvalidAuthorization: (ค่าเริ่มต้น: เท็จ) หากตั้งค่าเป็น "จริง" การเรียก API จะได้รับอนุญาตให้ส่งหากโทเค็นที่ส่งผ่านในส่วนหัวการให้สิทธิ์ไม่ถูกต้องหรือหมดอายุ ตั้งค่าเป็น "เท็จ" เพื่อกำหนดให้ใช้โทเค็นที่ถูกต้อง (ค่าเริ่มต้น)
  • permissions-header: (ค่าเริ่มต้น: Authorization: Bearer) ส่วนหัวที่ใช้ส่งโทเค็นเพื่อการเข้าถึงไปยัง Edge Microgateway คุณอาจต้องการเปลี่ยนค่าเริ่มต้นในกรณีที่เป้าหมายจำเป็นต้องใช้ส่วนหัวการให้สิทธิ์เพื่อวัตถุประสงค์อื่น
  • api-key-header: (ค่าเริ่มต้น: x-api-key) ชื่อของส่วนหัวหรือพารามิเตอร์การค้นหาที่ใช้ส่งคีย์ API ไปยัง Edge Microgateway ดูข้อมูลเพิ่มเติมที่หัวข้อการใช้คีย์ API
  • keep-authorized-header: (ค่าเริ่มต้น: เท็จ) หากตั้งค่าเป็น "จริง" ส่วนหัวการให้สิทธิ์ที่ส่งในคำขอจะส่งไปยังเป้าหมาย (จะยังคงอยู่)
  • allowOAuthOnly - หากตั้งค่าเป็น "จริง" API ทุกรายการต้องมีส่วนหัวการให้สิทธิ์ที่มีโทเค็นเพื่อการเข้าถึงสำหรับผู้ถือ อนุญาตให้คุณอนุญาตเฉพาะโมเดลความปลอดภัยของ 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-Aware ทั้งหมดในองค์กรที่เชื่อมโยงไว้ ใช้การกำหนดค่าต่อไปนี้เพื่อจำกัดพร็อกซีที่ไมโครเกตเวย์จะประมวลผล ตัวอย่างเช่น การกำหนดค่านี้จำกัดพร็อกซีที่ไมโครเกตเวย์จะประมวลผลเป็น 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 ที่แสดงอยู่ในไฟล์ 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. ใน Edge UI ให้เลือกพร็อกซี edgemicro_auth ในองค์กร/สภาพแวดล้อมที่คุณกำหนดค่า Edge Microgateway ไว้
  2. ในการแตะ "พัฒนา" ให้เปิดนโยบาย JavaCaption ในตัวแก้ไข
  3. เพิ่มแอตทริบิวต์ที่กำหนดเองด้วยคีย์ products.filter.attributes พร้อมรายการชื่อแอตทริบิวต์ที่คั่นด้วยคอมมา เฉพาะผลิตภัณฑ์ที่มีชื่อแอตทริบิวต์ที่กำหนดเองเท่านั้นที่ระบบจะส่งคืนไปยัง Edge Microgateway
  4. คุณเลือกปิดใช้การตรวจสอบเพื่อดูว่ามีการเปิดใช้ผลิตภัณฑ์สำหรับสภาพแวดล้อมปัจจุบันหรือไม่ได้โดยการตั้งค่าแอตทริบิวต์ที่กำหนดเอง products.filter.env.enable เป็น false (ค่าเริ่มต้นคือจริง)
  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>
    

การกําหนดค่าความถี่ในการพุช Analytics

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

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

เช่น

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

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

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

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
    • บายพาส: (ไม่บังคับ) ระบุ URL โฮสต์เป้าหมายที่คั่นด้วยเครื่องหมายจุลภาคอย่างน้อย 1 รายการที่ควรข้ามพร็อกซี HTTP หากไม่ได้ตั้งค่าพร็อพเพอร์ตี้นี้ ให้ใช้ตัวแปรสภาพแวดล้อม NO_PROXY เพื่อระบุ URL เป้าหมายที่จะข้าม
    • enabled: หากมีการตั้งค่า true และตั้งค่า proxy.url ให้ใช้ค่า proxy.url สำหรับพร็อกซี HTTP หากไม่ได้ตั้งค่า True และ 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 ระบบได้สร้าง 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 จะหมดอายุ (หลังระยะเวลาใช้ได้ ซึ่งค่าเริ่มต้นคือ 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 หลายรายการ บางครั้งความล่าช้าของคีย์สาธารณะส่งผลให้เกิดข้อผิดพลาดรันไทม์เป็นระยะๆ โดยมีสถานะ 403 เนื่องจากการตรวจสอบโทเค็นจะผ่านไปยังอินสแตนซ์หนึ่ง แต่จะล้มเหลวในอินสแตนซ์อื่นจนกว่าจะรีเฟรชอินสแตนซ์ทั้งหมด

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

ในตัวอย่างต่อไปนี้ การหน่วงเวลาจะถูกตั้งค่าเป็น 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. เพิ่มองค์ประกอบพร็อกซีPattern ใน edge_config ตัวอย่างเช่น รูปแบบต่อไปนี้จะดาวน์โหลดพร็อกซี เช่น edgemicro_foo, edgemicro_fast และ edgemicro_first
    edge_config:
    …
    proxyPattern: edgemicro_f*

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

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

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

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

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

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

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

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

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

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

แทนที่ชื่อองค์กรและสภาพแวดล้อมใน URL และแทนที่ค่า Consumer ID และ Consumer Secret ที่ได้รับจากแอปของนักพัฒนาซอฟต์แวร์ใน 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"
        }

การตรวจสอบตลอดไป

Forever เป็นเครื่องมือ Node.js ที่รีสตาร์ทแอป Node.js โดยอัตโนมัติในกรณีที่กระบวนการล่มหรือมีข้อผิดพลาด Edge Microgateway มีไฟล์ forever.json ที่คุณกําหนดค่าได้เพื่อควบคุมจํานวนครั้งและช่วงเวลาที่ควรรีสตาร์ท Edge Microgateway ไฟล์นี้กำหนดค่าบริการ Forever ที่ชื่อว่า forever-monitor ซึ่งจัดการ Forever แบบเป็นโปรแกรม

ไฟล์ forever.json จะอยู่ในไดเรกทอรีการติดตั้งรูทของ Edge Microgateway ดูว่า Edge Microgateway ติดตั้งอยู่ที่ใด โปรดดูรายละเอียดเกี่ยวกับตัวเลือกการกำหนดค่าในเอกสารประกอบการตรวจสอบตลอดไป

คำสั่ง edgemicro forever ประกอบด้วยแฟล็กที่ช่วยให้คุณระบุตำแหน่งของไฟล์ forever.json (แฟล็ก -f) และเริ่ม/หยุดกระบวนการตรวจสอบถาวร (แฟล็ก -a) เช่น

edgemicro forever -f ~/mydir/forever.json -a start

ดูข้อมูลเพิ่มเติมได้ที่การตรวจสอบตลอดไปในข้อมูลอ้างอิง CLI

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

หากเรียกใช้อินสแตนซ์ 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 แยกจากทรัพยากร Dependency ของ 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" }

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

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

ตัวอย่างต่อไปนี้แสดงวิธีรับ JWT จากปลายทาง Edge Microgateway JWT ใน 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 เหมือนที่ทำก่อนหน้านี้โดยใช้ชื่อ 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":""
}

การใช้โหมดพร็อกซีในระบบ

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

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

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

Edgemicro เป็น Sidecar

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

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 Microgteway โดยอนุญาตให้เรียกข้อมูลการกำหนดค่าจาก 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 ของโหนด 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>