การอ้างอิงการดําเนินการและการกําหนดค่าสําหรับ 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 ทํางานอยู่ (ตัวเลือกพักการทํางานเป็น 0):

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

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

https://localhost:8000/myapi

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

  1. สร้างหรือรับใบรับรอง SSL และคีย์โดยใช้ยูทิลิตี openssl หรือวิธีการใดก็ได้ที่คุณต้องการ
  2. เพิ่มแอตทริบิวต์ edgemicro:ssl ในไฟล์การกําหนดค่า Edgedge 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 เป็น true ดังนี้

edgemicro:
  logging:
    to_console: true

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

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

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

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

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

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

คุณกําหนดค่าช่วงเวลาเหล่านี้ได้ในไฟล์การกําหนดค่า Edge Microgateway โปรดดูเพิ่มเติมที่การเปลี่ยนแปลงการกําหนดค่า

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

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

วิธีผ่อนปรนสิทธิ์ของไฟล์บันทึกอย่างเข้มงวด

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

เพิ่ม v3.2.3 แล้ว

เช่น

edgemicro:
 logging:
   disableStrictLogFile: true

แนวทางการบํารุงรักษาไฟล์บันทึกที่ดี

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

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

ระบบจะบันทึกคําขอ 4 รายการไปยัง Edge Microgateway แต่ละรายการไว้ในไฟล์บันทึก "api" ดังนี้

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

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

