Helm: دعم الأشياء المعقدة في مجموعات

تم إنشاؤها على ٣ مارس ٢٠١٧  ·  3تعليقات  ·  مصدر: helm/helm

في الدردشة ، سألت عن القدرة على تحديد كائن مثل هذا عبر --set وواجهت للأسف الحقيقة:

env:
  - name: ROUTER
    value: cake
  - name: PASSWORD
    value: derp

أحب استخدام مقاطع مثل هذه في values.yaml لتحديد احتياجات متغير env بالكامل لمواصفات حاوية معينة ، لذلك في المواصفات أحتاج فقط:

        env:
{{ toYaml .Values.env | indent 10 }}

هناك العديد من الأسباب التي تجعل هذا مفيدًا:

  1. لا داعي للقلق بشأن تمرير المتغيرات الفارغة إلى تطبيقي.
  2. يتم تحديد جميع المتغيرات في مكان واحد ، لذلك إذا تم تغيير اسم المتغير ، فيمكنني تعيينه بسرعة وأن أكون في طريقي.
  3. لا داعي للقلق مطلقًا بشأن إعادة نشر شيء مثل كائن deployment لمجرد أنني أريد تمرير بعض المتغيرات الأخرى إلى العملية الرئيسية.

للأسف ، تمرير هذه الأنواع من الكائنات غير مدعوم حاليًا. استخدام عبارات if في القوالب الخاصة بي بأفضل طريقة للتغلب على هذا في الوقت الحالي ، ولكن سيكون من الرائع تحديد مسحات كبيرة من المعلومات الديناميكية المحتملة حول تطبيقي مباشرةً في values.yaml

feature

التعليق الأكثر فائدة

هذا ممكن الآن باستخدام بناء الجملة التالي:

helm install foo --set env[0].name="ROUTER",env[0].value="cake"

هذا موثق هنا .

ال 3 كومينتر

لقد وجدت للتو طريقة أخرى للقيام بذلك من خلال ملاحظة kube-lego :

          {{- range $key, $value := .Values.config }}
            - name: "{{ $key }}"
              value: "{{ $value }}"
          {{- end }}

مشكلتي مماثلة.
نريد استخدام المخطط التلقائي aws-cluster-autoscaler في:
https://github.com/kubernetes/charts/tree/master/stable/aws-cluster-autoscaler

نود تمرير اسم autoscalingGroups []. عبر سطر الأوامر ، باستخدام --set ، والمعلومات الأخرى عبر ملف params.yaml:

autoscalingGroups:
- minSize: 2
  maxSize: 8
awsRegion: eu-west-1

عندما نحاول تعيين اسم مجموعة القياس التلقائي باستخدام:

$ helm upgrade cluster-autoscaler stable/aws-cluster-autoscaler -f params.yaml --set "autoscalingGroups[].name"="nodes.k8s.test.eu-west-1.aws.redacted.net"

لكن هذا لا يعمل.

قراءة الوثائق ، هذا معروف ، لكن سيكون من الجيد أن تكون قادرًا على القيام بذلك.

هذا ممكن الآن باستخدام بناء الجملة التالي:

helm install foo --set env[0].name="ROUTER",env[0].value="cake"

هذا موثق هنا .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات