أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
مقدمة
يوضّح هذا الموضوع كيفية تشغيل Edge Microgateway في مجموعة Kubernetes كـ خادم وكيل مساعد. يتوفّر لك خياران لنشر 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 injection:
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: بيئة في مؤسستك (مثل بيئة الاختبار أو الإنتاج)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)
where:
- استبدِل
your_orgبمؤسسة Apigee التي حدّدتها في الأمرedgemicro configure. - استبدِل
your_envبالبيئة التي حدّدتها في الأمرedgemicro configure. your_key: المفتاح الذي تم إرجاعه من الأمرedgemicro configureyour_secret: هو السر الذي تم إرجاعه من الأمرedgemicro configure.config_file_path: مسار ملف إعدادات Edge Micro الذي تم عرضه من الأمرedgemicro configureservice_deployment_file- مسار ملف النشر للخدمة التي سيحصل البود الخاص بها على خدمة 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أنت الآن جاهز لاختبار نشر Edge Microgateway باستخدام Sidecar. انتقِل إلى اختبار الخادم الوكيل للاطّلاع على الخطوات التفصيلية.
استخدام ميزة "إدخال الحاويات الجانبية" التلقائي
في الخطوات التالية، ستضبط عملية إدخال sidecar تلقائيًا في مجموعة Kubernetes. يتيح هذا الإعداد إدخال Edge Microgateway كخادم وكيل جانبي في Kubernetes.
تثبيت أداة إدخال الحاويات الجانبية
ثبِّت ConfigMap الذي يتيح إدخال Sidecar في Edge Microgateway:
kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
نفِّذ النص البرمجي التالي لتثبيت خدمة webhook. يجب توفُّر خدمة Webhook من أجل إضافة حاوية جانبية تلقائيًا:
./install/kubernetes/webhook-create-signed-cert.sh \ --service edgemicro-sidecar-injector \ --namespace edgemicro-system \ --secret sidecar-injector-certsأضِف حزمة شهادات المرجع المصدّق إلى ملف تثبيت الويب هوك. يستخدم خادم واجهة برمجة التطبيقات Kubernetes هذا الملف لتفعيل خطاف الويب:
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 sidecar injector webhook:
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 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تأكَّد من أنّ وحدة sidecar injection pod تعمل في مجموعتك. مساحة الاسم
edgemicro-systemهي المكان الذي يتم فيه تثبيت خدمات النظام، بما في ذلك وحدة التحكّم Ingress، والخادم الخلفي التلقائي لبروتوكول HTTP، وأداة إدخال الحاويات الجانبية: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]:اضغط على Enter.
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]:أدخِل اسم بيئة لمؤسستك. على سبيل المثال، "اختبار".
Virtual Host [default]:اضغط على Enter.
Is this Private Cloud ("n","y") [N/y]:أدخِل n إذا كنت تستخدم السحابة الإلكترونية العامة.
Edgemicro Key. Press Enter to generate:اضغط على Enter.
Edgemicro Secret. Press Enter to generate:اضغط على Enter.
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. *****************************************************************************************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
عرض حالة إدخال Webhook يُرجى العِلم أنّ هذه الميزة غير مفعّلة حاليًا:
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
اطّلِع على حالة إدخال Webhook مرة أخرى. يُرجى العِلم أنّه تم تفعيلها الآن:
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 في وحدة 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 للخروج من الأمر.
أنت الآن جاهز لاختبار عملية نشر تلقائية لـ Edge Microgateway. انتقِل إلى اختبار الخادم الوكيل للاطّلاع على الخطوات التفصيلية.
اختبار الخادم الوكيل
من خلال عملية نشر Sidecar، يتم إنشاء خادم وكيل لواجهة برمجة التطبيقات لخدمتك تلقائيًا. لست بحاجة إلى إنشاء خادم وكيل "متوافق مع Edge Microgateway".
الحصول على عنوان IP الخاص بـ Ingress
باستخدام عنوان 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 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"}بعد ذلك، ستعالج خطأ عدم توفّر إذن الوصول من خلال ضبط منتج واجهة برمجة تطبيقات وتطبيق مطوّر على Edge، وذلك حتى تتمكّن من الحصول على مفتاح صالح لواجهة برمجة التطبيقات. عند إضافة المفتاح إلى عنوان التفويض في طلب البيانات من واجهة برمجة التطبيقات، سينجح الطلب ولن يظهر لك هذا الخطأ.
إنشاء مكوّنات على Apigee Edge
بعد ذلك، أنشئ منتجًا لواجهة برمجة التطبيقات وتطبيقًا للمطوّرين على Apigee Edge.
إنشاء منتج لواجهة برمجة التطبيقات
- سجِّل الدخول إلى Apigee Edge.
- انقر على نشر > منتجات واجهة برمجة التطبيقات في قائمة التنقّل الجانبية.
- انقر على + منتج واجهة برمجة التطبيقات. تظهر صفحة المنتج.
املأ صفحة المنتج على النحو التالي. بالنسبة إلى الحقول غير المذكورة أدناه، يمكنك استخدام القيم التلقائية. لا تنقر على "حفظ" إلا بعد تلقّي تعليمات بذلك.
الاسم hello-world-productالاسم المعروض Edge Micro hello productالبيئة testفي قسم "المسار"، انقر على + مورد مخصّص.
أضِف المسار
/.انقر على + مورد مخصّص مرة أخرى وأضِف المسار
/**في قسم "خوادم وكيل واجهة برمجة التطبيقات" (API Proxies)، انقر على + خادم وكيل لواجهة برمجة التطبيقات وأضِف edgemicro-auth.
احفظ "منتج واجهة برمجة التطبيقات".
إنشاء تطبيق مطوِّر
- انقر على التطبيقات في قائمة التنقّل الجانبية.
- انقر على + تطبيق. ستظهر صفحة "تفاصيل تطبيق المطوِّر".
املأ صفحة "تطبيق المطوِّر" على النحو التالي. لا تحفظ الملف إلى أن يُطلب منك ذلك.
الاسم hello-world-appالاسم المعروض Edge Micro hello appالمطوِّر اختَر مطوّرًا من القائمة المنسدلة. في قسم "بيانات الاعتماد"، انقر على + منتج واختَر
hello-world-productالذي أنشأته للتو.انقر على حفظ.
ستعود إلى الصفحة التي تسرد جميع تطبيقات المطوّر.
اختَر التطبيق الذي أنشأته للتو،
hello-world-app.انقر على عرض بجانب مفتاح المستهلك.
انسخ قيمة "مفتاح المستهلك". هذه القيمة هي مفتاح واجهة برمجة التطبيقات الذي ستستخدمه لإجراء طلبات آمنة من واجهة برمجة التطبيقات إلى خدمة
helloworld.انتظِر بضع دقائق. يستغرق مزامنة التغييرات التي أجريتها على Apigee Edge مع مثيل Edge Microgateway الذي تم نشره في المجموعة بضع دقائق.
استدعاء واجهة برمجة التطبيقات
بعد سحب تغييرات الإعدادات إلى البوابة المصغّرة، يمكنك إجراء الاختبارات التالية.
استدعاء واجهة برمجة التطبيقات بدون مفتاح واجهة برمجة تطبيقات ستظهر لك رسالة خطأ كما هو موضّح أدناه:
curl $GATEWAY_IP
الناتج المتوقّع:
{"error":"missing_authorization","error_description":"Missing Authorization header"}لإجراء طلبات ناجحة من واجهة برمجة التطبيقات، يجب توفّر مفتاح واجهة برمجة التطبيقات.
احصل على مفتاح المستهلك من تطبيق المطوّر الذي أنشأته. هذه القيمة هي مفتاح واجهة برمجة التطبيقات الذي تحتاج إليه لاستدعاء خادم وكيل الاختبار:
curl -H 'x-api-key:your-edge-api-key' $GATEWAY_IP
على سبيل المثال:
curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP
إخراج:
Hello worldيتم عرض الاستجابة "Hello world" من خلال خدمة helloworld التي تم نشرها في الحزمة. تم تمرير طلب الخدمة هذا من خلال Edge Microgateway أولاً، حيث تم إجراء المصادقة. إذا ظهرت لك الاستجابة "Hello world"، يعني ذلك أنّك أعددت Edge Microgateway بنجاح لتعمل كخادم وكيل مساعد في مجموعة خدمة helloworld.
ما هي الخطوات التالية؟
راجِع قسم المهام للحصول على معلومات حول إضافة مكوّنات إضافية مخصّصة وتوسيع نطاق النشر وإجراء تغييرات في الإعدادات وتنفيذ مهام أخرى قد تحتاج إليها.