HTTP proxy support in خدمة Azure Kubernetes ‏(AKS)

في هذا المقال، ستتعلم كيفية تكوين عناقيد خدمة Azure Kubernetes ‏(AKS) لاستخدام بروكسي HTTP للوصول إلى الإنترنت الخارجي.

تحتوي مجموعات AKS المنتشرة في الشبكات الظاهرية المدارة أو المخصصة على تبعيات صادرة معينة ضرورية للعمل بشكل صحيح، مما أدى إلى مشاكل في البيئات التي تتطلب الوصول إلى الإنترنت ليتم توجيهها من خلال وكلاء HTTP. لم يكن لدى العُقد نظام تمهيد تشغيل الكمبيوتر من أجل التكوين، والمتغيرات البيئية، والشهادات اللازمة للوصول إلى خدمات الإنترنت.

تضيف ميزة وكيل HTTP دعم وكيل HTTP إلى مجموعات AKS، مما يعرض واجهة مباشرة يمكنك استخدامها لتأمين حركة مرور الشبكة المطلوبة من AKS في البيئات المعتمدة على الوكيل. باستخدام هذه الميزة، يتم تكوين كل من عقد AKS والقرون لاستخدام وكيل HTTP. تُمكّن الميزة أيضًا تثبيت مصدر موثوق منه لشهادة على العُقد باعتبار ذلك جزء من نظام تمهيد تشغيل نظام مجموعة. قد تتطلب الحلول الأكثر تعقيدا إنشاء سلسلة من الثقة لإنشاء اتصالات آمنة عبر الشبكة.

تحديد الخدمة واعتباراتها

السيناريوهات التالية غير مدعومة:

  • تكوينات مختلفة لوكيل لكل تجمع عقدة
  • مصادقة كلمة المرور/المستخدم
  • المراجع المصدقة المخصصة (CAs) لاتصال خادم API
  • لا يمكن تحديد أكثر من 20 شهادة معتمدة موثوقة
  • مجموعات AKS مع مجموعات عقد Windows
  • تجمعات عُقد تستخدم مجموعات توفُر جهاز ظاهري (VMAS)
  • استخدام * كحرف بدل مرفق بلاحقة مجال ل noProxy
  • يجب أن تكون مضيفات noProxy متوافقة مع RFC 1123

httpProxy، httpsProxyو، و trustedCa ليس لها قيمة بشكل افتراضي. يتم إدخال الحجيرات مع متغيرات البيئة التالية:

  • HTTP_PROXY
  • http_proxy
  • HTTPS_PROXY
  • https_proxy
  • NO_PROXY
  • no_proxy

لتعطيل إدخال متغيرات بيئة الوكيل، تحتاج إلى إضافة تعليق توضيحي إلى Pod باستخدام "kubernetes.azure.com/no-http-proxy-vars":"true".

قبل البدء

  • تعطيل بروكسي HTTP يتطلب الحد الأدنى من CLI إصدار 2.85.0.

إنشاء ملف تكوين بقيم وكيل HTTP

إنشاء ملف وتوفير قيم ل httpProxyو httpsProxyو.noProxy إذا كانت بيئتك تتطلب ذلك، فوفر قيمة ل trustedCa.

يبدو مخطط ملف التكوين بالشكل التالي:

{
  "httpProxy": "string",
  "httpsProxy": "string",
  "noProxy": [
    "string"
  ],
  "trustedCa": "string"
}

مراجعة المتطلبات لكل معلمة:

  • httpProxy: URL وكيل لاستخدامه في إنشاء اتصالات HTTP خارج نظام المجموعة. يجب أن يكون مخطط URL هو http.
  • httpsProxy: URL وكيل لاستخدامه في إنشاء اتصالات HTTP خارج نظام المجموعة. إذا لم يتم تحديده، httpProxy استخدامه لكل من اتصالات HTTP وHTTPS.
  • noProxy: قائمة بأسماء المجالات الوجهة أو المجالات أو عناوين IP أو CIDRs للشبكة الأخرى لاستبعاد الوكيل.
  • trustedCa: سلسلة تحتوي على base64 encoded محتوى شهادة CA بديل. التنسيق معتمد حاليا فقط PEM . حد 20 شهادات.

