株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

IBM Cloud Private 3.1 Multi Cloud Manager インストール手順

こんにちは。前回はICP3.1のインストールについてご案内させていただきました。
今回は、ICP上で動作するIBM Multicloud Manager(以下、MCM)という製品のインストール方法を書いていきます。

 

MCMってなんぞや?

IBM Multicloud Managerですがその名の通り、複数のクラウドを管理するマネージャーになります。
このクラウドの中にはICP(オンプレ製品ですが)はもちろん、IBM発表の情報では、IKS(IBM Cloud上のKubernetesサービス)やAWS、Azure等々の他ベンダーのクラウドにあるKubernetesサービスも管理できるようになるという製品です。

MCM上でほかのKubernetesクラスターの状況確認はもちろん、Helmからリモートでデプロイする機能も含まれているようです。
ただ、まだまだ情報が出そろってはいません。
このあたりの機能などの情報については情報が出そろったらまたご案内できればと思います!

 

環境

ICPのインストール方法で作成したICP環境を 2セット 用意します。
前回の環境情報はこんな感じです。
/////////////////////////////////////////////////////////////////////
2台のサーバーを使いICPをインストールします。

1台目:Master node (Master,Management,etcd,Proxy)
2台目:Worker node (Worker)
※インストール手順では、1台目を「Master」、2台目を「Worker」を表記します。

サーバーはどちらも同一スペックを用意しています。

   
OS RedHat Endterprise Linux 7.4
物理/仮想 仮想
CPU(Core) 8
Memory 24GB
Disk 300GB
NIC 1つ

FirewallとSELinuxについては無効にしています。
//////////////////////////////////////////////////////////////////////

 

ファイルの準備

下記のファイルを入手します。

  • IBM Multi-cloud Manager 3.1.0 Kubernetes Images for Linux (CNVV6EN )
    size:962MB

事前にダウンロードしたファイルを解凍して、Tokyo Master,Osaka Master上それぞれにコピーしておきます。該当のファイル名は mcm-3.1.0_x86.tgz になります。

今回、このファイルは ~/ 配下にコピーしています。

 

やること

今回はMCMのインストールともう一つのICPクラスターをMCM配下のクラスターとして登録します。

登場人物

  • ICPクラスター2セット

    • クラスター名: Tokyo
      • Master: Tokyo Master IP末尾 50
      • Worker: Tokyo Worker IP末尾 51
    • クラスター名: Osaka
      • Master: Osaka Master IP末尾 60
      • Worker: Osaka Worker IP末尾 61
  • Multi Cloud Manager
    MCMの管理コンポーネント。Helmからインストール。

    • Tokyo Masterにインストール
  • Klusterlet
    MCM用のAgent。Helmからインストール。

  • hub-cluster
    IBM Multicloud ManagerをインストールしたICP Master(今回は Tokyo Master)のこと。

  • cluster_CA_domain
    Clusterのドメイン名。デフォルトは mycluster.icp
    ※変更するのはICPのインストール時になります。

 

手順の概要

  1. Tokyo Masterに MCM をインストール
  2. Tokyo Masterに Klusterlet をインストール
  3. Osaka Masterに Klusterlet をインストール

 

MCMインストール

インストールはCLIベースでの作業と管理コンソールでの作業があります。
CLIベースの作業は各クラスターの Master で作業を実施します。
CLIではRootにログインして作業します。

 

Tokyo Master 作業(CLI)

 

Docker にログイン

docker login mycluster.icp:8500
  • User : admin
  • Password : admin

 

IBM Cloud Private CLIにログイン

