はじめに
こんにちは、サイオステクノロジーの小野です。以前、HelmOpsについて解説しました。
HelmOps環境を構築するCDツールは様々な種類があります。(ex. Rancher Fleet, ArgoCD, Flux CD)
その中でもRancher FleetはHelmOpsを簡易に構築することが可能です。
今回はRancher FleetのHelmOps機能を使って、実際に自動デプロイできることを紹介したいと思います。
HelmOps設定
前提条件
- Rancher環境でHelmOps実施
- Rancher v2.13.3
- Fleet v0.14.3
設定方法
Rancherの管理コンソールのRancher Fleet管理画面を開きます。左メニューのヨットマークが目印です。

「Create Apps Bundle」を押下して、HelmOpsを作成することで、HelmOpsの設定が可能です。

HelmOps実践
以下のHelmアプリをHelmOpsでデプロイします。replicaCount数のPodが立ち上がり、ClusterIPのService設定で公開されているhttpbinのサンプルアプリをデプロイする例を考えます。
# Chart.yaml
apiVersion: v2
name: sample-app
type application
version: 0.1.0
appVersion: "1.0"# valuse.yaml
replicaCount: 1
image:
repository: kennethreitz/httpbin
pullPolicy: IfNotPresent
tag: "latest"
service:
type: ClusterIP
port: 80このアプリをデプロイするために以下のようにHelmOpsに設定します。
- Bundle名:test-helmops(HelmOpsのバンドル名を指定)
- Release名:demo-sample(Helmのリリース名を指定)
- Source
- Type:Repository
- Repository URL:<HelmリポジトリのURL>
- Chart:sample-app(HelmOpsでデプロイするHelmチャート名を指定)
- Version:>=0.1.0(一定バージョン以上を継続的にデプロイしたい場合は「>=0.1.0」のように設定する)
- Values:設定しない
- Deploy To:test-cluster(HelmOpsでデプロイする対象のクラスターを設定)
- Additional Options.Target Namespace:demo-ns(デプロイするNamespaceを指定)
- Authentication:None(Helmリポジトリの認証がある場合設定)
- Polling:Enable Polling(継続的にデプロイする場合、Pollingを有効にする)
設定後、HelmOpsのBundleが作成されて、Rancher Fleetの管理画面からデプロイ状況を確認できます。

デプロイした先のクラスター管理画面を開くと、自動的にサンプルアプリがデプロイされていることが確認できます。



Helmリポジトリ内のサンプルアプリを更新して、自動的にデプロイされているアプリも更新することを確認します。
サンプルアプリのChart.yamlとvalues.yamlを以下のように更新します。
# Chart.yaml
apiVersion: v2
name: sample-app
type application
version: 0.2.0
appVersion: "1.0"# valuse.yaml
replicaCount: 2
image:
repository: kennethreitz/httpbin
pullPolicy: IfNotPresent
tag: "latest"
service:
type: ClusterIP
port: 8080更新した上記のファイルをHelmリポジトリにアップロードすると、以下のようにデプロイされているアプリも自動的に更新されることが確認できます。


おわりに
Rancher FleetのHelmOpsについて解説しました。CD環境を構築するには大きなコストがかかりますが、HelmOpsはHelmリポジトリ内のチャートファイルを指定するだけで簡単にCD(継続的デプロイ)環境を構築することが可能です。ぜひ手軽に試してみてください。


