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

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

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 คือคีย์ที่คำสั่ง configure แสดงผลก่อนหน้านี้
    • $SECRET คือคีย์ที่คำสั่ง configure แสดงผลก่อนหน้านี้

    เช่น

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

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

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

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

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

วิดีโอ คำอธิบาย
กำหนดค่า TLS ขาเข้าแบบทางเดียว ดูข้อมูลเกี่ยวกับการกำหนดค่า TLS ใน Apigee Edge Microgateway วิดีโอนี้แสดงภาพรวมของ TLS และความสำคัญของ TLS, แนะนำ TLS ใน Edge Microgateway และสาธิตวิธีกำหนดค่า Northbound One-Way 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 (Server Name Indication)
requestCert true สำหรับ SSL แบบ 2 ทาง และ false สำหรับ 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 (Server Name Indication)

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

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

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

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

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (ค่าเริ่มต้น: -1) จำนวนคำขอพร้อมกันสูงสุดที่ Edge Microgateway สามารถรับได้ก่อนที่จะปิดการเชื่อมต่อ การตั้งค่านี้มีไว้เพื่อขัดขวางการโจมตีแบบปฏิเสธการให้บริการ โดยปกติแล้ว ให้ตั้งค่าเป็นตัวเลขที่มากกว่า max_connections
  • การบันทึก
    • level: (ค่าเริ่มต้น: error)
      • info - (แนะนำ) บันทึกคำขอและการตอบกลับทั้งหมดที่ไหลผ่านอินสแตนซ์ Edge Microgateway
      • warn - บันทึกเฉพาะข้อความเตือน
      • error - บันทึกเฉพาะข้อความแสดงข้อผิดพลาด
      • debug - บันทึกข้อความแก้ไขข้อบกพร่องพร้อมกับข้อความข้อมูล คำเตือน และข้อผิดพลาด
      • trace - บันทึกข้อมูลการติดตามสำหรับข้อผิดพลาดพร้อมกับข้อความข้อมูล คำเตือน และข้อความแสดงข้อผิดพลาด
      • none - ไม่สร้างไฟล์บันทึก
    • dir: (ค่าเริ่มต้น: /var/tmp) ไดเรกทอรีที่จัดเก็บไฟล์บันทึก
    • stats_log_interval: (ค่าเริ่มต้น: 60) ช่วงเวลาเป็นวินาทีเมื่อเขียนบันทึกสถิติลงในไฟล์บันทึก API
    • rotate_interval: (ค่าเริ่มต้น: 24) ช่วงเวลาเป็นชั่วโมงเมื่อมีการหมุนเวียนไฟล์บันทึก
  • plugins: ปลั๊กอินจะเพิ่มฟังก์ชันการทำงานให้กับ Edge Microgateway โปรดดูรายละเอียดเกี่ยวกับการพัฒนาปลั๊กอินที่หัวข้อพัฒนาปลั๊กอินที่กำหนดเอง
  • dir: Relative Path จากไดเรกทอรี ./gateway ไปยังไดเรกทอรี ./plugins หรือ Absolute Path
  • sequence: รายการโมดูลปลั๊กอินที่จะเพิ่มลงในอินสแตนซ์ Edge Microgateway โมดูลจะทำงานตามลำดับที่ระบุไว้ที่นี่
  • debug: เพิ่มการแก้ไขข้อบกพร่องจากระยะไกลลงในกระบวนการ Edge Microgateway
    • port: หมายเลขพอร์ตที่จะฟัง เช่น ตั้งค่าโปรแกรมแก้ไขข้อบกพร่อง IDE ให้คอยตรวจจับและดึงค่าพอร์ตนี้
    • args: อาร์กิวเมนต์สำหรับกระบวนการแก้ไขข้อบกพร่อง เช่น args --nolazy
  • config_change_poll_interval: (ค่าเริ่มต้น: 600 วินาที) Edge Microgateway จะโหลดการกำหนดค่าใหม่เป็นระยะๆ และดำเนินการโหลดซ้ำหากมีการเปลี่ยนแปลงใดๆ การสำรวจจะตรวจหาการเปลี่ยนแปลงที่เกิดขึ้นใน Edge (การเปลี่ยนแปลงผลิตภัณฑ์, พร็อกซีที่รับรู้ Microgateway ฯลฯ) รวมถึงการเปลี่ยนแปลงที่เกิดขึ้นกับไฟล์การกำหนดค่าในเครื่อง
  • disable_config_poll_interval: (ค่าเริ่มต้น: false) ตั้งค่าเป็น true เพื่อปิดการตรวจสอบการเปลี่ยนแปลงโดยอัตโนมัติ
  • request_timeout: ตั้งค่าการหมดเวลาสำหรับคำขอเป้าหมาย ระยะหมดเวลาจะตั้งเป็นวินาที หากเกิดการหมดเวลา Edge Microgateway จะตอบกลับด้วยรหัสสถานะ 504 (เพิ่มในเวอร์ชัน 2.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) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้ส่งส่วนหัว x-forwarded-for ไปยังเป้าหมาย โปรดทราบว่าหากมีส่วนหัว x-forwarded-for ในคำขอ ระบบจะตั้งค่าเป็นค่า client-ip ใน Edge Analytics
  • x-forwarded-host: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้ส่งส่วนหัว x-forwarded-host ไปยังเป้าหมาย
  • x-request-id: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้ส่งส่วนหัว x-request-id ไปยังเป้าหมาย
  • x-response-time: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้ส่งส่วนหัว x-response-time ไปยังเป้าหมาย
  • via: (ค่าเริ่มต้น: true) ตั้งค่าเป็น false เพื่อป้องกันไม่ให้มีการส่งส่วนหัว via ไปยังเป้าหมาย

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

         ]
      },
      {
         "apiResources":[

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

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

         ]
      }
   ]
}

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

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

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

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

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