# サンプル cloudctl login -a https://xxx.xxx.xxx.50:8443 -n kube-system --skip-ssl-validation Username> admin #←ユーザー名:admin を入力 Password>  #←パスワード:admin を入力 Authenticating... OK Select an account: 1. mycluster Account (id-mycluster-account) Enter a number> 1  #← 1 を入力 Targeted account mycluster Account (id-mycluster-account) Targeted namespace kube-system Configuring kubectl ... Property "clusters.mycluster" unset. Property "users.mycluster-user" unset. Property "contexts.mycluster-context" unset. Cluster "mycluster" set. User "mycluster-user" set. Context "mycluster-context" created. Switched to context "mycluster-context". OK Configuring helm: /root/.helm OK

 

Helmチャートにファイルをロード

cd ~/ cloudctl catalog load-ppa-archive -a mcm-3.1.0_x86.tgz --registry mycluster.icp:8500

 

Tokyo Master 作業(GUI)

 

コンテナイメージの確認

管理コンソール上でMCMに必要なイメージがロードされていることを確認します。

  • 管理コンソールにログイン
  • 左上のメニューを開き、「イメージ」に移動
  • 検索窓で「kube-system」と入力し、イメージを確認

20181116_11h00_38


 

Helmカタログの確認

管理コンソールでHelmにカタログが登録されていることを確認します。

  • 管理コンソールにログイン
  • 右上の「カタログ」に移動
  • 検索窓で「mcm」と入力し、カタログを確認

20181116_11h02_55


 

カタログからデプロイ

管理コンソールからカタログに移動し、 ibm-mcm-controller を選択します。

20181116_11h02_55a


右下の 構成 をクリックします。

20181116_11h16_06_2

 

デプロイに必要なパラメータを入力します。

設定名 設定値
Helmリリース名 任意の名前を入力
ターゲット名前空間 kube-system
Multi-cloud Manager Namespace 専用の名前空間

名前空間はIBM Multicloud Manager用に専用の名前空間が必要になります。 ここでは mcm-tokyo と指定します。

20181116_11h16_47_2


インストール をクリックしインストールを実行します。 実行後、Helmリリースの状況を確認します。

20181116_11h21_27


よくあるミスとしては、ターゲット名前空間を間違えてしまうということがあります。
その場合 デプロイメント のなかの multicloudmanager-ibm-mcm-controller-controller の使用可能部分が 0 となっていることがあります。この場合は、Helmを使って、一度削除してが必要になります。(削除できないことがありますのでなるべく間違えないように気を付けてください。)

数分待ったあとに一度管理コンソールからログアウトし、再度ログインします。
正常動作している場合は、管理コンソールのメニューに マルチクラスター という項目が増えます。

20181116_11h25_34

 

Tokyo Master 作業(CLI)

 

Hub Clusterのへのログイン

cloudctl login -a https://:8443 --skip-ssl-validation

<hub_cluster_host_name>はTokyo Masterのホスト名もしくはIPアドレスになります。

cloudctl login -a https://xxx.xxx.xxx.50:8443 --skip-ssl-validation Username> admin # adminと入力 Password> # adminと入力 Authenticating... OK Select an account: 1. mycluster Account (id-mycluster-account) Enter a number> 1 # 1と入力 Targeted account mycluster Account (id-mycluster-account) Select a namespace: 1. cert-manager 2. default 3. ibmcom 4. istio-system 5. kube-public 6. kube-system 7. mcm-tokyo 8. platform 9. services Enter a number> 6 # 6と入力 Targeted namespace kube-system Configuring kubectl ... Property "clusters.mycluster" unset. Property "users.mycluster-user" unset. Property "contexts.mycluster-context" unset. Cluster "mycluster" set. User "mycluster-user" set. Context "mycluster-context" created. Switched to context "mycluster-context". OK Configuring helm: /root/.helm OK

 

MCM用のNameSpaceの作成

kubectl create namespace <mcm_namespace>

カタログからMCMをデプロイした際のNameSpaceと同一にします。
ここでは mcm-tokyoと指定しました。

 

Hub ClusterからのリモートHelmインストール機能を有効にする

