Edge Microgateway را به عنوان یک پروکسی sidecar اجرا کنید

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

مقدمه

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

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

قبل از اینکه شروع کنی

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

استقرار یک سرویس آزمایشی

یک سرویس ساده "hello" را مستقر کنید و استقرار آن را تأیید کنید:

  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. سرویس آزمایشی را حذف کنید. بعداً، پس از فعال کردن تزریق sidecar، آن را دوباره نصب خواهید کرد:

     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 : محیطی در سازمان شما (مانند test یا prod).

    • 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 به یک service pod به عنوان یک پروکسی sidecar، این دستور را اجرا کنید:

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 - مسیر فایل استقرار سرویسی که pod آن سرویس sidecar همراه را دریافت خواهد کرد. برای مثال: 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. اکنون، شما آماده آزمایش استقرار Sidecar از Edge Microgateway هستید. برای مراحل دقیق‌تر به Test the proxy بروید.

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

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

انژکتور اتاقک کناری را نصب کنید

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

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

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

    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 در حال اجرا است:

    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، backend پیش‌فرض 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]:

      اینتر را فشار دهید.

    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]:

      اینتر را فشار دهید.

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

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

    9. Edgemicro Key. Press Enter to generate:

      اینتر را فشار دهید.

    10. Edgemicro Secret. Press Enter to generate:

      اینتر را فشار دهید.

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

      اینتر را فشار دهید.

      خروجی مثال:

      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 به طور خودکار به Pod سرویس تزریق می‌شود.

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

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

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 را فشار دهید.

اکنون، شما آماده آزمایش استقرار خودکار Sidecar مربوط به Edge Microgateway هستید. برای مشاهده جزئیات مراحل، به Test the proxy بروید.

پروکسی را تست کنید

با استقرار sidecar، یک پروکسی API برای سرویس شما به صورت خودکار ایجاد می‌شود. نیازی به ایجاد یک پروکسی "Edge Microgateway-aware" ندارید.

آدرس IP ورودی را دریافت کنید

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

  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 کنید. می‌توانید متغیر را به صورت دستی تنظیم کنید:

    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

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

یک محصول API ایجاد کنید

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

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

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

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

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

  8. در بخش API Proxies، روی + API Proxies کلیک کنید و edgemicro-auth را اضافه کنید.

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

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

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

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

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

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

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

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

  9. مقدار Consumer Key را کپی کنید. این مقدار، کلید API است که برای برقراری تماس‌های API امن به سرویس helloworld از آن استفاده خواهید کرد.

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

فراخوانی API

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

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

    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
    

    پاسخ "Hello world" توسط سرویس helloworld مستقر در pod برگردانده می‌شود. فراخوانی آن سرویس ابتدا از Edge Microgateway عبور کرده و در آنجا احراز هویت انجام شده است. اگر پاسخ "Hello world" را مشاهده کردید، یعنی Edge Microgateway را با موفقیت پیکربندی کرده‌اید تا به عنوان یک پروکسی جانبی در Pod سرویس helloworld عمل کند.

بعدش چی؟

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