شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
مقدمه
این مبحث نحوه اجرای Edge Microgateway در یک کلاستر Kubernetes به عنوان یک پروکسی sidecar را توضیح میدهد. شما دو گزینه برای استقرار sidecar دارید: تزریق دستی و خودکار. این مبحث هر دو گزینه را شرح میدهد.
برای اطلاعات بیشتر، به مقدمهای بر Edge Microgateway در Kubernetes مراجعه کنید.
قبل از اینکه شروع کنی
مراحل شرح داده شده در پیشنیازها را تکمیل کنید.
استقرار یک سرویس آزمایشی
یک سرویس ساده "hello" را مستقر کنید و استقرار آن را تأیید کنید:
نمونه را مستقر کنید:
kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
تأیید کنید که سرویس در حال اجرا است. ممکن است لازم باشد چند لحظه صبر کنید تا پاد به حالت اجرا برگردد:
kubectl get pods --namespace=default
خروجی مثال:
NAME READY STATUS RESTARTS AGE helloworld-569d6565f9-lwrrv 1/1 Running 0 17mسرویس آزمایشی را حذف کنید. بعداً، پس از فعال کردن تزریق sidecar، آن را دوباره نصب خواهید کرد:
kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default
استفاده از تزریق دستی در اتاقک خودرو
از بین دو گزینه تزریق سایدکار، تزریق دستی سایدکار رویکرد سادهتر و سرراستتری است و میتوان آن را با یک دستور kubectl انجام داد.
پیکربندی Edge Microgateway
دستور زیر Edge Microgateway را برای سازمان Apigee شما پیکربندی میکند و پروکسی edgemicro-auth مستقر میکند.
دستور زیر را اجرا کنید:
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)
پیکربندی را آزمایش کنید
بررسی استقرار سرویسها:
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اکنون، شما آماده آزمایش استقرار Sidecar از Edge Microgateway هستید. برای مراحل دقیقتر به Test the proxy بروید.
استفاده از تزریق خودکار در اتاقک خودرو
در مراحل زیر، تزریق خودکار sidecar را برای کلاستر Kubernetes خود پیکربندی خواهید کرد. این تنظیمات به Edge Microgateway اجازه میدهد تا به عنوان یک پروکسی sidecar به Kubernetes تزریق شود.
انژکتور اتاقک کناری را نصب کنید
ConfigMap را که تزریق sidecar در Edge Microgateway را فعال میکند، نصب کنید:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
اسکریپت زیر را برای نصب سرویس وبهوک اجرا کنید. سرویس وبهوک برای تزریق خودکار sidecar مورد نیاز است:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certsبستهی 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وبهوک انژکتور سایدکار 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تأیید کنید که وبهوک تزریقکنندهی سایدکار 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تأیید کنید که غلاف تزریق 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 خود تزریق خواهید کرد.
اسکریپت تعاملی زیر را اجرا کنید و پارامترهای درخواستی را ارائه دهید. این دستور یک پروفایل پیکربندی ایجاد میکند که در مرحله بعدی از آن استفاده خواهید کرد.
./install/kubernetes/webhook-edgemicro-patch.sh
برای اطلاعات مربوط به پارامترهای ورودی، به مرجع مراجعه کنید.
ورودیهای نمونه:
Namespace to deploy application [default]:اینتر را فشار دهید.
Authenticate with OAuth Token ("n","Y") [N/y]عدد n را وارد کنید.
Apigee username [required]:نام کاربری (آدرس ایمیل) Apigee خود را وارد کنید. به عنوان مثال:
jdoe@google.com.Apigee password [required]:رمز عبور Apigee خود را وارد کنید.
Apigee organization [required]:نام سازمان Apigee خود را وارد کنید.
Apigee environment [required]:یک نام برای محیط سازمان خود وارد کنید. برای مثال "test".
Virtual Host [default]:اینتر را فشار دهید.
Is this Private Cloud ("n","y") [N/y]:اگر روی فضای ابری عمومی هستید، n را وارد کنید.
Edgemicro Key. Press Enter to generate:اینتر را فشار دهید.
Edgemicro Secret. Press Enter to generate:اینتر را فشار دهید.
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. *****************************************************************************************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 ********************************************************************************************************
دستور داده شده در آخرین خط خروجی را اجرا کنید. این دستور
kubectlپروفایل پیکربندی Edge Microgateway تولید شده را به Kubernetes تزریق میکند:kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
وضعیت تزریق وبهوک را مشاهده کنید. توجه داشته باشید که در حال حاضر فعال نیست:
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برای فعال کردن تزریق وبهوک برای وبهوک، این دستور را اجرا کنید:
kubectl label namespace default edgemicro-injection=enabled
دوباره وضعیت تزریق وبهوک را مشاهده کنید. توجه داشته باشید که اکنون فعال شده است:
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، میتوانید سرویس را از خارج از کلاستر فراخوانی کنید.
آدرس IP خارجی کنترلکنندهی Ingress را دریافت کنید:
kubectl get ing -o wide
خروجی مثال:
NAME HOSTS ADDRESS PORTS AGE gateway * 35.238.13.54 80 1mمقدار
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:]")
تأیید کنید که متغیر صادر شده است. برای مثال:
echo $GATEWAY_IP
خروجی مثال:
35.238.249.62با سرویس تماس بگیرید:
curl $GATEWAY_IP
خروجی:
{"error":"missing_authorization","error_description":"Missing Authorization header"}در مرحله بعد، با پیکربندی یک محصول API و برنامه توسعهدهنده در Edge، به خطای عدم احراز هویت رسیدگی خواهید کرد تا بتوانید یک کلید API معتبر دریافت کنید. وقتی کلید را به هدر احراز هویت برای فراخوانی API اضافه میکنید، فراخوانی موفقیتآمیز خواهد بود و این خطا را مشاهده نخواهید کرد.
ایجاد کامپوننتها در Apigee Edge
در مرحله بعد، یک محصول API و یک برنامه توسعهدهنده در Apigee Edge ایجاد کنید.
یک محصول API ایجاد کنید
- وارد Apigee Edge شوید.
- در منوی ناوبری کناری، گزینه انتشار > محصولات API را انتخاب کنید.
- روی + محصول API کلیک کنید. صفحه محصول ظاهر میشود.
صفحه محصول را به صورت زیر پر کنید. برای فیلدهایی که در زیر ذکر نشدهاند، میتوانید از مقادیر پیشفرض استفاده کنید. تا زمانی که دستورالعملی برای ذخیره کردن داده نشده است، آن را ذخیره نکنید.
نام hello-world-productنام نمایشی Edge Micro hello productمحیط زیست testدر بخش مسیر، روی + منبع سفارشی کلیک کنید.
مسیر
/را اضافه کنید.دوباره روی + Custom Resource کلیک کنید و مسیر
/**را اضافه کنید.در بخش API Proxies، روی + API Proxies کلیک کنید و edgemicro-auth را اضافه کنید.
محصول API را ذخیره کنید.
یک برنامه توسعهدهنده ایجاد کنید
- در منوی ناوبری کناری، گزینهی «برنامهها» (Apps) را انتخاب کنید.
- روی + برنامه کلیک کنید. صفحه جزئیات برنامه توسعهدهنده ظاهر میشود.
صفحه برنامه توسعهدهندگان را به شرح زیر پر کنید. تا زمانی که دستورالعملی برای ذخیره داده نشده، آن را ذخیره نکنید.
نام hello-world-appنام نمایشی Edge Micro hello appتوسعهدهنده از منوی کشویی، یک توسعهدهنده را انتخاب کنید. در بخش اعتبارنامهها، روی + محصول کلیک کنید و محصول
hello-world-productکه تازه ایجاد کردهاید را انتخاب کنید.روی ذخیره کلیک کنید.
شما به صفحهای که تمام برنامههای توسعهدهنده را فهرست میکند، برگشتهاید.
برنامهای که تازه ایجاد کردهاید،
hello-world-appرا انتخاب کنید.روی «نمایش» در کنار کلید مصرفکننده کلیک کنید.
مقدار Consumer Key را کپی کنید. این مقدار، کلید API است که برای برقراری تماسهای API امن به سرویس
helloworldاز آن استفاده خواهید کرد.چند دقیقه صبر کنید. چند دقیقه طول میکشد تا تغییراتی که در Apigee Edge ایجاد کردهاید با نمونه Edge Microgateway مستقر در کلاستر همگامسازی شود.
فراخوانی API
پس از اینکه تغییرات پیکربندی به داخل میکروگیتوی کشیده شدند، میتوانید آزمایشهای زیر را انجام دهید.
اگر API را بدون کلید API فراخوانی کنید، پیام خطایی مانند زیر دریافت خواهید کرد:
curl $GATEWAY_IP
خروجی مورد انتظار:
{"error":"missing_authorization","error_description":"Missing Authorization header"}برای برقراری تماسهای API موفق، به کلید API نیاز دارید.
کلید مصرفکننده را از برنامهی توسعهدهندهای که ایجاد کردهاید دریافت کنید. این مقدار، کلید 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 عمل کند.
بعدش چی؟
برای اطلاعات بیشتر در مورد افزودن افزونههای سفارشی، مقیاسبندی استقرار، ایجاد تغییرات پیکربندی و سایر کارهایی که ممکن است بخواهید انجام دهید، به بخش وظایف مراجعه کنید.