Apigee Edge के साथ Envoy के लिए Apigee अडैप्टर का इस्तेमाल करना

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

इस उदाहरण में, Apigee Edge के साथ Apigee Adapter for Envoy का इस्तेमाल करने का तरीका बताया गया है.

ज़रूरी शर्तें

शुरू करने से पहले:

खास जानकारी

इस उदाहरण में, Apigee Edge for Public Cloud के साथ Apigee Adapter for Envoy का इस्तेमाल करने का तरीका बताया गया है. एपीआई प्रॉक्सी कॉल, Envoy के ज़रिए किए जाते हैं. Envoy, नेटिव ऐप्लिकेशन के तौर पर काम करता है. Edge, Envoy के लिए Apigee Remote Service के ज़रिए एपीआई मैनेजमेंट सेवाएं उपलब्ध कराता है.

यहां दी गई इमेज में, Apigee Edge इंटिग्रेशन का बुनियादी आर्किटेक्चर दिखाया गया है:

Apigee Edge Cloud से कम्यूनिकेट करने के लिए, नेटिव तौर पर चल रहे Envoy अडैप्टर का हाई-लेवल व्यू. इसमें मैनेजमेंट प्लेन, रनटाइम प्लेन, और GCP सेवाएं शामिल हैं

Envoy प्रॉक्सी और रिमोट सर्विस, स्थानीय तौर पर चल रही हैं. Envoy, टारगेट सेवा से आने-जाने वाले एपीआई ट्रैफ़िक को मैनेज करता है. साथ ही, रिमोट सेवा से कम्यूनिकेट करता है. रिमोट सेवा, Apigee Edge Cloud से भी कम्यूनिकेट करती है, ताकि एपीआई प्रॉडक्ट और प्रॉक्सी की जानकारी मिल सके.

Apigee Edge को चालू करना

इस चरण में, Apigee Edge के लिए Envoy ऐसेट उपलब्ध कराने के लिए, Remote Service CLI का इस्तेमाल किया जाएगा. प्रोविज़निंग कमांड, Apigee Edge पर एक एपीआई प्रॉक्सी डिप्लॉय करती है. साथ ही, Apigee पर एक सर्टिफ़िकेट सेट अप करती है और क्रेडेंशियल जनरेट करती है. रिमोट सेवा, इन क्रेडेंशियल का इस्तेमाल करके आपके सिस्टम से Apigee से सुरक्षित तरीके से कनेक्ट करेगी.

  1. $CLI_HOME डायरेक्ट्री पर जाएं:
    cd $CLI_HOME
  2. यहां दिए गए एनवायरमेंट वैरिएबल बनाएं. इन वैरिएबल का इस्तेमाल, प्रोविज़निंग स्क्रिप्ट के पैरामीटर के तौर पर किया जाएगा:
    export ORG=organization_name
    export ENV=environment_name
    export USER=your_apigee_username
    export PASSWORD=your_apigee_password

    कहां:

    वैरिएबल ब्यौरा
    organization_name आपके Apigee संगठन का नाम.
    environment_name आपके संगठन में मौजूद किसी एनवायरमेंट का नाम.
    your_apigee_username आपके Apigee खाते का उपयोगकर्ता नाम. आम तौर पर, उपयोगकर्ता नाम एक ईमेल पता होता है.
    your_apigee_password Apigee का पासवर्ड.
  3. Apigee Edge पर रिमोट सेवा प्रॉक्सी को चालू करने के लिए, यह कमांड चलाएं:
    ./apigee-remote-service-cli provision --legacy --mfa $MFA --username $USER --password $PASSWORD \
        --organization $ORG --environment $ENV > config.yaml
  4. config.yaml फ़ाइल का कॉन्टेंट देखें. यह कुछ ऐसी नज़र आनी चाहिए:
    # Configuration for apigee-remote-service-envoy (platform: SaaS)
    # generated by apigee-remote-service-cli provision on 2020-08-26 09:43:41
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          internal_api: https://istioservices.apigee.net/edgemicro
          remote_service_api: https://my-username-test.apigee.net/remote-service
          org_name: my-org
          env_name: my-env
          key: f7e09c32f827cab87b8ce43842ed8467ffd2c58e6f795241e38fe7b1aec7664
          secret: 1cb5cca00dfb433cb80b32837451fce4bf694633cddbb73d704517e12b35e75

    कुंजी और सीक्रेट वैल्यू का इस्तेमाल, Remote Service Proxy से Apigee Edge को किए गए अनुरोधों की पुष्टि करने के लिए किया जाता है.

Envoy सेवा के लिए Apigee Remote Service को चालू करें

रिमोट सेवा को नेटिव बाइनरी या Docker पर चलाया जा सकता है.

सेवा को नेटिव तौर पर चलाना

कॉन्फ़िगरेशन फ़ाइल के साथ सेवा बाइनरी को एक्ज़ीक्यूट करें. यह कॉन्फ़िगरेशन फ़ाइल, प्रोविज़निंग कमांड से आउटपुट हुई थी:

$CLI_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

Docker पर सेवा को रन करना

Docker इमेज, रिलीज़ टैग के साथ पब्लिश की जाती हैं. इस इंस्टॉलेशन के लिए, नया वर्शन इस्तेमाल करें. आपके पास इमेज के तीन वैरिएशन में से कोई एक चुनने का विकल्प होता है:

अलग-अलग तरह का कॉन्टेंट इमेज
Google distroless gcr.io/distroless/base
Ubuntu google/apigee-envoy-adapter:v1.1.0-ubuntu
Boring Crypto के साथ Ubuntu google/apigee-envoy-adapter:v1.1.0-boring

