คู่มือการใช้งาน

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

วิธีรับคีย์ API

ตัวอย่างต่อไปนี้อธิบายวิธีรับคีย์ API ที่ใช้ตรวจสอบได้ การเรียก API ไปยังบริการเป้าหมายผ่านพร็อกซีผ่านอะแดปเตอร์ Apigee สำหรับ Envoy

1. เข้าสู่ระบบ Apigee

  1. เปิด UI ของ Apigee ในเบราว์เซอร์
  2. เมื่ออยู่ใน UI แล้ว ให้เลือกองค์กรเดียวกับที่คุณใช้กำหนดค่าอะแดปเตอร์ Apigee สำหรับ Envoy

2. สร้างนักพัฒนาซอฟต์แวร์

คุณสามารถใช้นักพัฒนาซอฟต์แวร์ที่มีอยู่สำหรับการทดสอบ หรือสร้างใหม่ได้ดังนี้

  1. เลือกเผยแพร่ > นักพัฒนาซอฟต์แวร์ในเมนูการนำทางด้านข้าง
  2. คลิก + นักพัฒนาซอฟต์แวร์
  3. กรอกข้อมูลในกล่องโต้ตอบเพื่อสร้างนักพัฒนาซอฟต์แวร์รายใหม่ คุณใช้ชื่อ/อีเมลนักพัฒนาแอปใดก็ได้ตามต้องการ

3. สร้างผลิตภัณฑ์ API

ทำตามตัวอย่างการสร้างผลิตภัณฑ์ที่ระบุไว้ด้านล่าง ดูเพิ่มเติม เกี่ยวกับ การกำหนดค่าผลิตภัณฑ์ API

  1. เลือกเผยแพร่ > ผลิตภัณฑ์ API ในเมนูการนำทางด้านข้าง
  2. คลิก + ผลิตภัณฑ์ API
  3. กรอกข้อมูลในหน้ารายละเอียดผลิตภัณฑ์ดังนี้
  4. ช่อง ค่า
    ชื่อ httpbin-product
    ชื่อที่แสดง httpbin product
    สภาพแวดล้อม your_environment

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

    สิทธิ์เข้าถึง Private
    โควต้า 5 คำขอทุก 1 นาที

    ดูโควต้าด้วย

  5. ในส่วนเป้าหมายบริการระยะไกลของ Apigee ให้คลิกเพิ่มเป้าหมายบริการระยะไกลของ Apigee
  6. ในกล่องโต้ตอบเป้าหมายบริการระยะไกล Apigee ให้เพิ่มค่าต่อไปนี้
    แอตทริบิวต์ ค่า คำอธิบาย
    ชื่อเป้าหมาย ป้อนชื่อของ บริการเป้าหมาย เช่น httpbin.org ปลายทางเป้าหมายที่อยู่ด้านหน้าโดยพร็อกซี Envoy
    เส้นทาง ป้อนเส้นทางทรัพยากรในบริการที่จะจับคู่ สำหรับ ตัวอย่าง: /headers เส้นทางคำขอที่จะจับคู่ในปลายทางเป้าหมาย การเรียกพร็อกซี API ไปยังเส้นทางนี้ จะตรงกับผลิตภัณฑ์ API นี้
  7. คลิกบันทึก

