チャネルとサブスクリプションを使用して、アプリケーションをマネージド Kubernetes クラスターにデプロイする

IBM Cloud Pak for Multicloud Management は、Kubernetes コンテナーの管理機能を提供するオファリングです。このオファリングを利用して Kubernetes クラスターを管理すれば、クラスターのセキュリティーを確保し、効率的にクラスターを運用してアプリケーションに必要なサービス・レベルを実現することができます。

IBM Cloud Pak for Multicloud Management 内でのチャネルとサブスクリプションを使用したアプリケーション管理モデルにより、OS パッケージの更新を受け取る場合と同じような方法で、マネージド・クラスターにアプリを配信できるようになります。さらに、このオファリングでは柔軟にアプリケーションと更新を配信できるため、Helm チャートと Kubernetes リソースの継続的デリバリーを保守しやすくなります。

チャネル とは、Helm チャートおよび Kubernetes リソースが一般的に見つかる場所を表す Kubernetes オブジェクトです。具体例としては、テンプレートのある Kubernetes 名前空間、YAML ファイルのあるオブジェクト・ストア、Helm チャートのある Helm リポジトリーがあります。こうしたチャネルの情報は、手作業で入力することも、継続的インテグレーション・システムから取り込むこともできます。IBM Cloud Pak for Multicloud Management バージョン 3.2.1 以降では、マネージド・クラスターを 1 つ以上のチャネルに登録して多様な配信エコシステムを作成できるようになっています。

エコシステムを管理しやすくするためには、マネージド・クラスターにサブスクリプションを伝播するという方法を使えます。サブスクリプションとは、特定のチャートおよびリソースのどのバージョンを、登録済みのチャネル・ソースからクラスターに配信するかを指定する Kubernetesオブジェクトです。

チャネルとサブスクリプションの導入方法を説明するために、サンプル・パッケージが用意されています。このパッケージをダウンロードすれば、チャネルとサブスクリプションを短時間で簡単に作成して使い始めることができます。このパッケージは、Open Cluster Management GitHub プロジェクトでホストされており、IBM Cloud Pak for Multicloud Management のどのライセンス・エディションでもダウンロードして使用できます。開発環境内にこのパッケージがインストールされていれば、IBM とサード・パーティー開発者による Helm チャートを集めた IBM Cloud Charts Helm Repository というリポジトリーを指すチャネルを簡単にセットアップできます。

このサンプル・プロジェクトは例として、IBM MQ Advanced for Developers 用の Helm チャートにマネージド・クラスターを登録します。このサブスクリプションにより、チャートの最新バージョンがデプロイされ、チャネルが表すリポジトリーに新しいバージョンが公開されるたびにデプロイ済みチャートが更新されることになります。独自のサブスクリプションを作成する場合、同じサブスクリプションを使用して複数のマネージド・クラスターをターゲットに設定すれば、同じチャートを組み込む必要があるすべてクラスターを更新できます。

前提条件

このサンプル・パッケージを使用して独自のチャネルとサブスクリプションを作成するには、ご使用の環境に以下の前提条件を揃えてください。

さらに、Open Cluster Management GitHub プロジェクトに含まれるサンプル・ファイルを複製してください。

ステップ 1. Helm チャートのチャネルを作成する

リソースを配信および構成するためのチャネルとサブスクリプションを作成するには、Open Cluster Management GitHub プロジェクト内にある YAML ファイルを使用します。これらの YAML ファイルのそれぞれで、名前空間タイプのチャネル、Helm リポジトリー・タイプのチャネルを作成します。名前空間タイプのチャネルは、シークレットと configMaps を保持するために使用します。HelmRepo チャネルは、GitHub.com 上の IBM Developer Edition Helm Chart リポジトリーを識別するために使用します。IBM がこのリポジトリー内で開発者用に公開しているチャートの 1 つに、IBM MQ Advanced があります。チャネルを作成するには、以下のコマンドを使用します。

kubectl apply -f ./channels/1-secret-vault-channel.yaml.yaml
kubectl apply -f ./channels/2-ibmcom-helm-channel.yaml