export CLUSTER_IP=<hub_cluster_host_name> kubectl patch daemonset catalog-ui --patch '{"spec": {"template":{"spec":{"containers":[{"name":"catalog-ui","env":[{"name":"hcmCapabilityEnabled","value":"true"},{"name":"hcmRedirectUrl","value":"https://'${CLUSTER_IP}':8443/hcmconsole/remoteinstall"}]}]}}}}' -n kube-system

※<hub_cluster_host_name>部分をMCMをいれたICP Masterのホスト名にします。名前解決ができない場合はIPアドレスを指定します。

 

Klusterletのインストール(Tokyo Master)

次にMCMと通信を行うKlusterletをインストール(デプロイ)します。クラスターTokyoに対しても作業が必要になります。

Tokyo Master 作業(GUI)

 

事前準備

デプロイに必要なパラメータを確認します。
Tokyo Masterの管理コンソールにログインし、右上の人型アイコンをクリックし、クライアントの構成 をクリックします。

20181116_11h31_45


「クライアントの構成」のポップアップが表示されます。

20181116_11h33_54a



パラメータが表示されている部分を2列分をコピーします。

kubectl config set-cluster cluster.local --server=https://xxx.xxx.xxx.50:8001 --insecure-skip-tls-verify=true
kubectl config set-credentials admin --token=eyJ0(以下、略)

このあとに使用する部分は、

 

Tokyo Master 作業(CLI)

 

Tokyoクラスターにログイン

cloudctl login -a https://mycluster.icp:8443 --skip-ssl-validation Username> admin # adminと入力 Password> # adminと入力 Authenticating... OK Select an account: 1. mycluster Account (id-mycluster-account) Enter a number> 1 # 1と入力 Targeted account mycluster Account (id-mycluster-account) Select a namespace: 1. cert-manager 2. default 3. ibmcom 4. istio-system 5. kube-public 6. kube-system 7. mcm-tokyo 8. platform 9. services Enter a number> 6 # 6と入力 Targeted namespace kube-system Configuring kubectl ... Property "clusters.mycluster" unset. Property "users.mycluster-user" unset. Property "contexts.mycluster-context" unset. Cluster "mycluster" set. User "mycluster-user" set. Context "mycluster-context" created. Switched to context "mycluster-context". OK Configuring helm: /root/.helm OK

※ICPクラスター名をインストール時に変更している場合は適宜クラスター名を変更します。

 

Secret の作成

kubectl create secret tls <klusterlet_tiller_secret> --cert ~/.helm/cert.pem --key ~/.helm/key.pem -n kube-system

<klusterlet_tiller_secret> に任意の名称を入力します。ここでは、klusterlet-tiller-secret として入力します。

kubectl create secret tls klusterlet-tiller-secret --cert ~/.helm/cert.pem --key ~/.helm/key.pem -n kube-system

 

Secretの確認

Secretが正常に作成されているか確認します。

kubectl get secret | grep klusterlet-tiller-secret

 

Klusterlet用のNameSpaceの作成

kubectl create namespace <mcm_namespace>

ここでは mcm-tokyo-klusterletと指定しました。

 

Tokyo Master 作業(GUI)

デプロイ

管理コンソールにログインし右上のカタログをクリックします。
検索画面で mcm と入力し、表示された ibm-mcm-klusterlet を選択します。

20181116_11h02_55b


遷移した画面で構成 をクリックします。
それぞれパラメータを指定していきます。

設定名 設定値
Helmリリース名 任意の名前を入力
ターゲット名前空間 kube-system
Cluster Name 任意のクラスター名
Cluster Namespace Klusterlet専用の名前空間
Klusterlet Tiller Secret Name 事前に作成してSecret名
Hub Cluster Kubernetes API Server 事前に確認したAPIサーバー名
Hub Cluster Kubernetes API server token 事前に確認したToken

今回の環境では下記のようになります(しました)。

