काम की गाइड

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं.
info

एपीआई पासकोड पाने का तरीका

यहां दिए गए उदाहरण में, एपीआई पासकोड पाने का तरीका बताया गया है. इस पासकोड का इस्तेमाल करके, Apigee Adapter for Envoy के ज़रिए प्रॉक्सी की गई टारगेट सेवा के एपीआई कॉल की पुष्टि की जा सकती है.

1. Apigee में लॉग इन करें

  1. किसी ब्राउज़र में Apigee का यूज़र इंटरफ़ेस (यूआई) खोलें.
  2. यूज़र इंटरफ़ेस (यूआई) में जाने के बाद, उसी संगठन को चुनें जिसका इस्तेमाल आपने Apigee Adapter for Envoy को कॉन्फ़िगर करने के लिए किया था.

2. डेवलपर बनाना

टेस्टिंग के लिए, किसी मौजूदा डेवलपर का इस्तेमाल किया जा सकता है. इसके अलावा, यहां दिए गए तरीके से नया डेवलपर बनाया जा सकता है:

  1. साइड नेविगेशन मेन्यू में, पब्लिश करें > डेवलपर को चुनें.
  2. + डेवलपर पर क्लिक करें.
  3. नया डेवलपर बनाने के लिए, डायलॉग बॉक्स में जानकारी भरें. आपके पास डेवलपर के नाम और ईमेल पते के तौर पर, अपनी पसंद का कोई भी नाम/ईमेल इस्तेमाल करने का विकल्प होता है.

3. एपीआई प्रॉडक्ट बनाना

प्रॉडक्ट बनाने का तरीका जानने के लिए, यहाँ दिया गया उदाहरण देखें. यह भी देखें एपीआई प्रॉडक्ट कॉन्फ़िगरेशन के बारे में जानकारी.

  1. साइड नेविगेशन मेन्यू में जाकर, पब्लिश करें > एपीआई प्रॉडक्ट को चुनें.
  2. + एपीआई प्रॉडक्ट पर क्लिक करें.
  3. प्रॉडक्ट के बारे में जानकारी वाले पेज पर यह जानकारी भरें.
  4. फ़ील्ड वैल्यू
    नाम httpbin-product
    डिसप्ले नेम httpbin product
    परिवेश your_environment

    इसे उस एनवायरमेंट पर सेट करें जिसका इस्तेमाल आपने Apigee Adapter for Envoy को प्रोविज़न करते समय किया था.

    ऐक्सेस Private
    Quota हर मिनट में पांच अनुरोध

    Quota भी देखें.

  5. Apigee रिमोट सेवा के टारगेट सेक्शन में जाकर, Apigee रिमोट सेवा का टारगेट जोड़ें पर क्लिक करें.
  6. Apigee रिमोट सेवा के टारगेट डायलॉग में, ये वैल्यू जोड़ें:
    एट्रिब्यूट वैल्यू ब्यौरा
    टारगेट का नाम टारगेट सेवा का नाम डालें. उदाहरण के लिए: httpbin.org Envoy प्रॉक्सी के ज़रिए टारगेट किया गया एंडपॉइंट.
    पाथ मैच करने के लिए, सेवा पर मौजूद किसी संसाधन का पाथ डालें. उदाहरण के लिए: /headers. टारगेट एंडपॉइंट से मैच करने के लिए अनुरोध का पाथ. इस पाथ पर किए गए एपीआई प्रॉक्सी कॉल, इस एपीआई प्रॉडक्ट से मेल खाएंगे.
  7. सेव करें पर क्लिक करें.

