0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · レッスン

CI/CDにおけるHelm ChartとKubernetesマニフェスト

Helm ChartでKubernetesデプロイをパッケージ化・バージョン管理し、環境ごとに設定をテンプレート化して、GitHub ActionsからChartのリリースを自動化します。

「CI/CDにおけるHelm ChartとKubernetesマニフェスト」はCoddyKit上の無料CI/CD with GitHub Actions & DevOps Pipelinesレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCI/CD with GitHub Actions & DevOps Pipelines学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 CI/CD with GitHub Actions & DevOps Pipelinesコースには全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.yaml

Helmでのロールバック

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/charts

Helmのデプロイジョブ

ここまでの内容を組み合わせると、クラスターへの認証、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チューター)、CI/CD with GitHub Actions & DevOps Pipelinesコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 CI/CD with GitHub Actions & DevOps Pipelinesコースには全4レッスンが含まれています。

「CI/CDにおけるHelm ChartとKubernetesマニフェスト」で何を学びますか?

Helm ChartでKubernetesデプロイをパッケージ化・バージョン管理し、環境ごとに設定をテンプレート化して、GitHub ActionsからChartのリリースを自動化します。 ブラウザで直接実行するハンズオンコードでCI/CD with GitHub Actions & DevOps Pipelinesを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

CI/CD with GitHub Actions & DevOps Pipelinesを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCI/CD with GitHub Actions & DevOps Pipelinesは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「CI/CDにおけるHelm ChartとKubernetesマニフェスト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCI/CD with GitHub Actions & DevOps Pipelinesレッスンでコードを書いて実行できますか?

はい。すべてのCI/CD with GitHub Actions & DevOps Pipelinesレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Actions による Docker イメージのビルド
  2. レジストリへのイメージのプッシュ
  3. Actions による Kubernetes へのデプロイ
  4. CI/CDにおけるHelm ChartとKubernetesマニフェスト
← CI/CD with GitHub Actions & DevOps Pipelinesに戻る