Helm
HelmはKubernetesのためのパッケージ管理ツールです。Helmチャートは、Kubernetes YAMLマニフェストドキュメントのテンプレート構文を提供します。Helmを使用すると、静的ファイルを使用する代わりに、設定可能なデプロイメントを作成できます。独自のデプロイメントカタログを作成する方法についての詳細は、 https://helm.sh/docs/intro/quickstart/.のドキュメントを参照してください。
RKE2は、Helmコマンドラインツールと一緒に使用するために特別な設定を必要としません。クラスターアクセスに関するセクションに従って、kubeconfigを正しく設定していることを確認してください。RKE2には、従来のKubernetesリソースマニフェストとHelmチャートの両方をさらに簡単にデプロイするための追加機能が含まれています。rancher/helm-release CRD。
マニフェストとHelmチャートの自動デプロイ
`/var/lib/rancher/rke2/server/manifests`に見つかったKubernetesマニフェストは、`kubectl apply`と同様の方法でRKE2に自動的にデプロイされ、起動時およびディスク上のファイルが変更されたときに適用されます。このディレクトリからファイルを削除しても、クラスターから対応するリソースは削除されません。
この方法でデプロイされたマニフェストはAddOnカスタムリソースとして管理され、`kubectl get addon -A`を実行することで表示できます。デフォルトでは、CoreDNS、Nginx-Ingress、Metrics Serverなどのパッケージ化されたコンポーネントのAddOnsが見つかります。AddOnsはデプロイコントローラーによって自動的に作成され、マニフェストディレクトリ内のファイル名に基づいて名前が付けられます。
HelmチャートをAddOnsとしてデプロイすることも可能です。RKE2には、HelmチャートをHelmChartカスタムリソース定義(CRD)を使用して管理する Helm Controllerが含まれています。
ファイル名の要件
マニフェストディレクトリ内の各ファイルの AddOn 名は、ファイルのベース名から派生しています。
マニフェストディレクトリ内のすべてのファイル(または任意のサブディレクトリ内)の名前が一意であり、Kubernetes の オブジェクト名の制限 に従っていることを確認してください。デフォルトのRKE2パッケージ化されたコンポーネントによって使用されている名前と衝突しないように注意する必要があります。たとえそれらのコンポーネントが無効になっていても。
ファイル名にアンダースコアが含まれている場合に報告されるエラーの例は次のとおりです:
`Failed to process config: failed to process /var/lib/rancher/rke2/server/manifests/example_manifest.yaml:
Addon.k3s.cattle.io "example_manifest" is invalid: metadata.name: Invalid value: "example_manifest":
a lowercase RFC 1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*')`
AddOnsの無効化
上記にリストされたパッケージ化されたコンポーネントのAddOnsに加えて、マニフェストディレクトリに配置された追加のマニフェストのAddOnsは、--無効化フラグで無効にできます。無効化されたAddOnsはクラスターから積極的にアンインストールされ、ソースファイルはマニフェストディレクトリから削除されます。
たとえば、新しいクラスターにCoreDNSをインストールしないようにするか、既存のクラスターからアンインストールしてマニフェストを削除するには、`disable: rke2-coredns`を設定ファイルに記載してRKE2を起動できます。ネストされたリスト内の複数の項目を無効にすることができます。
# /etc/rancher/rke2/config.yaml
disable:
- rke2-coredns
- rke2-metrics-server
Helm CRDの使用
HelmChartリソース定義は、通常`helm`コマンドラインツールに渡すオプションのほとんどをキャプチャします。デフォルトのチャートリポジトリからGrafanaをデプロイする方法の例を示します。デフォルトのチャート値の一部を上書きします。HelmChartリソース自体は`kube-system`ネームスペースにありますが、チャートのリソースは`monitoring`ネームスペースにデプロイされます。
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: grafana
namespace: kube-system
spec:
chart: stable/grafana
targetNamespace: monitoring
set:
adminPassword: "NotVerySafePassword"
valuesContent: |-
image:
tag: master
env:
GF_EXPLORE_ENABLED: true
adminUser: admin
sidecar:
datasources:
enabled: true
認証付きのプライベートリポジトリから Helm チャートをデプロイする例:
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
namespace: kube-system
name: example-app
spec:
targetNamespace: example-space
createNamespace: true
version: v1.2.3
chart: example-app
repo: https://secure-repo.example.com
authSecret:
name: example-repo-auth
repoCAConfigMap:
name: example-repo-ca
valuesContent: |-
image:
tag: v1.2.2
---
apiVersion: v1
kind: Secret
metadata:
namespace: kube-system
name: example-repo-auth
type: kubernetes.io/basic-auth
stringData:
username: user
password: pass
---
apiVersion: v1
kind: ConfigMap
metadata:
namespace: kube-system
name: example-repo-ca
data:
ca.crt: |-
-----BEGIN CERTIFICATE-----
<YOUR CERTIFICATE>
-----END CERTIFICATE-----
HelmChartフィールド定義
| フィールド | デフォルト | 説明 | Helm引数/フラグの対応 |
|---|---|---|---|
metadata.name |
Helmチャート名 |
名前 |
|
spec.chart |
リポジトリ内のHelmチャート名、またはチャートアーカイブ(.tgz)への完全なHTTPS URL |
CHART |
|
spec.targetNamespace |
default |
Helmチャートのターゲットネームスペース |
|
spec.createNamespace |
false |
存在しない場合はターゲットネームスペースを作成します |
|
spec.version |
Helmチャートのバージョン(リポジトリからインストールする場合) |
|
|
spec.repo |
HelmチャートリポジトリのURL |
|
|
spec.repoCA |
このCAバンドルを使用してHTTPS対応サーバーの証明書を検証します。1つ以上のPEMエンコードされたCA証明書を含む文字列である必要があります。 |
|
|
spec.repoCAConfigMap |
Helmによって信頼されるCA証明書を含むConfigMapへの参照。`repoCA`と一緒に使用するか、または代わりに使用できます。 |
|
|
spec.helmVersion |
v3 |
使用するHelmのバージョン( |
|
spec.bootstrap |
False |
このチャートがクラスターの起動に必要な場合はTrueに設定します(Cloud Controller Managerなど) |
|
spec.set |
シンプルなデフォルトチャート値を上書きします。これらは、valuesContentを介して設定されたオプションよりも優先されます。 |
|
|
spec.jobImage |
Helmチャートをインストールする際に使用するイメージを指定します。例:rancher/klipper-helm:v0.3.0。 |
||
spec.backOffLimit |
1000 |
ジョブが失敗と見なされる前の再試行回数を指定してください。 |
|
spec.timeout |
300秒 |
Helm操作のタイムアウト、 期間文字列 ( |
|
spec.failurePolicy |
再インストール |
`abort`に設定すると、Helm操作は中止され、オペレーターによる手動介入が必要になります。 |
|
spec.authSecret |
Chartリポジトリの基本認証資格情報を保持するタイプ`kubernetes.io/basic-auth`のSecretへの参照。 |
||
spec.authPassCredentials |
false |
すべてのドメインに基本認証資格情報を渡します。 |
|
spec.dockerRegistrySecret |
Chartリポジトリとして機能するOCIベースのレジストリのDocker認証資格情報を保持するタイプ`kubernetes.io/dockerconfigjson`のSecretへの参照。 |
||
spec.valuesContent |
YAMLファイルの内容を介して複雑なデフォルトチャート値を上書きします。 |
|
|
spec.chartContent |
Base64エンコードされたチャートアーカイブ.tgz - spec.chartを上書きします |
CHART |
HelmChartConfigを使用したパッケージコンポーネントのカスタマイズ
HelmCharts(Canal、CoreDNS、Nginx-Ingressなど)としてデプロイされるパッケージコンポーネントの値を上書きできるようにするために、RKE2は`HelmChartConfig`リソースを介してデプロイメントのカスタマイズをサポートしています。`HelmChartConfig`リソースは、対応するHelmChartの名前とネームスペースと一致し、追加の`valuesContent`を提供することをサポートしており、これは`helm`コマンドに追加の値ファイルとして渡されます。
|
HelmChart `spec.set`の値は、HelmChartおよびHelmChartConfig `spec.valuesContent`の設定を上書きします。 |
たとえば、パッケージ化されたCoreDNSの設定をカスタマイズするには、`/var/lib/rancher/rke2/server/manifests/rke2-coredns-config.yaml`という名前のファイルを作成し、次の内容で埋めることができます:
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: rke2-coredns
namespace: kube-system
spec:
valuesContent: |-
image: coredns/coredns
imageTag: v1.7.1
すべてのパッケージ化されたHelmチャートとそのドキュメントおよびデフォルト値は、 RKE2チャートリポジトリにあります。