Confluent Platform 用の Kubernetes クラスターの準備

このトピックでは、Confluent Platform デプロイ用の Kubernetes クラスターを準備するうえで必要なタスクについて説明します。

CFK のデプロイプロセスには、3 名までの担当者が関わっている場合があります。2 名は人間の担当者で、1 名は、次のようなサービスアカウントです。

  • Kubernetes クラスター管理者: Kubernetes 管理者は、名前空間と、CFK ユーザーおよび CFK サービスアカウントの特定のアクセス許可をプロビジョニングします。
  • CFK ユーザー: CFK ユーザーは、CFK および Confluent Platform コンポーネントをデプロイします。
  • CFK サービスアカウント: この CFK サービスアカウントにより、CFK コントロールプレーンは Kubernetes API にアクセスし、Confluent Platform コンポーネントおよびリソースのデプロイに必要な StatefulSets、Services、Secrets、およびその他の Kubernetes リソースを作成することができます。

概念実証またはサンドボックス環境での作業で初めて CFK を試している場合は、同じユーザーが、Kubernetes クラスター管理者と CFK ユーザーの両方の役割を果たすことがあります。特に、厳しく規制されている組織で本稼働環境にデプロイしている場合は、一般的に、それぞれ別のグループまたはチームが Kubernetes クラスター管理者と CFK ユーザーになります。どのようなシナリオであっても、Kubernetes クラスターの準備の最初の手順は、名前空間を作成することです。

CFK の名前空間の作成

  1. Kubernetes 名前空間を作成して、Confluent for Kubernetes (CFK)コントロールプレーンを以下にデプロイします。

    kubectl create namespace <confluent-namespace>
    
  2. 新しい名前空間を現在の名前空間として設定します。

    この手順は必須ではありませんが、ここでは、このドキュメントで後述するコマンド例を簡素化する目的で行っています。後続の kubectl コマンドでは、現在の名前空間が想定されるため、--namespace フラグを省略しています。

    kubectl config set-context --current --namespace=<confluent-namespace>
    

Kubernetes RBAC およびカスタムリソース定義の構成

Kubernetes クラスター管理者は、CFK ユーザーと CFK サービスアカウントに付与されるアクセスのレベルを制限する場合があります。そのためには、最初に、以下の質問を検討します。

  • CFK で、特定の名前空間内のみ、またはあらゆる名前空間内のどちらで、Confluent Platform クラスターを作成したり、削除したりできるようにするか。
  • CFK サービスアカウントが、カスタムリソース定義(CRD)など、クラスターレベルのリソースを作成できるようにするのかどうか。このようなリソースを CFK が作成できるようにすると、Kubernetes クラスター管理者の手動の手順の数が減りますが、より多くのアクセス許可を CFK サービスアカウントに付与することが必要になります。
  • CFK ユーザーが、CFK サービスアカウントの Kubernetes RBAC アクセス許可を管理するべきかどうか。CFK サービスアカウントの RBAC アクセス許可は、CFK のインストールとともに自動的にブートストラップすることができます。これにより、手動の手順の数が減りますが、CFK ユーザーには、CFK のデプロイだけでなく、Kubernetes RBAC アクセス許可の管理のためのいくつかの権限が必要になります。

Kubernetes RBAC および CRD の準備の手順を、一般的な 3 つのシナリオで以下に示します。

迅速で容易なデプロイと緩やかなアクセス許可

このシナリオでは、CFK が Confluent Platform コンポーネントをあらゆる Kubernetes 名前空間にデプロイできるようになり、CFK クラスターレベルのアクセス許可を付与することで CRD が自動的にインストールされ、手動の手順の数が減ります。また、CFK サービスアカウントのアクセス許可を CFK ユーザーが管理できるため、全体的なインストールワークフローが簡素化されます。この種類のシナリオでは、多くの場合、Kubernetes クラスター管理者と CFK ユーザーは同一人物です。

このシナリオでは、追加の準備作業が不要であるため、すぐに CFK のデプロイに進むことができます。「Confluent for Kubernetes のデプロイ」を参照してください。必ず、namespacedfalse に設定します(「すべての名前空間で Confluent Platform コンポーネントを管理するための CFK の構成」を参照)。

厳格なアクセス許可と、名前空間へのアクセス制限

このシナリオでは、CFK を制限して、CFK コントロールプレーンがインストールされる名前空間にのみ Confluent Platform コンポーネントがデプロイされるようにします。また、CFK サービスアカウントも、クラスターレベルのアクセス許可が付与されないように制限します。これにより、CRD が自動的にインストールされないため、手動でのインストールが必要になります。さらに、CFK および Confluent Platform のインストールと使用のみを行うように CFK ユーザーを制限します。CFK ユーザーが、CFK サービスアカウントのアクセス許可を管理することはありません。すべての Kubernetes RBAC のアクセス許可管理は、Kubernetes クラスター管理者のみが行います。

このシナリオでは、Kubernetes クラスター管理者 が、CFK と Confluent Platform をデプロイする前に、以下の追加手順を実行して Kubernetes クラスターを準備する必要があります。

  1. CFK Helm チャートをプルし、その内容を抽出して Confluent の CRD を取得します。

    mkdir -p <cfk-dir>
    
    helm pull confluentinc/confluent-for-kubernetes \
      --untar --untardir=<cfk-dir>
    
  2. 次のコマンドを使用して Confluent の CRD をインストールします。

    kubectl apply -f <cfk-dir>/crds
    
  3. CFK サービスアカウントの Kubernetes ロールおよびロールバインディングを作成します。この例 を参照してください。namespace: confluent と書かれている場所のすべてで、confluent を自分の <confluent-namespace> に置換して変更します。これを cfk-permissions.yaml などのファイルに保存し、適用します。

    kubectl apply -f cfk-permissions.yaml
    
  4. ロールとロールバインディングを作成しない Confluent for Kubernetes のデプロイ の説明に従い、rbac プロパティを false に設定して、CFK をデプロイします。

厳格なアクセス許可と、すべての名前空間にわたるデプロイ

このシナリオは、前のシナリオに似ています。CFK サービスアカウントと CFK ユーザーのアクセス許可に関しては非常に厳格です。しかし、このシナリオでは、Kubernetes クラスターのあらゆる名前空間に Confluent Platform コンポーネントをデプロイできます。

このシナリオでは、Kubernetes クラスター管理者 が、CFK と Confluent Platform をデプロイする前に、以下の追加手順を実行して Kubernetes クラスターを準備する必要があります。

  1. CFK Helm チャートをプルし、その内容を抽出して Confluent の CRD を取得します。

    mkdir -p <cfk-dir>
    
    helm pull confluentinc/confluent-for-kubernetes \
      --untar --untardir=<cfk-dir>
    
  2. 次のコマンドを使用して Confluent の CRD をインストールします。

    kubectl apply -f <cfk-dir>/crds
    
  3. CFK サービスアカウントの Kubernetes クラスターロールおよびクラスターロールバインディングを作成します。この例 を参照してください。namespace: confluent と書かれている場所で、confluent を自分の <confluent-namespace> に置換して変更します。これを、cfk-permissions.yaml などのファイルに保存し、適用します。

    kubectl apply -f cfk-permissions.yaml
    
  4. ロールとロールバインディングを作成しない Confluent for Kubernetes のデプロイ の説明に従い、rbac プロパティを false に設定して、CFK をデプロイします。