هام

للتوافق مع المكونات المستندة إلى Go التي تعد جزءا من نظام Kubernetes، يجب أنبدلا من شهادات الاسم الشائع المهملة.

هناك اختلافات في التطبيقات حول كيفية الامتثال لمتغير http_proxyالبيئة و https_proxyو.no_proxy Curl و Python لا يدعمان CIDR في no_proxy، لكن Ruby تدعم.

الإدخال المثال:

{
  "httpProxy": "http://myproxy.server.com:8080", 
  "httpsProxy": "https://myproxy.server.com:8080", 
  "noProxy": [
    "localhost",
    "127.0.0.1"
  ],
    "trustedCa": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...S0tLS0="
}

إنشاء عنقود مع تكوين بروكسي HTTP باستخدام Azure CLI

يمكنك تكوين نظام مجموعة AKS باستخدام تكوين وكيل HTTP أثناء إنشاء نظام المجموعة.

  1. استخدم az aks create الأمر وقم بتمرير التكوين الخاص بك كملف JSON.

    az aks create \
        --name $clusterName \
        --resource-group $resourceGroup \
        --http-proxy-config aks-proxy-config.json \
        --generate-ssh-keys
    

    يجب تهيئة نظام المجموعة الخاص بك مع وكيل HTTP المكون على العقد.

  2. تحقق من وجود تكوين وكيل HTTP على الجراب والعقد عن طريق التحقق من أن متغيرات البيئة تحتوي على القيم المناسبة ل http_proxy، https_proxy، واستخدام no_proxykubectl describe pod الأمر.

    kubectl describe {any pod} -n kube-system
    

    للتحقق من صحة تعيين متغيرات الوكيل في الجراب، يمكنك التحقق من متغيرات البيئة الموجودة على العقد.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

تحديث تكوين وكيل HTTP

يمكنك تحديث تكوينات وكيل HTTP على المجموعات الموجودة، بما في ذلك:

  • تحديث نظام مجموعة موجود لتمكين وكيل HTTP وإضافة تكوين وكيل HTTP جديد.
  • تحديث نظام مجموعة موجود لتغيير تكوين وكيل HTTP.

اعتبارات تحديث وكيل HTTP

--http-proxy-config يجب تعيين المعلمة إلى ملف JSON جديد بقيم محدثة ل httpProxyو httpsProxynoProxyو و trustedCa إذا لزم الأمر. يقوم التحديث بإدخال متغيرات بيئة جديدة في pods بالقيم أو أو أو httpProxy الجديدةhttpsProxynoProxy. يجب تدوير الحجيرات للتطبيقات لالتقاطها، لأن قيم متغير البيئة يتم حقنها بواسطة إخطار على الويب للقبول المتحور.

إشعار

إذا كان التبديل إلى وكيل جديد، يجب أن يكون الوكيل الجديد موجودا بالفعل حتى يكون التحديث ناجحا. بعد اكتمال الترقية، يمكنك حذف الوكيل القديم.

تحديث نظام مجموعة لتحديث وكيل HTTP أو تمكينه

  1. قم بتمكين تكوينات وكيل HTTP أو تحديثها على نظام مجموعة موجود باستخدام az aks update الأمر.

    على سبيل المثال، لنفترض أنك قمت بإنشاء ملف جديد باستخدام سلسلة base64 المشفرة من شهادة CA الجديدة المسماة aks-proxy-config-2.json. يمكنك تحديث تكوين الوكيل على نظام المجموعة الخاص بك باستخدام الأمر التالي:

    az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json
    

تنبيه