4. डेवलपर ऐप्लिकेशन बनाना

  1. साइड नेविगेशन मेन्यू में, पब्लिश करें > ऐप्लिकेशन को चुनें.
  2. + App पर क्लिक करें.
  3. डेवलपर ऐप्लिकेशन पेज पर यह जानकारी भरें. जब तक निर्देश न मिले, तब तक सेव न करें.
  4. नाम httpbin-app
    डिसप्ले नेम httpbin app
    डेवलपर पहले से बनाया गया डेवलपर चुनें या सूची में से अपनी पसंद का कोई डेवलपर चुनें.
  5. इसके बाद, ऐप्लिकेशन में एपीआई प्रॉडक्ट जोड़ें:
    1. क्रेडेंशियल सेक्शन में, + प्रॉडक्ट जोड़ें पर क्लिक करें. इसके बाद, अभी-अभी कॉन्फ़िगर किया गया प्रॉडक्ट चुनें: httpbin-product.
    2. बनाएं पर क्लिक करें.
    3. क्रेडेंशियल में जाकर, कुंजी के बगल में मौजूद, दिखाएं पर क्लिक करें.
    4. उपयोगकर्ता कुंजी की वैल्यू कॉपी करें. यह वैल्यू, एपीआई पासकोड है. इसका इस्तेमाल, httpbin सेवा को एपीआई कॉल करने के लिए किया जाएगा.

    एपीआई प्रॉडक्ट के बारे में जानकारी

    एपीआई प्रॉडक्ट, Apigee Remote Service के लिए मुख्य कंट्रोल पॉइंट होते हैं. एपीआई प्रॉडक्ट बनाने और उसे किसी टारगेट सेवा से बाइंड करने का मतलब है कि आपने एक ऐसी नीति बनाई है जो उन सभी अनुरोधों पर लागू होगी जिन्हें हैंडल करने के लिए, आपने Apigee Adapter for Envoy को कॉन्फ़िगर किया है.

    एपीआई प्रॉडक्ट की परिभाषा

    Apigee में एपीआई प्रॉडक्ट तय करते समय, कई पैरामीटर सेट किए जा सकते हैं. इनका इस्तेमाल अनुरोधों का आकलन करने के लिए किया जाएगा:

    • टारगेट
    • अनुरोध का पाथ
    • कोटा
    • OAuth के दायरे

    रिमोट सेवा के टारगेट

    एपीआई प्रॉडक्ट की परिभाषा, किसी अनुरोध पर तब लागू होगी, जब अनुरोध, टारगेट बाइंडिंग (उदाहरण के लिए, httpbin.org) और अनुरोध के पाथ (उदाहरण के लिए, /httpbin) दोनों से मेल खाता हो. संभावित टारगेट की सूची, एपीआई प्रॉडक्ट पर एट्रिब्यूट के तौर पर सेव की जाती है.

    डिफ़ॉल्ट रूप से, Apigee Remote Service, Envoy के खास :authority (host) हेडर की जांच, टारगेट की अपनी सूची के हिसाब से करता है. हालांकि, इसे अन्य हेडर का इस्तेमाल करने के लिए कॉन्फ़िगर किया जा सकता है.

    एपीआई रिसॉर्स पाथ

    पाथ इन नियमों के मुताबिक मैच करता है:

    • सिर्फ़ एक स्लैश (/) किसी भी पाथ से मेल खाता है.
    • *, किसी भी जगह पर मान्य होता है और यह किसी सेगमेंट (स्लैश के बीच) में मैच करता है.
    • ** आखिर में मान्य होता है और लाइन के आखिर में मौजूद किसी भी वर्ण से मेल खाता है.

    कोटा

    कोटा से पता चलता है कि कोई ऐप्लिकेशन, एक घंटे, दिन, हफ़्ते या महीने में किसी एपीआई को कितने अनुरोध मैसेज भेज सकता है. जब कोई ऐप्लिकेशन, कोटे की सीमा तक पहुंच जाता है, तो इसके बाद किए गए एपीआई कॉल अस्वीकार कर दिए जाते हैं.

    कोटा इस्तेमाल करने के उदाहरण

    कोटा की मदद से, यह तय किया जा सकता है कि कोई क्लाइंट किसी सेवा के लिए, तय समय में कितने अनुरोध कर सकता है. कोटा का इस्तेमाल अक्सर, डेवलपर और पार्टनर के साथ कारोबारी समझौते या एसएलए लागू करने के लिए किया जाता है. इसका इस्तेमाल, ऑपरेशनल ट्रैफ़िक को मैनेज करने के लिए नहीं किया जाता. उदाहरण के लिए, किसी मुफ़्त सेवा के लिए ट्रैफ़िक को सीमित करने के लिए कोटे का इस्तेमाल किया जा सकता है. वहीं, पैसे चुकाकर सेवा इस्तेमाल करने वाले ग्राहकों को पूरा ऐक्सेस दिया जा सकता है.

    एपीआई प्रॉडक्ट में कोटा तय किया जाता है

    कोटा पैरामीटर, एपीआई प्रॉडक्ट में कॉन्फ़िगर किए जाते हैं. उदाहरण के लिए, एपीआई प्रॉडक्ट बनाते समय, आपके पास यह तय करने का विकल्प होता है कि इस्तेमाल करने की अनुमति वाली कोटा सीमा, समय की इकाई, और इंटरवल क्या होगा.

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

    Apigee Runtime में, प्रॉडक्ट डेफ़िनिशन में डाले गए कोटे अपने-आप लागू होते हैं. हालांकि, Apigee Remote Service में ऐसा नहीं होता. अगर अनुरोध को अनुमति मिली है, तो अनुरोध को तय सीमा में गिना जाएगा.

    कोटा कहां मैनेज किए जाते हैं

    कोटे को रिमोट सर्विस प्रोसेस के ज़रिए स्थानीय तौर पर मैनेज और जांचा जाता है. साथ ही, इसे Apigee Runtime के साथ एसिंक्रोनस तरीके से मैनेज किया जाता है. इसका मतलब है कि कोटा सटीक नहीं हैं. अगर आपके पास एक से ज़्यादा रिमोट सेवाएं हैं, जो कोटा बनाए रखती हैं, तो हो सकता है कि कोटा कुछ हद तक बढ़ जाए. अगर Apigee Runtime से कनेक्शन टूट जाता है, तो लोकल कोटा, स्टैंड-अलोन कोटा के तौर पर तब तक काम करता रहेगा, जब तक यह Apigee Runtime से फिर से कनेक्ट नहीं हो जाता.

    OAuth का दायरा

    अगर JWT टोकन का इस्तेमाल किया जा रहा है, तो अनुमति वाले OAuth स्कोप के सबसेट के लिए टोकन को सीमित किया जा सकता है. जारी किए गए जेडब्ल्यूटी टोकन को असाइन किए गए स्कोप की जांच, एपीआई प्रॉडक्ट के स्कोप के हिसाब से की जाएगी.

    डेवलपर के ऐप्लिकेशन के बारे में जानकारी

    एपीआई प्रॉडक्ट कॉन्फ़िगर करने के बाद, आपको डेवलपर से जुड़ा ऐप्लिकेशन बनाना होगा. यह ऐप्लिकेशन, एपीआई पासकोड या JWT टोकन की मदद से क्लाइंट को, उससे जुड़े एपीआई प्रॉडक्ट ऐक्सेस करने की अनुमति देता है.

    JWT के आधार पर पुष्टि करने की सुविधा का इस्तेमाल करना

    एपीआई पासकोड का इस्तेमाल करने के बजाय, पुष्टि किए गए एपीआई प्रॉक्सी कॉल करने के लिए, JWT टोकन का इस्तेमाल किया जा सकता है. इस सेक्शन में, JWT टोकन बनाने, उनकी जांच करने, और उन्हें रोटेट करने के लिए, apigee-remote-service-cli token कमांड का इस्तेमाल करने का तरीका बताया गया है.

    खास जानकारी

    Envoy, JWT Authentication Filter का इस्तेमाल करके, JWT की पुष्टि और पुष्टि करने की प्रोसेस को मैनेज करता है.

    पुष्टि हो जाने के बाद, Envoy ext-authz फ़िल्टर, अनुरोध हेडर और JWT को apigee-remote-service-envoy पर भेजता है. यह अनुरोध के टारगेट के ख़िलाफ़ पुष्टि करने के लिए, Apigee API प्रॉडक्ट के ख़िलाफ़ JWT के api_product_list और scope दावों से मेल खाता है.

    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 को Authorization हेडर में पास करना होगा. उदाहरण:

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

    JWT टोकन से जुड़ी गड़बड़ी

    Envoy के अनुरोध को अस्वीकार करना

    अगर Envoy टोकन को अस्वीकार कर देता है, तो आपको इस तरह का मैसेज दिख सकता है:

    Jwks remote fetch is failed

    अगर ऐसा है, तो पक्का करें कि आपके Envoy कॉन्फ़िगरेशन में remote_jwks सेक्शन में मान्य यूआरआई शामिल हो. साथ ही, यह भी पक्का करें कि Envoy इसे ऐक्सेस कर सकता हो. इसके अलावा, यह भी पक्का करें कि आपने Apigee प्रॉक्सी इंस्टॉल करते समय, सर्टिफ़िकेट सही तरीके से सेट किए हों. आपके पास GET कॉल के ज़रिए यूआरआई को सीधे कॉल करने और मान्य JSON जवाब पाने की सुविधा होनी चाहिए.

    उदाहरण:

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

    Envoy से मिले अन्य मैसेज इस तरह के हो सकते हैं:

    • "Jwt में ऑडियंस का इस्तेमाल नहीं किया जा सकता"
    • "Jwt issuer is not configured"

    ये Envoy के कॉन्फ़िगरेशन की ज़रूरी शर्तों से जुड़ी समस्याएं हैं. इनमें आपको बदलाव करने पड़ सकते हैं.

    किसी टोकन की जांच करना

    अपने टोकन की जांच करने के लिए, सीएलआई का इस्तेमाल किया जा सकता है. उदाहरण

    $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

    डीबग करना

    मान्य एपीआई पासकोड काम नहीं करता लेख पढ़ें.

    लॉग इन हो रहा है

    $REMOTE_SERVICE_HOME/apigee-remote-service-envoy सेवा पर लॉगिंग लेवल को अडजस्ट किया जा सकता है. सभी लॉगिंग को stdout और stderr पर भेजा जाता है.

    एलिमेंट ज़रूरी है ब्यौरा
    -l, --log-level मान्य लेवल: debug, info, warn, error. इससे लॉगिंग लेवल को अडजस्ट किया जाता है. डिफ़ॉल्ट: info
    -j, --json-log यह JSON रिकॉर्ड के तौर पर लॉग आउटपुट दिखाता है.

    Envoy, लॉगिंग की सुविधा देता है. ज़्यादा जानकारी के लिए, Envoy के दस्तावेज़ों के ये लिंक देखें:

    नेटवर्क प्रॉक्सी का इस्तेमाल करना

    apigee-remote-service-envoy बाइनरी के एनवायरमेंट में, HTTP_PROXY और HTTPS_PROXY एनवायरमेंट वैरिएबल का इस्तेमाल करके, एचटीटीपी प्रॉक्सी डाली जा सकती है. इनका इस्तेमाल करते समय, 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 for Envoy, Apigee को अनुरोध के आंकड़े भेजता है, ताकि उनका विश्लेषण किया जा सके. Apigee, इन अनुरोधों को एपीआई प्रॉडक्ट के नाम के हिसाब से रिपोर्ट करता है.

    Apigee के आंकड़ों के बारे में जानकारी पाने के लिए, Analytics सेवाओं की खास जानकारी देखें.

    कई टेनेंट वाले एनवायरमेंट के साथ काम करने की सुविधा

    अब Apigee संगठन में, एक से ज़्यादा एनवायरमेंट के लिए अडैप्टर चालू किया जा सकता है. इस सुविधा की मदद से, एक Apigee संगठन से जुड़े एक Apigee Adapter for Envoy का इस्तेमाल करके, कई एनवायरमेंट को सेवा दी जा सकती है. इस बदलाव से पहले, एक अडैप्टर हमेशा एक Apigee एनवायरमेंट से जुड़ा होता था.

    एक से ज़्यादा एनवायरमेंट के लिए सहायता कॉन्फ़िगर करने के लिए, config.yaml फ़ाइल में tenant:env_name की वैल्यू को * में बदलें. उदाहरण के लिए:

    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 को भी कॉन्फ़िगर करना होगा, ताकि वह अडैप्टर को सही एनवायरमेंट वैल्यू भेज सके. इसके लिए, आपको envoy-config.yaml फ़ाइल के virtual_hosts:routes सेक्शन में यह मेटाडेटा जोड़ना होगा. उदाहरण के लिए:

    1. सीएलआई का इस्तेमाल करके, envoy-config.yaml फ़ाइल जनरेट करें. उदाहरण के लिए:
      $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. फ़ाइल को सेव करें और उसे लागू करें.

    ऐडैप्टर और Apigee Runtime के बीच mTLS कॉन्फ़िगर करना

    अडैप्टर और Apigee रनटाइम के बीच एमटीएलएस का इस्तेमाल करने के लिए, अडैप्टर की config.yaml फ़ाइल के tenant सेक्शन में क्लाइंट-साइड टीएलएस सर्टिफ़िकेट दिए जा सकते हैं. यह बदलाव, Apigee के सभी प्लैटफ़ॉर्म पर लागू होता है. यह Apigee Edge for Private Cloud प्लैटफ़ॉर्म के लिए, आंकड़ों के विश्लेषण के लिए mTLS को भी चालू करता है. उदाहरण के लिए:

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