設定名 設定値
Helmリリース名 tokyo-cluster-klusterlet
ターゲット名前空間 kube-system
Cluster Name tokyo-cluster
Cluster Namespace mcm-tokyo-klusterlet
Klusterlet Tiller Secret Name klusterlet-tiller-secret
Hub Cluster Kubernetes API Server https://xxx.xxx.xxx.50:8001
Hub Cluster Kubernetes API server token eyJ0(以下、略)

20181116_17h11_05b


 

ローカルインストール を選択し、デプロイを開始します。

 

デプロイの確認

デプロイ状況を確認します。
管理コンソールのメニューから[ワークロード]-[Helmリリース]を開きます。

20181116_17h15_59


検索画面にtokyo と入力し、tokyo-cluster-klusterletを選択します。

20181116_17h16_55


使用可能の値が必要数と異なっていたり、エラー等が発生していないことを確認します。

20181116_17h17_34


管理コンソールのメニューから[マルチクラスター]-[クラスター]を開きます。

20181116_17h18_06


tokyo-cluster が表示され、Statusが正常なことを確認します。

20181116_17h18_58

 

Klusterletのインストール(Osaka Master)

Osaka MasterにKlusterletをインストール(デプロイ)します。

Osaka Master 作業(CUI)

Docker にログイン

docker login mycluster.icp:8500
  • User : admin
  • Password : admin

 

IBM Cloud Private CLIにログイン

# サンプル cloudctl login -a https://xxx.xxx.xxx.60:8443 -n kube-system --skip-ssl-validation Username> admin Password> Authenticating... OK Select an account: 1. mycluster Account (id-mycluster-account) Enter a number> 1 Targeted account mycluster Account (id-mycluster-account) Targeted namespace kube-system Configuring kubectl ... Property "clusters.mycluster" unset. Property "users.mycluster-user" unset. Property "contexts.mycluster-context" unset. Cluster "mycluster" set. User "mycluster-user" set. Context "mycluster-context" created. Switched to context "mycluster-context". OK Configuring helm: /root/.helm OK

 

Helmチャートにファイルをロード

cd ~/ cloudctl catalog load-ppa-archive -a mcm-3.1.0_x86.tgz --registry mycluster.icp:8500

 

Osakaクラスターにログイン

cloudctl login -a https://mycluster.icp:8443 --skip-ssl-validation Username> admin # adminと入力 Password> # adminと入力 Authenticating... OK Select an account: 1. mycluster Account (id-mycluster-account) Enter a number> 1 # 1と入力 Targeted account mycluster Account (id-mycluster-account) Select a namespace: 1. cert-manager 2. default 3. ibmcom 4. istio-system 5. kube-public 6. kube-system 7. mcm-tokyo 8. platform 9. services Enter a number> 6 # 6と入力 Targeted namespace kube-system Configuring kubectl ... Property "clusters.mycluster" unset. Property "users.mycluster-user" unset. Property "contexts.mycluster-context" unset. Cluster "mycluster" set. User "mycluster-user" set. Context "mycluster-context" created. Switched to context "mycluster-context". OK Configuring helm: /root/.helm OK

※ICPクラスター名をインストール時に変更している場合は適宜クラスター名を変更します。

 

Secret の作成

kubectl create secret tls <klusterlet_tiller_secret> --cert ~/.helm/cert.pem --key ~/.helm/key.pem -n kube-system

<klusterlet_tiller_secret> に任意の名称を入力します。ここでは、klusterlet-tiller-secret として入力します。
※Tokyo Clusterと同じで問題ありません。

kubectl create secret tls klusterlet-tiller-secret --cert ~/.helm/cert.pem --key ~/.helm/key.pem -n kube-system

 

Secretの確認

Secretが正常に作成されているか確認します。

kubectl get secret | grep klusterlet-tiller-secret

 

Klusterlet用のNameSpaceの作成

kubectl create namespace <mcm_namespace>

ここでは mcm-osaka-klusterletと指定しました。

 

Tokyo Master 作業(GUI)

事前準備

