استقرار Edge Microgateway به‌عنوان پراکسی جانبی

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

مقدمه

این موضوع توضیح می‌دهد که چگونه Edge Microgateway را در خوشه Kubernetes به‌عنوان پراکسی جانبی اجرا کنید. برای استقرار خودروی جانبی دو گزینه دارید: تزریق دستی و تزریق خودکار. این موضوع هر دو گزینه را شرح می‌دهد.

برای اطلاعات بیشتر، مقدمه‌ای بر Edge Microgateway در Kubernetes را ببینید.

قبل‌از شروع

مراحل شرح‌داده‌شده در پیش‌نیازها را تکمیل کنید.

پیاده‌سازی سرویس آزمایشی

سرویس «سلام» ساده‌ای را مستقر کنید و استقرار را درستی‌سنجی کنید:

  1. استقرار نمونه:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. تأیید کنید که سرویس درحال اجرا است. ممکن است لازم باشد چند لحظه صبر کنید تا واحد به حالت اجرا برسد:

    kubectl get pods --namespace=default

    برونداد نمونه:

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. استقرار سرویس آزمایشی را حذف کنید. پس‌از فعال کردن تزریق سایدکار، آن را بعداً بازنصب خواهید کرد:

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

استفاده از تزریق دستی خودروی جانبی

از بین دو گزینه تزریق خودروی جانبی، تزریق دستی خودروی جانبی روش ساده‌تر و سرراست‌تری است و می‌توان آن را با یک فرمان kubectl انجام داد.

پیکربندی Edge Microgateway

فرمان زیر Edge Microgateway را برای سازمان Apigee شما پیکربندی می‌کند و پراکسی edgemicro-auth را مستقر می‌کند.

  1. فرمان زیر را اجرا کنید:

    edgemicro configure -o [org] -e [env] -u [username]

    مکان:

    • ‫org: نام سازمان Edge شما (باید سرپرست سازمان باشید).

    • env: محیطی در سازمان شما (مثل آزمایش یا تولید).

    • ‫username: نشانی ایمیل منسوب به حساب Apigee شما.

    مثال

    edgemicro configure -o myorg -e test -u jdoe@example.com

    برونداد (مثال در زیر نشان داده شده است) در فایل ذخیره می‌شود:

    $HOME/.edgemicro/org_name-env_name-config.yaml
    .

    current nodejs version is v6.9.1
    current edgemicro version is 2.5.25
    password:
    file doesn't exist, setting up
    Give me a minute or two... this can take a while...
    App edgemicro-auth deployed.
    checking org for existing KVM
    KVM already exists in your org
    configuring host edgemicroservices.apigee.net for region us-west1
    
    saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml
    
    vault info:
     -----BEGIN CERTIFICATE-----
    MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
    b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD
    VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh
    nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm
    Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT
    iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn
    GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp
    oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I
    mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8
    1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN
    lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH
    6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm
    /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn
    8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4
    w+e3Z3F7IKI=
    -----END CERTIFICATE-----
    
    The following credentials are required to start edge micro
      key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4
      secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef
    
    edgemicro configuration complete!
    

تزریق Edge Microgateway به‌عنوان خودروی جانبی

برای تزریق دستی Edge Microgateway به غلاف سرویس به‌عنوان پراکسی خودروی جانبی، این فرمان را اجرا کنید:

kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)

کجا:

  • your_org - سازمان Apigee که در فرمان edgemicro configure مشخص کرده‌اید.
  • ‫your_env - محیطی که در فرمان edgemicro configure مشخص کرده‌اید.
  • your_key - کلید برگشتی از فرمان edgemicro configure.
  • your_secret - رمز برگشتی از فرمان edgemicro configure.
  • ‫config_file_path - مسیر فایل پیکربندی Edge Micro که از فرمان edgemicro configure برگردانده شده است.
  • service_deployment_file - مسیر فایل استقرار سرویسی که غلاف آن سرویس همراه را دریافت خواهد کرد. برای مثال: samples/helloworld/helloworld.yaml.

برای مثال:

kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)

آزمایش پیکربندی

  1. استقرار سرویس را بررسی کنید:

    kubectl get services -n default

    برونداد نمونه:

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort    10.15.254.163   <none>        8081:32401/TCP   56s
    kubernetes   ClusterIP   10.15.240.1     <none>        443/TCP          41m
    
  2. اکنون آماده‌اید تا استقرار جانبی Edge Microgateway را آزمایش کنید. برای مراحل دقیق، به آزمایش کردن پراکسی بروید.

