Confluent Operator インストールの計画¶
このトピックでは、Confluent Operator を使用した Confluent Platform のインストールおよびデプロイを計画する際に検討すべき前提条件や推奨事項について説明します。
このトピックでは、プロバイダー環境の例として Google Kubernetes Engine(GKE)を使用します。このトピックを参考に、Operator と Confluent Platform を他の サポートされるプロバイダー環境 にデプロイしてください。
このガイドの例では、以下が想定されています。
$VALUES_FILE
は「グローバル構成ファイルの作成」でセットアップする構成ファイルのことです。Operator ドキュメントで簡潔で明快な例を提示できるよう、すべての構成パラメーターが構成ファイル(
$VALUES_FILE
)に指定されます。ただし、本稼働環境でのデプロイにおいて、Helm を使用して機密データを扱う場合には、--set
または--set-file
オプションを使用します。以下に例を示します。helm upgrade --install kafka \ --set kafka.services.mds.ldap.authentication.simple.principal="cn=mds\,dc=test\,dc=com" \ --set kafka.services.mds.ldap.authentication.simple.credentials=”Developer!” \ --set kafka.enabled=true
operator
は Confluent Platform のデプロイ先となる名前空間です。コマンドはすべて、Confluent Operator のダウンロード先ディレクトリにある
helm
ディレクトリで実行されます。
全般的な前提条件¶
インストールを始める前に、以下の前提条件を確認し、対応します。
- Kubernetes クラスターが サポートされる環境 のいずれかに準拠している。
- クラスターサイズが「サイズ設定の推奨事項」に基づいている。
- kubectl がインストールされ、初期化され、コンテキストが設定済みである。使用するクラスター用に構成済みの
kubeconfig
ファイルも必要です。 - Helm 3 がインストールされている。
- Confluent Operator バンドルにアクセスできる。
- ストレージ : StorageClass に基づく ストレージプロビジョナーがサポートされている。これが、使用されるデフォルトのストレージクラスです。ユーザーは、他のストレージクラスを用意して使用できます。永続ストレージ用に SSD または SSD に類するディスクが必要です。
- セキュリティ : コンポーネントごとに TLS 証明書が必要です(TLS を使用する場合)。この例のステップでは、デフォルトの SASL/PLAIN セキュリティが使用されます。追加セキュリティの構成方法については、「Confluent Operator でのセキュリティの構成」を参照してください。
- ネットワーク
- DNS: デプロイ後の Confluent Platform コンポーネントへの外部アクセスには、使用プラットフォーム環境での DNS サポートが必要です。個々の Confluent Platform コンポーネントへの外部アクセスを有効にするには、デプロイ後に DNS エントリを作成します。開発テスト用の外部アクセスが組織から許可されない場合については、「非 DNS 開発アクセス」を参照してください。
- ロードバランサーを使用した外部アクセス:
- Kafka ブローカーには、パススルー(アプリケーションで終了)をサポートするレイヤー 4 ロードバランシングが必要です。
- レイヤー 7 ロードバランシングは、Operator とその他すべての Confluent Platform コンポーネントで使用できます。
- ホストベースまたはポートベースのルーティングを使用する静的外部アクセス: TLS パススルーをサポートし、TCP トラフィックをルーティングする、Ingress コントローラーが必要です。
サイズ設定の推奨事項¶
Kubernetes クラスターを作成する前に、サイズの決定に関する以下のガイドラインを参考にしてください。
Kubernetes のワーカーノード数とコンピュートリソースに関する推奨事項¶
クラスターで必要となるノードの数は、デプロイしているクラスターが開発テスト用か本稼働環境用かに応じて異なります。
テストクラスター : 一般に、各ノードには少なくとも 2 個または 4 個の CPU と 7 ~ 16 GB の RAM が必要です。Operator と全 Confluent Platform コンポーネントのデプロイをテストしている場合は、10 ノードからなるクラスターを作成し、6 ノードを Apache ZooKeeper™ ポッドと Apache Kafka® ポッドに(3 レプリカずつ)、4 ノードをその他すべてのコンポーネントポッドに割り当てます。
Confluent では、ZooKeeper や Kafka を個別の Kubernetes ノードにある個別のポッドで実行することを推奨します。他のコンポーネントは "ビンパッキング" できます。ビンパッキングを使用すると、コンポーネントタスクは CPU キャパシティとメモリー容量の残りが最も少ないクラスターに属するノードに配置されます。ビンパッキングによってノードの使用率が最大化され、必要なノードの数が削減されます。
ビンパッキングは、デフォルトでは名前空間レベルで無効になっています。ビンパッキングを有効にするには、構成ファイル(
$VALUES_FILE
)のコンポーネントセクションにoneReplicaPerNode: false
パラメーターを設定します。oneReplicaPerNode
は、名前空間レベルで非推奨のdisableHostPort
の代わりです。コンポーネントのビンパッキングは、本稼働環境へのデプロイでは 推奨されません。また、
false
に設定した場合、使用されるデフォルトポートが 28130 であることにもご注意ください。本稼働クラスター : グローバルプロバイダーファイル
helm/providers/<provider>.yaml
でデフォルトのキャパシティ値を確認します。指定されている値が本稼働アプリケーションに与える影響をふまえてノードを用意します。オンプレミスの システム要件 をもとにパブリック/プライベートクラウドの本稼働環境に何が必要かを判断することもできます。指定されているオンプレミスストレージ情報はクラウド環境には該当しないことにご注意ください。注釈
アプリケーションに必要なノード数の判断に関する情報が必要な場合は、Confluent サポート までご相談ください。
Operator と Confluent Platform をデプロイするためのワークフロー¶
Operator と Confluent Platform を構成してデプロイするためのワークフローの概要は以下のとおりです。
- 「全般的な前提条件」と「サイズ設定の推奨事項」を確認し、環境を用意します。
- Operator バンドルをダウンロード します。
- Kubernetes クラスターをクラスター管理者として準備します。
- ストレージ、 外部アクセス、 セキュリティ などを必要に応じて 構成 します。
- インストール します。
Kubernetes アクセス制御のための Operator デプロイのシナリオ¶
一般的には、Confluent Operator のデプロイプロセスに 3 名の担当者が関わっています。2 名は人間の担当者で、1 名は、次のようなサービスアカウントです。
Kubernetes クラスター管理者
Kubernetes 管理者は、名前空間と、Confluent Operator ユーザーおよび Confluent Operator サービスアカウントの特定のアクセス許可をプロビジョンします。
Confluent Operator ユーザー
Confluent Operator ユーザーは、Confluent Operator および Confluent Platform コンポーネントをデプロイします。
Confluent Operator サービスアカウント
この Kubernetes サービスアカウントにより、Confluent Operator コンポーネントが Kubernetes API にアクセスし、Confluent Platform に必要な StatefulSets、Services、Secrets などを作成することができます。
Confluent Operator サービスアカウントに許可するアクセスのレベルを制御するために、そのスコープを 1 つの Kubernetes 名前空間に制限し、クラスターレベルのリソースのインストールを禁止することができます。
名前空間によるデプロイ
Operator サービスアカウントは、デプロイ先の名前空間内のリソースのみを管理します。
クラスターリソースの定義
Operator サービスは、クラスタースコープの Kubernetes リソース(ストレージクラス、カスタムリソース定義、クラスターロール、クラスターロールバインディングなど)にアクセスすることなく動作できます。
以下の質問に答えることは、適切なデプロイシナリオを選択するために役立ちます。
- Confluent Operator で、特定の名前空間内のみと、あらゆる名前空間内のどちらで Confluent Platform クラスターの作成と削除を行うのか。
- Confluent Operator サービスアカウントがクラスターレベルのリソースを作成できるようにするのか、または、Kubernetes クラスター管理者がクラスターレベルのリソースを事前に作成するのか。
Confluent Operator を使用して Confluent Platform をデプロイするシナリオの選択肢は 4 つあります。
- シナリオ 1:
Operator と Confluent Platform は、1 つの名前空間内でのみデプロイし、管理します。
Confluent Operator サービスアカウントには、クラスターレベルの Kubernetes リソースを管理する権限がありません。
- シナリオ 2:
Operator と Confluent Platform は、1 つの名前空間内でのみデプロイし、管理します。
Confluent Operator サービスアカウントには、クラスターレベルの Kubernetes リソースを管理する権限があります。
- シナリオ 3:
Operator と Confluent Platform を複数の名前空間内でデプロイし、管理します。
Confluent Operator サービスアカウントには、名前空間によっては、クラスターレベルの Kubernetes リソースを管理する権限がありません。
- シナリオ 4(デフォルトオプション):
Operator と Confluent Platform を、Kubernetes クラスター内の複数の名前空間でデプロイし、管理します。
Confluent Operator サービスアカウントには、すべての名前空間でクラスターレベルの Kubernetes リソースを管理する権限があります。
上で説明した各シナリオのワークフローの要約を、以下に示します。
- シナリオ 1 のワークフロー
クラスターレベルの Kubernetes リソースを管理するアクセス許可のない Operator ユーザーが、1 つの名前空間で Operator をデプロイします。
- Kubernetes クラスター管理者は、以下を実行します。
Operator と Confluent Platform をデプロイする名前空間を作成します。
以下のコマンドを使用して CRD をインストールします。
kubectl apply -f resources/rbac
Confluent Operator サービスアカウントのロールおよびロールバインディングを作成します。必要なロールおよびロールバインディングの詳細については、「名前空間を使用するデプロイに必要なアクセス許可の付与」を参照してください。
- Operator ユーザーは、以下を実行します。
Operator 構成ファイルを構成します。
namespace: true installClusterResources: false
Operator と Confluent Platform をデプロイします。
- シナリオ 2 のワークフロー
クラスターレベルの Kubernetes リソースを管理するアクセス許可のある Operator ユーザーが、1 つの名前空間で Operator をデプロイします。
- Operator ユーザーは、以下を実行します。
Operator と Confluent Platform をデプロイする名前空間を作成します。
Operator 構成ファイルを構成します。
namespace: true installClusterResources: true
Operator と Confluent Platform をデプロイします。
このプロセスの間に Operator は、ロールとロールバインディングを自動的に作成し、Operator と Confluent Platform に必要な CRD を自動的にインストールします。
- シナリオ 3 のワークフロー
クラスターレベルの Kubernetes リソースを管理するアクセス許可のない Operator ユーザーが、クラスター全体で Operator をデプロイします。
- Kubernetes 管理者は、以下を実行します。
Operator と Confluent Platform をデプロイする名前空間を作成します。
以下のコマンドを使用して CRD をインストールします。
kubectl apply -f resources/rbac
Operator サービスアカウントのクラスターロールおよびクラスターロールバインディングを作成します。必要なクラスターロールおよびクラスターロールバインディングの詳細については、「名前空間を使用するデプロイに必要なアクセス許可の付与」を参照してください。
- Operator ユーザーは、以下を実行します。
Operator 構成ファイルを構成します。
namespace: false installClusterResources: false
Operator と Confluent Platform をデプロイします。
- シナリオ 4 のワークフロー
クラスターレベルの Kubernetes リソースを管理するアクセス許可のない Operator ユーザーが、クラスター全体で Operator をデプロイします。
- Operator ユーザーは、以下を実行します。
Operator と Confluent Platform をデプロイする名前空間を作成します。
Operator 構成ファイルを構成します。
namespace: false installClusterResources: true
Operator と Confluent Platform をデプロイします。
このプロセスの間に Operator は、クラスターロールとクラスターロールバインディングを自動的に作成し、Operator と Confluent Platform に必要な CRD を自動的にインストールします。