Helmチャートを使ってKubernetesのはじめの一歩を踏み出そう!
この記事は「BEMALab アドベントカレンダー 2024」19日目の記事です。
はじめに
こんにちは、メンバーズの佐々木です。
この記事では、Kubernetesを使ったアプリケーション管理を簡素化するためのツール、Helmについて紹介します。この記事を執筆することになった背景には、Kubernetesを学ぶ初心者や、クラウドネイティブなアプローチを取り入れたいと考えている方々を支援したいという思いがあります。僕も現在学んでいる最中ですが、取り入れてみて試行錯誤をしながらKubernetesの理解を効率的に深められたと感じています。そして、初心者にもぜひ試してほしいと思い、記事にしました。
Kubernetesは多くの機能を有していますが、最初はその設定や操作が難解に感じられることが多いです。そこで、Helmを利用することで、複雑さを軽減し、実際の運用に向けてのステップを踏みやすくすることを目指しています。特に、GitOpsのアプローチで人気のあるArgoCDを使った実験を通じて、Kubernetesの魅力を体感していただければと考えています。
Kubernetesとは?
Kubernetes(K8s)は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するオープンソースのプラットフォームです。主に以下のような機能があります。
- 自動スケーリング: アプリケーションの需要に応じて、コンテナの数を自動で増減させることができます。
- 自己修復: 障害が発生した場合、自動で再起動や再配置を行うことで、サービスの可用性を保ちます。
- サービスディスカバリ: 異なるコンテナ間で簡単に通信できるように、サービスのアドレスを管理します。
- ロールアウトとロールバック: 新しいアプリケーションバージョンのデプロイや、問題が発生した際の以前のバージョンへの復旧が容易です。
Helmとは?
Helmは、Kubernetes向けのパッケージマネージャーであり、アプリケーションを「チャート」という単位で管理します。チャートは、アプリケーションのテンプレート、設定ファイル、依存関係を含むパッケージです。Helmを利用することで、以下の利点があります。
- 簡単なインストール: アプリケーションのデプロイが簡単で、数行のコマンドで完了します。
- アップグレードやロールバック: アプリケーションのバージョンアップや、うまくいかなかった場合の元に戻す操作が簡潔に行えます。
- カスタマイズ可能: 環境に合わせて設定ファイルを簡単に変更でき、柔軟な運用が可能です。
Helmのインストール
Helmをインストールする手順を見ていきましょう。
$ brew install helm
Helmが正しくインストールされたか確認するには、以下のコマンドを実行します。
$ helm version
version.BuildInfo{Version:"v3.16.1", GitCommit:"5a5449dc42be07001fd5771d56429132984ab3ab", GitTreeState:"clean", GoVersion:"go1.22.7"}
Helmチャートの使用方法
Helmは、さまざまなチャートを提供しているリポジトリを活用します。まず、ArgoCDの公式リポジトリを追加しましょう。
$ helm repo add argo https://argoproj.github.io/argo-helm
$ helm repo update
次にArgoCDをKubernetesクラスタにデプロイしてみましょう。以下のコマンドで簡単にインストールできます。
$ helm install argocd argo/argo-cd
Kubernetesの機能を実験する
Helmの大きな利点の一つは、Kubernetesの様々な機能を気軽に試すことができる点です。たとえば、以下のようなことを手軽に実験できます。
スケーリング
ArgoCDのレプリカ数を変更して、スケーラビリティを確認することができます。
# スケーリング前の確認
$ kubectl get deployment argocd-server -n default
NAME READY UP-TO-DATE AVAILABLE AGE
argocd-server 1/1 1 1 5m
$ helm upgrade argocd argo/argo-cd --set server.replicas=3
# スケーリング後の確認
$ kubectl get deployment argocd-server -n default
NAME READY UP-TO-DATE AVAILABLE AGE
argocd-server 3/3 3 3 10m
# 実際に起動しているポッド(argocd-serverが3つに増えている)
$ kubectl get pods -n default
NAME READY STATUS RESTARTS AGE
argocd-application-controller-5c8b9d6f9b-abcde 1/1 Running 0 5m
argocd-application-controller-5c8b9d6f9b-fghij 1/1 Running 0 5m
argocd-server-84b89d5b5f-klmno 1/1 Running 0 10m
argocd-server-84b89d5b5f-mnopq 1/1 Running 0 10m
argocd-server-84b89d5b5f-qrs78 1/1 Running 0 10m
argocd-repo-server-76db5cdd48-pqrst 1/1 Running 0 10m
これにより、ArgoCDのパフォーマンスと可用性が向上し、トラフィックに対する耐障害性が確保されています。
また、Kubernetesオブジェクトを自前で作成して検証することに比べると、動くものを素早く作れるのがメリットです。Helmチャートに手を加えながらKubernetesの状態を変えることができます。
まとめ
Helmを使うことで、Kubernetes上でのアプリケーション管理が非常にシンプルになります。リポジトリから手軽にアプリケーションをインストールし、ArgoCDを利用したGitOpsの運用を試すことも可能です。また、様々なKubernetesの機能を気軽に試すことができ、アップグレードや削除も簡潔に行えるため、Kubernetesの学習を始めるには最適なツールだと感じています!
この記事を書いた人
関連記事
- DevOpsの原則に従い管理コストを大幅に下げることができた...
Shota Kubota
Advent Calendar!
Advent Calendar 2024開催中!