يقوم AKS تلقائيا بإعادة تصوير جميع تجمعات العقد في نظام المجموعة عند تحديث تكوين الوكيل على نظام المجموعة الخاص بك باستخدام az aks update الأمر. يمكنك استخدام ميزانيات تعطيل الجراب (PDBs) لحماية تعطيل القرون الهامة أثناء إعادة التصويب.

  1. تحقق من وجود تكوين وكيل HTTP على الجراب والعقد عن طريق التحقق من أن متغيرات البيئة تحتوي على القيم المناسبة ل http_proxy، https_proxy، واستخدام no_proxykubectl describe pod الأمر.

    kubectl describe {any pod} -n kube-system
    

    للتحقق من صحة تعيين متغيرات الوكيل في الجراب، يمكنك التحقق من متغيرات البيئة الموجودة على العقد.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

تعطيل بروكسي HTTP على مجموعة موجودة

تحديث نظام المجموعة لتعطيل وكيل HTTP

  1. قم بتحديث نظام المجموعة الخاص بك لتعطيل وكيل HTTP باستخدام az aks update الأمر with --disable-http-proxy flag.

    az aks update --name $clusterName --resource-group $resourceGroup --disable-http-proxy
    

تنبيه

يقوم AKS تلقائيا بإعادة تصوير جميع تجمعات العقد في نظام المجموعة عند تحديث تكوين الوكيل على نظام المجموعة الخاص بك باستخدام az aks update الأمر. يمكنك استخدام ميزانيات تعطيل الجراب (PDBs) لحماية تعطيل القرون الهامة أثناء إعادة التصويب.

  1. تحقق من تعطيل وكيل HTTP عن طريق التحقق من صحة عدم تعيين تكوين وكيل HTTP على الجراب والعقد باستخدام kubectl describe pod الأمر.

    kubectl describe {any pod} -n kube-system
    

    للتحقق من صحة عدم تعيين متغيرات الوكيل في الجراب، يمكنك التحقق من متغيرات البيئة الموجودة على العقد.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

إعادة تمكين وكيل HTTP على مجموعة موجودة

عند إنشاء نظام مجموعة، يتم تمكين وكيل HTTP افتراضيا. بمجرد تعطيل وكيل HTTP على نظام مجموعة، يتم حفظ تكوين الوكيل في قاعدة البيانات ولكن تتم إزالة متغيرات الوكيل من الجراب والعقد.

لإعادة تمكين وكيل HTTP على نظام مجموعة موجود، استخدم az aks update الأمر مع العلامة --enable-http-proxy .

az aks update --name $clusterName --resource-group $resourceGroup --enable-http-proxy

تنبيه

يقوم AKS تلقائيا بإعادة تصوير جميع تجمعات العقد في نظام المجموعة عند تحديث تكوين الوكيل على نظام المجموعة الخاص بك باستخدام az aks update الأمر. يمكنك استخدام ميزانيات تعطيل الجراب (PDBs) لحماية تعطيل القرون الهامة أثناء إعادة التصويب.

هام

إذا كان لديك تكوين وكيل HTTP على نظام المجموعة الخاص بك قبل تعطيله، يتم تطبيق تكوين وكيل HTTP الحالي تلقائيا عند إعادة تمكين وكيل HTTP على تلك المجموعة. نوصي بالتحقق من التكوين للتأكد من أنه يلبي متطلباتك الحالية قبل المتابعة. إذا كنت ترغب في تغيير تكوين وكيل HTTP بعد إعادة تمكين وكيل HTTP، فاتبع الخطوات لتحديث تكوين وكيل HTTP على مجموعة موجودة.

تكوين تكوين بروكسي HTTP باستخدام قالب Azure Resource Manager (ARM)

