استقرار Edge Microgateway به عنوان سرویس

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

مقدمه

این مبحث نحوه اجرای Edge Microgateway را در یک کلاستر Kubernetes به عنوان یک سرویس مستقل توضیح می‌دهد.

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

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

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

پیکربندی 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 docs -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 به عنوان یک سرویس

  1. دستور زیر را برای استقرار Edge Microgateway به عنوان یک سرویس در کلاستر Kubernetes خود اجرا کنید:

    kubectl apply -f <(edgemicroctl -org=org -env=env -key=edgemicro-key
    -sec=edgemicro-secret -conf=file path of org-env-config.yaml)

    کجا:

    • org - سازمان Apigee که در دستور edgemicro configure مشخص کرده‌اید.
    • env - محیطی که در دستور edgemicro configure مشخص کرده‌اید.
    • edgemicro-key - کلیدی که از دستور edgemicro configure برگردانده می‌شود.
    • edgemicro-secret - رمزی که از دستور edgemicro configure برگردانده می‌شود.
    • file path of org-env-config.yaml - مسیر فایل پیکربندی Edge Micro که از دستور edgemicro configure برگردانده شده است.

    برای مثال:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=989cce9d41cac94e72626d906562a1d76a19445f8901b3508858bb064988eccb -sec=ec92b793178de7b7e88e346f55a951e3fdae05e700e3ddea7d63977826379784 -conf=/Users/jdoe/.edgemicro/jdoe-test-config.yaml)

    خروجی مثال:

    config/myorg-test-config.yaml)
    service "edge-microgateway" created
    deployment "edge-microgateway" created
    secret "mgwsecret" created
    
  2. کد زیر را کپی و در ترمینال خود جایگذاری کنید. این کد، کنترل‌کننده‌ی Ingress را طوری تنظیم می‌کند که امکان دسترسی خارجی به سرویس edge-microgateway را فراهم کند. ممکن است لازم باشد پس از جایگذاری دستور در ترمینال، کلید Enter را فشار دهید:

    cat <<EOF | kubectl apply -f -
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: edge-microgateway-ingress
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
      - http:
          paths:
          - path: /
            backend:
              serviceName: edge-microgateway
              servicePort: 8000
    EOF
    

    در صورت موفقیت، این خروجی را مشاهده خواهید کرد:

    ingress "edge-microgateway-ingress" created
    

    اکنون کنترل‌کننده‌ی Ingress طوری پیکربندی شده است که امکان دسترسی خارجی به سرویس edge-microgateway فراهم کند.

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

مراحل زیر یک سرویس آزمایشی ساده را در کلاستر شما مستقر می‌کند. کنترلر Ingress اجازه نمی‌دهد که سرویس از خارج از کلاستر فراخوانی شود. بعداً، Edge Microgateway را طوری پیکربندی خواهید کرد که سرویس را به عنوان هدف خود فراخوانی کند. کنترلر Ingress اجازه دسترسی خارجی به سرویس edge-microgateway را می‌دهد.

  1. سرویس نمونه helloworld را مستقر کنید. از آنجا که Ingress از وجود این سرویس اطلاعی ندارد، نمی‌توان آن را از خارج از کلاستر فراخوانی کرد.

    kubectl apply -f samples/helloworld/helloworld-service.yaml

    خروجی مثال:

    service "helloworld" created deployment "helloworld" created
    
  2. تأیید کنید که استقرار با موفقیت انجام شده است. توجه داشته باشید که هیچ IP خارجی برای سرویس helloworld وجود ندارد. در مراحل زیر، Edge Microgateway را برای دسترسی به IP داخلی سرویس پیکربندی خواهید کرد.

    kubectl get services -n default

    خروجی مثال:

    NAME                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    edge-microgateway   NodePort    10.35.247.222   <none>        8000:32000/TCP   12m
    helloworld          NodePort    10.35.245.103   <none>        8081:30294/TCP   47s
    kubernetes          ClusterIP   10.35.240.1     <none>        443/TCP          47m
    

پیکربندی Edge Microgateway برای پروکسی سرویس

IP داخلی سرویس helloworld را دریافت کنید و آن را به عنوان هدف یک پروکسی "microgateway-aware" اضافه کنید. ایجاد یک پروکسی "microgateway-aware" یک الزام استاندارد Edge Microgateway است.

همچنین ببینید آنچه باید در مورد پروکسی‌های سازگار با Microgateway بدانید .

دریافت IP داخلی برای سرویس تست

  1. دریافت IP و پورت داخلی کلاستر برای سرویس helloworld :

    kubectl get services helloworld

    خروجی مثال:

    NAME         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort   10.55.254.255   <none>        8081:30329/TCP   3m
    
  2. مقادیر CLUSTER-IP و PORT را کپی کنید. برای مثال، در مثال بالا، این مقادیر عبارتند از: 10.55.254.255 و 8081 مقادیر برای سیستم شما متفاوت خواهد بود.

