Confluent for Kubernetes のデプロイ¶
Confluent for Kubernetes (CFK)バンドルには、Confluent Platform を Kubernetes クラスターにデプロイするための Helm チャート、テンプレート、スクリプトが用意されています。
以下のいずれかの方法を使用して CFK をデプロイできます。
CFK と連携動作するためのオプションの Confluent プラグインは、以下のいずれかの方法でインストールできます。
Confluent の Helm リポジトリからの Confluent for Kubernetes のデプロイ¶
Helm リポジトリを追加します。
helm repo add confluentinc https://packages.confluent.io/helm
helm repo update
デフォルトの構成を使用して CFK をインストールします。
helm upgrade --install confluent-operator \ confluentinc/confluent-for-kubernetes \ --namespace <namespace>
ダウンロードバンドルを使用した Confluent for Kubernetes のデプロイ¶
次のコマンドを使用して CFK バンドルをダウンロードし、ダウンロードしたバンドルを展開します。
curl -O https://confluent-for-kubernetes.s3-us-west-1.amazonaws.com/confluent-for-kubernetes-2.3.1.tar.gz
CFK バンドルをダウンロードした
helm
サブディレクトリから CFK をインストールします。helm upgrade --install confluent-operator \ ./confluent-for-kubernetes \ --namespace <namespace>
カスタマイズした Confluent for Kubernetes のデプロイ¶
CFK の構成は、インストールまたはアップデート時にカスタマイズできます。CFK は helm
を使用してインストールおよびアップデートされるため、CFK 構成のカスタマイズ方法は helm
に従います。つまり、以下が可能です。
--values
または-f
フラグ経由でhelm
コマンドに渡すことができる構成値を YAML ファイルで設定する--set
、--set-string
、および--set-file
フラグ経由で構成値をkey=value
ペアとしてhelm
コマンドで直接設定する- 上記の 2 つの方法を組み合わせて、構成の一部を値ファイルで設定し、残りを、
--set
フラグを使用してコマンドラインで設定する
これらのフラグの詳細については、Helm のドキュメントを参照してください。
- CFK の
values.yaml
ファイルを使用して、カスタマイズされた Confluent for Kubernetes をデプロイするには、以下の手順を実行します。 デフォルトの
values.yaml
ファイルを見つけます。Helm リポジトリを使用して CFK をデプロイする場合は、CFK チャートをプルします。
mkdir -p <CFK-home> helm pull confluentinc/confluent-for-kubernetes \ --untar \ --untardir=<CFK-home> \ --namespace <namespace>
values.yaml
ファイルは<CFK-home>/confluent-for-kubernetes
ディレクトリにあります。ダウンロードバンドルを使用して CFK をデプロイしている場合は、バンドルをダウンロードした場所の
helm/confluent-for-kubernetes
ディレクトリにvalues.yaml
ファイルがあります。
values.yaml
ファイルのコピーを作成して、CFK の構成をカスタマイズします。デフォルトのvalues.yaml
ファイルは編集しないでください。任意の場所にファイルのコピーを保存します。この場所を<path-to-values-file>
とします。カスタマイズした構成を使用して CFK をインストールします。
helm upgrade --install confluent-operator \ confluentinc/confluent-for-kubernetes \ --values <path-to-values-file> \ --namespace <namespace>
helm upgrade
コマンドを使用して、カスタマイズされた Confluent for Kubernetes をデプロイするには、以下の手順を実行します。--set
フラグを使用して、次のように構成オプションを指定します。helm upgrade --install confluent-operator \ confluentinc/confluent-for-kubernetes \ --set <setting1>=<value1> \ --set <setting2>=<value2> \ ... --namespace <namespace>
すべての名前空間で Confluent Platform コンポーネントを管理するための CFK の構成¶
デフォルトで CFK は、CFK 自体がデプロイされている同じ Kubernetes 名前空間のみで、Confluent Platform コンポーネントクラスターおよびリソースをデプロイし、管理します。すべての名前空間で CFK が Confluent Platform リソースを管理できるようにするには、インストールコマンドで namespaced
構成プロパティを false
に設定します。
helm upgrade --install confluent-operator \
confluentinc/confluent-for-kubernetes \
--set namespaced=false \
--namespace <namespace>
または、上記のように values.yaml
ファイルをアップデートして、次のプロパティを設定します。
namespaced: false
ロールとロールバインディングを作成しない Confluent for Kubernetes のデプロイ¶
デフォルトでは利便性のために、helm
を使用して CFK をデプロイする際に、CFK が機能するために必要な Kubernetes のロールおよびロールバインディング(または、クラスターロールとクラスターロールバインディング)も helm
インストールによって同時に作成されます。ただし、CFK のデプロイを担当するユーザーに Kubernetes RBAC アクセス許可を管理する権限がない可能性があり、その場合は helm
インストールは失敗します。Kubernetes RBAC アクセス許可を管理する責任者が Kubernetes クラスター管理者のみである可能性もあります。このような状況では、Kubernetes クラスター管理者が、必要な RBAC リソースを事前に作成しておく必要があります(「Confluent Platform 用の Kubernetes クラスターの準備」を参照)。helm
に RBAC リソースの再作成をスキップさせるには、インストールコマンドに --set rbac=false
を追加します。
helm upgrade --install confluent-operator \
confluentinc/confluent-for-kubernetes \
--set rbac=false \
--namespace <namespace>
または、上記のように values.yaml
ファイルをアップデートして、次のプロパティを設定します。
rbac: false
カスタムサービスアカウントを指定した Confluent for Kubernetes のデプロイ¶
CFK を管理するカスタムサービスアカウントを指定するには、次のようにインストールコマンドに --set serviceAccount.create=false --set serviceAccount.name=<name>
を追加します。
helm upgrade --install confluent-operator \
confluentinc/confluent-for-kubernetes \
--set serviceAccount.create=false \
--set serviceAccount.name=<service-account-name> \
--namespace <namespace>
または、上記のように values.yaml
ファイルをアップデートして、次のプロパティを設定します。
serviceAccount:
create: false
name: <service-account-name>
カスタムサービスアカウントを使用し、さらに rbac=false
を設定した(つまり、ロールおよびロールバインディングが Kubernetes クラスター管理者によって事前に作成されている)場合は、<service-account-name>>
が、事前に作成されたロールバインディングのサブジェクト名に必ず一致するようにする必要があります。
クラスターオブジェクトの削除から保護する Confluent for Kubernetes のデプロイ¶
注釈
この機能は早期アクセスの段階にあるため、開発環境でのみ使用してください。この機能を本稼働環境で使用することは想定されていません。
Confluent for Kubernetes (CFK)には、Confluent Platform クラスターの削除イベント向けの Validating Admission Webhook が用意されています。
このリリースの CFK では、CFK Webhook がデフォルトで無効になっています。
CFK には以下の Webhook が用意されています。
永続ボリューム(PV)の回収ポリシーが Delete に設定されている場合にコンポーネントの削除を回避するための Webhook
この Webhook は、
ReclaimPolicy: Delete
の PV で CR の削除リクエストをブロックします。この削除を回避しない場合、CR が削除された結果としてその PV が削除され、データが失われます。この Webhook は、永続ボリュームがあるコンポーネント、つまり ZooKeeper、Kafka、ksqlDB、Control Center のみに使用できます。
CFK StatefulSet の削除を回避するための Webhook
Confluent Platform リソースを削除する場合、コンポーネントのカスタムリソース(CR)を削除するという方法が適切です。これは、CFK がこれらの削除イベントを監視しており、すべてを適切にクリーンアップするためです。StatefulSet が削除されると、意図しない PV の削除が発生し、データが失われる場合があります。
この Webhook は、CFK の StatefulSet の削除リクエストをブロックします。
CFK デプロイの前提条件¶
Webhook を有効にした状態で CFK をデプロイする前に、TLS 証明書を作成して Kubernetes 名前空間にラベルを追加する必要があります。
TLS 証明書¶
Webhook を有効にするには、Webhook サーバーと Kubernetes API サーバーの間でセキュアな通信を実現するための TLS 証明書を準備する必要があります。
Create signed TLS keys and certificates in the format as described in PEM 形式の TLS キーおよび証明書の提供. Provide the TLS Group 1 (
ca.pem
,server.pem
,server-key.pem
) or Group 3 (tls.crt
,tls.key
,ca.crt
) certificates in the form of asecret
or mounted usingdirectoryPathInContainer
.この証明書には、
confluent-operator.<namespace>.svc
という形式の SAN(Subject Alternative Name)が必要です。これは、CFK ポッドのデプロイ先である名前空間におけるサービスのクラスター内 DNS 名です。前述した証明書を、以下のいずれかの方法で CFK ポッドに渡します。
- Add the certificates to a Kubernetes secret and put them in the namespace that the CFK pod is getting deployed in.
- Mount the certificates using the Directory Path in Container feature. All certs must be in the same directory.
Kubernetes メタデータラベル¶
CFK をバージョン 1.21 未満の Kubernetes にデプロイする場合、Webhook がリクエストを検証する必要があるすべての名前空間に kubernetes.io/metadata.name
ラベルを設定します。
Kubernetes 1.21 以降では、このラベルは自動的に設定されます。詳細については、「Automatic labeling」を参照してください。
Confluent Platform のデプロイ先である名前空間のラベルをチェックします。
kubectl get namespace <namespace> --show-labels
出力例:
NAME STATUS AGE LABELS operator Active 48d <none>
kubernetes.io/metadata.name
ラベルを名前空間の名前に設定します。kubectl label namespace <namespace> kubernetes.io/metadata.name=<namespace>
検証します。
kubectl get namespace <namespace> --show-labels
以下に出力例を示します。
NAME STATUS AGE LABELS operator Active 48d kubernetes.io/metadata.name=operator
Webhook の有効化と CFK のデプロイ¶
helm の値を使用して Validating Webhook を有効または無効にします。
前述 の説明に従って values.yaml
ファイルをアップデートし、以下のプロパティを設定します。
webhooks:
enabled: true --- [1]
tls: --- [2]
secretRef:
directoryPathInContainer:
- [1] CFK Webhook を有効にする場合に必須です。
- [2] 「TLS 証明書」で作成した値
secretRef
またはdirectoryPathInContainer
を指定します。
Webhook の無効化¶
Webhook を有効にした状態で CFK をデプロイした後で、名前空間またはコンポーネントの CR に以下のラベルを適用することで、名前空間またはコンポーネントレベルで CFK Webhook を無効にできます。
すべての CFK 検証 Webhook の無効化:
confluent-operator.webhooks.platform.confluent.io/disable: "true"
StatefulSet の削除を検証する Webhook の無効化:
confluent-operator.webhooks.platform.confluent.io/allow-statefulset-deletion: "true"
このラベルは CR レベルでのみ適用されます。
PV の回収ポリシーに関する CR の削除を検証する Webhook の無効化:
confluent-operator.webhooks.platform.confluent.io/allow-pv-deletion: "true"
たとえば、PV が Delete
モードである場合に Kafka の CR の削除を許可するには、以下のラベルを適用します。
kubectl -n operator label kafka kafka \
confluent-operator.webhooks.platform.confluent.io/allow-pv-deletion="true"
Confluent プラグインのインストール¶
Confluent for Kubernetes (CFK)バンドルには、Confluent for Kubernetes とやり取りするための Confluent プラグインが含まれています。これは Linux、Windows、Darwin の 3 つの環境でサポートされます。ツールの詳細については、「Confluent プラグイン」を参照してください。
Helm リポジトリを使用して CFK をデプロイしている場合は、「ダウンロードバンドルを使用した Confluent for Kubernetes のデプロイ」の最初の手順の説明に従って、CFK バンドルをダウンロードし、展開する必要があります。
ダウンロードバンドルを使用した Confluent for Kubernetes のデプロイ を使用した場合は、この手順をスキップしてください。
使用しているクライアント環境である Linux、Windows、Mac OS(Darwin)に対応する
kubectl
プラグインを、クライアント環境のローカルの実行ディレクトリに展開します。Mac OS と Linux の場合、/usr/local/bin/
がそれに該当します。これによって、標準 CLIkubectl
からプラグインが見えるようになります。tar -xvf kubectl-plugin/kubectl-confluent-<environment>-amd64.tar.gz \ -C <local directory for the plugin>
たとえば、Mac OS では次のように指定します。
tar -xvf kubectl-plugin/kubectl-confluent-darwin-amd64.tar.gz \ -C /usr/local/bin/
Krew を使用した Confluent プラグインのインストール¶
Krew は、kubectl
のプラグインマネージャーです。Krew を使用して Confluent プラグインをインストールする場合は、以下の手順に従ってください。
Krew のユーザーガイド の説明に従って Krew をインストールします。
Helm リポジトリを使用して CFK をデプロイしている場合は、「ダウンロードバンドルを使用した Confluent for Kubernetes のデプロイ」の最初の手順の説明に従って、CFK バンドルをダウンロードし、展開する必要があります。
ダウンロードバンドルを使用した Confluent for Kubernetes のデプロイ を使用した場合は、この手順をスキップしてください。
CFK バンドルの展開先ディレクトリにある
kubectl-plugin
サブディレクトリに移動します。次のコマンドを使用して Confluent プラグインをインストールします。
kubectl krew install \ --manifest=confluent-platform.yaml \ --archive=kubectl-confluent-<environment>-amd64.tar.gz
たとえば、プラグインを MacOS にインストールするには、次のように入力します。
kubectl krew install \ --manifest=confluent-platform.yaml \ --archive=kubectl-confluent-darwin-amd64.tar.gz