ステップ 2. Helm リポジトリーのサブスクリプションを作成する

Helm チャートのチャネルをセットアップしたら、次は IBM MQ Advanced for Developers チャートの最新バージョンがインストールされるように、IBM Cloud Charts Helm リポジトリーに対するサブスクリプションを作成します。この場合も YAML ファイルのそれぞれを使用して、Helm チャート用のサブスクリプション・リソース、 アプリケーション・リソース、IBM MQ 管理者用のシークレットを配信するためのサブスクリプション・リソースを作成します。アプリケーション・リソースは、1 つ以上のサブスクリプションを関連付けて依存関係を確立するために使用します。この依存関係により、デプロイ済みアプリケーションに関連付けられたさまざまなリソースを IBM Cloud Pak for Multicloud Management コンソールで表示できるようになります。

kubectl apply -f ./subscriptions/3-mqadvanced-subscription.yaml

上記のコマンドにより、environment: Dev というラベル付きのすべてのマネージド・クラスターにボールト/シークレット名前空間サブスクリプションが伝播されます。2 つ目のサブスクリプションはすべてのマネージド・クラスターに伝播されます。この 2 つ目のサブスクリプションでは、クラスターを IBM Developer Edition チャート・リポジトリーに登録します。このサブスクリプションは名前でチャートを検出してから、サブスクリプション内のパラメーターに基づいてチャートのバージョンを選択します。チャートのバージョンが特定されると、マネージド・クラスター上のサブスクリプションにより、デプロイメントのオーケストレーションを行う HelmRelease リソースが作成されて、関連する Helm リリースがデプロイされます。

ステップ 3. サブスクリプションを確認する

すべてのリソースが機能していることを確認するには、以下のチェックを行います。

  1. 以下のコマンドを使用して、ハブ・クラスター・サブスクリプションの状態をチェックします。

    kubectl -n developer-editions describe subscriptions | more
    

    このコマンドにより、関連するマネージド・クラスターにサブスクリプションが正常に伝播されているかどうかが示されます。

  2. IBM Cloud Pak for Multicloud Management コンソール内で、アプリケーション・ダッシュボードを使用して mq-advanced-server-dev アプリケーションを表示します。アプリケーションに、Kubernetes シークレット・サブスクリプションと Helm チャート・サブスクリプションの 2 つのリソースが関連付けられていることをチェックします。

  3. マネージド・クラスター上でチャートのステータスを調べるには、以下のコマンドを使用してサブスクリプションのステータスをチェックします。

    kubectl -n developer-editions describe subscriptions
    

    チャートをデプロイする際、またはシークレットを作成する際に問題が発生した場合、上記のコマンドの出力にその問題が示されます。あるいは、以下のコマンドを実行して、IBM MQ Advanced for Developers チャートの結果を表示することもできます。

    kubectl -n developer-editions get all
    

    コマンドの出力に含まれる statefulSet に、IBM MQ ポッドの正常性が示されます。以下のコマンドを実行して、IBM MQ Advanced for Developers ポッドの詳細を表示することもできます。

    kubectl -n developer-editions get pods
    

まとめ

サンプルを使用して、IBM MQ Advanced Server Developer Edition のチャートをマネージド・クラスターにデプロイすることができました。これらの Kubernetes リソース成果物は、IBM Developer Edition の他のチャートや独自のチャートをサポートするために簡単に複製できます。IBM Developer Edition のチャートの場合、GitHub リポジトリー内に該当するサブスクリプションがあります。Channel URL、Subscription チャートのターゲットの名前とバージョン、カスタム値を設定する Subscriptions オーバーライドを変更することで、任意の Helm チャートにクラスターを登録することができます。この機能は、チャートでの新たなレベルの継続的デリバリーを実現します。更新は Helm リポジトリーに公開されるため、1 つ以上のマネージド・クラスターに最新の更新が自動的に適用されます。また、バージョンを選択して更新を制御することもできます。

詳細については、IBM Knowledge Center を参照してください。