मेरे पास एक ऐसे एप्लिकेशन के लिए एक हेल्म चार्ट है जिसके लिए किसी प्रकार का डेटाबेस चाहिए। MySQL या postgresql दोनों ठीक होंगे।

मैं चार्ट उपयोगकर्ता को इनमें से किसी एक को इस तरह निर्भरता के रूप में स्थापित करने का विकल्प देना चाहता हूं:

dependencies:
- name: mysql
  version: 0.10.2
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: mysql.enabled
- name: postgresql
  version: 3.11.5
  repository: https://kubernetes-charts.storage.googleapis.com/
  condition: postgresql.enabled

हालाँकि यह उन दोनों को सक्षम करना संभव बनाता है।

क्या यह सुनिश्चित करने का कोई आसान तरीका है कि केवल एक ही चुना गया है?

मैं एक एकल चर के बारे में सोच रहा था जो [mysql, postgres, manual] में से एक का चयन कर रहा था और यदि यह चुना गया है तो एक विशिष्ट डेटाबेस पर निर्भर करता है। - क्या ऐसा करने का कोई तरीका है?

1
michas 24 फरवरी 2019, 21:47

1 उत्तर

सबसे बढ़िया उत्तर

मुझे नहीं लगता कि ऐसा करने का कोई सीधा तरीका है। विशेष रूप से, ऐसा लगता है कि requirements.yaml condition: फ़ील्ड केवल एक बूलियन मान (या उनमें से एक सूची) लेता है, न कि एक मनमाना अभिव्यक्ति। हेल्म के दस्तावेज़ से:

शर्त फ़ील्ड में एक या अधिक YAML पथ होते हैं (अल्पविराम द्वारा सीमित)। यदि यह पथ शीर्ष माता-पिता के मूल्यों में मौजूद है और एक बूलियन मान का समाधान करता है, तो उस बूलियन मान के आधार पर चार्ट को सक्षम या अक्षम किया जाएगा। सूची में पाए गए केवल पहले मान्य पथ का मूल्यांकन किया जाता है और यदि कोई पथ मौजूद नहीं है तो स्थिति का कोई प्रभाव नहीं पड़ता है।

(नीचे वर्णित टैग तंत्र बेहद समान है और वास्तव में मदद नहीं करता है।)

जब वास्तव में आपकी परिनियोजन युक्ति लिखने की बात आती है तो आपके पास एक अधिक सामान्य सशर्त प्रणाली होती है और यह परीक्षण कर सकती है कि मानों में से केवल एक ही सेट है; इसलिए मुझे नहीं लगता कि आप अनावश्यक डेटाबेस स्थापित होने से रोक सकते हैं, लेकिन आप कम से कम उनमें से केवल एक का उपयोग करेंगे। आप अपनी NOTES.txt फ़ाइल में इस आशय की एक आफ्टर-द-फैक्ट चेतावनी भी डाल सकते हैं।

{{ if and .Values.mysql.enabled .Values.postgresql.enabled -}}
WARNING: you have multiple databases enabled in your Helm values file.
Both MySQL and PostgreSQL are installed as part of this chart, but only
PostgreSQL is being used.  You can update this chart installation setting
`--set mysql.enabled=false` to remove the redundant database.

{{ end -}}
3
David Maze 25 फरवरी 2019, 11:52