(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 มิลลิวินาที โดยเป้าหมายคือ Edge Microgateway ในการส่งข้อมูล 7 มิลลิวินาทีจากทั้งหมด 4 มิลลิวินาที

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

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

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

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

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

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

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

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

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

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

กําหนดไฟล์บันทึก

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

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

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

การอ้างอิงการกําหนดค่า Edge Microgateway

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

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

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

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

  • bootstrap: (ค่าเริ่มต้น: ไม่มี) URL ที่ชี้ไปยังบริการเฉพาะ 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
    

แอตทริบิวต์ของ Edge

การตั้งค่าเหล่านี้กําหนดค่ากระบวนการ 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: (default: error)
      • info - (แนะนํา) บันทึกคําขอและการตอบกลับทั้งหมดที่ส่งผ่านอินสแตนซ์ Edge Microgateway
      • warn - บันทึกข้อความเตือนเท่านั้น
      • error - บันทึกข้อความแสดงข้อผิดพลาดเท่านั้น
      • debug - บันทึกข้อความการแก้ไขข้อบกพร่องพร้อมข้อมูล คําเตือน และข้อความแสดงข้อผิดพลาด
      • trace - บันทึกการติดตามข้อมูลข้อผิดพลาดพร้อมกับข้อมูล คําเตือน และข้อความแสดงข้อผิดพลาด
      • ไม่มี - ห้ามสร้างไฟล์บันทึก
    • dir: (ค่าเริ่มต้น: /var/tmp) ไดเรกทอรีที่จัดเก็บไฟล์บันทึก
    • stats_log_interval: (ค่าเริ่มต้น: 60) ระยะเวลาเป็นวินาทีเมื่อเขียนระเบียนสถิติไปยังไฟล์บันทึก API
    • rotate_interval: (ค่าเริ่มต้น: 24) ระยะเวลาเป็นชั่วโมงเมื่อหมุนไฟล์บันทึก
  • ปลั๊กอิน: ปลั๊กอินต่างๆ จะเพิ่มฟังก์ชันให้กับ Edge Microgateway โปรดดูรายละเอียดเกี่ยวกับการพัฒนาปลั๊กอินที่หัวข้อพัฒนาปลั๊กอินที่กําหนดเอง
  • dir: เส้นทางที่เกี่ยวข้องจากไดเรกทอรี ./gateway ไปยังไดเรกทอรี ./plugins หรือเส้นทางสัมบูรณ์
  • ลําดับ: รายการโมดูลปลั๊กอินสําหรับเพิ่มลงในอินสแตนซ์ Edge Microgateway โมดูลต่างๆ จะทํางานตามลําดับที่ระบุไว้ที่นี่
  • debug: เพิ่มการแก้ไขข้อบกพร่องระยะไกลในกระบวนการ Edge Microgateway
    • port: หมายเลขพอร์ตที่จะฟัง เช่น ตั้งค่าโปรแกรมแก้ไขข้อบกพร่อง IDE ให้ฟังพอร์ตนี้
    • อาร์กิวเมนต์: อาร์กิวเมนต์ในกระบวนการแก้ไขข้อบกพร่อง เช่น args --nolazy
  • config_change_poll_interval: (ค่าเริ่มต้น: 600 วินาที) Edge Microgateway จะโหลดการกําหนดค่าใหม่เป็นระยะๆ และเรียกใช้การโหลดซ้ําหากมีการเปลี่ยนแปลง แบบสํารวจจะดึงข้อมูลการเปลี่ยนแปลงที่ทําใน Edge (การเปลี่ยนแปลงผลิตภัณฑ์ พร็อกซีแบบ Microgateway ฯลฯ) และการเปลี่ยนแปลงที่ทํากับไฟล์การกําหนดค่าในเครื่อง
  • 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: (ค่าเริ่มต้น: จริง) ตั้งค่าแอตทริบิวต์เป็น false เพื่อป้องกันไม่ให้โหลดปลั๊กอินการวิเคราะห์ ในกรณีนี้ จะไม่มีการเรียกใช้ข้อมูลวิเคราะห์ของ Apigee Edge หากตั้งค่าเป็น true หรือเมื่อไม่ได้ระบุแอตทริบิวต์นี้ ปลั๊กอินข้อมูลวิเคราะห์จะทํางานตามปกติ ดูรายละเอียดได้ในแอตทริบิวต์ Edgemicro (เพิ่ม v3.1.8)

    ตัวอย่าง:

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

ตัวอย่าง:

edgemicro:
 on_target_response_abort: appendErrorToClientResponseBody | abortClientRequest

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

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

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

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

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

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

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

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

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

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

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

โปรดทราบว่าคุณต้องระบุค่าของพารามิเตอร์การค้นหาในรูปแบบนิพจน์ทั่วไปและเข้ารหัส URL เช่น regex ^[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. ในการแตะ "พัฒนา" ให้เปิดนโยบายคําขอราคาเสนอ Java ในตัวแก้ไข
  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 (ไม่บังคับ): จํานวนระเบียนข้อมูลวิเคราะห์สูงสุดที่บัฟเฟอร์จะเก็บไว้ก่อนจะเริ่มทิ้งระเบียนที่เก่าที่สุดได้ ค่าเริ่มต้น: 10000
  • batchSize (ไม่บังคับ): ขนาดสูงสุดของกลุ่มระเบียน Analytics ที่ส่งไปยัง Apigee ค่าเริ่มต้น: 500
  • flushInterval (ไม่บังคับ): จํานวนมิลลิวินาทีระหว่างการแสดงผลแต่ละชุดของระเบียน Analytics ที่ส่งไปยัง Apigee ค่าเริ่มต้น: 5000

เช่น

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

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

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

ตัวอย่างเช่น ในการกําหนดค่าต่อไปนี้ เส้นทาง API ใดๆ ที่มี /healthcheck จะถูกแยกส่วนด้วยปลั๊กอิน Analytics ซึ่งหมายความว่า ระบบจะแยก /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

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

    โดยที่

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

    ตัวอย่างเช่น

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

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

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

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

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

คีย์ JWT ที่กําลังหมุน

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

Edge Microgateway ใช้ JWT อย่างไร

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

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

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

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

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

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

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

คีย์ KVM ประกอบด้วย

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

  • public_key - ใบรับรองล่าสุด (ที่สร้างล่าสุด) ที่ใช้ในการยืนยัน JWT ที่ลงนามด้วยคีย์ส่วนตัว

  • 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 ดูรายละเอียดเกี่ยวกับการเรียกใช้คําสั่งนี้ที่ การใช้พร็อกซี Edge Auth คุณต้องทําขั้นตอนนี้เพียงครั้งเดียวเท่านั้น
  3. เพิ่มบรรทัดต่อไปนี้ลงในไฟล์ ~/.edgemicro/org-env-config.yaml โดยต้องระบุองค์กรและสภาพแวดล้อมเดียวกันกับที่คุณกําหนดค่าไมโครเกตให้ใช้ ดังนี้
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. เรียกใช้คําสั่งการหมุนเวียนคีย์เพื่อหมุนเวียนคีย์ ดูรายละเอียดคําสั่งนี้ที่การหมุนเวียนคีย์

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

    เช่น

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

หลังจากการหมุนเวียนคีย์ Edge จะส่งคืนคีย์หลายรายการไปยัง Edge Microgateway โปรดทราบว่าในตัวอย่างต่อไปนี้ แต่ละคีย์มีค่า "kid" (รหัสคีย์) ที่ไม่ซ้ํากัน จากนั้น 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 ซึ่งย่อมาจาก "not before" ค่าสถานะนี้จะใช้ค่าจํานวนเต็มหรือจํานวนนาทีที่จะล่าช้า

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    เช่น

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

    โดยที่

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

    เช่น

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

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

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

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

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

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

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

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

โดยที่

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

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

ดูเพิ่มเติมที่สร้างโทเค็น

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

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

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

ตัวอย่าง:

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

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

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

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

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

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

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

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

เช่น

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

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

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

การใช้ตัวซิงค์ข้อมูล

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

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

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

การกําหนดค่าอินสแตนซ์การซิงค์ข้อมูล

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

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

เช่น

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

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

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

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

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

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

เช่น

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

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

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

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

หาก 0 (ค่าเริ่มต้น) Edge Microgateway ทํางานในโหมดมาตรฐาน

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

edge_config.redisBasedConfigCache จริงหรือเท็จ หากเป็นจริง อินสแตนซ์ Edge Microgateway จะดึงข้อมูลการกําหนดค่าจากฐานข้อมูล Redis จาก Apigee Edge ฐานข้อมูล Redis ต้องเป็นฐานข้อมูลเดียวกับที่กําหนดค่าไว้สําหรับการซิงค์ข้อมูล หากฐานข้อมูล Redis ไม่พร้อมใช้งานหรือฐานข้อมูลว่างเปล่า ไมโครเกตเวย์จะมองหาไฟล์ 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> ใช้เพื่อระบุค่าบูลีน (ซึ่งก็คือ true หรือ false)

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