يمكنك نشر نظام مجموعة AKS باستخدام وكيل HTTP باستخدام قالب ARM.

  1. مراجعة المتطلبات لكل معلمة:

    • httpProxy: URL وكيل لاستخدامه في إنشاء اتصالات HTTP خارج نظام المجموعة. يجب أن يكون مخطط URL هو http.
    • httpsProxy: URL وكيل لاستخدامه في إنشاء اتصالات HTTP خارج نظام المجموعة. إذا لم يتم تحديده، httpProxy استخدامه لكل من اتصالات HTTP وHTTPS.
    • noProxy: قائمة بأسماء المجالات الوجهة أو المجالات أو عناوين IP أو CIDRs للشبكة الأخرى لاستبعاد الوكيل.
    • trustedCa: سلسلة تحتوي على base64 encoded محتوى شهادة CA بديل. التنسيق معتمد حاليا فقط PEM .

    هام

    للتوافق مع المكونات المستندة إلى Go التي تعد جزءا من نظام Kubernetes، يجب أنبدلا من شهادات الاسم الشائع المهملة.

    هناك اختلافات في التطبيقات حول كيفية الامتثال لمتغير http_proxyالبيئة و https_proxyو.no_proxy Curl و Python لا يدعمان CIDR في no_proxy، لكن Ruby تدعم.

  2. قم بإنشاء قالب بمعلمات وكيل HTTP. في القالب الخاص بك، قم بتوفير قيم ل httpProxyو httpsProxyو.noProxy إذا لزم الأمر، قم بتوفير قيمة ل trustedCa. نفس المخطط المستخدم لنشر CLI موجود في تعريف Microsoft.ContainerService/managedClusters تحت "properties"، كما هو موضح في المثال التالي:

    "properties": {
        ...,
        "httpProxyConfig": {
          "enabled": "true",
            "httpProxy": "string",
            "httpsProxy": "string",
            "noProxy": [
                "string"
            ],
            "trustedCa": "string"
        }
    }
    
  3. انشر قالب ARM الخاص بك باستخدام تكوين وكيل HTTP. يجب تهيئة نظام المجموعة الخاص بك مع وكيل HTTP المكون على العقد.

تحديث تكوين وكيل HTTP

يمكنك تحديث تكوينات وكيل HTTP على المجموعات الموجودة، بما في ذلك:

  • تحديث نظام مجموعة موجود لتمكين وكيل HTTP وإضافة تكوين وكيل HTTP جديد.
  • تحديث نظام مجموعة موجود لتغيير تكوين وكيل HTTP.

اعتبارات تحديث وكيل HTTP

--http-proxy-config يجب تعيين المعلمة إلى ملف JSON جديد بقيم محدثة ل httpProxyو httpsProxynoProxyو و trustedCa إذا لزم الأمر. يقوم التحديث بإدخال متغيرات بيئة جديدة في pods بالقيم أو أو أو httpProxy الجديدةhttpsProxynoProxy. يجب تدوير الحجيرات للتطبيقات لالتقاطها، لأن قيم متغير البيئة يتم حقنها بواسطة إخطار على الويب للقبول المتحور.

إشعار

إذا كان التبديل إلى وكيل جديد، يجب أن يكون الوكيل الجديد موجودا بالفعل حتى يكون التحديث ناجحا. بعد اكتمال الترقية، يمكنك حذف الوكيل القديم.

تحديث قالب ARM لتكوين وكيل HTTP

  1. في القالب الخاص بك، قم بتوفير قيم جديدة ل httpProxy، httpsProxyو noProxy. إذا لزم الأمر، قم بتوفير قيمة ل trustedCa.

    نفس المخطط المستخدم لنشر CLI موجود في تعريف Microsoft.ContainerService/managedClusters تحت "properties"، كما هو موضح في المثال التالي:

    "properties": {
        ...,
        "httpProxyConfig": {
            "enabled": "true",
            "httpProxy": "string",
            "httpsProxy": "string",
            "noProxy": [
                "string"
            ],
            "trustedCa": "string"
        }
    }
    
  2. انشر قالب ARM الخاص بك باستخدام تكوين وكيل HTTP المحدث.

تنبيه

يقوم AKS تلقائيا بإعادة تصوير جميع تجمعات العقد في نظام المجموعة عند تحديث تكوين الوكيل على نظام المجموعة الخاص بك باستخدام az aks update الأمر. يمكنك استخدام ميزانيات تعطيل الجراب (PDBs) لحماية تعطيل القرون الهامة أثناء إعادة التصويب.

  1. تحقق من وجود تكوين وكيل HTTP على الجراب والعقد عن طريق التحقق من أن متغيرات البيئة تحتوي على القيم المناسبة ل http_proxy، https_proxy، واستخدام no_proxykubectl describe pod الأمر.

    kubectl describe {any pod} -n kube-system
    

    للتحقق من صحة تعيين متغيرات الوكيل في الجراب، يمكنك التحقق من متغيرات البيئة الموجودة على العقد.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