4. สร้างแอปนักพัฒนาซอฟต์แวร์

  1. เลือกเผยแพร่ > แอปในเมนูการนำทางด้านข้าง
  2. คลิก + แอป
  3. กรอกข้อมูลในหน้าแอปนักพัฒนาซอฟต์แวร์ดังนี้ อย่าบันทึกจนกว่าจะได้รับคำแนะนำ
  4. ชื่อ httpbin-app
    ชื่อที่แสดง httpbin app
    นักพัฒนาซอฟต์แวร์ เลือกนักพัฒนาซอฟต์แวร์ที่คุณสร้างขึ้นก่อนหน้านี้ หรือเลือกนักพัฒนาซอฟต์แวร์ที่คุณต้องการจากรายการ
  5. จากนั้นเพิ่มผลิตภัณฑ์ API ลงในแอปโดยทำดังนี้
    1. ในส่วนข้อมูลเข้าสู่ระบบ ให้คลิก + เพิ่มผลิตภัณฑ์ แล้วเลือกผลิตภัณฑ์ ที่เพิ่งกำหนดค่า: httpbin-product
    2. คลิกสร้าง
    3. ในส่วนข้อมูลรับรอง ให้คลิกแสดงข้างคีย์
    4. คัดลอกค่าของคีย์ผู้ใช้ ค่านี้คือคีย์ API ที่คุณจะใช้เรียก API ไปยังบริการ httpbin

    เกี่ยวกับผลิตภัณฑ์ API

    ผลิตภัณฑ์ API เป็นตัวควบคุมหลัก สำหรับ Apigee Remote Service เมื่อคุณสร้างผลิตภัณฑ์ API และเชื่อมโยงกับ บริการเป้าหมาย คุณกำลังสร้างนโยบายที่จะ ใช้กับคำขอที่คุณกำหนดค่าอะแดปเตอร์ Apigee สำหรับ Envoy ที่ควรจัดการ

    คำจำกัดความของผลิตภัณฑ์ API

    เมื่อคุณกำหนดผลิตภัณฑ์ API ใน Apigee คุณจะสามารถตั้งค่าพารามิเตอร์จำนวนหนึ่งที่ จะใช้ในการประเมินคำขอ:

    • เป้าหมาย
    • เส้นทางคำขอ
    • โควต้า
    • ขอบเขตของ OAuth

    เป้าหมายบริการระยะไกล

    คำจำกัดความผลิตภัณฑ์ API จะมีผลกับคำขอหากคำขอตรงกับทั้งเป้าหมาย การเชื่อมโยง (เช่น httpbin.org) และเส้นทางคำขอ (เช่น /httpbin) รายการของเป้าหมายที่เป็นไปได้ถูกจัดเก็บเป็นแอตทริบิวต์ใน ผลิตภัณฑ์ API

    โดยค่าเริ่มต้น Apigee Remote Service จะตรวจสอบส่วนหัวพิเศษ :authority (host) ของ Envoy เทียบกับ รายการเป้าหมาย แต่สามารถกำหนดค่าให้ใช้ส่วนหัวอื่นได้

    เส้นทางทรัพยากร API

    เส้นทางที่ป้อนตรงกับกฎต่อไปนี้

    • เครื่องหมายทับเพียงตัวเดียว (/) จะจับคู่กับเส้นทางใดก็ได้
    • * จะใช้ได้ที่ใดก็ได้และตรงกันภายในกลุ่ม (ระหว่างเครื่องหมายทับ)
    • ** ถูกต้องในตอนท้ายและจับคู่อะไรก็ได้กับท้ายบรรทัด

    โควต้า

    โควต้าจะระบุจำนวนข้อความคำขอที่แอปได้รับอนุญาตให้ส่งไปยัง API ในช่วง 1 ชั่วโมง วัน สัปดาห์ หรือเดือน เมื่อแอปถึงขีดจำกัดโควต้า การเรียก API ที่ตามมาจะถูกปฏิเสธ

    กรณีการใช้งานโควต้า

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

    มีการกำหนดโควต้าในผลิตภัณฑ์ API

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

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

    โควต้าที่ป้อนในคำจำกัดความของผลิตภัณฑ์ต่างจากรันไทม์ของ Apigee จะมีการบังคับใช้โดยอัตโนมัติโดย Apigee Remote Service หากคำขอได้รับอนุญาต คำขอจะนับรวมในโควต้าที่อนุญาต

    ตำแหน่งที่คงโควต้าไว้

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

    ขอบเขต OAuth

    หากใช้โทเค็น JWT คุณอาจจำกัดโทเค็นให้เป็นชุดย่อยของขอบเขต OAuth ที่อนุญาต ขอบเขตที่มอบหมายให้กับโทเค็น JWT ที่คุณออกจะได้รับการตรวจสอบกับขอบเขตของผลิตภัณฑ์ API

    เกี่ยวกับแอปของนักพัฒนาซอฟต์แวร์

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

    การใช้การตรวจสอบสิทธิ์ด้วย JWT

    คุณใช้โทเค็น JWT ในการเรียกพร็อกซี API ที่ตรวจสอบสิทธิ์แทนการใช้คีย์ API ได้ ช่วงเวลานี้ นี้จะอธิบายวิธีใช้คำสั่ง apigee-remote-service-cli token เพื่อ สร้าง ตรวจสอบ และหมุนเวียนโทเค็น JWT

    ภาพรวม

    Envoy จัดการการยืนยันและการตรวจสอบสิทธิ์ JWT โดยใช้ ตัวกรองการตรวจสอบสิทธิ์ JWT

    เมื่อตรวจสอบสิทธิ์แล้ว ตัวกรอง Envoy ext-authz จะส่งส่วนหัวของคำขอและ JWT ไปยัง apigee-remote-service-envoy ซึ่งตรงกับการอ้างสิทธิ์ api_product_list และ scope ของ JWT ต่อผลิตภัณฑ์ Apigee API เพื่อให้สิทธิ์กับเป้าหมายของคำขอ

    การสร้างโทเค็น Apigee JWT

    คุณสร้างโทเค็น Apigee JWT ได้โดยใช้ CLI

    $CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET

    หรือโดยการใช้ปลายทางโทเค็น OAuth มาตรฐาน ตัวอย่าง Curl

    curl https://org-env.apigee.net/remote-token/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"

    การใช้โทเค็น JWT

    เมื่อมีโทเค็นแล้ว ก็เพียงส่งต่อไปยัง Envoy ในส่วนหัวการให้สิทธิ์ ตัวอย่าง

    curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"

    โทเค็น JWT ล้มเหลว

    การปฏิเสธ Envoy

    หาก Envoy ปฏิเสธโทเค็น คุณอาจเห็นข้อความต่อไปนี้

    Jwks remote fetch is failed

    หากมี ให้ตรวจสอบว่าการกำหนดค่า Envoy มี URI ที่ถูกต้องใน remote_jwks ว่า Envoy สามารถเข้าถึงได้ และระบุอย่างถูกต้อง ตั้งค่าใบรับรองเมื่อคุณติดตั้งพร็อกซี Apigee คุณควรสามารถ เพื่อเรียกใช้ URI โดยตรงด้วยการเรียก GET และรับการตอบกลับ JSON ที่ถูกต้อง

    ตัวอย่าง

    curl https://myorg-eval-test.apigee.net/remote-service/certs

    ข้อความอื่นๆ จาก Envoy อาจมีลักษณะดังนี้

    • "ไม่อนุญาตให้ใช้กลุ่มเป้าหมายใน Jwt"
    • "ไม่ได้กำหนดค่าผู้ออกบัตร Jwt"

    ข้อมูลเหล่านี้มาจากข้อกำหนดในการกำหนดค่า Envoy ที่คุณอาจต้องแก้ไข

    ตรวจสอบโทเค็น

    คุณใช้ CLI เพื่อตรวจสอบโทเค็นได้ ตัวอย่าง

    $CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect -f path/to/file

    หรือ

    $CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN

    การแก้ไขข้อบกพร่อง

    โปรดดูหัวข้อคีย์ API ที่ถูกต้องไม่ทำงาน

    การบันทึก

    คุณปรับระดับการบันทึกได้ในบริการ $REMOTE_SERVICE_HOME/apigee-remote-service-envoy การบันทึกทั้งหมดจะส่งไปยัง stdout และ stderr

    องค์ประกอบ ต้องระบุ คำอธิบาย
    -l, --ระดับบันทึก ระดับที่ใช้ได้: แก้ไขข้อบกพร่อง ข้อมูล เตือน ข้อผิดพลาด ปรับระดับการบันทึก ค่าเริ่มต้น: ข้อมูล
    -j, --json-log ส่งเอาต์พุตของบันทึกเป็นระเบียน JSON

    Envoy จัดให้มีการทำบันทึก ดูข้อมูลเพิ่มเติมได้ที่ลิงก์เอกสาร Envoy ต่อไปนี้

    การใช้พร็อกซีเครือข่าย

    คุณสามารถแทรกพร็อกซี HTTP ได้โดยใช้ตัวแปรสภาพแวดล้อม HTTP_PROXY และ HTTPS_PROXY ในสภาพแวดล้อมของไบนารี apigee-remote-service-envoy เมื่อใช้ฟีเจอร์เหล่านี้ NO_PROXY นอกจากนี้ยังใช้ตัวแปรสภาพแวดล้อมเพื่อยกเว้นบางโฮสต์ไม่ให้ส่งผ่านพร็อกซีได้ด้วย

    HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port]
    HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port]
    NO_PROXY=127.0.0.1,localhost

    โปรดทราบว่าพร็อกซีต้องเข้าถึงได้จาก apigee-remote-service-envoy

    เกี่ยวกับเมตริกและข้อมูลวิเคราะห์

    จุดสิ้นสุดของเมตริก Prometheus มีอยู่ใน :5001/metrics คุณสามารถกำหนดค่า หมายเลขพอร์ตนี้ ดูไฟล์การกำหนดค่า

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

    ลิงก์ต่อไปนี้ให้ข้อมูลเกี่ยวกับการรับข้อมูลวิเคราะห์พร็อกซีของ Envoy ข้อมูล:

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

    ลิงก์ต่อไปนี้ให้ข้อมูลเกี่ยวกับการรับข้อมูลวิเคราะห์พร็อกซีของ Envoy ข้อมูล:

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

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

    หากต้องการดูข้อมูลเกี่ยวกับข้อมูลวิเคราะห์ Apigee ดูภาพรวมของบริการ Analytics

    การรองรับสภาพแวดล้อมแบบหลายกลุ่มผู้ใช้

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

    หากต้องการกำหนดค่าการสนับสนุนหลายสภาพแวดล้อม ให้เปลี่ยนแปลง ค่าของ tenant:env_name ถึง * ใน config.yaml เช่น

    1. เปิดไฟล์ config.yaml ในตัวแก้ไข
    2. เปลี่ยนค่าของ tenant.env_name เป็น * เช่น
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: apigee-remote-service-envoy
        namespace: apigee
      data:
        config.yaml: |
          tenant:
            remote_service_api: https://myorg-myenv.apigee.net/remote-service
            org_name: apigee-docs-hybrid-a
            env_name: *
            allow_unverified_ssl_cert: true
          analytics:
            collection_interval: 10s
          auth:
            jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token
    3. บันทึกไฟล์
    4. นำไฟล์ไปใช้:
      kubectl apply -f $CLI_HOME/config.yaml

    เมื่อกำหนดค่าโหมดหลายสภาพแวดล้อม คุณต้องกำหนดค่า Envoy ให้ส่ง ให้กับอะแดปเตอร์ด้วยการเพิ่มข้อมูลเมตาต่อไปนี้ใน ส่วน virtual_hosts:routes ของไฟล์ envoy-config.yaml เช่น

    1. สร้างไฟล์ envoy-config.yaml โดยใช้ CLI เช่น
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. เปิดไฟล์ที่สร้างขึ้น (ซึ่งมีชื่อว่า envoy-config.yaml)
    3. เพิ่มข้อมูลเมตาต่อไปนี้ใน virtual_host หรือ ส่วน routes ของไฟล์:
      typed_per_filter_config:
        envoy.filters.http.ext_authz:
          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
          check_settings:
            context_extensions:
              apigee_environment: test

      ตัวอย่างต่อไปนี้แสดงการกำหนดค่าสำหรับ virtual_host ที่มีหลายเส้นทาง ที่กำหนดไว้ โดยที่แต่ละเส้นทางส่งการจราจรของข้อมูลไปยังสภาพแวดล้อมที่เฉพาะเจาะจง

      filter_chains:
          - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                route_config:
                  virtual_hosts:
                  - name: default
                    domains: "*"
                    routes:
                    - match: { prefix: /test }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: test
                    - match: { prefix: /prod }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: prod
    4. ทำขั้นตอนสุดท้ายซ้ำเพื่อเพิ่มสภาพแวดล้อมอื่นๆ ตามต้องการ
    5. บันทึกไฟล์และนำไปใช้

    การกำหนดค่า mTLS ระหว่างอะแดปเตอร์และรันไทม์ Apigee

    คุณจะส่งใบรับรอง TLS ฝั่งไคลเอ็นต์ได้ในส่วน tenant ของ ไฟล์ config.yaml ของอะแดปเตอร์เพื่อใช้ mTLS ระหว่างอะแดปเตอร์กับรันไทม์ของ Apigee ช่วงเวลานี้ จะมีผลกับแพลตฟอร์ม Apigee ทั้งหมดที่รองรับ และยังเปิดใช้ mTLS สำหรับการวิเคราะห์ สำหรับแพลตฟอร์ม Apigee Edge for Private Cloud เช่น

    tenant:
      tls:
        ca_file: path/ca.pem
        cert_file: path/cert.pem
        key_file: path/key.pem
        allow_unverified_ssl_cert: false