काम की गाइड

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

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

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

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

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

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

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

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

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

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

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

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

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

    कोटा भी देखें.

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

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

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

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

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

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

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

    • टारगेट
    • अनुरोध का पाथ
    • अनुरोध भेजने की तय सीमा (कोटा)
    • OAuth स्कोप

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

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

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

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

    डाला गया पाथ, नीचे दिए गए नियमों के मुताबिक मेल खाता है:

    • सिंगल स्लैश (/) अपने-आप किसी भी पाथ से मैच करता है.
    • * कहीं भी मान्य है और सेगमेंट के अंदर (स्लैश के बीच) मैच करता है.
    • ** आखिर में मान्य है और लाइन के आखिर से मेल खाता है.

    अनुरोध भेजने की तय सीमा (कोटा)

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

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

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

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

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

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

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

    कोटा कहां-कहां रखा जाता है

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

    OAuth का दायरा

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

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

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

    JWT आधारित पुष्टि करने की प्रोसेस का इस्तेमाल किया जा रहा है

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

    खास जानकारी

    JWT की पुष्टि और पुष्टि करने का काम, Envoy करता है. इसके लिए, वह अपने JWT पुष्टि करने वाले फ़िल्टर का इस्तेमाल करता है.

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

    Apigee JWT टोकन बनाना

    सीएलआई का इस्तेमाल करके, Apigee JWT टोकन बनाए जा सकते हैं:

    $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 टोकन इस्तेमाल करना

    टोकन मिलने के बाद, आपको उसे 'ऑथराइज़ेशन हेडर' में एन्वोय को पास कर देना चाहिए. उदाहरण:

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

    JWT टोकन काम नहीं कर रहा

    एन्वोय अस्वीकार करना

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

    Jwks remote fetch is failed

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

    उदाहरण:

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

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

    • "Jwt में ऑडियंस की अनुमति नहीं है"
    • "Jwt जारी करने वाला बैंक या कंपनी कॉन्फ़िगर नहीं की गई है"

    ये आपके 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, --लॉग-लेवल मान्य लेवल: डीबग, जानकारी, चेतावनी, गड़बड़ी. लॉगिंग लेवल में बदलाव करता है. डिफ़ॉल्ट: जानकारी
    -j, --json-लॉग लॉग आउटपुट को JSON रिकॉर्ड के तौर पर एमिट करता है.

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

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

    apigee-remote-service-envoy बाइनरी के एनवायरमेंट में HTTP_PROXY और एचटीटीपीएस_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 पर उपलब्ध है. आप इस पोर्ट नंबर को कॉन्फ़िगर कर सकते हैं. कॉन्फ़िगरेशन फ़ाइल देखें.

    एन्वोय ऐनलिटिक्स

    यहां दिए गए लिंक में एनवॉय प्रॉक्सी ऐनलिटिक्स डेटा हासिल करने के बारे में जानकारी दी गई है:

    Istio Analytics

    यहां दिए गए लिंक में एनवॉय प्रॉक्सी ऐनलिटिक्स डेटा हासिल करने के बारे में जानकारी दी गई है:

    Apigee के आंकड़े

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

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

    मल्टी-टेनेंट एनवायरमेंट सपोर्ट

    अब आपके पास अडैप्टर को किसी Apigee संगठन में, एक से ज़्यादा एनवायरमेंट की सेवा देने के लिए चालू करने का विकल्प है. इस सुविधा की मदद से, एक Apigee संगठन से जुड़े एनवोय के लिए, एक Apigee अडैप्टर का इस्तेमाल किया जा सकता है, ताकि एक से ज़्यादा एनवायरमेंट को सेवा दी जा सके. इस बदलाव से पहले, एक अडैप्टर हमेशा एक 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 रनटाइम के बीच mTLS को कॉन्फ़िगर करना

    अडैप्टर और Apigee रनटाइम के बीच mTLS का इस्तेमाल करने के लिए, अडैप्टर की config.yaml फ़ाइल के tenant सेक्शन में क्लाइंट-साइड TLS सर्टिफ़िकेट दिए जा सकते हैं. यह बदलाव, ऐसे सभी 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