تعطيل بروكسي HTTP على مجموعة موجودة باستخدام قالب ARM

تحديث نظام المجموعة لتعطيل وكيل HTTP

  1. قم بتحديث قالب ARM لنظام المجموعة الخاص بك لتعطيل وكيل HTTP عن طريق الإعداد enabled إلى false. نفس المخطط المستخدم لنشر CLI موجود في تعريف Microsoft.ContainerService/managedClusters تحت "properties"، كما هو موضح في المثال التالي:

    "properties": {
        ...,
        "httpProxyConfig": {
           "enabled": "false",
        }
    }
    
  2. انشر قالب ARM الخاص بك مع تعطيل وكيل HTTP.

تنبيه

يقوم AKS تلقائيا بإعادة تصوير جميع تجمعات العقد في نظام المجموعة عند تحديث تكوين الوكيل على نظام المجموعة الخاص بك باستخدام az aks update الأمر. يمكنك استخدام ميزانيات تعطيل الجراب (PDBs) لحماية تعطيل القرون الهامة أثناء إعادة التصويب.

  1. تحقق من تعطيل وكيل HTTP عن طريق التحقق من عدم تعيين تكوين وكيل HTTP على الجراب والعقد باستخدام kubectl describe pod الأمر.

    kubectl describe {any pod} -n kube-system
    

    للتحقق من صحة عدم تعيين متغيرات الوكيل في الجراب، يمكنك التحقق من متغيرات البيئة الموجودة على العقد.

    kubectl get nodes
    kubectl node-shell {node name}
    cat /etc/environment
    

إعادة تمكين وكيل HTTP على مجموعة موجودة

عند إنشاء نظام مجموعة، يتم تمكين وكيل HTTP افتراضيا. بمجرد تعطيل وكيل HTTP على نظام مجموعة، لم يعد بإمكانك إضافة تكوينات وكيل HTTP إلى نظام المجموعة هذا.

إذا كنت ترغب في إعادة تمكين وكيل HTTP، فاتبع الخطوات لتحديث تكوين وكيل HTTP باستخدام قالب ARM.


وكيل HTTP الإضافي Istio للخدمات الخارجية

إذا كنت تستخدم الوظيفة الإضافية شبكة الخدمة المستندة إلى Istio ل AKS، فيجب عليك إنشاء إدخال خدمة لتمكين تطبيقاتك في الشبكة من الوصول إلى موارد غير نظام المجموعة أو الموارد الخارجية عبر وكيل HTTP.

على سبيل المثال:

apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
    name: proxy
spec:
    hosts:
    - my-company-proxy.com # ignored
    addresses:
    - $PROXY_IP/32
    ports:
    - number: $PROXY_PORT
        name: tcp
        protocol: TCP
    location: MESH_EXTERNAL
  1. إنشاء ملف وتوفير قيم ل PROXY_IP و PROXY_PORT.

  2. يمكنك نشر إدخال الخدمة باستخدام:

    kubectl apply -f service_proxy.yaml
    

تكوين المكون الإضافي للمراقبة

يدعم وكيل HTTP مع الوظيفة الإضافية للمراقبة التكوينات التالية:

  • وكيل صادر بدون مصادقة
  • وكيل صادر مع شهادة موثوقة لنقطة نهاية Log Analytics

التكوين التالي غير مدعوم:

  • المقاييس المخصصة وميزات التنبيهات الموصى بها عند استخدام وكيل مع شهادات موثوق بها

الخطوات التالية

لمزيد من المعلومات حول متطلبات الشبكة لمجموعات AKS، راجع التحكم في حركة الخروج لعقد نظام المجموعة في AKS.