إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح هذه المقالة استخدام موارد دخول Kubernetes لعرض مثال لخدمة Azure Kubernetes (AKS) من خلال بوابة تطبيق Azure عبر HTTP أو HTTPS.
تلميح
ضع في اعتبارك بوابة التطبيق للحاويات لحل دخول Kubernetes الخاص بك.
المتطلبات الأساسية
- مخطط Helm مثبت
ingress-azure:- نشر Greenfield: إذا كنت تبدأ من البداية، فراجع إرشادات التثبيت هذه، والتي توضح خطوات نشر مجموعة AKS مع بوابة التطبيق وتثبيت وحدة تحكم دخول بوابة التطبيق (AGIC) على نظام مجموعة AKS.
- توزيع Brownfield: إذا كان لديك نظام مجموعة AKS موجود ونشر Application Gateway، فراجع هذه الإرشادات لتثبيت AGIC على نظام مجموعة AKS.
- شهادة x509 ومفتاحها الخاص، إذا كنت تريد استخدام HTTPS على هذا التطبيق.
نشر تطبيق دفتر الضيوف
guestbook التطبيق هو تطبيق Kubernetes متعارف عليه يتكون من واجهة مستخدم ويب أمامية وواجهة خلفية وقاعدة بيانات Redis.
بشكل افتراضي، guestbook يعرض تطبيقه من خلال خدمة بالاسم frontend على المنفذ 80. بدون مورد دخول Kubernetes، لا يمكن الوصول إلى الخدمة من خارج نظام مجموعة AKS. يمكنك استخدام التطبيق، وإعداد موارد الدخول للوصول إلى التطبيق، من خلال HTTP وHTTPS.
لنشر guestbook التطبيق:
قم بالتنزيل
guestbook-all-in-one.yamlمن صفحة GitHub هذه.انشر
guestbook-all-in-one.yamlفي مجموعة AKS الخاصة بك عن طريق تشغيل هذا الأمر:kubectl apply -f guestbook-all-in-one.yaml
كشف الخدمات عبر HTTP
guestbook لعرض التطبيق، استخدم مورد الدخول التالي:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- backend:
serviceName: frontend
servicePort: 80
يعرض frontend هذا الدخول خدمة guestbook-all-in-one النشر كواجهة خلفية افتراضية لتوزيع بوابة التطبيق.
احفظ مورد الدخول السابق ك ing-guestbook.yaml:
النشر
ing-guestbook.yamlعن طريق تشغيل هذا الأمر:kubectl apply -f ing-guestbook.yamlتحقق من سجل وحدة تحكم الدخول لحالة النشر.
الآن يجب أن يكون التطبيق guestbook متاحًا. يمكنك التحقق من التوفر عن طريق زيارة العنوان العام لنشر بوابة التطبيق.
كشف الخدمات عبر HTTPS
بدون اسم مضيف محدد
إذا لم تحدد اسم مضيف، guestbook فستتوفر الخدمة على جميع أسماء المضيفين التي تشير إلى نشر بوابة التطبيق.
قبل نشر مورد الدخول، قم بإنشاء سر Kubernetes لاستضافة الشهادة والمفتاح الخاص:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>حدد مورد الدخول التالي. في
secretNameالقسم ، استبدل<guestbook-secret-name>باسم سرك.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - secretName: <guestbook-secret-name> rules: - http: paths: - backend: serviceName: frontend servicePort: 80تخزين مورد الدخول في ملف يسمى
ing-guestbook-tls.yaml.النشر
ing-guestbook-tls.yamlعن طريق تشغيل هذا الأمر:kubectl apply -f ing-guestbook-tls.yamlتحقق من سجل وحدة تحكم الدخول لحالة النشر.
guestbook الآن التطبيق متاح على كل من HTTP وHTTPS.
مع اسم مضيف محدد
يمكنك أيضا تحديد اسم المضيف على مورد الدخول إلى تكوينات وخدمات TLS متعددة. عند تحديد اسم مضيف، guestbook تتوفر الخدمة فقط على المضيف المحدد.
حدد مورد الدخول التالي. في
secretNameالقسم ، استبدل<guestbook-secret-name>باسم سرك. فيhostsالقسمين وhost، استبدل<guestbook.contoso.com>باسم المضيف الخاص بك.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - hosts: - <guestbook.contoso.com> secretName: <guestbook-secret-name> rules: - host: <guestbook.contoso.com> http: paths: - backend: serviceName: frontend servicePort: 80النشر
ing-guestbook-tls-sni.yamlعن طريق تشغيل هذا الأمر:kubectl apply -f ing-guestbook-tls-sni.yamlتحقق من سجل وحدة تحكم الدخول لحالة النشر.
guestbook الآن يتوفر التطبيق على كل من HTTP وHTTPS، فقط على المضيف المحدد.
التكامل مع الخدمات الأخرى
استخدم مورد الدخول التالي لإضافة مسارات وإعادة توجيه هذه المسارات إلى خدمات أخرى:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: </other/*>
backend:
serviceName: <other-service>
servicePort: 80
- backend:
serviceName: frontend
servicePort: 80