ผลิตภัณฑ์ API มีรหัสสถานะ 3 รหัส ได้แก่ รอดำเนินการ ได้รับอนุมัติ และเพิกถอน เพิ่มพร็อพเพอร์ตี้ใหม่ชื่อ allowProductStatus ลงในนโยบาย Set JWT Variables ในพร็อกซี 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 ใน Edge Analytics

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

edgemicro_proxyname-health

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    สถานที่:

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

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

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

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

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

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

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

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

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

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

    เช่น

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

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

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

การกำหนดค่าการหน่วงเวลา "ไม่ก่อน"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

การแคชคีย์

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

เปิดใช้โค้ดตอบกลับอัปสตรีม

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

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

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

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

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

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

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

นอกจากนี้ คุณยังรับโทเค็นเพื่อการเข้าถึงได้โดยใช้คำสั่ง CLI edgemicro token โปรดดูรายละเอียดเกี่ยวกับ 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: ส่งข้อมูลเข้าสู่ระบบในส่วนหัว Basic Auth

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

คำสั่ง edgemicro forever มีแฟล็กที่ให้คุณระบุตำแหน่งของไฟล์ forever.json (แฟล็ก -f) และเริ่ม/หยุดกระบวนการตรวจสอบ Forever (แฟล็ก -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 โดยตัดการเชื่อมต่อจากการขึ้นต่อกันของ Apigee Edge โดยสิ้นเชิง สถานการณ์นี้เรียกว่าโหมดสแตนด์อโลน ซึ่งช่วยให้คุณเรียกใช้และทดสอบ Edge Microgateway ได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต

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

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

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

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

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

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

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

สถานที่:

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

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

ดูข้อมูลเพิ่มเติมในหัวข้อสร้างโทเค็น

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

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

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

ตัวอย่าง

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

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

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

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

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

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

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

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

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

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

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

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

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

  3. ใน Apigee Edge ให้สร้างผลิตภัณฑ์ API ที่มีข้อกำหนดการกำหนดค่าที่จำเป็นต่อไปนี้ (คุณสามารถจัดการการกำหนดค่าอื่นๆ ทั้งหมดได้ตามต้องการ)
  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 ในเครื่อง เมื่ออินสแตนซ์ Synchronizer ทำงานอยู่ อินสแตนซ์ 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 ในเครื่อง อินสแตนซ์ Synchronizer เองไม่สามารถประมวลผลการเข้าชมพร็อกซี API ได้ อินสแตนซ์อื่นๆ ของ Edge Microgateway ที่ทำงานบนโหนดต่างๆ สามารถกำหนดค่าให้ดึงข้อมูลการกำหนดค่าจากฐานข้อมูล Redis แทนที่จะเป็น Apigee Edge ได้ เนื่องจากอินสแตนซ์ Microgateway ทั้งหมดดึงข้อมูลการกำหนดค่าจากฐานข้อมูลในเครื่อง จึงสามารถเริ่มทำงานและประมวลผลคำขอ API ได้แม้ในกรณีที่อินเทอร์เน็ตขัดข้อง

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

เพิ่มการกำหนดค่าต่อไปนี้ลงในไฟล์ 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 ปกติ

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

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

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

เช่น

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

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

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

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

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

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

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

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

edgemicro.config_change_poll_interval ช่วงเวลาเป็นวินาที ระบุช่วงเวลาการโพลสำหรับ Synchronizer เพื่อดึงข้อมูลจาก 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> เพื่อระบุค่าบูลีน (นั่นคือ true หรือ false)

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