CI/CDにおけるHelm ChartとKubernetesマニフェスト
Helm ChartでKubernetesデプロイをパッケージ化・バージョン管理し、環境ごとに設定をテンプレート化して、GitHub ActionsからChartのリリースを自動化します。
「CI/CDにおけるHelm ChartとKubernetesマニフェスト」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
マニフェストが増えすぎる問題
Kubernetesにデプロイするには、Deployment、Service、ConfigMap、Ingressなど、多くのYAMLマニフェストを記述する必要があります。環境ごとにコピーすると、すぐに管理できなくなります。
Helmは、マニフェストを再利用可能でバージョン管理されたチャートにパッケージ化することで、この問題を解決します。
Helmとは
HelmはKubernetesのパッケージマネージャーです。チャートは、テンプレート化されたマニフェストとデフォルト値をまとめたものです。
Chart.yaml— チャートのメタデータとバージョンvalues.yaml— デフォルト設定templates/— マニフェストのテンプレート
チャートの構成
一般的なチャートのディレクトリは次のようになります。Helmは値を使ってテンプレートをレンダリングし、最終的なKubernetes YAMLを生成します。
mychart/
Chart.yaml
values.yaml
templates/
deployment.yaml
service.yaml値を使ったテンプレート化
テンプレートでは、values.yamlから値を取得するプレースホルダーを使用します。これにより、1つのテンプレートを複数の環境で利用できます。
# templates/deployment.yaml
spec:
replicas: {{ .Values.replicaCount }}
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}環境ごとの値
環境ごとに値ファイルを分けて管理し、インストール時に渡します。ステージングではレプリカを1つ、本番環境では5つ実行するといった設定が可能です。
helm upgrade --install myapp ./mychart \
-f values-prod.yaml \
--namespace productionインストールとアップグレード
helm upgrade --installコマンドはべき等です。リリースが存在しない場合はインストールし、存在する場合はアップグレードします。
この単一のコマンドは、初回のデプロイにも後続のデプロイにも使えるため、CI/CDに適しています。
CIでイメージタグを設定する
CIでは通常、--setを使って、ビルドしたばかりのイメージタグ(多くの場合はコミットSHA)を注入します。
これにより、Kubernetesのリリースをパイプラインが直前に生成した正確なアーティファクトに結び付けられます。
- run: |
helm upgrade --install myapp ./mychart \
--set image.tag=${{ github.sha }}チャートをLintする
デプロイする前に、helm lintでチャートを検証し、helm templateでレンダリングして、YAMLやテンプレートのエラーを早期に検出します。
- run: helm lint ./mychart
- run: helm template myapp ./mychart -f values-prod.yamlHelmでのロールバック
Helmは各リリースを番号付きのリビジョンとして追跡します。デプロイに問題が発生した場合は、すぐにロールバックできます。
高速かつ決定論的に動作するため、ディザスタリカバリのプラクティスとも相性が良い方法です。
helm history myapp
helm rollback myapp 3パッケージ化と公開
Chartはバージョン付きのアーカイブにパッケージ化して、コンテナイメージと同じようにChartリポジトリやOCIレジストリへプッシュできます。
これにより、他のチームはバージョンを指定してChartを利用できます。
helm package ./mychart
helm push myapp-1.2.0.tgz oci://registry.example.com/chartsHelmのデプロイジョブ
ここまでの内容を組み合わせると、クラスターへの認証、Helmのセットアップ、そしてアップグレードを行います。Azure setup-helmアクションは、RunnerにCLIをインストールします。
- uses: azure/setup-helm@v4
- run: |
helm upgrade --install myapp ./mychart \
-f values-prod.yaml \
--set image.tag=${{ github.sha }} \
--wait理解度チェック
CI/CDにおけるHelmの理解度を確認しましょう。
まとめ
Helmを使ってKubernetesアプリをデプロイする方法を学びました。
- Chartは、テンプレート化されたマニフェストと
values.yamlをパッケージ化します - 環境ごとのvaluesファイルで、ステージングと本番を設定します
helm upgrade --installは、べき等なCIデプロイコマンドです- リビジョンによってロールバックをすぐに実行でき、Chartはイメージと同じように公開できます
Helmは、生のマニフェストをバージョン管理された再利用可能なリリースに変換します。
よくある質問
「CI/CDにおけるHelm ChartとKubernetesマニフェスト」レッスンは無料ですか?
はい。「CI/CDにおけるHelm ChartとKubernetesマニフェスト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「CI/CDにおけるHelm ChartとKubernetesマニフェスト」で何を学びますか?
Helm ChartでKubernetesデプロイをパッケージ化・バージョン管理し、環境ごとに設定をテンプレート化して、GitHub ActionsからChartのリリースを自動化します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「CI/CDにおけるHelm ChartとKubernetesマニフェスト」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Actions による Docker イメージのビルド
- レジストリへのイメージのプッシュ
- Actions による Kubernetes へのデプロイ
- CI/CDにおけるHelm ChartとKubernetesマニフェスト