یک پروکسی آگاه از microgateway در Edge ایجاد کنید

  1. وارد رابط کاربری Edge شوید .
  2. همان سازمانی را انتخاب کنید که قبلاً هنگام پیکربندی Edge Microgateway مشخص کرده‌اید.
  3. در منوی ناوبری کناری، گزینه توسعه > پروکسی‌های API را انتخاب کنید.
  4. روی + Proxy کلیک کنید. ویزارد ساخت پروکسی باز می‌شود.
  5. در صفحه اول ویزارد، گزینه Reverse proxy (رایج‌ترین) را انتخاب کنید.
  6. روی بعدی کلیک کنید.
  7. در صفحه جزئیات ویزارد، به صورت زیر پیکربندی کنید. حتماً ویزارد را دقیقاً مطابق شکل پر کنید. مطمئن شوید که نام پروکسی دارای پیشوند edgemicro_ باشد.

    1. نام پروکسی: edgemicro_hello
    2. مسیر پایه پروکسی: /hello

    3. API موجود: http://<cluster_ip>:<port>

      برای مثال: http://10.55.254.255:8081

  8. روی بعدی کلیک کنید.

  9. در صفحه امنیت ویزارد، گزینه عبور (بدون رمز) را انتخاب کنید.

  10. روی بعدی کلیک کنید.

  11. در صفحه میزبان‌های مجازی ویزارد، مقادیر پیش‌فرض را بپذیرید.

  12. روی بعدی کلیک کنید.

  13. در صفحه ساخت ویزارد، تنظیمات پروکسی خود را بررسی کنید. مطمئن شوید که محیط آزمایشی انتخاب شده است.

  14. روی ساخت و استقرار کلیک کنید.

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

می‌توانید از یک توسعه‌دهنده‌ی موجود برای آزمایش استفاده کنید، یا یک توسعه‌دهنده‌ی جدید به شرح زیر ایجاد کنید:

  1. در منوی ناوبری کناری، گزینه‌ی انتشار > توسعه‌دهندگان را انتخاب کنید.
  2. روی + توسعه‌دهنده کلیک کنید.
  3. برای ایجاد یک توسعه‌دهنده جدید، کادر محاوره‌ای را پر کنید. می‌توانید از هر نام/ایمیل توسعه‌دهنده‌ای که مایلید استفاده کنید.

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

یک محصول API مطابق توضیحات زیر ایجاد کنید. دو پروکسی به محصول اضافه خواهید کرد: edgemicro-auth و edgemicro_hello .

می‌توانید اطلاعات بیشتر در مورد گزینه‌های پیکربندی محصول را در بخش «آنچه باید در مورد پیکربندی محصول API بدانید» مطالعه کنید.

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

    نام hello-world-product
    نام نمایشی Edge Micro hello product
    محیط زیست test
    دسترسی Public
    نوع تأیید کلید Automatic
  4. در نیمه پایینی صفحه، روی + منبع سفارشی کلیک کنید.

  5. منبع را روی / (یک اسلش تکی) تنظیم کنید.

  6. دوباره + Custom Resource را انتخاب کنید و مسیر /** را اضافه کنید.

  7. در قسمت پایین صفحه، روی + API Proxy کلیک کنید.

  8. پروکسی با نام edgemicro-auth را انتخاب کنید.

  9. دوباره روی + API Proxy کلیک کنید.

  10. پروکسی microgateway-aware با نام edgemicro_hello را انتخاب کنید.

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

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

  1. در منوی ناوبری کناری، گزینه‌ی انتشار > برنامه‌ها را انتخاب کنید.
  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 امن به /hello آن استفاده خواهید کرد.

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

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

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

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

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

    kubectl get ing -o wide

    خروجی مثال:

    NAME                        HOSTS     ADDRESS          PORTS     AGE
    edge-microgateway-ingress   *         35.238.249.62    80        37m
    
  2. مقدار ADDRESS را برای Ingress کپی کنید و آن را به یک متغیر export کنید. می‌توانید متغیر را به صورت دستی تنظیم کنید:

    export GATEWAY_IP=external_ip

    برای مثال:

    export GATEWAY_IP=35.238.249.62

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

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

    echo $GATEWAY_IP

    خروجی مثال:

    35.238.249.62
    

فراخوانی API

پس از اینکه تغییرات پیکربندی به microgateway منتقل شدند، می‌توانید API را فراخوانی کنید. شما از IP کنترلر Ingress (که در متغیر GATEWAY_IP ذخیره کرده‌اید) برای فراخوانی API استفاده می‌کنید، زیرا این IP به شما امکان می‌دهد پروکسی را از خارج از خوشه Kubernetes فراخوانی کنید. نگاشت از Ingress به Edge Microgateway زمانی ایجاد شد که Edge Microgateway را در خوشه مستقر کردید .

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

    curl $GATEWAY_IP:80/hello/

    خروجی مورد انتظار:

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

    اگر این پیام را مشاهده کردید، ممکن است لازم باشد کمی بیشتر صبر کنید تا همگام‌سازی کامل شود:

    {"message":"no match found for /hello/","status":404}
    

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

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

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

    برای مثال:

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP:80/hello/

    خروجی:

    Hello world
    

    اگر پاسخ "Hello world" را مشاهده کردید، پس Edge Microgateway را با موفقیت پیکربندی کرده‌اید تا سرویس helloworld را درون کلاستر Kubernetes فراخوانی کند.

بعدش چی؟

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