استفاده از تزریق خودکار خودرو جانبی

در مراحل بعدی، تزریق خودکار خودروی جانبی را برای خوشه Kubernetes خود پیکربندی خواهید کرد. این راه‌اندازی به Edge Microgateway اجازه می‌دهد به‌عنوان پراکسی جانبی در Kubernetes تزریق شود.

نصب تزریق‌کننده خودروی جانبی

  1. ConfigMap را که تزریق sidecar از Edge Microgateway را فعال می‌کند نصب کنید:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. دستورگان زیر را برای نصب سرویس وب‌قلاب اجرا کنید. سرویس وب‌قلاب برای تزریق خودکار خودروی جانبی لازم است:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. بسته CA را به فایل نصب وب‌قلاب اضافه کنید. کارساز API‏ Kubernetes از این فایل برای فراخوانی وب‌قلاب استفاده می‌کند:

    cat install/kubernetes/edgemicro-sidecar-injector.yaml | \
         ./install/kubernetes/webhook-patch-ca-bundle.sh > \
         install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    
  4. وب‌قلاب تزریق‌کننده همراه Edge Microgateway را نصب کنید:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    

    برونداد نمونه:

    service "edgemicro-sidecar-injector" created
    serviceaccount "edgemicro-sidecar-injector-service-account" created
    deployment "edgemicro-sidecar-injector" created
    mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
    
  5. تأیید کنید که وب‌قلاب تزریق‌کننده Edge Microgateway sidecar درحال اجرا است:

    kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
    

    برونداد نمونه:

    NAME                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edgemicro-sidecar-injector   1         1         1            1           12m
    
  6. تأیید کنید که واحد تزریق sidecar در خوشه شما اجرا می‌شود. فضای نام edgemicro-system جایی است که خدمات سیستم نصب می‌شوند، ازجمله کنترل‌کننده Ingress، زیرینه HTTP پیش‌فرض، و تزریق‌کننده sidecar:

    kubectl get pods -n edgemicro-system

    برونداد نمونه:

    NAME                                            READY     STATUS    RESTARTS   AGE
    default-http-backend-55c6c69b88-gfnfd           1/1       Running   0          1h
    edgemicro-ingress-controller-64444469bf-jhn8b   1/1       Running   3          1h
    edgemicro-sidecar-injector-7d95698fbf-cq84q     1/1       Running   0          3m
    

پیکربندی و تزریق Edge Microgateway

در مرحله بعد، یک دستورگان تعاملی اجرا می‌کنید تا پیکربندی Edge Microgateway مرتبط با جای‌نام Kubernetes ایجاد کنید. سپس، پیکربندی را به خوشه Kubernetes تزریق می‌کنید.

  1. دستورگان تعاملی زیر را اجرا کنید و پارامترهای درخواست‌شده را ارائه دهید. این فرمان نمایه پیکربندی‌ای تولید می‌کند که در مرحله بعدی از آن استفاده خواهید کرد.

    ./install/kubernetes/webhook-edgemicro-patch.sh

    برای اطلاعات درباره پارامترهای ورودی، مرجع را ببینید.

    ورودی‌های نمونه:

    1. Namespace to deploy application [default]:

      کلید Enter را فشار دهید.

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      n را وارد کنید.

    3. Apigee username [required]:

      نام کاربری Apigee (نشانی ایمیل) خود را وارد کنید. برای مثال: jdoe@google.com.

    4. Apigee password [required]:

      گذرواژه Apigee خود را وارد کنید.

    5. Apigee organization [required]:

      نام سازمان Apigee خود را وارد کنید.

    6. Apigee environment [required]:

      نام محیطی برای سازمانتان وارد کنید. برای مثال «test».

    7. Virtual Host [default]:

      کلید Enter را فشار دهید.

    8. Is this Private Cloud ("n","y") [N/y]:

      اگر در «ابر عمومی» هستید، n را وارد کنید.

    9. Edgemicro Key. Press Enter to generate:

      کلید Enter را فشار دهید.

    10. Edgemicro Secret. Press Enter to generate:

      کلید Enter را فشار دهید.

    11. Edgemicro org-env-config.yaml. Press Enter to generate:

      کلید Enter را فشار دهید.

      برونداد نمونه:

      current nodejs version is v6.9.1
      current edgemicro version is 2.5.25
      config initialized to /Users/jdoe/.edgemicro/default.yaml
      Configure for Cloud
      ******************************************************************************************
      Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory.
      
      Please make changes as desired.
      *****************************************************************************************
      
    12. Do you agree to proceed("n","y") [N/y]:

      y را وارد کنید.

      برونداد نمونه:

      Configuring Microgateway with
      
      key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84
      secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0
      config:~/.edgemicro/jdoe-test-config.yaml
      
      ********************************************************************************************************
      kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
      ********************************************************************************************************
      
  2. فرمان ارائه‌شده در خط آخر برونداد را اجرا کنید. این فرمان kubectl نمایه پیکربندی Edge Microgateway تولیدشده را به Kubernetes تزریق می‌کند:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. وضعیت تزریق وب‌قلاب را مشاهده کنید. توجه داشته باشید که درحال‌حاضر فعال نیست:

    kubectl get namespace -L edgemicro-injection

    برونداد نمونه:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    
  4. برای فعال کردن تزریق وب‌قلاب برای وب‌قلاب، این فرمان را اجرا کنید:

    kubectl label namespace default edgemicro-injection=enabled
  5. وضعیت تزریق وب‌قلاب را دوباره مشاهده کنید. توجه داشته باشید که اکنون فعال است:

    kubectl get namespace -L edgemicro-injection

    برونداد نمونه:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d        enabled
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    