Tokyo MasterにKlusterletをデプロイした直後であれば確認は必要ありません。しかし、時間をあけてデプロイする場合は、Tokenの値が更新されていることがありますので必ずご確認ください。

デプロイに必要なパラメータを確認します。
Tokyo Masterの管理コンソールにログインし、右上の人型アイコンをクリックし、クライアントの構成 をクリックします。

20181116_11h31_45_2


「クライアントの構成」のポップアップが表示されます。 パラメータが表示されている部分を2列分をコピーします。

kubectl config set-cluster cluster.local --server=https://xxx.xxx.xxx.50:8001 --insecure-skip-tls-verify=true
kubectl config set-credentials admin --token=eyJ0(以下、略)

このあとに使用する部分は、

 

Osaka Master 作業(GUI)

 

デプロイ

管理コンソールにログインし右上のカタログをクリックします。
検索画面で mcm と入力し、表示された ibm-mcm-klusterlet を選択します。

20181116_17h29_36


遷移した画面で構成 をクリックします。
それぞれパラメータを指定していきます。

設定名 設定値
Helmリリース名 任意の名前を入力
ターゲット名前空間 kube-system
Cluster Name 任意のクラスター名
Cluster Namespace Klusterlet専用の名前空間
Klusterlet Tiller Secret Name 事前に作成してSecret名
Hub Cluster Kubernetes API Server 事前に確認したAPIサーバー名
Hub Cluster Kubernetes API server token 事前に確認したToken

今回の環境では下記のようになります(しました)。

設定名 設定値
Helmリリース名 osaka-cluster-klusterlet
ターゲット名前空間 kube-system
Cluster Name osaka-cluster
Cluster Namespace mcm-osaka-klusterlet
Klusterlet Tiller Secret Name klusterlet-tiller-secret
Hub Cluster Kubernetes API Server https://xxx.xxx.xxx.50:8001
Hub Cluster Kubernetes API server token eyJ0(以下、略)

20181116_17h34_08


 

また、今回はClusterの場所の表示を変えるためにすべてのパラメーターを下記のように設定します。
※記載のないパラメーターは変更していません。

設定名 設定値
Cluster Region AP
Cluster Datacenter Osaka
Cluster Owner it

20181116_17h35_20


 

ローカルインストール を選択し、デプロイを開始します。

 

Tokyo Master 作業(GUI)

 

デプロイの確認

デプロイ状況を確認します。
管理コンソールのメニューから[ワークロード]-[Helmリリース]を開きます。

20181116_17h43_12


検索画面にosaka と入力し、osaka-cluster-klusterletを選択します。

20181116_17h43_40


使用可能の値が必要数と異なっていたり、エラー等が発生していないことを確認します。

20181116_17h45_19


 

Tokyo Master 作業(GUI)

 

デプロイの確認

管理コンソールのメニューから[マルチクラスター]-[クラスター]を開きます。

20181116_17h46_05


osaka-cluster が表示され、Statusが正常なことを確認します。

 

その他

 

NameSpaceの確認

作成したNameSpaceはコマンドでも管理コンソールでも確認できます。
コマンドの場合は

kubectl get namespace

管理コンソールの場合は、メニューの[管理]-[名前空間]から確認ができます。

 

Hub Cluster上のNameSpace(名前空間)

Hub Cluster上には管理するクラスターでKlusterletデプロイ時に指定したNameSpaceが作成されます。

20181116_17h47_08




MCMの情報ソース

現在は下記のURLにMCMの構築手順や管理手順が記載されていますので、不明点がありましたらご参照ください。
IBM Multi-cloud Manager
※日本語は用意されていませんので必ず英語でご確認ください。
※メニューは「Table of Contents」をクリックすると開きます。

今回は以上になります!複数のKubernetes Serviceを利用されている皆様には良い機能かと思いますので是非是非使ってみてください。
評価等のご希望がありましたら、こちらの「お問い合わせ・ご相談はこちら」からブログを見て!とご連絡を頂ければと思います。
すずきけ