उदाहरण के लिए, अगर आपको वॉल्यूम माउंट के ज़रिए, /config.yaml के तौर पर उपलब्ध अपनी लोकल config.yaml के साथ स्क्रैच इमेज को चलाना है, तो इस निर्देश का इस्तेमाल करें:

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v1.1.0

कॉन्फ़िगरेशन फ़ाइलों के सैंपल बनाना

सैंपल कॉन्फ़िगरेशन फ़ाइलें जनरेट करने के लिए, apigee-remote-service-cli samples create कमांड का इस्तेमाल करें.

इस उदाहरण के लिए, आपको जनरेट की गई इन फ़ाइलों की ज़रूरत होगी:

  • envoy-config.yaml - यह एचटीटीपी सेवा के लिए डिप्लॉयमेंट कॉन्फ़िगरेशन है.

सैंपल जनरेट करने के लिए:

  1. $CLI_HOME डायरेक्ट्री पर जाएं.
  2. फ़ाइलें जनरेट करने के लिए, यह कमांड चलाएं:

    ./apigee-remote-service-cli samples create --template native -c ./config.yaml
    फ़्लैग की जानकारी दें

    ये फ़ाइलें, ./samples डायरेक्ट्री में आउटपुट होती हैं:

    ls samples
    envoy-config.yaml
    

ज़्यादा जानकारी के लिए, सैंपल कमांड देखें.

Envoy प्रॉक्सी को इंस्टॉल और चालू करना

Envoy प्रॉक्सी को इंस्टॉल और चलाने के लिए, यह तरीका अपनाएं:

  1. Envoy बाइनरी डाउनलोड करें या इसे बनाएं या Docker का इस्तेमाल करें.
  2. Envoy को उस सैंपल कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करके चलाएं जिसे आपने पहले httpbin.org सेवा के लिए जनरेट किया था:
    envoy -c $CLI_HOME/samples/envoy-config.yaml

इंस्टॉलेशन की जांच करना

  1. httpbin सेवा को कॉल करें:
    curl -i http://localhost:8080/httpbin/headers
    

    अब इस सेवा को Apigee मैनेज कर रहा है. आपने एपीआई पासकोड नहीं दिया है. इसलिए, कॉल करने पर यह गड़बड़ी दिखती है.

    curl -i http://localhost:8080/httpbin/headers
    HTTP/1.1 403 Forbidden
    date: Tue, 12 May 2020 17:51:36 GMT
    server: envoy
    content-length: 0
    x-envoy-upstream-service-time: 11
  2. एपीआई प्रॉडक्ट को कॉन्फ़िगर करें और एपीआई पासकोड पाएं. इसके लिए, एपीआई पासकोड पाने का तरीका लेख पढ़ें.
  3. कुंजी का इस्तेमाल करके एपीआई कॉल करें:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/httpbin/headers -H "x-api-key: $APIKEY"

    कॉल को 200 स्टेटस के साथ पूरा होना चाहिए और रिस्पॉन्स में हेडर की सूची दिखनी चाहिए. उदाहरण के लिए:

    curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS"
    HTTP/1.1 200 OK
    server: envoy
    date: Tue, 12 May 2020 17:55:34 GMT
    content-type: application/json
    content-length: 828
    access-control-allow-origin: *
    access-control-allow-credentials: true
    x-envoy-upstream-service-time: 301
    
    {
      "headers": {
        "Accept": "*/*",
        "Content-Length": "0",
        "Host": "httpbin.default.svc.cluster.local",
        "User-Agent": "curl/7.70.0-DEV",
        "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS",
        "X-Apigee-Accesstoken": "",
        "X-Apigee-Api": "httpbin.default.svc.cluster.local",
        "X-Apigee-Apiproducts": "httpbin",
        "X-Apigee-Application": "httpbin",
        "X-Apigee-Authorized": "true",
        "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS",
        "X-Apigee-Developeremail": "user@example.com",
        "X-Apigee-Environment": "test",
        "X-Apigee-Organization": "my-org",
        "X-Apigee-Scope": "",
        "X-B3-Parentspanid": "1476f9a2329bbdfa",
        "X-B3-Sampled": "0",
        "X-B3-Spanid": "1ad5c19bfb4bc96f",
        "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa"
      }
    }

अगले चरण

httpbin सेवा के लिए एपीआई ट्रैफ़िक को अब Apigee मैनेज करता है. यहां कुछ ऐसी सुविधाओं के बारे में बताया गया है जिन्हें एक्सप्लोर और आज़माया जा सकता है:

  • अगर आपने एपीआई प्रॉडक्ट को एपीआई कुंजी पाने का तरीका में बताए गए तरीके से कॉन्फ़िगर किया है, तो कोटा सीमा को हर मिनट में पांच अनुरोधों पर सेट किया गया था. कोटा ट्रिगर करने के लिए, httpbin सेवा को कुछ और बार कॉल करें. कोटा खत्म होने पर, एचटीटीपी स्टेटस 403 गड़बड़ी दिखती है.
  • Edge के यूज़र इंटरफ़ेस (यूआई) में Apigee Analytics को ऐक्सेस करें. विश्लेषण करें > एपीआई मेट्रिक > एपीआई प्रॉक्सी की परफ़ॉर्मेंस पर जाएं.
  • एपीआई कॉल की पुष्टि करने के लिए, JWT टोकन जनरेट करें और उनका इस्तेमाल करें.
  • टोकन मैनेज करने, बनाने, और बाइंडिंग कंट्रोल करने के लिए, सीएलआई का इस्तेमाल करें. सीएलआई के बारे में ज़्यादा जानने के लिए, रेफ़रंस देखें.