پیاده‌سازی سرویس آزمایش

اکنون، سرویس آزمایشی را دوباره مستقر کنید. ‫Edge Microgateway به‌طور خودکار به واحد سرویس تزریق خواهد شد.

kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default

تأیید کنید که Edge Microgateway همراه با سرویس آزمایشی به واحد تزریق شده است:

kubectl get pods --namespace=default --watch

برونداد نمونه:

NAME                          READY     STATUS            RESTARTS   AGE
helloworld-6987878fc4-pkw8h   0/2       PodInitializing   0          12s
helloworld-6987878fc4-pkw8h   2/2       Running           0         26s

وقتی وضعیت به Running تغییر کرد، برای خروج از فرمان، ctrl-c را فشار دهید.

اکنون آماده‌اید تا استقرار خودکار «دستیار» Edge Microgateway را آزمایش کنید. برای مراحل دقیق، به آزمایش کردن پراکسی بروید.

آزمایش پراکسی

با استقرار «خودرو جانبی»، یک پراکسی API برای سرویس شما به‌طور خودکار ایجاد می‌شود. نیازی به ایجاد پراکسی «سازگار با Edge Microgateway» ندارید.

دریافت نشانی IP ورودی

با «IP خارجی» برای «ورودی»، می‌توانید سرویس را از خارج خوشه فراخوانی کنید.

  1. نشانی IP خارجی کنترل‌کننده Ingress را دریافت کنید:

    kubectl get ing -o wide

    برونداد نمونه:

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. مقدار EXTERNAL-IP را برای Ingress کپی کنید و آن را به متغیری صادر کنید. می‌توانید متغیر را به‌صورت دستی تنظیم کنید:

    export GATEWAY_IP=external_ip

    برای مثال:

    export GATEWAY_IP=35.238.249.62

    یا، از این فرمان برای تنظیم آن استفاده کنید:

    export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
  3. تأیید کنید که متغیر صادر شده است. برای مثال:

    echo $GATEWAY_IP

    برونداد نمونه:

    35.238.249.62
    
  4. با سرویس تماس بگیرید:

    curl $GATEWAY_IP

    خروجی:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    در مرحله بعد، با پیکربندی محصول API و برنامه توسعه‌دهنده در Edge، خطای مجوز ازدست‌رفته را برطرف خواهید کرد تا بتوانید کلید API معتبری دریافت کنید. وقتی کلید را به سرایند مجوز برای فراخوانی API اضافه می‌کنید، فراخوانی موفق خواهد بود و این خطا را نخواهید دید.

ایجاد عناصر در Apigee Edge

سپس، در Apigee Edge، محصول API و برنامه توسعه‌دهنده ایجاد کنید.

