- アーキテクチャ
- 環境設定
- スタイルガイド
- テストの作成と実行
- バージョン管理とリリース
- 変更履歴
- アップストリームチャートをフォークするタイミング
- 非推奨設定の取り扱い
- 問題のある設定を捕捉する試み
- レジストリの検証
- 開発環境のトラブルシューティング
- その他のHelm情報
Helmチャート開発に貢献者
私たちの貢献方針はCONTRIBUTING.mdにあります。
Chartに貢献するために必要なのは、テキストエディタだけです。ドキュメントはdoc/
ディレクトリに保存されています。
アーキテクチャ
開発を開始する前に、Chartのゴール、アーキテクチャ、デザインの決定をレビューしておくと便利です。
GitLab Helm チャートのアーキテクチャを参照ください。
環境設定
Chart開発用にワークステーションを準備するには、開発環境のセットアップを参照してください。
スタイルガイド
チャート開発のガイドラインとベストプラクティスについては、チャート開発スタイルガイドをご覧ください。
テストの作成と実行
私たちは、Chartが意図したとおりに動作することを検証するために、いくつかの異なるタイプのテストを実行します。
RSpec テストの開発者
ユニットテストは RSpec で書かれ、Chart リポジトリのspec/
ディレクトリに保存されます。
チャートの機能を検証するためにRSpec テストを作成する際の注意をお読みください。
GitLab QAの実行
GitLab QAは、デプロイされたクラウドネイティブなGitLabインストールに対してインテグレーションや機能テストを実行するために使用できます。
詳しくはGitLab QA chart docsをご覧ください。
カオスキューブ
ChaosKubeは、可用性の高いクラウドネイティブなGitLabインストールの耐障害性をテストするために使用できます。
詳しくはChaosKubeチャートのドキュメントをご覧ください。
バージョン管理とリリース
バージョンスキーム、ブランチ、タグの詳細はリリースドキュメントをご覧ください。
変更履歴
すべてのCHANGELOG.md
エントリはchangelog entriesワークフローを通して作成されるべきです。
アップストリームチャートをフォークするタイミング
変更なし、フォークなし
私たちが使用するために機能するために変更を必要としないChartは、このリポジトリにフォークされるべきではないと明言しておきましょう。
フォークのガイドライン
機密情報
パスワードや暗号キーのような、機密性の高い通信シークレットが環境内部から提示されることが予想される場合、 initContainers
を使用することをお勧めします。
機能の拡張
アップストリームが受け付けないような方法で、Chartの機能を拡張する必要がある場合があります。
非推奨設定の取り扱い
開発者の中には、動作の変更によって機能を壊すような変更が必要になることがあります。私たちはそのような変更を避けようとしますが、いくつかの項目はそのような変更なしでは扱えません。
これを扱うために、私たちは非推奨テンプレートを実装しました。このテンプレートは、置き換えや再配置が必要なプロパティを認識し、ユーザーが取るべきアクションを通知するように設計されています。このテンプレートはすべてのメッセージをリストにまとめ、fail
呼び出しによってデプロイを停止させます。これは、デプロイが壊れたり予期しない状態になるのを防ぐと同時に、ユーザーに通知する方法を提供します。
デザイン、機能、新しい非推奨事項の追加方法についての詳細は、非推奨事項テンプレートのドキュメントを参照してください。
問題のある設定を捕捉する試み
これらのChartは複雑で柔軟性が高いため、予測不可能な、あるいはまったく機能しないデプロイにつながる設定を作成することが可能な重複がいくつかあります。既知の問題のある設定の組み合わせを防ぐために、以下の2つのパターンを用意しています:
- すべてのサブチャートでスキーマ検証を使用し、ユーザーが指定した値が期待値に合っていることを確認しています。詳しくはドキュメントをご覧ください。
- 設定が機能しないことを検知し、ユーザーに警告するように設計されたテンプレート・ロジックを実装しています。設定や機能、新しい設定チェックの追加方法については、
checkConfig
テンプレート のドキュメントをご覧ください。
レジストリの検証
開発者モードでは、Dockerクライアントでレジストリを検証するのは難しいかもしれません。これはレジストリの証明書のイシューが原因の一つです。証明書を追加するか、HTTP経由でレジストリを公開することができます(global.hosts.registry.https
を参照)。証明書を追加する方が、安全でないレジストリソリューションよりもセキュリティが高いことに注意してください。
レジストリは、MinIOサービスの内部ドメイン名を使用することに留意してください (global.hosts.minio.name
を参照)。開発環境用のカスタムTLDなど、内部ドメイン名を使用するとエラーが発生する場合があります。一般的な症状は、レジストリにはログインできるが、イメージをプッシュまたはプルできないというものです。これは通常、レジストリコンテナがMinIOドメイン名を解決できず、正しいエンドポイントを見つけられないためです(コンテナログでエラーを確認できます)。
開発環境のトラブルシューティング
開発者は、Chartの新機能の開発中に独自のイシューに遭遇することがあります。以下の場合は、トラブルシューティング・ガイドを参照してください。 開発者トラブルシューティングガイドを参照してください。
その他のHelm情報
Helmの内部動作に関する情報です:
- ディストリビューションチームは、Helmチャートのトレーニングプレゼンテーションを用意しています。
- Helmでのテンプレート作成はGotext/templateと sprigで行います。
- Helm リポジトリのtips and tricks セクションに、Helm での開発に関する追加情報があります。
- 関数とパイプライン。
- サブチャートとグローバル