ایجاد محصول API

  1. به سیستم Apigee Edge وارد شوید.
  2. در منو پیمایش کناری، انتشار > محصولات API را انتخاب کنید.
  3. روی + محصول API کلیک کنید. صفحه محصول ظاهر می‌شود.
  4. «صفحه محصول» را به‌صورت زیر تکمیل کنید. برای فیلدهایی که در زیر ذکر نشده‌اند، می‌توانید از مقادیر پیش‌فرض استفاده کنید. تا زمانی که دستورالعمل ذخیره کردن را دریافت نکرده‌اید، «ذخیره» نکنید.

    نام hello-world-product
    نام نمایشی Edge Micro hello product
    محیط test

  5. در بخش «مسیر»، روی + منبع سفارشی کلیک کنید.

  6. مسیر / را اضافه کنید.

  7. دوباره روی + منبع سفارشی کلیک کنید و مسیر /** را اضافه کنید

  8. در بخش «پراکسی‌های API»، روی + پراکسی API کلیک کنید و edgemicro-auth را اضافه کنید.

  9. «محصول API» را ذخیره کنید.

ایجاد برنامه توسعه‌دهندگان

  1. برنامه‌ها را در منو پیمایش کناری انتخاب کنید.
  2. روی + برنامه کلیک کنید. صفحه «جزئیات برنامه توسعه‌دهنده» ظاهر می‌شود.
  3. صفحه «برنامه توسعه‌دهنده» را به‌صورت زیر تکمیل کنید. تا زمانی که دستور داده نشده است «ذخیره» نکنید.

    نام hello-world-app
    نام نمایشی Edge Micro hello app
    توسعه‌دهنده توسعه‌دهنده‌ای را از منوِ کرکره‌ای انتخاب کنید.
  4. در بخش «اطلاعات اعتباری»، روی + محصول کلیک کنید و hello-world-product را که به‌تازگی ساخته‌اید انتخاب کنید.

  5. روی ذخیره کلیک کنید.

  6. به صفحه‌ای که همه برنامه‌های «توسعه‌دهنده» را فهرست می‌کند برمی‌گردید.

  7. برنامه‌ای را که به‌تازگی ساخته‌اید، hello-world-app، انتخاب کنید.

  8. روی نمایش در کنار کلید مصرف‌کننده کلیک کنید.

  9. مقدار «کلید مصرف‌کننده» را کپی کنید. این مقدار کلید میانای برنامه‌سازی کاربردی است که برای انجام تماس‌های ایمن با میانای برنامه‌سازی کاربردی به سرویس helloworld استفاده خواهید کرد.

  10. چند دقیقه صبر کنید. چند دقیقه طول می‌کشد تا تغییراتی که در Apigee Edge ایجاد کرده‌اید با نمونه Edge Microgateway که در خوشه مستقر شده است همگام‌سازی شود.

فراخوانی میانای برنامه‌سازی کاربردی

پس‌از اینکه تغییرات پیکربندی به ریزدروازه کشیده شد، می‌توانید آزمایش‌های زیر را انجام دهید.

  1. میانای برنامه‌سازی کاربردی را بدون کلید میانای برنامه‌سازی کاربردی فراخوانی کنید. پیام خطایی دریافت خواهید کرد، همان‌طور که در زیر نشان داده شده است:

    curl $GATEWAY_IP

    برونداد موردانتظار:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    برای انجام موفقیت‌آمیز فراخوانی‌های API، به کلید API نیاز دارید.

  2. «کلید مصرف‌کننده» را از برنامه «توسعه‌دهنده» که ساخته‌اید دریافت کنید. این مقدار کلید API است که برای فراخوانی کارگزار آزمایشی نیاز دارید:

    curl -H 'x-api-key:your-edge-api-key'  $GATEWAY_IP

    برای مثال:

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP

    خروجی:

    Hello world
    

    پاسخ «سلام دنیا» توسط سرویس helloworld که در واحد مستقر شده است برگردانده می‌شود. تماس با آن سرویس ابتدا از Edge Microgateway عبور کرد، جایی که اصالت‌سنجی انجام شد. اگر پاسخ «سلام دنیا» را دیدید، یعنی Edge Microgateway را باموفقیت پیکربندی کرده‌اید تا به‌عنوان پراکسی خودروی جانبی در غلاف سرویس helloworld عمل کند.

حالا چه می‌شود؟

برای کسب اطلاعات درباره افزودن افزایه‌های سفارشی، مقیاس‌بندی استقرار، ایجاد تغییرات پیکربندی، و سایر تکالیفی که ممکن است بخواهید انجام دهید، به بخش تکالیف مراجعه کنید.