container Feed

2019/06/18

IBM Cloud Private 3.2 インストール RHEL編

みなさん、こんにちは。 これまでIBM Cloud Privateについてインストール含めいくつか投稿してきましたが 先日、IBM Cloud Private 3.2 (ICP3.2)がリリースされましたので、少し構成を変えてインストール手順をご紹介したいと思います。

ICP3.2では、これまで別にインストールが必要であったMultiCloud Managerを一緒にインストールすることができるようになりました。 今回は、1台のVM上にICPとMCMを同時にインストールし、管理対象として作成済みの別のICP環境が登録できるところまでをご紹介します。


リソース

サーバーリソースやインストーラの準備をします。

サーバー

今回は1台のサーバーに全コンポーネントを構成します。

CPU: 24core
Memory: 32GB
Disk: 500GB
NIC: 1
OS: Redhat Enterprise Linux 7.6

Diskは下記のように構成しています。

    # lsblk
    NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    sda 8:0 0 500G 0 disk
    ├─sda1 8:1 0 1G 0 part /boot
    └─sda2 8:2 0 499G 0 part
    ├─rhel_icp--mcm--32-root 253:0 0 450G 0 lvm /
     ├─rhel_icp--mcm--32-swap 253:1 0 15.8G 0 lvm [SWAP]      └─rhel_icp--mcm--32-home 253:2 0 33.2G 0 lvm /home


インストーラ

IBM社のWebサイトからインストーラをダウンロードし、対象のサーバーにコピーします。 今回は /root/ にコピーします。

  • IBM Cloud Private 3.2 for Linux (x86_64) Docker English

    • 部品番号: CC1W1EN
    • Size: 10,201MB
    • Date posted: 31 5 2019
  • IBM Cloud Private 3.2 Docker for Linux (x86_64) English

    • 部品番号: CC1W6EN
    • Size: 111MB
    • Date posted: 31 5 2019


準備

インストールの実行前にサーバーの準備、確認を行います。

利用ポートの空き状況確認

Knowledge Center
下記のコマンドを実行し、ポートが開いて利用可能か確認します。

ss -tnlp | awk '{print $4}'| egrep -w "<port_numbers>"

ポートが使用されていない場合、何も出力されません。
本環境では、FWを停止しています。

systemctl disable firewalld
systemctl stop firewalld


/etc/hosts に各ノードの情報を追記

Knowledge Center

全てのノードのIPアドレスとホスト名を各ノードの /etc/hosts に追記します。

Sample

127.0.0.1       localhost
# 127.0.1.1     <host_name>
# The following lines are desirable for IPv6 capable hosts
#::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
<master_node_IP_address> <master_node_host_name>
<worker_node_1_IP_address> <worker_node_1_host_name>
<worker_node_2_IP_address> <worker_node_2_IP_host_name>
<proxy_node_IP_address> <proxy_node_host_name>


今回の環境

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
# 127.0.0.1   icp-mcm-32.icp.local
# ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.180  icp-mcm-32.icp.local


今回の環境は全てを1台でまかなうため、1台のエントリのみを追記しています。


Pythonのインストール確認

Knowledge Center

Pythonが必要になるので、インストールされていることを確認します。

python --version


時刻の同期

Knowledge Center

複数のノードで構成する場合は時刻を同期する必要があります。
手順上はNTPでの同期が可能となっていますが、今回は Chrony で構成されていることを確認します。

# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since 金 2019-06-14 12:11:53 JST; 2 days ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
 Main PID: 7010 (chronyd)
    Tasks: 1
   Memory: 76.0K
   CGroup: /system.slice/chronyd.service
           └─7010 /usr/sbin/chronyd

 6月 14 12:11:53 icp-mcm-32.icp.local systemd[1]: Starting NTP client/server...
 6月 14 12:11:53 icp-mcm-32.icp.local chronyd[7010]: chronyd version 3.2 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SECHASH +SIGND +... +DEBUG)
 6月 14 12:11:53 icp-mcm-32.icp.local chronyd[7010]: Frequency -22.606 +/- 0.053 ppm read from /var/lib/chrony/drift
 6月 14 12:11:53 icp-mcm-32.icp.local systemd[1]: Started NTP client/server.
 6月 14 12:11:59 icp-mcm-32.icp.local chronyd[7010]: Selected source 133.243.238.163
 6月 14 12:12:00 icp-mcm-32.icp.local chronyd[7010]: Selected source 133.243.238.244
 6月 17 00:39:45 icp-mcm-32.icp.local chronyd[7010]: Selected source 133.243.238.163
Hint: Some lines were ellipsized, use -l to show in full.


Dockerのインストール

Knowledge Center

Dockerを事前にインストールします。インストールに使用するファイルは事前にダウンロードし用意したファイルです。

  • IBM Cloud Private 3.2 Docker for Linux (x86_64) English
    • 部品番号: CC1W6EN
    • Size: 111MB
    • Date posted: 31 5 2019

複数台で構成する場合は事前(手動)インストール、自動的にインストールどちらでも構成は可能です。
詳細はKnowledge Centerをご確認ください。

今回は1台構成ですので、事前に手動でインストールします。

cd /root/
./icp-docker-18.06.2_x86_64.bin --install
systemctl enable docker
systemctl start docker


ICPインストール

ICPをインストールする手順です。

Docker Imageファイルの読み込み

Knowledge Center

ここでは事前にダウンロード、コピーした下記のファイルを使います。

  • IBM Cloud Private 3.2 for Linux (x86_64) Docker English
    • 部品番号: CC1W1EN  
    • Size: 10,201MB  
    • Date posted: 31 5 2019  

下記コマンドを実行してファイルを読み込みます。

cd /root/
tar xf ibm-cloud-private-x86_64-3.2.0.tar.gz -O | sudo docker load

※時間がかかります

ファイルを確認します。

# docker images
REPOSITORY                                      TAG                              IMAGE ID            CREATED             SIZE
ibmcom/icp-inception-amd64                      3.2.0-ee                         7bfbda77de25        3 weeks ago         1.07GB
ibmcom/mcm-api-amd64                            3.2.0                            31d264fa970c        3 weeks ago         148MB
ibmcom/mcm-klusterlet-amd64                     3.2.0                            31612377c197        3 weeks ago         293MB
ibmcom/icp-management-ingress-amd64             2.3.0                            44a21aa4ae07        3 weeks ago         561MB
ibmcom/icp-platform-header-amd64                3.2.0                            923bb12c5d41        3 weeks ago         399MB
ibmcom/icp-catalog-ui-amd64                     3.2.0                            8f05cbf2a670        3 weeks ago         268MB
ibmcom/mcm-ui-amd64                             3.2.0                            4738b8251378        3 weeks ago         368MB
ibmcom/mcm-ui-api-amd64                         3.2.0                            1b4c073e1bac        3 weeks ago         184MB
ibmcom/iam-policy-administration-amd64          3.2.0                            391d5a92f6e5        3 weeks ago         609MB
ibmcom/icp-web-terminal-amd64                   3.2.0                            f95426f58aff        3 weeks ago         832MB
ibmcom/icp-platform-api-amd64                   3.2.0                            22a9cf0ddb02        3 weeks ago         1.22GB
ibmcom/deployable-amd64                         3.2.0                            c98849d9e5b6        4 weeks ago         115MB
ibmcom/mcm-application-amd64                    3.2.0                            edb19fe8ace8        4 weeks ago         109MB
ibmcom/icp-platform-ui-amd64                    3.2.0                            84ecfd6c527e        4 weeks ago         322MB
ibmcom/iam-policy-decision-amd64                3.2.0                            8593f2a0f0ce        4 weeks ago         90.7MB
ibmcom/mcm-service-registry-amd64               3.2.0                            33e5253e5d11        4 weeks ago         106MB
ibmcom/grc-ui-amd64                             3.2.0                            586b76295743        4 weeks ago         315MB
ibmcom/minio-mc-amd64                           RELEASE.2019-04-03T17-59-57Z.1   f1f85cc957ab        4 weeks ago         261MB
ibmcom/minio-amd64                              RELEASE.2019-04-09T01-22-30Z.1   8a377ffc548d        4 weeks ago         289MB
ibmcom/icp-identity-manager-amd64               3.2.0                            ac62afda0220        4 weeks ago         229MB
ibmcom/mcm-compliance-amd64                     3.2.0                            c0a88760dcf8        4 weeks ago         460MB
ibmcom/icp-platform-auth-amd64                  3.2.0                            d2a5d45be251        4 weeks ago         804MB
ibmcom/search-collector-amd64                   3.2.0                            d0d43548ce0a        4 weeks ago         120MB
ibmcom/logging-pki-init-amd64                   2.2.0-f3                         963ccf877a15        4 weeks ago         645MB
ibmcom/mcm-operator-amd64                       3.2.0                            81d90af8d5e3        4 weeks ago         134MB
ibmcom/mcm-controller-amd64                     3.2.0                            138c701353d4        4 weeks ago         112MB
ibmcom/icp-redisgraph-amd64                     1.0.14                           06906ccb90e8        5 weeks ago         222MB
ibmcom/search-aggregator-amd64                  3.2.0                            2483f86b6645        5 weeks ago         118MB
ibmcom/draino-amd64                             0.1.1                            8c09acc5306f        5 weeks ago         44.9MB
ibmcom/node-problem-detector-amd64              v0.5.1                           ccd6e755b1f7        5 weeks ago         126MB
ibmcom/kubectl-amd64                            v1.13.5                          0e095c9d19b1        5 weeks ago         259MB
ibmcom/default-http-backend-amd64               1.5.1                            ac9ad2ce402e        5 weeks ago         209MB
ibmcom/metrics-server-amd64                     v0.3.1.1                         981d9944c685        5 weeks ago         243MB
ibmcom/coredns-amd64                            1.2.6                            41ba56a038f2        5 weeks ago         259MB
ibmcom/icp-identity-provider-amd64              3.2.0                            a945ed82b550        5 weeks ago         260MB
ibmcom/ma-file-annotator-amd64                  3.2.0                            1e9378e5e939        5 weeks ago         849MB
ibmcom/sas-base-amd64                           3.2.0                            5426af184cc8        5 weeks ago         849MB
ibmcom/ibmcloud-image-enforcement-amd64         0.2.1                            c02d293faf3e        5 weeks ago         244MB
ibmcom/mcm-weave-scope-amd64                    3.2.0                            ccd605b03abe        5 weeks ago         139MB
ibmcom/icp-mongodb-exporter-amd64               3.2.0                            103d5b1ea1a2        5 weeks ago         366MB
ibmcom/icp-initcontainer-amd64                  1.0.0-f3                         9c80451d2053        5 weeks ago         204MB
ibmcom/icp-memcached-amd64                      1.5.12-icp                       351e255d7fa0        5 weeks ago         264MB
ibmcom/system-healthcheck-service-amd64         3.2.0                            f53bb7444bdd        5 weeks ago         122MB
ibmcom/curl-amd64                               4.2.0-f3                         db09cc8e9b7f        5 weeks ago         221MB
ibmcom/icp-helm-repo-amd64                      3.2.0                            32452b7888f0        5 weeks ago         262MB
ibmcom/icp-iam-onboarding-amd64                 3.2.0                            168c7ba73f74        5 weeks ago         386MB
ibmcom/velero-amd64                             v0.11.0                          5479556ad928        5 weeks ago         142MB
ibmcom/icp-secret-watcher-amd64                 3.2.0                            b700909d1c73        5 weeks ago         116MB
ibmcom/hyperkube-amd64                          v1.13.5-ee                       6ef65d9fca2d        5 weeks ago         628MB
ibmcom/reg-crawler-amd64                        3.2.0                            c7de11520b33        5 weeks ago         1.04GB
ibmcom/live-crawler-amd64                       3.2.0                            ba9e1a80de72        5 weeks ago         1.01GB
ibmcom/weave-collector-amd64                    3.2.0                            3fbffe321d27        5 weeks ago         108MB
ibmcom/grc-ui-api-amd64                         3.2.0                            9451e4fe0b9b        5 weeks ago         181MB
ibmcom/nvidia-device-plugin-amd64               1.3                              606e62095e10        5 weeks ago         136MB
ibmcom/icp-image-manager-amd64                  2.2.5                            fd074bbc8a32        5 weeks ago         152MB
ibmcom/icp-cert-manager-webhook-amd64           0.7.0                            b946908a521f        5 weeks ago         150MB
ibmcom/icp-cert-manager-controller-amd64        0.7.0                            71eab1e42b7a        5 weeks ago         198MB
ibmcom/icp-cert-manager-cainjector-amd64        0.7.0                            f542781230d5        5 weeks ago         138MB
ibmcom/icp-cert-manager-acmesolver-amd64        0.7.0                            9822ff84189b        5 weeks ago         110MB
ibmcom/icp-filebeat-amd64                       5.5.1-f3                         dd16476aa50d        5 weeks ago         380MB
ibmcom/dashboard-controller-amd64               v1.1.0                           d703d855e8bf        6 weeks ago         35.7MB
ibmcom/kmsplugin-amd64                          3.2.0                            2507e10a11bb        6 weeks ago         95.5MB
ibmcom/fluentd-amd64                            v1.4.1-icp                       6f1b729a957a        6 weeks ago         309MB
ibmcom/icp-mongodb-install-amd64                3.2.0                            928fcedd0008        6 weeks ago         19.9MB
ibmcom/elasticsearch-plugin-searchguard-amd64   2.0.0-f3                         4ff0e0c66702        6 weeks ago         331MB
ibmcom/alert-rule-controller-amd64              v1.1.0                           f1af965b76a4        6 weeks ago         134MB
ibmcom/grafana-amd64                            5.2.0-f3                         d93651ccf931        6 weeks ago         336MB
ibmcom/searchguard-init-amd64                   2.0.1-f3                         68147bcc08e4        6 weeks ago         557MB
ibmcom/logstash-liveness-probe-amd64            1.0.2-f3                         05b31dea80e8        6 weeks ago         70.5MB
ibmcom/icp-logstash-amd64                       5.5.1-f3                         37ca0b7d27a2        6 weeks ago         902MB
ibmcom/icp-kibana-amd64                         5.5.1-f3                         c9dc59849690        6 weeks ago         745MB
ibmcom/indices-cleaner-amd64                    1.1.0-f3                         49468000f7fe        6 weeks ago         338MB
ibmcom/icp-elasticsearch-amd64                  5.5.1-f3                         a153c7759945        6 weeks ago         621MB
ibmcom/tiller-amd64                             v2.12.3-icp-3.2.0                1178f59455bb        6 weeks ago         154MB
ibmcom/icp-helm-rudder-amd64                    3.2.0                            eb81962c0b1c        6 weeks ago         110MB
ibmcom/icp-helm-api-amd64                       3.2.0                            401f30a6d7f2        6 weeks ago         205MB
ibmcom/metering-ui-amd64                        3.2.0                            04fac400e98d        6 weeks ago         441MB
ibmcom/metering-data-manager-amd64              3.2.0                            c415a2ddad5f        6 weeks ago         215MB
ibmcom/kms-pep-amd64                            3.2.0                            7aaeb5363df6        6 weeks ago         121MB
ibmcom/kms-onboarding-amd64                     3.2.0                            75a9d249a30a        6 weeks ago         136MB
ibmcom/kms-lifecycle-amd64                      3.2.0                            d0cdac0f6132        6 weeks ago         122MB
ibmcom/kms-persistence-amd64                    3.2.0                            c720b5c2b0df        6 weeks ago         125MB
ibmcom/kms-crypto-amd64                         3.2.0                            4a4e268b04e0        6 weeks ago         121MB
ibmcom/kms-api-amd64                            3.2.0                            8603ca2db4b4        6 weeks ago         120MB
ibmcom/icp-audit-service-amd64                  3.2.0                            e06a726497c3        6 weeks ago         204MB
ibmcom/ma-mcm-controller-amd64                  3.2.0                            823342b3a4be        6 weeks ago         40.2MB
ibmcom/registry-amd64                           2.6.2.4                          e3f692eb854c        6 weeks ago         284MB
ibmcom/process-ma-hf-amd64                      3.2.0                            0e7f2c73560d        6 weeks ago         689MB
ibmcom/ma-file-wl-gen-amd64                     3.2.0                            bdbf4fa13cd7        6 weeks ago         1.22GB
ibmcom/rootkit-annotator-amd64                  3.2.0                            af01468d8f7b        6 weeks ago         599MB
ibmcom/cos-indexer-amd64                        3.2.0                            5fd1ccffe5d8        6 weeks ago         907MB
ibmcom/usncrawler-amd64                         3.2.0                            45abd51f0903        6 weeks ago         162MB
ibmcom/secure-config-annotator-amd64            3.2.0                            6315ff6e5746        6 weeks ago         786MB
ibmcom/password-annotator-amd64                 3.2.0                            b9541d6c7720        6 weeks ago         658MB
ibmcom/compliance-annotator-amd64               3.2.0                            310b5e5a2797        6 weeks ago         725MB
ibmcom/vulnerability-annotator-amd64            3.2.0                            ed1a6b44e411        6 weeks ago         744MB
ibmcom/config-parser-amd64                      3.2.0                            bcb42091c7de        6 weeks ago         692MB
ibmcom/py-generic-indexer-amd64                 3.2.0                            d93faf78e54c        6 weeks ago         706MB
ibmcom/icp-audit-service-nr-amd64               3.2.0                            4e16f0bc598e        6 weeks ago         411MB
ibmcom/istio-proxyv2-amd64                      1.0.2.3                          c7870313c9d0        7 weeks ago         386MB
ibmcom/istio-proxy_init-amd64                   1.0.2.2                          6da5ea9248b7        8 weeks ago         122MB
ibmcom/istio-pilot-amd64                        1.0.2.2                          7cef95b2543b        8 weeks ago         290MB
ibmcom/istio-grafana-amd64                      1.0.2.2                          a8cf54903a32        2 months ago        284MB
ibmcom/kafka-amd64                              0.10.0.4                         7dcdd6710c8a        2 months ago        1.69GB
ibmcom/icp-storage-util-amd64                   3.2.0                            39f6d07ea4f0        2 months ago        100MB
ibmcom/nginx-ingress-controller-amd64           0.23.0                           c885a0010dfc        2 months ago        652MB
ibmcom/gluster-amd64                            v4.1.5.1                         c4e893bb3081        3 months ago        363MB
ibmcom/heketi-amd64                             v8.0.0.1                         13127dc55ac9        3 months ago        285MB
ibmcom/prometheus-amd64                         v2.8.0                           f57ed0abd85c        3 months ago        109MB
ibmcom/icp-mongodb-amd64                        4.0.6                            a3abd47e8d61        3 months ago        394MB
ibmcom/k8szk-amd64                              v5                               3158387c8090        3 months ago        711MB
ibmcom/calico-node-amd64                        v3.5.2                           c90e4b49722e        3 months ago        72.7MB
ibmcom/calico-cni-amd64                         v3.5.2                           1c5756b05a3a        3 months ago        83.6MB
ibmcom/calico-ctl-amd64                         v3.5.2                           11a8f7d2a6ab        3 months ago        39.8MB
ibmcom/calico-kube-controllers-amd64            v3.5.2                           9abd28f0ab06        3 months ago        50.5MB
ibmcom/service-catalog-service-catalog-amd64    v0.1.40-icp                      a7d502ea2470        4 months ago        48.3MB
ibmcom/kiali-amd64                              v0.8.0.1                         597f59b8441c        5 months ago        300MB
ibmcom/etcd-amd64                               3.2.24                           33bdcac177c2        8 months ago        220MB
ibmcom/jaegertracing-all-in-one-amd64           1.7                              7ad5d345bd8a        9 months ago        42.5MB
ibmcom/istio-galley-amd64                       1.0.2                            b8cfc0e19a91        9 months ago        65.8MB
ibmcom/istio-citadel-amd64                      1.0.2                            ca4050c9fed3        9 months ago        50.7MB
ibmcom/istio-mixer-amd64                        1.0.2                            d559bdcd7a88        9 months ago        64.5MB
ibmcom/istio-servicegraph-amd64                 1.0.2                            c36167d0817c        9 months ago        11.2MB
ibmcom/istio-sidecar_injector-amd64             1.0.2                            77e6870301bb        9 months ago        45.3MB
ibmcom/icp-vip-manager-amd64                    1.1                              a947d99712bc        9 months ago        23.6MB
ibmcom/keepalived-amd64                         1.2.24                           afe8d43fd5cf        9 months ago        4.75MB
ibmcom/ucarp-amd64                              1.5.2                            9e92ac65e1fe        9 months ago        7.84MB
ibmcom/statsd-amd64                             0.7.2.1                          63abfe933c79        9 months ago        1.23GB
ibmcom/cert-manager-amd64                       v0.3.1                           b8418de4aa2e        11 months ago       51.8MB
ibmcom/alertmanager-amd64                       v0.15.0-f3                       24ad3756845c        11 months ago       36.1MB
ibmcom/node-exporter-amd64                      v0.16.0-f3                       188af75e2de0        13 months ago       22.9MB
ibmcom/k8s-prometheus-adapter-amd64             v0.2.1.1                         4a3ba29699fa        14 months ago       52.1MB
ibmcom/kube-state-metrics-amd64                 v1.3.0-f3                        62a2d8cf4b55        14 months ago       35.6MB
ibmcom/configmap-reload-amd64                   v0.2.2-f3                        7a344aad0fdb        16 months ago       22.4MB
ibmcom/collectd-exporter-amd64                  v0.4.0-f3                        98678887c9cb        17 months ago       13.7MB
ibmcom/prom-statsd-exporter-amd64               v0.6.0                           304735eab4e4        17 months ago       14.1MB
ibmcom/elasticsearch-exporter-amd64             1.0.2-f3                         d767dc6ccfb2        17 months ago       9.2MB
ibmcom/pause-amd64                              3.1                              da86e6ba6ca1        18 months ago       742kB


インストールディレクトリの作成

Knowledge Center

Knowledge Centerと同様に下記のディレクトリを作成し、移動します。

mkdir /opt/ibm-cloud-private-3.2.0;  
cd /opt/ibm-cloud-private-3.2.0  


設定ファイルを抽出

Knowledge Center

Docker Imageから設定ファイルを抽出します。

sudo docker run -v $(pwd):/data -e LICENSE=accept \
ibmcom/icp-inception-amd64:3.2.0-ee \
cp -r cluster /data


クラスターノード間でSSHキーを共有する

Knowledge Center Knowledge Center

ブートノードからクラスタ内の全てのノードに接続するためにSSHキーを共有します。
SSHキーを使う方法以外にパスワード認証を使用することも可能です。

本環境では1台構成のため、下記のコマンドを実行します。

ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N ""
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.100.180
cp ~/.ssh/id_rsa ./cluster/ssh_key


各クラスターノードの情報を /cluster/hosts に追記

Knowledge Center

Knowledge Centerの内容を参考にICPを構成するノードの情報を追記します。
本環境は1台で全てを構成するの下記のようになります。


vi /opt/ibm-cloud-private-3.2.0/cluster/hosts

[master]
192.168.100.180

[worker]
192.168.100.180

[proxy]
192.168.100.180

#[management]
#4.4.4.4

#[va]
#5.5.5.5


ファイルの移動

Knowledge Center

事前にダウンロード、コピーした下記のファイルを使います。


- IBM Cloud Private 3.2 for Linux (x86_64) Docker English
- 部品番号: CC1W1EN - Size: 10,201MB - Date posted: 31 5 2019

このファイルを //cluster/imagesに移動します。


mkdir -p mkdir -p /opt/ibm-cloud-private-3.2.0/cluster/images/ 
mv /root/ibm-cloud-private-x86_64-3.2.0.tar.gz /opt/ibm-cloud-private-3.2.0/cluster/images/


クラスターのカスタマイズ

Knowledge Center config.yaml を編集し、クラスタをカスタマイズします。
編集対象のファイルは /opt/ibm-cloud-private-3.2.0/cluster/config.yaml です。 各設定はファイルの中身のみ記載します。


パスワード規則の無効化

Knowledge Center

デフォルトではパスワードの複雑性の規則が設定されているので無効化します。


## 省略 ##

## Advanced Settings
default_admin_user: admin
# default_admin_password:
# ansible_user: <username>
# ansible_become: true
# ansible_become_password: <password>
## Add password rule
password_rules:
 - '(.*)'

## 省略 ##


デフォルトパスワードの指定

Knowledge Center

デフォルトログインユーザー admin のパスワードを指定します。
指定するパスワードは admin です。


 ## 省略 ##

 ## Advanced Settings
default_admin_user: admin
# default_admin_password:
default_admin_password: admin  ##追記
# ansible_user: <username>
# ansible_become: true
# ansible_become_password: <password>
## Add password rule
password_rules:
- '(.*)'

 ## 省略 ##


Multicloud Manager の有効化

Knowledge Center

ICP3.2からMulticloud Managerが含まれる形で構成され、有効化するだけで利用可能となりました。
今回はICPインストール時に Multicloud Manager を有効化する設定を行います。

## 省略 ##

## Clean metrics indices in Elasticsearch older than this number of days
# metrics_max_age: 1

## Clean application log indices in Elasticsearch older than this number of days
# logs_maxage: 1

## Set to false if user wants to install the full functionality of IBM Multicloud Manager hub
# single_cluster_mode: true
## 追記ここから
single_cluster_mode: false  

multicluster-hub:
 etcd:
   persistence: true
   localPath: /var/lib/etcd-mcm
## 追記ここまで

## Istio addons security Settings
## If user wants to configure Istio addons securty settings

## 省略 ##


Multicloud Manager用の etcd ディレクトリを作成します。
Management Nodeが複数ある場合は全てのノード上で作成します。
本環境は1台構成ですので、1台に作成します。


mkdir -p /var/lib/etcd-mcm


ICPをManaged Clusterとして登録

Knowledge Center

ICPをインストールする際にMulticloud Manager配下(管理対象)として登録することもできるようになりました。
今回はICPは1クラスター(且つ1台構成)ですので、自分自身を管理するように構成します。

multicluster-endpointを有効にします。

## 省略 ##

management_services:
  istio: disabled
  vulnerability-advisor: disabled
  storage-glusterfs: disabled
  storage-minio: disabled
  platform-security-netpols: disabled
  node-problem-detector-draino: disabled
  # multicluster-endpoint: disabled
  multicluster-endpoint: enabled

## 省略 ##


ICPクラスター情報を指定します。
※config.yamlの最下部にコメントアウトされた下記設定があるので、その下に下記内容を追記する

multicluster-endpoint:
  global:
    clusterName: "managed-cluster"
    clusterNamespace: "ns-managed-cluster"
  clusterLabels:
    environment: "Dev"
    region: "US"
    datacenter: "toronto"
    owner: "marketing"
  operator:
    bootstrapConfig:
      hub0:
        name: hub0
        secret: kube-system/klusterlet-bootstrap
      hub1:
        name: null
        secret: null
  klusterlet:
    host: null
  prometheusIntegration:
    enabled: true
  policy:
    cemIntegration: false
  topology:
    enabled: true
  serviceRegistry:
    enabled: true
    dnsSuffix: "mcm.svc"
    plugins: "kube-service"


インストール前チェック

Knowledge Center

下記コマンドを実行しインストール前のチェックをします。

cd /opt/ibm-cloud-private-3.2.0/cluster/
sudo docker run --net=host -t -e LICENSE=accept \
-v "$(pwd)":/installer/cluster ibmcom/icp-inception-amd64:3.2.0-ee check


チェック完了時のログ

PLAY RECAP  

192.168.100.180            : ok=58   changed=34   unreachable=0    failed=0

Playbook run took 0 days, 0 hours, 1 minutes, 25 seconds


完了後、エラーが出ていないことを確認してください。


インストール

Knowledge Center

チェックに問題がなければインストールを実行します。  

cd /opt/ibm-cloud-private-3.2.0/cluster/
sudo docker run --net=host -t -e LICENSE=accept \
-v "$(pwd)":/installer/cluster ibmcom/icp-inception-amd64:3.2.0-ee install


インストール完了時のログ

PLAY RECAP  

192.168.100.180           : ok=167  changed=97   unreachable=0    failed=0  
localhost                  : ok=373  changed=195  unreachable=0    failed=0  

POST DEPLOY MESSAGE    ************************************************************  

The Dashboard URL: https://192.168.100.180:8443, please use credentials in config.yaml to login.    

Playbook run took 0 days, 0 hours, 40 minutes, 5 seconds  



管理コンソールへのアクセス

管理コンソールにアクセスします。インストールを実行したコンソール上に管理コンソールのURLが記載されています。

  • https://192.168.100.180:8443
    • user: admin  
    • password: admin  

141925


Multicloud Managerを有効化している場合はMulticloud ManagerのUIが表示されます。
有効化していない場合はICPの管理UIが表示されます。

142000


Multicloud Managerが正常に動作しているか確認をしていきます。

Multicloud Managerの稼動確認

Multicloud Managerとして稼動しているか確認します。

デプロイメントの稼動確認

Multicloud Managerのデプロイメントが正常に動作しているか確認します。
管理コンソールのメニューから[ローカル・クラスター]-[ローカル・クラスターの管理]に移動します。

ICPの管理画面が開きます。メニューから[ワークロード]-[デプロイメント]を開きます。

160830


multicluster-hub- から始めるエントリが全て使用可能のステータスが1になっている事を確認します。


管理対象ICPクラスターの登録確認

管理対象としてICPクラスターを登録するよう設定しましたが、Multicloud Managerからも参照できる事を確認します。


デプロイメントの稼働確認

管理コンソールのメニューから[ローカル・クラスター]-[ローカル・クラスターの管理]に移動します。

ICPの管理画面が開きます。メニューから[ワークロード]-[デプロイメント]を開きます。

160812_2


multicluster-endpoint- から始めるエントリが全て使用可能のステータスが1になっている事を確認します。

ICPクラスター情報の確認

Multicloud Managerの管理コンソールを開きます。

142000_2


メニューから クラスター を開きます。local clusterとしてエントリされていることが確認できます。

161432_2


161445


また、メニューから 概説 を開きます。こちらでは管理しているKubernetes クラスターのステータスを一覧で見ることができます。 現在はICPクラスターのみになりますので、ICPクラスター1台の情報が表示されています。

61522



以上になります。
これまでのバージョンから大きくインストール方法が変更されていませんがメイン機能の一つである、 Multicluster Managerが同梱され、気軽に構成できるようになったりしています。

また、今回は各設定の説明の前に Knowledge Center のリンクをつけてみました。 IBM Knowledge Center上の該当部分になりますので、ぜひ参照してみてください。

すずきけ

2019/05/22

IBM Multicloud Managerの資料を公開しました

みなさま、こんにちは。

これまで IBM Cloud Privateのインストールや付属ソフトウェアのインストール方法などなどご紹介してきましたが、今回IBM Cloud Private上で稼働する IBM Multicloud Manager について製品の説明と実際に環境を構築し、本当にハイブリッド/マルチクラウドな環境で稼働させることができるか?を検証し、資料として公開させていただくことになりました。  

インストールに関しての記事は公開させていただいておりましたが、バージョンも変わり機能面も強化されてきておりますのでぜひご覧いただければと思います。  

・ハイブリッド/マルチクラウド時代に欠かせない、理想的なKubernetes運用の秘訣

・検証:Kubernetesのオーケストレーション強化でマルチクラウドはどう変わるか

以上になります。ありがとうございました。

すずきけ

2019/02/18

本当のMulti Cloud Manager (ver 3.1.2)

みなさん、こんばんは。こんにちは。鈴木です。

ひたすらIBM Cloud Private関連の内容を投稿していますが、変わらずその内容です。

今現在、IBM Think 2019が行われており、これまでいろいろを投稿させていただいているMultiCloud Managerについて新バージョン(ver 3.1.2)がリリースされました。 今回は速報でサクッとご説明したいと思います。

  • Azure,AWS,GoogleのKubernetes環境に対応

20190213_234743958_ios


画像のように、IBM MultiCloud Managerで他社製のクラウドの管理もできるようになります。 設定としては、各クラウドのKubernetes上に Klusterlet という管理エージェントとなるコンテナーをデプロイする必要があります。

実際に管理している画面はこちら。

20190213_234748306_ios


実は、AWSやGKSなどは自動で判別はしてくれませんが、タグをつけることができるので、ユーザーごとに管理単位ごとにタグ付けしていただくことで、管理に柔軟性を持つことができます。


  • 検索の実行 これまでのMultiCloud Managerでは複数クラスター(これまではICPとIKSでしたが)の管理をしている場合に、どこにどのPodがあるかなどの検索の手段がありませんでした。 しかし、今回のバージョンでは Search の機能が追加されており、Podなどの検索がサクッとできるようになっています。

20190213_235540541_ios



  • Dash boardからのドリルダウン 地味ですが、管理者には素敵な機能です。
    これまでは、Dash boardの一覧で問題があったホストなどがあっても、Dash board上からはドリルダウンできない場所もありました。 今回のバージョンでは、Dashboardの一覧から問題のあるHostなどに対して、すぐにドリルダウンできるようにインターフェースが改良されています。


  • インストールに関して IBM MultiCloud Manager 3.1.2が最新になりますが、これを使う場合にはICP3.1.2が必要になります。
    ICP3.1.2のインストールもMultiCloud Managerのインストールも試していませんが、MultiCloud ManagerのKulusterletについては 提供時のファイル名が大きく変わっていましたので、手順の再確認をする予定です。
    (現地でSEに確認する限り、方法は変わっていないようですが・・・)


インストールについては改めて弊社で検証後、記事として投稿させていただきますのでお待ちください。


IBM Knowledge Centerではすでにドキュメントが公開されています。

ICP 3.1.2の新機能
https://www.ibm.com/support/knowledgecenter/SSBS6K_3.1.2/getting_started/whats_new.html

MCM3.1.2の新機能
https://www.ibm.com/support/knowledgecenter/SSBS6K_3.1.2/mcm/getting_started/whats_new_mcm.html



以上となります。 さらっとですが、これまで どこまで対応するの?MultiCloud Manager という部分がやっと見えてきました。

トライアル等、デモ等ご要望がございましたら是非ご連絡ください。

すずきけ

2019/02/01

IBM Cloud Private 3.1.1 AD連携機能を試してみる

みなさん、こんにちは。

今回はユーザー連携部分のお話です。
当然、この手の製品の管理コンソールですとユーザーの作成はローカルとLDAPと連携する方法があり、ICPも同様です。

LDAP連携機能では、多くの皆さんが使われているであろう Microsoft Active Directory との連携も対応していますので、ちょっとセットアップしてみたいと思います。



環境

ICP環境は前回、前々回などと同じ環境です。
- ICP Master server 1台
- ICP Worker server 1台

今回はActive Directoryと連携するので、下記のActive Directoryを用意しています。


AD 環境

20190131_14h28_03_2


Active Directory ユーザーとコンピューター の画面はこのようになっています。

20190129_17h32_37



今回のゴール

下記のことができるように確認します。

  1. OU=icp のユーザーが ICPのユーザーとして登録できること
  2. ADのセキュリティグループ icpgroup に所属しているユーザーでログインができること
  3. 登録したユーザーには特定のリソースしか表示、利用できないこと


ADを登録

ICPでのLDAPの登録は管理コンソールからできます。

管理コンソールにログインして、

20190129_17h36_35


メニューの[管理]-[IDおよびアクセス]に移動します。

20190129_17h36_45


接続の作成をクリックします。

20190129_17h37_07a


下記の内容を参考に設定します。
LDAP認証の部分は Distinguished Name(DN) で書く必要があります。

20190131_14h28_15


20190129_18h00_45s


DNがわからないという方は、下記のようにコマンドプロンプトから確認したユーザーを入れてみてください。

20190129_18h24_06


入力後、接続の確認をして、保存します。


チームの登録

次にチームを登録します。
チームに対して、AD上のユーザーやセキュリティグループを割り当てたり、利用可能なリソースの割り当てを行います。

メニューの[管理]-[IDおよびアクセス]-[チーム]に移動します。
チームの作成をクリックします。

20190129_18h25_20


ポップアップウインドウで下記を参考に入力します。

20190131_14h28_25


20190130_10h49_32


作成をクリックします。
チームが登録されることが確認できます。


チームに登録されているセキュリティグループの確認

さきほどのチーム登録時に指定したセキュリティグループicpgroupが登録されていることと、グループに登録されているユーザーもICP上で確認可能か見てみます。

管理コンソールで作成したチーム名をクリックします。
今回であれば、icp-teamです。

20190129_18h49_14


チームに登録されているグループの一覧が表示されます。
まだ1グループしか登録していないので、icpgroupのみが登録されています。
icpgroupをクリックします。

20190129_18h50_51


icpgroupに所属しているユーザーの一覧が表示されます。

20190130_10h52_36



セキュリティグループに登録されているユーザーのログイン確認

セキュリティグループに登録されているユーザーもICP上で確認できましたので、そのユーザーでICP管理コンソールにログインできるか試してみます。

今開いている管理コンソールをログオフするか、別の種類のWebブラウザまたはシークレットモードで起動したWebブラウザを起動します。
※あとの工程上、ログオフせずに別のWebブラウザまたはシークレットモードのWebブラウザのほうが都合がよいです。

ログイン画面で先ほど確認したセキュリティグループに登録されているユーザーでログインします。
今回は user2 を利用します。

20190130_10h53_32


ログインでエラーがでることもなく、管理画面のようこそ画面が表示されることが確認できます。

20190130_10h57_13



チームにADユーザーを個別に登録

次に、作成済みのチームicp-teamにADユーザーを個別に登録してみます。

ICP管理コンソールを開き、adminでログインします。
メニューの[管理]-[IDおよびアクセス]-[チーム]に移動します。
その後、icp-teamに移動し、ユーザータブを表示します。
ユーザーの追加をクリックします。

20190130_10h57_45


下記を参考にユーザーを検索します。

20190131_14h30_18


検索結果が表示されていますので、今回はuser3を選択します。
このユーザーはセキュリティグループicp-teamには登録されていないユーザーです。
役割のカラムで役割をドロップダウンリストから選択できます。今回は管理者のまま、追加をクリックします。

20190130_10h58_27


ユーザーの一覧画面が表示され、ユーザー登録が完了していることが確認できます。


登録したユーザーでログインしてみる

登録したユーザーでICP管理コンソールにログインできるか確認してみます。

今開いている管理コンソールをログオフするか、別の種類のWebブラウザまたはシークレットモードで起動したWebブラウザを起動します。
※あとの工程上、ログオフせずに別のWebブラウザまたはシークレットモードのWebブラウザのほうが都合がよいです。

先ほど登録したuser3でログインします。

20190130_11h38_54


ログインでエラーがでることもなく、管理画面のようこそ画面が表示されることが確認できます。

20190130_11h39_08



リソースを見てみる

せっかくなので、user3で操作できるリソースを見てみます。

20190130_15h20_23


名前空間(name space)が割り当てられていないので操作ができません。
チームに対してリソースの割り当てを行います。


管理者アカウントでICP管理コンソールにログインし、メニューの[管理]-[IDおよびアクセス]-[チーム]に移動します。
その後、icp-teamに移動し、リソースタブを表示します。
リソースの管理をクリックします。

20190131_11h48_10


リソースの管理画面が表示されます。 今回は defaultibm-chartsにチェックを付け、保存します。

20190131_11h49_33

20190131_11h58_36


再度、user3でICP管理コンソールにログインします。
メニューの[ワークロード]-[デプロイメント]を開きます。

20190131_13h46_04


先ほどとは違い、エラーは表示されません。
実際にリソースが利用できるか確認してみます。
管理コンソール右上のカタログをクリックします。

20190131_13h46_04_2


検索画面に liberty と入力し、表示された結果から ibm-open-liberty を選択します。

20190131_13h46_36


構成をクリックし、下記のパラメーターを入力します。

20190131_14h28_58


記載のない設定は変更せず、インストール をクリックします。

20190131_13h55_14


Helmリリースの表示を開き、少し時間をあけてステータスを確認します。
デプロイメントのステータスの使用可能1になっており、ポッドのステータスもRunningになっていることが確認できました。

20190131_13h56_56


20190131_13h57_10


先ほどのHelmカタログからデプロイする際のターゲット名前空間のドロップリストはDefaultだけになっていましたので、user3ではdefault以外の名前空間のリソースに対しての権限を持っていないことも確認できました。




以上がAD連携の連携後の簡単な動作確認の方法でした。

NameSpace(名前空間)ごとに割り当てチームを決めることで、別のチームのNameSpaceへの影響も抑えられますし、そもそもユーザー管理をICP上でコツコツやるのは大変!という要望にもこたえられるかと思いますのでぜひ試してみてください。

現状の挙動として、ちゃんとAD上に存在していて、ICP上のチームに登録されているセキュリティグループにも所属しているADユーザーでもログインできない場合は、一度ICP上のADの登録画面で対象のADを編集で開き、再度保存してみてください。



今回も長々とありがとうございました。

すずきけ

2019/01/18

IBM Cloud Private 3.1.1 Workerを追加してみよう(Power Linux版)

みなさん、こんにちは。

Workerの追加のエントリで x86 Linux版とつけていましたが、このエントリのためでした。
先日、Power 9が搭載されている Newell が納品され、Redhat Enterprise Linuxがインストールされたタイミングで、こっそり借りることができたので、ICPのWorkerとして追加してしまいました。

追加方法は IBM Cloud Private 3.1.1 Workerを追加してみよう(x86 Linux版) とほぼ変わりません。
異なる点とテスト方法についてのみ書いていきます。

追加するNewell環境

環境は下記になります。


# hostnamectl
   Static hostname: Newell
         Icon name: computer
        Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  Operating System: Red Hat Enterprise Linux
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
            Kernel: Linux 4.14.0-49.el7a.ppc64le
      Architecture: ppc64-le

  
# python --version
Python 2.7.5  


IPアドレスは xxx.xxx.xxx.6 です。

手順概要

手順の大枠はx86 Linux版とほぼ変わりません。

    追加するノードでは下記の事を行います。
    1. 通信ポートの確認  
    2. SE Linux の無効化、Firewallの無効化  
    3. /etc/hostsを設定  
    4. 時刻の同期  
    5. Python のインストール(の確認)  
    6. Dockerのインストール  
    7. (後から作業) sshサービスの再起動  

    Master Serverで行う作業  
    実際のインストール作業については既存のMaster Serverから行います。  
    - SSH Keyのコピー
    - (後から作業) sshサービスの再起動  
    - バイナリーファイルの確認
    - Workerの追加 

異なる点は Power用のバイナリを用意する必要があります。

  • ICP本体
    IBM Cloud Private 3.1.1 for Power Linux LE (64-bit) Docker (CNZ4XEN )
    Size : 11,108MB

  • Docker
    IBM Cloud Private 3.1.1 Docker for Power Linux LE (64-bit) (CNXD3EN )
    Size : 108MB


Dockerのバイナリは追加するノードへのインストールで利用します。
ICPのPower用バイナリは /(installation_directory)/cluster/images に配置します。
下記がKnowledge Centerの情報です。

https://www.ibm.com/support/knowledgecenter/ja/SSBS6K_3.1.1/installing/add_node.html#worker

    Ensure that the installer for the platform that the new node runs on, is available in your //cluster/images directory.
    For a Linux® 64-bit node, you need the ibm-cloud-private-x86_64-3.1.1.tar.gz or ibm-cp-app-mod-x86_64-3.1.1.tar.gz file.  
    For a Linux® on Power® (ppc64le) node, you need the ibm-cloud-private-ppc64le-3.1.1.tar.gz or ibm-cp-app-mod-ppc64le-3.1.1.tar.gz or file.  
    For a IBM® Z worker node, you need the ibm-cloud-private-s390x-3.1.1.tar.gz file. 


Worker追加手順

今回は事前準備が終わった状態で、Master Server上にバイナリーファイルをコピーまでが終わった状態の想定でバイナリーファイルの確認から行います。

 
ls /opt/ibm-cloud-private-3.1.1/cluster/images ibm-cloud-private-ppc64le-3.1.1.tar.gz ibm-cloud-private-x86_64-3.1.1.tar.gz

Power用の ibm-cloud-private-ppc64le-3.1.1.tar.gz が配置されていることを確認します。


下記コマンドを実行し、Workerの追加を行います。
実行コマンドは x86 Linux版のときと全く同じです。

cd /opt/ibm-cloud-private-3.1.1/cluster
docker run -e LICENSE=accept --net=host \
-v "$(pwd)":/installer/cluster \
ibmcom/icp-inception-$(uname -m | sed 's/x86_64/amd64/g'):3.1.1-ee worker -l \
xxx.xxx.xxx.6 


動作確認


管理コンソール上で確認

管理コンソールのメニューから[プラットホーム]-[ノード]とたどっていただくと登録されているノードが表示されます。 ここでWorkerとして追加したノードが表示されていることを確認できます。

20190118_11h42_11a


アーキテクチャー部分が ppc64le となっているものがPowerのノードです。


ノードの動作確認

次に実際にPodが追加したWorker上にスケジュール(動作)するか確認してみます。
x86 Linuxの場合は仕込みをして確認しましたが、今回は仕込みをせずにHelmを利用する際にパラメーターを変更して対応します。

管理コンソール右上の カタログ をクリックします。 検索部分で Liberty といれると、Web Sphere LibertyOpen Liberty が表示されますので、 Open Liberty を選択します。

20190118_11h50_14a


Open Libertyの情報が表示されますので、構成 をクリックします。

20190118_11h50_21


パラメータを指定してデプロイします。

  • Helmリリース名 : 任意の名前
  • ターゲット名前空間 : Default
  • ポッドセキュリティー : 入力なし
  • 使用許諾条件 : チェックをつける
  • すべてのパラメーターを開く
    • Architecture scheduling preference
      -> ppc64le scheduling preference
      -> 3 - Most preferred


20190118_11h51_57a_2


すべて入力後、インストール を実行します。


ポップアップが表示されたら Helmリリースの表示 をクリックします。
Helmリリースのステータスが表示されます。
Containerの作成が完了するまで少し待ち、デプロイメント項目にリストされているデプロイメントをクリックします。
※今回であれば power-openliberty-test1 です。

20190118_11h55_17a


表示された画面の ポッド 部分を確認します。
ホストIPが PowerのWorker Nodeとなっていることを確認します。
この画面上では xxx.xxx.xxx.6になります。

20190118_11h56_24a


以上になります。
せっかくのPowerのWorkerですので、できる範囲で検証を公開していきたいと思っていますのでご期待ください。


ご案内

今回利用したPowerの機器(Newell)ですが、弊社の Networld ディープラーニング検証センターにて無料でご利用いただくことが可能です。

https://www.networld.co.jp/solution/ibm-hardware_nvidia_minsky/

Power8のMinskyとPower9のNewell どちらもありますので検証してみたいという方は是非ご連絡ください!もちろんIBM Cloud Private用途でなくても問題ありません!

すずきけ

続きを読む »

2019/01/17

IBM Cloud Private 全部GUIでやるOpen Libertyのテストデプロイ

今回はIBM Cloud Privateって構築してみたけど、アプリケーションの開発とかやらないし、この先どうしたらいいのかよくわからないな~という人のためにサクッとできるデプロイしたContainerが動作しているか確認する方法を書いていきたいと思います。
また、ポイントとしてはGUIでという部分です。ご存知の通り、ICPではKubernetesサービスが動いていますが、他のクラウドサービスとかですとコマンドベースで動かしていることが多そうです。
ただ、せっかく製品買ったし、GUIあるなら使いたい!ということでGUIをご案内します。

環境

定番の環境の情報です。
今回使ったのはICPクラスタ1台です。
作り方は IBM Cloud Private 3.1.1 インストール方法(RHEL編) で書いています!
※今回使う環境はICP 3.1.0 ですが、方法に変わりはありません。


構築する環境

2台のサーバーを使いICPをインストールします。

1台目:Master node (manager,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つ


デプロイするアプリケーション

今回は、OSSの Open Liberty をデプロイします。


手順概要

  1. 管理コンソールにログイン
  2. Helmカタログからデプロイするアプリケーション(Open Liberty)を選択
  3. パラメータを指定してデプロイ
  4. デプロイした情報を確認(接続ポート)
  5. Webブラウザーからアクセス確認

※ 今回、Open LibertyへのWebアクセスはHTTPで構成します。


作業手順


管理コンソールにログイン

管理コンソールにログインします。
ログインのURLは

https://(MasterサーバーIP):8443

です。

Helmカタログからデプロイするアプリケーション(Open Liberty)を選択

管理コンソール右上の カタログ をクリックします。

検索部分で Liberty といれると、Web Sphere LibertyOpen Liberty が表示されますので、 Open Liberty を選択します。

20190116_14h09_17a


Open Libertyの情報が表示されますので、構成 をクリックします。

20190116_14h10_05a


パラメータを指定してデプロイ

今回はテストですので、必要最低限の設定だけを行います。

  • Helmリリース名 : 任意の名前
  • ターゲット名前空間 : Default
  • ポッドセキュリティー : 入力なし
  • 使用許諾条件 : チェックをつける


設定完了後、インストールをクリックします。

20190116_15h01_15a


デプロイした情報を確認(接続ポート)

インストールをクリックすると下記のポップアップが開きます。

20190116_15h15_07


Helmリリースの表示をクリックします。
Helmでデプロイされた内容の一覧が表示されます。
デプロイ直後は稼働しきっていませんので、数分後に画面をリロードします。

20190116_15h16_21

20190116_15h16_34


正常に稼働している場合は上記の画像のようになります。
稼働しているかチェックするポイントはデプロイメント使用可能1となっていることと、Pod準備完了1/1となっていることです。
※稼働するまで少し時間がかかります。

20190116_15h16_34a


外部からデプロイしたOpen Libertyに接続するために必要な接続ポートを確認します。 サービスポートの値を確認します。

9443:30791/TCP

9443 はICP内部で接続する際に使用するポートで、外部から接続する場合は 30791 を使用します。

接続先のIPですが、サービスタイプ部分がNodePortになっています。
NodePortの場合はICPクラスタ内のすべてのNodeのIPアドレスとポートの組み合わせで接続ができます。

今回の環境の場合、下記の2台のサーバーがあります。

  • Master Server xxx.xxx.xxx.161
  • Worker Server xxx.xxx.xxx.164

この環境でNodePortは下記のどちらからもアクセスが可能です。

  • https://xxx.xxx.xxx.161:30791/
  • https://xxx.xxx.xxx.164:30791/


Open Libertyに接続してみる

Webブラウザからアクセスしてみます。

http://(ICPクラスター内のNodeのIP):(確認したポート)/

にアクセスします。

Open Libertyのサンプルページが表示されます。

20190116_15h25_25


  • Master Server(IP末尾161)に接続

20190116_15h25_40b


  • Worker Server(IP末尾164)に接続

20190116_15h25_48b


以上です。
ICPのHelmのカタログを使うことであっさりとOpen Libertyを動作させることができました。
IBM社が用意しているものでも数多くありますので、ぜひいろいろ試してみてください。

ICP上でWAS LibertyをガッツリつかってWebアプリケーションを使いたい方は、WAS Liberty on IBM Cloud Private 利用ガイドがIBM様からリリースされていますので是非読んでみてください。

(毎度の)最後に

IBM Cloud PrivateのPoC環境の貸し出しも実施しています。

https://www.networld.co.jp/product/ibm-hardware/trial/

すずきけ

2019/01/16

IBM Cloud Private 3.1.1 Workerを追加してみよう(x86 Linux版)

WorkerはKubernetesでいうところの Node になります。
Knowledge centerは下記のように説明されています。

ワーカー・ノードは、タスクを実行するためのコンテナー化された環境を提供するノードです。 要求の増加に伴い、ワーカー・ノードをクラスターに簡単に追加して、パフォーマンスおよび効率性を向上させることができます。 1 つのクラスターには任意の数のワーカー・ノードを含めることができますが、少なくとも 1 つのワーカー・ノードが必要です。

"簡単に追加"とあるのでさっそく簡単に追加してみましょう。

既存環境

VAの追加と同じ環境です。
サーバースペックは同じもので2台のサーバーがあります。

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

Master ServerとWorker Serverが1台ずつあります。 ICPのバージョンは3.1.1になります。

以前、投稿した手順は3.1.0になります。3.1.1でも同様の手順でインストールできます。
また、この手順は3.1.0でも同様の作業内容になりますので、記載されているバイナリ名や、設定名等、 3.1.1 となっている部分は 3.1.0 と読み替えて手順を実施してください。

事前準備

WorkerやVAにするノードを準備します。
今回も既存環境と同じスペックのRHELの仮想マシンと同じものを用意します。

※Workerは x86_64 のLinuxサーバーだけでなく、Linux on Power や Linux on IBM Z でも動作させることができます。 動作環境の詳細は下記をご参照ください。
https://www.ibm.com/support/knowledgecenter/en/SSBS6K_3.1.1/supported_system_config/supported_os.html

追加するノード

追加するノードは下記になります。

Host name IP 作業ユーザー 追加するノードの種類
icp-poc-workeradd1.icp.local xxx.xxx.xxx.167 root Worker

追加ノードで行う作業

追加ノードで行う作業はVAの追加と同じです。 追加するノードでは下記の事を行います。

  1. 通信ポートの確認
  2. SE Linux の無効化、Firewallの無効化
  3. /etc/hostsを設定
  4. 時刻の同期
  5. Python のインストール(の確認)
  6. Dockerのインストール
  7. (後から作業) sshサービスの再起動

通信ポートの確認

下記コマンドを実行してなにも表示されないことを確認します。
ss -tnlp | awk '{print $4}' | egrep -w "8001|8500|3306"

SE Linux の無効化、Firewallの無効化

SE LinuxとFirewallを無効化します。
SE Linuxは /etc/selinux/config をdisableに変更します。
Firewallは下記のコマンドを実行します。

systemctl stop firewalld systemctl disable firewalld

/etc/hostsを設定

クラスターに存在するすべてのノード(Master/Worker/VA/Management/Proxy)を /etc/hosts に指定します。

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 xxx.xxx.xxx.161 icp-poc-master1.icp.local
xxx.xxx.xxx.164 icp-poc-worker1.icp.local

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 xxx.xxx.xxx.161 icp-poc-master1.icp.local
xxx.xxx.xxx.164 icp-poc-worker1.icp.local
xxx.xxx.xxx.167 icp-poc-workeradd1.icp.local

 
時刻の同期

追加するノードと既存のサーバー群と時刻の差が出ないように時刻同期を行います。
時刻同期方法は各Linuxのドキュメントをご確認ください。

RHELで時刻、時刻同期の設定の確認は下記コマンドでできます。

# timedatectl
Local time: Tue 2019-01-08 11:01:18 JST
Universal time: Tue 2019-01-08 02:01:18 UTC
RTC time: Tue 2019-01-08 02:01:17
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
 

Python のインストール(の確認)

Pythonがインストールされていることを確認します。

# python --version
Python 2.7.5

サポートされているPythonのバージョンは、2.6,2.7,3.5以上になります。

Dockerのインストール

Dockerをインストールします。DockerのバイナリーはIBM社から提供されています。

  • IBM Cloud Private 3.1.1 Docker for Linux (x86_64) (CNXD2EN )
    size: 141MB

このファイルをノード上にコピーし実行します。

cd /(ファイルをコピーした場所) ./icp-docker-18.03.1_x86_64.bin --install

※このとき、内部で別のコンポーネントをyumでインストールします。

dockerが自動起動されるように設定します。

systemctl start docker
systemctl enable docker

(後から作業) sshサービスの再起動

既存のMaster ServerからSSH Keyをコピーした後にSSH Serviceの再起動を行います。
後述の手順内で再度ご案内します。


Master Serverで行う作業

実際のインストール作業については既存のMaster Serverから行います。

  • SSH Keyのコピー
  • (後から作業) sshサービスの再起動
  • バイナリーファイルの確認
  • Workerの追加

SSH Keyのコピー

Master Server上からノードにSSH Keyをコピーします。

ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<node_ip_address>

今回は、下記の情報を使ってコマンドを実行します。

user node_ip_address
root xxx.xxx.xxx.167
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.167

!!!ノードで作業!!! sshサービスの再起動

ノード上でSSH Serviceを再起動します。

systemctl restart sshd 

バイナリーファイルの確認

下記にLinux用のバイナリーファイルがあることを確認します。
インストールパスを変更している場合は適宜読み替えてください。

Path File name
/opt/ibm-cloud-private-3.1.1/cluster/images ibm-cloud-private-x86_64-3.1.1.tar.gz

コマンド

# ls /opt/ibm-cloud-private-3.1.1/cluster/images
ibm-cloud-private-x86_64-3.1.1.tar.gz

Workerの追加

Workerの追加は下記のコマンドを参考に実行します。

docker run -e LICENSE=accept --net=host \
-v "$(pwd)":/installer/cluster \
ibmcom/icp-inception-$(uname -m | sed 's/x86_64/amd64/g'):3.1.1-ee worker -l \
ip_address_workernode1,ip_address_workernode2

IPアドレス xxx.xxx.xxx.167 をWorkerとして追加しますので、実行するコマンドは下記になります。

cd /opt/ibm-cloud-private-3.1.1/cluster
docker run -e LICENSE=accept --net=host \
-v "$(pwd)":/installer/cluster \
ibmcom/icp-inception-$(uname -m | sed 's/x86_64/amd64/g'):3.1.1-ee worker -l \
xxx.xxx.xxx.167

これでWorkerの追加は完了です!追加の流れはVAの追加とほとんど変わりません。VAの追加よりも簡単です。
事前準備さえできればすぐ追加できます。

次に本当に追加されているかと動作を簡単に確認してみたいと思います。

管理コンソール上での確認

管理コンソールのメニューから[プラットホーム]-[ノード]とたどっていただくと登録されているノードが表示されます。
ここでWorkerとして追加したノードが表示されていることを確認できます。

20190111_17h21_59a

動作確認

次に実際にPodが追加したWorker上にスケジュール(動作)するか確認してみます。
※ KubernetesではPodのスケジューリングはWorker上の負荷を考慮して自動的に行われます。
このテストでは新しいWorkerに配置されてほしいので、Podが特定のWorkerに配置されるように仕込みをしたyamlファイルでデプロイします。

ラベルの作成

追加した Worker にラベルを付与し、そのラベルをもつWorkerに対してPodをデプロイするように指定します。

ICP MasterサーバーにSSHでログインし、Kubernetes Clusterにログインします。

# cloudctl login -a https://mycluster.icp:8443 --skip-ssl-validation
Username> admin
Password>
Authenticating...
OK
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. microclimate-pipeline-deployments
8. microclimate-space
9. platform
10. services
Enter a number> 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

※クラスター名を mycluster.icpから変更している場合は変更した値で実行してください。

Workerのリストを確認します。

# kubectl get nodes
NAME STATUS ROLES AGE VERSION
xxx.xxx.xxx.161 Ready etcd,management,master,proxy 5d v1.11.3+icpee
xxx.xxx.xxx.164 Ready worker 5d v1.11.3+icpee
xxx.xxx.xxx.167 Ready worker 3d v1.11.3+icpee

追加したWorkerは xxx.xxx.xxx.167 になりますので、このNodeに対してラベルを付与します。
付与するラベルは workertest=deploy としています。

# kubectl label node xxx.xxx.xxx.167 workertest=deploy

ラベルを確認します。

# kubectl -L=workertest get nodes
NAME   STATUS ROLES AGE VERSION WORKERTEST
xxx.xxx.xxx.161 Ready etcd,management,master,proxy 5d v1.11.3+icpee  
xxx.xxx.xxx.164 Ready worker 5d v1.11.3+icpee  
xxx.xxx.xxx.167 Ready worker 5d v1.11.3+icpee deploy

xxx.xxx.xxx.167 にラベルの値 deploy が付与されていることを確認します。

yamlファイルの作成

次にyamlファイルを2つ作成します。

  • ファイル名 : test-all.yaml
  • ファイル名 : test-add_only.yaml

それぞれの用途は下記になります。

ファイル名 用途
test-all.yaml すべてのWorkerを対象としてPodをデプロイ
test-add_only.yaml 追加したWorkerに対してだけPodをデプロイ

この2つのYamlを使って、追加したWorkerが利用できることと、既存のWorkerと一緒に動作し分散されることを確認します。

test-all.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: allnode-deployment
  spec:
    replicas: 5
    selector:
      matchLabels:
        app: allnode
    template:
      metadata:
        labels:
          app: allnode
      spec:
        containers:
          - name: nginx-container
            image: nginx:latest
            ports:
              - containerPort: 80

test-add_only.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: workeraddtest-deployment
spec:
  replicas: 5
  selector:
    matchLabels:
      app: addworkeronly
  template:
    metadata:
    labels:
      app: addworkeronly
    spec:
      containers:
        - name: nginx-container
          image: nginx:latest
          ports:
            - containerPort: 80
      nodeSelector:
        workertest: deploy

deploymentの作成

yamlファイルからDeploymentを作成します。

NameSpace(名前空間)を default に変更します。

# cloudctl login -a https://mycluster.icp:8443 -n default --skip-ssl-validation

Username> admin
Password>
Authenticating...
OK
Targeted account mycluster Account (id-mycluster-account)
Targeted namespace default
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

PodやDeploymentが存在しないことを確認します。

# kubectl get deployments
No resources found.
# kubectl get pods
No resources found.

追加したWorkerにデプロイ

追加したWorkerにだけデプロイするyaml (test-add_only.yaml)をデプロイします。

# kubectl apply -f test-add_only.yaml
deployment.apps/allnode-deployment created

Deploymentが作成されていることを確認します。

# kubectl get deployment

20190115_14h27_35

Podを確認します。

# kubectl get pods -o wide

20190115_14h28_19a

NODEの値がすべて xxx.xxx.xxx.167 となっており、すべてのPodが追加されたWorker上で動作しています。

すべてのWorkerにデプロイ

最後にデプロイするWorkerを指定していない yamlファイルからDeploymentを作成し、ICPが自動でWorkerを分散してPodを作成することを確認します。

# kubectl apply -f test-all.yaml
deployment.apps/allnode-deployment created

Deploymentが作成されていることを確認します。

# kubectl get deployment

20190115_14h29_35

Podを確認します。

# kubectl get pods -o wide

20190115_14h29_52a_2

allnode-で始まるPodがすべてのWorkerにデプロイする設定としたPodです。
NODEの値に xxx.xxx.xxx.164 がありますので、既存であったWorkerと追加したWorkerどちらも利用してデプロイしていることが確認できます。

今回は以上になります。
後半の動作確認でいくつか実施していることがありますが、Workerの追加だけであればかなりシンプルに実施できることを実感していただけるかと思います。

動作確認で利用したyamlファイルは下記になります。  

(毎度の)最後に

IBM Cloud PrivateのPoC環境の貸し出しも実施しています。

https://www.networld.co.jp/product/ibm-hardware/trial/

Worker追加用の仮想マシンの用意もできますのでぜひぜひご利用ください。

すずきけ

2019/01/15

IBM Cloud Private 3.1.1 Microclimateのインストール

皆さん、CI/CDツールは何を利用されていますでしょうか?
IBM Cloud Privateはエンドツーエンドの開発環境であるMicroclimateの動作環境として対応しています。

https://Microclimate-dev2ops.github.io/

Microclimate is an end to end development environment that lets you rapidly create, edit, and deploy applications. Applications are run in containers from day one and can be delivered into production on Kubernetes through an automated DevOps pipeline using Jenkins. Microclimate can be installed locally or on IBM Cloud Private, and currently supports Java, Node.js, and Swift.

IBM Cloud Private上のHelmのカタログにもMicroclimateがあるか見てみますと・・・

20190110_13h32_22a

ありました!

あるなら動かしてみよう!の精神で今回はMicroclimateをインストール(デプロイ)してみます。

 

参考URL:

https://www.ibm.com/support/knowledgecenter/ja/SSBS6K_3.1.0/featured_applications/Microclimate.html
https://github.com/IBM/charts/blob/master/stable/ibm-Microclimate/README.md

 

テストした環境

サーバーは全部で3台用意します。

  • ICP Master Server
  • ICP Worker Server
  • NFS Server

 

Master / Worker Serverのスペック

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

 

NFS Serverの領域

Persistent Volumeとして20GB以上ご用意ください。
今回はCent OSを用意し、NFS Serverとして稼働させています。

ICP Version

ICPのバージョンは3.1.1になります。

ICPの構築

こちらを参考に構築してください。

Microclimateインストール手順概要

  1. Name Space の作成
  2. Microclimate PiplineのName Spaceの作成
  3. Cluster_CA_Domainの確認
  4. Cluster Image Policyの作成
  5. Microclimate registry secret の作成
  6. Helmで利用するSecretの作成
  7. Microclimate pipeline secretの作成
  8. Ingress Domain Name の作成(今回はHostsで逃げます)
  9. Helmからインストール
  10. Persistent Volumeの作成

github上のドキュメントでは、9.と10.が逆ですが、動きがわかりやすいようにこの順番でインストールを行っていきます。

 

 

Install !!

コマンド実行の作業はMaster Server上にSSH等でログインし実行します。

 

1. Name Space の作成

ICPではDefaultというNameSpace(ICPのGUI上では「名前空間」)が用意されていますが、Microclimate用に用意する必要があります。
GUI、コマンドどちらからでも設定できます。

NameSpace名は microclimate-space としています。

GUI

GUIから作成する場合は、ICP管理コンソールにログインし、メニューの[管理]-[名前空間]から作成します。
名前は任意となり、「ポッド・セキュリティ・ポリシー」では ibm-restricted-psp を選択してください。

コマンド

コマンドで設定する場合は以下になります。

※最初にICPクラスタにログインします。

cloudctl login -a https://<your-cluster-ip>:8443 -n kube-system --skip-ssl-validation 

ユーザー名: admin パスワード: admin

次に作成のコマンドを実行します。

kubectl create namespace <namespace name>

今回は名前を microclimate-space にします。

kubectl create namespace microclimate-space

作成したNameSpaceで作業するように変更します。

cloudctl login -a https://<your-cluster-ip>:8443 -n microclimate-space --skip-ssl-validation


2. Microclimate PiplineのName Spaceの作成

1.と同様にNameSpaceを作成します。

kubectl create namespace microclimate-pipeline-deployments

名前は変えず、このまま使います。 GUIで作成する場合も同様に作成します。「ポッド・セキュリティ・ポリシー」もibm-restricted-psp で問題ありません。


3. Cluster_CA_Domainの確認

これはインストール時に決まっています。Config.yamlで特に指定していなければ、 mycluster.icpがドメインになります。

設定値はConfig.yamlに記載されています。
下記のコマンドで確認できます。

cat /opt/ibm-cloud-private-3.1.1/cluster/config.yaml | grep cluster_name
# cluster_name: mycluster
# cluster_CA_domain: "{{ cluster_name }}.icp"


4. Cluster Image Policyの作成

ICPではデフォルトで取得できるDocker.ioのイメージがポリシーで設定されています。
MicroclimateのDockerイメージを取得できるように、ポリシーを追加します。

追加する前に 既存のポリシー を確認します。

ポリシーのリストを確認

kubectl get ClusterImagePolicy

結果

NAME AGE
ibmcloud-default-cluster-image-policy 1d
 

ポリシーの詳細を確認

kubectl describe ClusterImagePolicy ibmcloud-default-cluster-image-policy

Name: ibmcloud-default-cluster-image-policy
Namespace:
Labels: <none>
Annotations: <none>
API Version: securityenforcement.admission.cloud.ibm.com/v1beta1
Kind: ClusterImagePolicy
Metadata:
Creation Timestamp: 2018-12-25T08:27:11Z
Generation: 1
Resource Version: 3254
Self Link:
/apis/securityenforcement.admission.cloud.ibm.com/v1beta1/clusterimagepolicies/ibm
cloud-default-cluster-image-policy
UID: e00ff4c7-081e-11e9-8cff-00505687010b
Spec:
Repositories:
Name: mycluster.icp:8500/*
Name: registry.bluemix.net/ibm/*
Name: docker.io/ppc64le/*
Name: docker.io/amd64/busybox*
Name: docker.io/vault:*
Name: docker.io/consul:*
Name: docker.io/python:*
Name: docker.io/centos:*
Name: docker.io/postgres:*
Name: docker.io/hybridcloudibm/*
Name: docker.io/ibmcom/*
Name: docker.io/db2eventstore/*
Name: docker.io/icpdashdb/*
Name: docker.io/store/ibmcorp/*
Name: docker.io/alpine*
Name: docker.io/busybox*
Name: docker.io/dduportal/bats:*
Name: docker.io/cassandra:*
Name: docker.io/haproxy:*
Name: docker.io/hazelcast/hazelcast:*
Name: docker.io/library/busybox:*
Name: docker.io/minio/mc:*
Name: docker.io/minio/minio:*
Name: docker.io/nginx:*
Name: docker.io/open-liberty:*
Name: docker.io/rabbitmq:*
Name: docker.io/radial/busyboxplus:*
Name: docker.io/ubuntu*
Name: docker.io/websphere-liberty:*
Name: docker.io/wurstmeister/kafka:*
Name: docker.io/zookeeper:*
Name: docker.io/ibmcloudcontainers/strongswan:*
Name: docker.io/opsh2oai/dai-ppc64le:*
Name: docker.io/redis*
Name: docker.io/f5networks/k8s-bigip-ctlr:*
Name: docker.io/rook/rook:*
Name: docker.io/rook/ceph:*
Name: docker.io/couchdb:*
Name: docker.elastic.co/beats/filebeat:*
Name: docker.io/prom/statsd-exporter:*
Name: docker.elastic.co/elasticsearch/elasticsearch:*
Name: docker.elastic.co/kibana/kibana:*
Name: docker.elastic.co/logstash/logstash:*
Name: quay.io/k8scsi/csi-attacher:*
Name: quay.io/k8scsi/driver-registrar:*
Name: quay.io/k8scsi/nfsplugin:*
Name: k8s.gcr.io/hyperkube:*
Name: registry.bluemix.net/armada-master/ibm-worker-recovery:*
Events: <none>

 

ポリシーを追加設定

まずは、yamlファイルを作成します。
ファイル名: mycip.yaml

apiVersion: securityenforcement.admission.cloud.ibm.com/v1beta1
kind: ClusterImagePolicy
metadata:
name: microclimate-cluster-image-policy
spec:
repositories:
- name: <cluster_ca_domain>:8500/* # ← ドメインを変えるのを忘れずに。
- name: docker.io/maven:*
- name: docker.io/jenkins/*
- name: docker.io/docker:*
 
作成したファイルを適用します。

kubectl create -f mycip.yaml

作成されていることを確認します。

kubectl get clusterimagepolicy
NAME AGE
ibmcloud-default-cluster-image-policy 1d
Microclimate-cluster-image-policy 23h

作成したポリシーの詳細も確認してみます。

kubectl describe clusterimagepolicy microclimate-cluster-image-policy
Name: Microclimate-cluster-image-policy
Namespace:
Labels: <none>
Annotations: <none>
API Version: securityenforcement.admission.cloud.ibm.com/v1beta1
Kind: ClusterImagePolicy
Metadata:
Creation Timestamp: 2018-12-26T02:23:52Z
Generation: 1
Resource Version: 123615
Self Link:
/apis/securityenforcement.admission.cloud.ibm.com/v1beta1/clusterimagepolicies/Mic
roclimate-cluster-image-policy
UID: 494d92d8-08b5-11e9-8c84-00505687010b
Spec:
Repositories:
Name: <cluster_ca_domain>:8500/*
Name: docker.io/maven:*
Name: docker.io/jenkins/*
Name: docker.io/docker:*
Events: <none>

5. microclimate registry secretの作成

ICP内にあるPrivate Registryを使うための認証キーを作成します。
実行するコマンドは下記になります。

kubectl create secret docker-registry microclimate-registry-secret \
--docker-server=<cluster_ca_domain>:8500 \
--docker-username=<account-username> \
--docker-password=<account-password> \
--docker-email=<account-email>

それぞれデフォルト値は下記のようになります。

変数名 デフォルト値
< cluster_ca_domain > mycluster.icp
< account-username > admin
< account-password > admin
< account-email > デフォルト値なし。任意の値

環境にあわせたサンプルのコマンドは下記になります。

kubectl create secret docker-registry microclimate-registry-secret \
--docker-server=mycluster.icp:8500 \
--docker-username=admin \
--docker-password=admin \
--docker-email=admin@test.local
 

6. Helmで利用するSecretの作成

MicroclimateのデプロイにHelmを利用します。Helmを利用するのに必要な証明書を含んだSecretを作成します。

下記のコマンドで .Helm/ が見えるか確認します。 

見える場合のサンプル

ls -la $HELM_HOME

total 16
drwxr-xr-x 2 root root 51 Dec 27 10:15 .
dr-xr-x---. 10 root root 4096 Dec 26 15:16 ..
-rw------- 1 root root 2004 Dec 27 10:15 ca.pem
-rw------- 1 root root 1424 Dec 27 10:15 cert.pem
-rw------- 1 root root 1704 Dec 27 10:15 key.pem

3つの .pemファイルが表示されていない場合は、$HELM_HOMEにPathが通っているか確認します。

printenv | grep HELM_HOME

なにもリストされない場合は、Pathを設定します。
※今回は root で作業しているので下記になっています。

export HELM_HOME="/root/.helm"

再度、コマンドを実行し .pem ファイルがリストされることを確認します。

ls -la $HELM_HOME

下記のコマンドを実行して、Secretを作成します。

kubectl create secret generic microclimate-helm-secret --from-file=cert.pem=$HELM_HOME/cert.pem --from-file=ca.pem=$HELM_HOME/ca.pem --from-file=key.pem=$HELM_HOME/key.pem

 

7. Microclimate pipeline secretの作成

NameSpace "microclimate-pipeline-deployments" 用のSecretも必要になりますので作成します。
実行するコマンドは下記になります。

kubectl create secret docker-registry Microclimate-pipeline-secret \
--docker-server=<cluster_ca_domain>:8500 \
--docker-username=<account-username> \
--docker-password=<account-password> \
--docker-email=<account-email> \
--namespace=Microclimate-pipeline-deployments

デフォルトの値は 5. microclimate registry secretの作成 で作成した値と同じです。

変数名 デフォルト値
< cluster_ca_domain > mycluster.icp
< account-username > admin
< account-password > admin
< account-email > デフォルト値なし。任意の値

設定のサンプルは下記になります。

kubectl create secret docker-registry microclimate-pipeline-secret \
--docker-server=mycluster.icp:8500 \
--docker-username=admin \
--docker-password=admin \
--docker-email=admin@test.local \
--namespace=microclimate-pipeline-deployments

次にSecretを割り当てます。 まずは現状を確認します。

kubectl describe serviceaccount default --namespace microclimate-pipelinedeployments

Name: default
Namespace: Microclimate-pipeline-deployments
Labels: <none>
Annotations: <none>
Image pull secrets: <none>
Mountable secrets: default-token-2qn78
Tokens: default-token-2qn78
Events: <none>

"Image pull secrets" がnone の場合は下記コマンドを実行します。

kubectl patch serviceaccount default --namespace microclimate-pipeline-deployments -p "{\"imagePullSecrets\": [{\"name\": \"microclimate-pipeline-secret\"}]}"

"Image pull secrets" に Microclimate-pipeline-secret 以外の値(別のSecret)が適用されている場合、下記のコマンドで書き換えます。

kubectl patch sa default -n microclimate-pipeline-deployments --type=json -p="[{\"op\":\"add\",\"path\":\"/imagePullSecrets/0\",\"value\":{\"name\": \"microclimate-pipeline-secret\"}}]"

適用後は下記のようになります。

kubectl describe serviceaccount default --namespace Microclimate-pipelinedeployments

Name: default
Namespace: Microclimate-pipeline-deployments
Labels: <none>
Annotations: <none>
Image pull secrets: Microclimate-pipeline-secret
Mountable secrets: default-token-2qn78
Tokens: default-token-2qn78
Events: <none>

 

8. Ingress Domain Name の作成(今回はHostsで設定します)

環境上用意が難しいので今回はHostsを使って設定します。
MicroclimateとjenkinsのWebサービス用にサブドメインを自動的につけて、80,443で通信するので、仮にドメイン名が icppoc.local だとすると、

microclimate.icppoc.local
jenkins.icppoc.local

にアクセスすることになります。
今回はデプロイ完了後に接続元PC(Windows)のhostsを書き換えてアクセスさせてしまいます。

 

9. Helmからインストール

Helmからインストールします。 ここからはGUIで操作してみます。

管理コンソールの[カタログ]に移動し、[Microclimate]で検索します。
表示された項目をクリックします。

20190110_13h32_22a_2



[構成]をクリックします。

20190110_14h51_31

表示された画面で下記項目を埋めて、[インストール]をクリックします。

項目名
Helmリリース名 任意の名前(microclimatetest)
ターゲット名前空間 [1. Name Space の作成]で作成したNameSpaceを選択
使用許諾条件 チェックする
ポッドセキュリティー 入力なし
Microclimate Ingress Domain 任意のドメイン

今回、任意のドメインは icppoc.localと指定します。

20190110_14h52_57 

デプロイ後、Helmリリースの情報を確認してみます。 管理コンソールのメニューから[ワークロード]-[Helmリリース]に移動します。

20190110_14h56_08


microclimate で検索し、対象のHelmリリースをクリックします。

20190110_14h56_36a


デプロイメントのステータスで”使用可能”のステータスに”1”と表示されていなかったり、ポッドのステータスが"Running" となっていない状態になっています。
また、 Persistent Volume Claim の状況が Pendingになっています。

20190110_14h56_51

20190110_14h57_50

これは、Persistent Volumeが存在しないため、Persistent Volume Claimがディスクを割り当てできず正常に動作していません。
次のステップでPersistent Volumeを作成します。

 

10. Persistent Volumeの作成

Microclimateで利用するPersistent Volume (以下、PV)が必要になります。
今回は NFS Server を用意し、NFSボリュームをPVとして利用します。

まず、現時点ではPVを請求する Persistent Volume Claim (以下、PVC) が作成されている状態になりますので、PVCのステータスを確認します。

管理コンソールのメニューで[プラットホーム]-[ストレージ]を開き、「PersistentVolumeClaim」のタブをクリックします。

20190110_15h04_01c


microclimatetest-ibm-microclimatemicroclimatetest-jenkinsというエントリがあります。

それぞれのステータスは下記のようになっているかと思います。

名前 名前空間 状況 Persistent Volume 要求 アクセス・モード
microclimatetest-ibm-microclimate microclimate-space Pending - 8Gi RWX
microclimatetest-jenkins microclimate-space Pending - 8Gi RWO

PVが[-]となっていますので割り当てがありません。
MicroclimateのHelmリリースではデフォルトでDynamic Provisioningが有効になっています。これは、PVCが作成されたときに、PVCの内容を満たすPVが存在すれば自動的に割り当てる機能になります。

今回のPVの請求内容は上記図の要求アクセスモード部分が該当しますので、請求を満たすPVを用意します。

NFS Serverの準備

今回は別途、構築済みのCentOSサーバーにNFS Serverをインストールし利用します。
NFSのパスは2つ作成しました。

NFS Server IP : xxx.xxx.xxx.159
Path1 : /nfs/microclimate
Path2 : /nfs/jenkins

PVの作成

PVを作成します。今回もGUI(管理コンソール)で作成します。
先ほど開いていた管理コンソール画面を開きます。
場所は管理コンソールのメニューから[プラットホーム]-[ストレージ]を開きます。 "PersistentVolume"のタブをクリックします。

20190110_15h19_18a

PersistentVolumeの作成をクリックします。

まず、PVC microclimatetest-ibm-microclimate 用のPVを作成します。
要求 8Gi容量になります。RWXはアクセスモードでReadWriteManyになります。NFSサーバーはIPとPathが必要になりますので、Path1を使います。

今回設定する値は下記のようになります。

カテゴリ 設定名 設定値
一般 名前 任意の名前(microclimate-pv)
  容量 8Gi
  アクセス・モード 何度でも読み取り/書き込み
  再利用ポリシー 保持
  ストレージタイプ NFS
パラメーター キー1 server
  値1 xxx.xxx.xxx.159
  キー2 path
  値2 /nfs/microclimate

※記載のない設定は設定しません
※パラメーターのキーは"パラメーターの追加"で追加します。

 

次にPVC microclimatetest-ibm-jenkins用のPVを作成します。 容量8GiアクセスモードRWOです。 RWOはReadWriteOnceです。

カテゴリ 設定名 設定値
一般 名前 任意の名前(jenkins-pv)
  容量 8Gi
  アクセス・モード 一度だけの読み取り/書き込み
  再利用ポリシー 保持
  ストレージタイプ NFS
パラメーター キー1 server
  値1 xxx.xxx.xxx.159
  キー2 path
  値2 /nfs/jenkins

※記載のない設定は設定なし ※パラメーターのキーは"パラメーターの追加"で追加する

 

どちらも作成すると下記のようにPVにリストが追加されます。

20190110_15h26_32

請求の値にそれぞれ値が設定され、状況Boundになっています。
また、PersistentVolumeClaimのタブを開くとPersistentVolumeの値に作成したPV名が表示され、状況もBoundとなりますので、PVCはPVの割り当てを取得し、ストレージの割り当てが完了しました。
20190110_15h27_13

先ほど確認した際にはすべてが動作していなかったHelmリリースの情報を見に行きます。
管理コンソールのメニューから[ワークロード]-[Helmリリース]を開き、「microclimatetest」を開きます。

ポッドのステータスがすべてRunningになり、デプロイメントの使用可能のステータスがすべて1になっていることを確認します。

20190110_15h28_2620190110_15h28_34※ コンテナーがすべて作成されるまでに少し時間がかかります

 
最後にMicroclimateとJenkinsにログインしてみましょう。 今回、Domainに関して特に設定していませんので、Hostsを編集する必要があります。

管理コンソールのメニューから[ネットワーク・アクセス]-[サービス]を開き、「入口」タブをクリックします。

20190111_14h50_17

Microclimatetest-ibm-MicroclimateMicroclimatetest-jenkinsがリストされています。 それぞれ、ドメインは icppoc.local になり、サブドメインでMicroclimatejenkinsがついています。

アドレス部分が[-]となっている場合は、proxyノードのIPが使われています。 Proxyノードがどのサーバーか確認するには、管理コンソールの[プラットホーム]-[ノード]から確認ができます。
ここでは、 xxx.xxx.xxx.161 がProxyノードになります。

20190110_16h16_b

接続元のPCのHostsに下記を追記します。
 
xxx.xxx.xxx.161      microclimate.icptest.local
xxx.xxx.xxx.161      jenkins.icptest.local

設定後それぞれのURLにアクセスします。

https://microclimate.icptest.local/
https://jenkins.icptest.local/ 

Microclimate20190110_16h20_14

Jenkins20190110_16h19_54

この先はそれぞれのアプリケーションでの設定となっていきます。

もしアプリケーション開発環境として利用してみたいというユーザー様がいらっしゃれば、なんらかのPV(NFS)さえ用意できれば動きますので、ぜひ試してみてください。

最後に

IBM Cloud PrivateのPoC環境の貸し出しも実施しています。

https://www.networld.co.jp/product/ibm-hardware/trial/

Web上にNFSの用意の記載はありませんが、ご要望があればご用意はできますのでご興味のある方は是非ご連絡ください!

すずきけ

2019/01/10

IBM Cloud Private 3.1.1 Vulnerability Advisorを追加してイメージの脆弱性をスキャンしてみよう

こんにちは。IBM Cloud Privateについて、かなり間が空きましたが、前々回にインストールの内容を投稿しました。

今回は脆弱性アドバイザー(Vulnerability Advisor)を追加してみたいと思います。

脆弱性アドバイザーって何?

ドキュメント上では下記のように説明されています。

脆弱性アドバイザーは、IBM® やサード・パーティーによって提供されるか、組織のレジストリー名前空間に追加された、コンテナー・イメージのセキュリティー状況を検査します。 Container Scanner が各クラスターにインストールされている場合、脆弱性アドバイザーは、実行中のコンテナーの状況も検査します。 https://console.bluemix.net/docs/services/va/va_index.html#about

ICPで管理しているイメージや稼働しているコンテナー上で脆弱性をもつパッケージがないかと設定について問題がないかをレポートしてくれます。
また、この機能の開発は日本のラボで開発されているとのことです。

既存のICPの環境にVulnerability Advisor(VA)を追加して、イメージのスキャンとコンテナーのスキャンまでできることを確認してみたいと思います。

※注意※ 既存環境が存在しており、その環境にWorkerノードを追加構築していく想定の手順となっていますので、環境がまだないという方はインストール方法を参考に作ってみていただければと思います。 また、商用版のIBM Cloud Privateを想定した手順となっておりますので、CE版での実施は想定しておりません。(VAはCE版では利用できません。) あらかじめご了承ください。

また、今回の環境はICP 3.1.1の環境をベースに作成しています。
前回投稿したICPのインストール手順では3.1.0を利用していますが、今回手順については3.1.0でも変わりませんので、各コマンド部分の3.1.1部分を3.1.0に読み替えて実施してみてください。

 

脆弱性アドバイザー(VA)のインストール

既存環境

サーバースペックは同じもので2台のサーバーがあります。

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

Master ServerとWorker Serverが1台ずつあります。 ICPのバージョンは3.1.1になります。

以前、投稿した手順は3.1.0になります。3.1.1でも同様の手順でインストールできます。
また、この手順は3.1.0でも同様の作業内容になりますので、記載されているバイナリ名や、設定名等、 3.1.1 となっている部分は 3.1.0 と読み替えて手順を実施してください。

 

事前準備

WorkerやVAにするノードを準備します。
今回は以既存環境と同じスペックのRHELの仮想マシンと同じものを用意します。

Linux on PowerやLinux on IBM Z でも動作は可能(VAは制限あり)ですので、動作環境の詳細は下記をご参照ください。
https://www.ibm.com/support/knowledgecenter/en/SSBS6K_3.1.1/supported_system_config/supported_os.html

 

追加するノード

追加するノードは下記になります。

Host name IP 作業ユーザー
icp-poc-va1.icp.local xxx.xxx.xxx.158 root

 

追加ノードで行う作業

追加するノードでは下記の事を行います。

  1. 通信ポートの確認
  2. SE Linux の無効化、Firewallの無効化
  3. /etc/hostsを設定
  4. 時刻の同期
  5. Python のインストール(の確認)
  6. Dockerのインストール
  7. (後から作業) sshサービスの再起動
 

通信ポートの確認

下記コマンドを実行してなにも表示されないことを確認します。

ss -tnlp | awk '{print $4}' | egrep -w "8001|8500|3306"

 

SE Linux の無効化、Firewallの無効化

SE LinuxとFirewallを無効化します。
SE Linuxは /etc/selinux/config をdisableに変更します。
Firewallは下記のコマンドを実行します。

systemctl stop firewalld
systemctl disable firewalld
 

/etc/hostsを設定

クラスターに存在するすべてのノード(Master/Worker/VA/Management/Proxy)を /etc/hosts に指定します。

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
xxx.xxx.xxx.161 icp-poc-master1.icp.local
xxx.xxx.xxx.164 icp-poc-worker1.icp.local

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
xxx.xxx.xxx.161 icp-poc-master1.icp.local
xxx.xxx.xxx.164 icp-poc-worker1.icp.local
xxx.xxx.xxx.158 icp-poc-va1.icp.local
 

時刻の同期

追加するノードと既存のサーバー群と時刻の差が出ないように時刻同期を行います。
時刻同期方法は各Linuxのドキュメントをご確認ください。

RHELで時刻、時刻同期の設定の確認は下記コマンドでできます。

# timedatectl
Local time: Tue 2019-01-08 11:01:18 JST
Universal time: Tue 2019-01-08 02:01:18 UTC
RTC time: Tue 2019-01-08 02:01:17
Time zone: Asia/Tokyo (JST, +0900)
NTP enabled: n/a
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
 

Python のインストール(の確認)

Pythonがインストールされていることを確認します。
サポートされているPythonのバージョンは、2.6,2.7,3.5以上になります。

# python --version
Python 2.7.5
 

Dockerのインストール

Dockerをインストールします。DockerのバイナリーはIBM社から提供されています。

  • IBM Cloud Private 3.1.1 Docker for Linux (x86_64) (CNXD2EN )
    size: 141MB

このファイルをノード上にコピーし実行します。

cd /(ファイルをコピーした場所)
./icp-docker-18.03.1_x86_64.bin --install

※このとき、内部で別のコンポーネントをyumでインストールします。

dockerが自動起動されるように設定します。

systemctl start docker
systemctl enable docker
 

(後から作業) sshサービスの再起動

既存のMaster ServerからSSH Keyをコピーした後にSSH Serviceの再起動を行います。
後述の手順内で再度ご案内します。


Master Serverで行う作業

実際のインストール作業については既存のMaster Serverから行います。

  • SSH Keyのコピー
  • (後から作業) sshサービスの再起動
  • バイナリーファイルの確認
  • ノードへのVAインストールの実施
  • ノードの状態の確認
  • Master Serverへの機能のAddon

SSH Keyのコピー

Master Server上からノードにSSH Keyをコピーします。

ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<node_ip_address>

今回は、下記の情報を使ってコマンドを実行します。

user node_ip_address
root xxx.xxx.xxx.158
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.158
 

!!!ノードで作業!!! sshサービスの再起動

ノード上でSSH Serviceを再起動します。

systemctl restart sshd

 

バイナリーファイルの確認

下記にLinux用のバイナリーファイルがあることを確認します。
インストールパスを変更している場合は適宜読み替えてください。

Path File name
/opt/ibm-cloud-private-3.1.1/cluster/images ibm-cloud-private-x86_64-3.1.1.tar.gz

コマンド

# ls /opt/ibm-cloud-private-3.1.1/cluster/images ibm-cloud-private-x86_64-3.1.1.tar.gz
 
VAの追加

VAの追加は下記のコマンドを参考に実行します。

docker run --rm -t -e LICENSE=accept --net=host -v \
$(pwd):/installer/cluster ibmcom/icp-inception-$(uname -m | sed 's/x86_64/amd64/g'):3.1.1-ee va -l \
ip_address_vanode1,ip_address_vanode2

IPアドレス xxx.xxx.xxx.158 をVAとして追加しますので、実行するコマンドは下記になります。

cd /opt/ibm-cloud-private-3.1.1/cluster
docker run --rm -t -e LICENSE=accept --net=host -v \
$(pwd):/installer/cluster ibmcom/icp-inception-$(uname -m | sed 's/x86_64/amd64/g'):3.1.1-ee va -l \
xxx.xxx.xxx.158
 

ノードの状態の確認

追加したノードがVAとして登録されているか確認します。
ICP管理コンソールから[プラットホーム]-[ノード]を開きます。
IPアドレスの末尾 158 の役割に VA と記載されていることを確認します。

20190109_15h16_01a_2

Master Serverへの機能のAddon

最後にMaster ServerとVAノードに機能をデプロイ(アドオン)します。

Master Server上のConfig.yamlを編集します。

vi /opt/ibm-cloud-private-3.1.1/cluster/config.yaml

変更前

## You can disable following services if they are not needed:
# custom-metrics-adapter
# image-security-enforcement
# istio
# metering
# monitoring
# service-catalog
# storage-minio
# storage-glusterfs
# vulnerability-advisor
management_services:
istio: disabled
vulnerability-advisor: disabled
storage-glusterfs: disabled
storage-minio: disabled

変更後

## You can disable following services if they are not needed:
# custom-metrics-adapter
# image-security-enforcement
# istio
# metering
# monitoring
# service-catalog
# storage-minio
# storage-glusterfs
# vulnerability-advisor
management_services:
istio: disabled
vulnerability-advisor: enabled     #←disabledからenabledに変更
storage-glusterfs: disabled
storage-minio: disabled
 

下記の内容を参考にコマンドを実行します。

docker run --rm -t -e LICENSE=accept --net=host -v $(pwd):/installer/cluster ibmcom/icp-inception-ARCH:3.1.1-ee addon

Dockerイメージ名が異なりますので、下記のように変更して実行します。

cd /opt/ibm-cloud-private-3.1.1/cluster
docker run --rm -t -e LICENSE=accept --net=host -v $(pwd):/installer/cluster ibmcom/icp-inception-amd64:3.1.1-ee addon

 

VA動作の確認

VAの機能追加完了後は、管理コンソール上でスキャンの状況やレポートが確認できるようになります。

 

管理コンソールのログアウト/ログイン

管理コンソールにログインした状態で機能の追加を行った場合は画面が正常に表示されない場合がありますので、管理コンソールからログアウトし、再度ログインします。

20190110_11h26_17_2

コンテナーイメージのスキャン状況の確認

VAの機能が有効化されると自動的にコンテナーイメージのスキャンが実行されます。
すべてのイメージをスキャンするには時間がかかりますが、スキャン済みのものからステータスの確認ができますので開いています。

  1. 管理コンソールを開きます。

  2. メニューから[コンテナー・イメージ]を選択します。

    20190110_11h28_01_2

  3. 一覧が表示されます。セキュリティー・スキャンのステータスに 成功 or 失敗しました のステータスがあるものはスキャンが完了しています。 

    20190109_15h33_34_2

  4. 失敗している ibmcom/curl-amd64 をクリックします。

    20190109_15h36_19a

  5. スキャンの結果、問題がいくつあるか表示されています。
    スキャンの表示 をクリックします。

    20190109_15h36_24a_2

  6. スキャン結果のレポートが表示されます。
    Organizational Policiesでは違反理由が表示されています。
    今回はイメージ内にインストールされたパッケージ上に既知の脆弱性が含まれていることが示されています。

    20190109_15h36_32_2

  7. [vulnerable Packages]のタブをクリックします。
    ここでは脆弱性の影響を受けるパッケージの情報が表示されます。

    20190109_15h36_38_2

  8. [Container Settings]のタブをクリックします。
    ここではコンテナーの設定に対して潜在的な脆弱性の問題や推奨されてる設定について表示されます。

    20190109_15h36_48_2


    今回は見つかっていませんが、Security MisconfigurationsやRisk Analysisの情報も確認できます。

  9. 次に稼働しているContainerのスキャンレポートを確認します。
    管理コンソールから[ツール]-[脆弱性アドバイザー]を選択します。
    ※ツールメニューが表示されない場合は管理コンソールのログアウト/ログインを行ってください。

    20190110_11h37_50_2

  10. [kube-system]を選択します。

    20190110_11h40_05a_2

  11. 別のタブが開き、[Vulnerability Advisor(List Containers)]が表示されます。
    Filterに[mariadb]と入力し、Organizational Policiesのステータスが Violation となっているリストをクリックします。

    20190110_09h36_09a_2

  12. Imageスキャンの結果と同じように Organizational Policies / Vulnerable Packages / Container Settings / Security Misconfigurations / Risk Analysis の情報が表示されます。

    20190110_09h39_05

以上がVAの展開からスキャンの結果の表示までの手順になります。
このほかにも **Mutation Advisor というContainer上で変更があった場合に検知する機能もあります。
今後、検証する予定ですので、別途レポートを投稿したいと思っています。

Docker Containerの利用が広がるにつれて、すでに公開されているDocker Imageを使ったり、公式で公開されているDocker Imageから作成したDocker Imageを利用する機会が増えてくると思いますが、Docker Image自体にセキュリティ上の問題がないか、設定上にも不備がないかもチェックしていかなければならないかと思います。
脆弱性のあるパッケージの確認についてはいろいろと製品が出てきてはいますが、Vulnerability AdvisorはICPに付属している製品ですので、ぜひ試してみてください。

参考URL:

https://www.ibm.com/support/knowledgecenter/en/SSBS6K_3.1.1/manage_applications/disable_service.html

https://www.ibm.com/support/knowledgecenter/en/SSBS6K_3.1.1/installing/add_node.html

最後に

IBM Cloud PrivateのPoC環境の貸し出しも実施しています。

https://www.networld.co.jp/product/ibm-hardware/trial/

Web上にVA機能についてのPoCについて記載はありませんが、PoC環境でVAも使って検証してみたい!といったご要望がありましたら問い合わせ窓口からご相談ください。

すずきけ

2018/10/30

IBM Cloud Private 3.1.0 インストール方法(RHEL編)

ICP3.1インストール_RHEL編.md

今回はIBM Cloud Private 3.1.0(以下、ICPを記載します)のインストール方法をご紹介します。 ICPはいくつかのエディションがあります。

  • Community Edition
  • Cloud Native Edition
  • Enterprise Edition

今回はCloud Native Editionを使ってインストールをしていきます。 Community Editionは無償ですが本番用途では使用できないなど制約があります。


ICPの情報リソース

現段階ではあまり情報が公開されていません。IBMのKnowledge Centerがさくっとみられる情報です。
https://www.ibm.com/support/knowledgecenter/en/SSBS6K/product_welcome_cloud_private.html

今回はここにあるインストール手順を参考にインストールを行います。
※記載の手順と順番が異なる部分があります。あらかじめご了承ください。


構築する環境

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社のサイトからダウンロードしてきます。
ICP用のDockerについてもIBM社から提供されますので、ICP本体とDockerファイルをダウンロードします。

  • IBM Cloud Private 3.1.0 for Linux (x86_64) Docker (CNW6SEN )
    Size : 8,839MB
  • IBM Cloud Private 3.1.0 Docker for Linux (x86_64) (CNVP4EN )
    Size : 141MB

今回これらのファイルは「/root/」に配置しています。

[root@tokyo-master01 ~]# ls -l /root total 9640628 -rw-------. 1 root root 1992 Oct 18 11:17 anaconda-ks.cfg -rw-r--r--. 1 root root 9268925381 Oct 2 10:19 ibm-cloud-private-x86_64-3.1.0.tar.gz -rwxr-xr-x. 1 root root 148057785 Oct 2 09:50 icp-docker-18.03.1_x86_64.bin -rw-r--r--. 1 root root 455008787 Sep 12 22:52 mcm-3.1.0_x86.tgz

※ ファイル名:mcm-3.1.0_x86.tgz は今回使用しません。


OSインストールで気を付けること

OSインストールではDiskパーティションの構成に気を付ける必要があります。 具体的には、「/」を250GB以上割り当てておかないとインストール時にWarningがでます。テスト用のインストールであれば、150GB程度でも動作しております。
今回の環境では下記のようにパーティションを設定しています。

[root@tokyo-master01 ~]# fdisk -l Disk /dev/sda: 322.1 GB, 322122547200 bytes, 629145600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000c5d5b Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 629137407 313519104 8e Linux LVM Disk /dev/mapper/rhel_tokyo--master01-root: 268.4 GB, 268435456000 bytes, 524288000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/rhel_tokyo--master01-swap: 23.4 GB, 23416799232 bytes, 45735936 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/rhel_tokyo--master01-home: 29.2 GB, 29183967232 bytes, 56999936 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes

インストール(Master/Worker共通)

すべてrootでログインして作業しています。


共通でやること

  • Pythonのインストール
  • Dockerのインストール
  • SSH鍵の交換
  • /etc/hostsを書く
  • SElinuxをとめる
  • Firewallをとめる
  • 再起動

Pythonのインストール

Pythonがインストールされていない場合はPythonを先にインストールします。
Pythonは3系にも対応しています。3系を利用する場合は「Python」コマンドでPython3が呼び出されるようにリンクを作成しておく必要があります。


Dockerのインストール


Dockerインストーラへの実行権限付与

ダウンロードしてきたDockerのインストーラには実行権限がないので実行権限を付与します(上記のファイルリスト上ではすでに権限を付与しています)

cd ~/ chmod +x icp-docker-18.03.1_x86_64.bin

Dockerのインストール

./icp-docker-18.03.1_x86_64.bin --install systemctl start docker systemctl enable docker

SSH鍵の交換


SSH鍵の作成

ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N ""

許可された鍵のリストに追加

cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys

各ノード間でSSH公開鍵をコピー

##サンプル ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<node_ip_address> ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx

SSHの再起動

systemctl restart sshd

パスワードなしでお互いにログインできるか確認

ssh (Master or Worker IP)

SSH接続後、抜けるのを忘れずに行う

exit

/etc/hostsを指定する

/etc/hostsでMasterとWorkerが名前解決できるように設定します。

vi /etc/hosts ############# 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 # ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # コメントアウト ## 追加する MasterIP MasterHostname WorkerIP WorkerHostName #############

SELinuxを止める

今回はざっくりと止めます。

vi /etc/selinux/config ########### # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # enforcingからdisabledに変更する # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted ###########

Firewallも止める

Firewallも止めてしまいます。

systemctl stop firewalld systemctl disable firewalld

再起動

OSを再起動します。

reboot

インストール(Master編)

ここから先はWorkerで作業をすることはありません。Masterのみで実行していきます。


DokcerコンテナのイメージをMasterに取り込む

cd ~/ tar xf ibm-cloud-private-x86_64-3.1.0.tar.gz -O | sudo docker load

※ 環境にもよりますが10~20分かかります。


取り込んだイメージの確認

docker images

※重要※イメージ名を確認

イメージ名に ibmcom/icp-inception- が含まれるイメージを確認してメモします。

docker images | grep ibmcom/icp-inception-
ibmcom/icp-inception-amd64 3.1.0-ee 481dbd525a28 4 weeks ago 744MB

ディレクトリを作成して移動

mkdir /opt/ibm-cloud-private-3.1.0 cd /opt/ibm-cloud-private-3.1.0/

イメージから構成ファイルを抽出

docker run -v $(pwd):/data -e LICENSE=accept ibmcom/icp-inception-amd64:3.1.0-ee cp -r cluster /data

ここで指定している ibmcom/icp-inception-amd64:3.1.0-ee が手順「※重要※イメージ名を確認」で確認したイメージ名になります。


作成されたフォルダ内のファイルリストを確認

ls -la /opt/ibm-cloud-private-3.1.0/cluster ### total 28 drwxr-xr-x 3 root root 4096 Sep 27 15:03 . drwxr-xr-x 3 root root 4096 Sep 27 15:03 .. -rw-r--r-- 1 root root 7452 Sep 27 15:03 config.yaml -rw-r--r-- 1 root root 104 Sep 27 15:03 hosts drwxr-xr-x 3 root root 4096 Sep 27 15:03 misc -r-------- 1 root root 1 Sep 27 15:03 ssh_key ###

クラスター内の各ノードのIPアドレスをすべて指定 /<installation_directory>/cluster/hosts ファイルに追加します。

ナレッジ︓ https://www.ibm.com/support/knowledgecenter/SSBS6K_3.1.0/installing/hosts.html

vi /opt/ibm-cloud-private-3.1.0/cluster/hosts
[master] xxx.xxx.xxx.xxx # MasterのIPを入力 [worker] xxx.xxx.xxx.xxx # WorkerのIPを入力 [proxy] xxx.xxx.xxx.xxx # MasterのIPを入力 #[management] #4.4.4.4 #[va] #5.5.5.5

※今回はProxyをMasterにインストールしています。


ICP ClusterにSSH秘密鍵をコピー

cp /root/.ssh/id_rsa /opt/ibm-cloud-private-3.1.0/cluster/ssh_key

インストールディレクトリに移動し、Imageフォルダを作成

cd /opt/ibm-cloud-private-3.1.0 mkdir -p cluster/images

作成したフォルダにインストールイメージファイルをコピー

mv ~/ibm-cloud-private-x86_64-3.1.0.tar.gz cluster/images/

コピーされていることを確認

ls cluster/images/

環境のデプロイ

cd ./cluster sudo docker run --net=host -t -e LICENSE=accept -v "$(pwd)":/installer/cluster ibmcom/icp-inception-amd64:3.1.0-ee install

ここで指定している ibmcom/icp-inception-amd64:3.1.0-ee が手順「※重要※イメージ名を確認」で確認したイメージ名になります。

インストールが完了すると下記のメッセージが表示されます。

PLAY RECAP ********************************************************************************************* xxx.xxx.xxx.xx0 : ok=164 changed=82 unreachable=0 failed=0 xxx.xxx.xxx.xx1 : ok=130 changed=62 unreachable=0 failed=0 localhost : ok=267 changed=163 unreachable=0 failed=0 POST DEPLOY MESSAGE ************************************************************************************ The Dashboard URL: https://xxx.xxx.xxx.xx0:8443, default username/password is admin/admin Playbook run took 0 days, 0 hours, 31 minutes, 27 seconds

管理コンソールログイン

インストール完了時に表示されたURLにWebブラウザでアクセスしてログインします。

  • ログインユーザー: admin
  • パスワード: admin

20181030_21h52_57




注意事項


docker loadするDockerイメージ名について

今回、Docker loadで下記のイメージ名を指定しています。 ibmcom/icp-inception-amd64:3.1.0-ee
[:]以下の値がバージョンになるのですが、このバージョンの指定が間違っていると latest のイメージをDocker Hubからダウンロードしてきてしまいます。
Docker Hubのイメージではインストールができないため、インストール時にエラーが発生してしまいます。 必ず、イメージをロード後、docker images | grep ibmcom/icp-inception- で保持しているイメージを確認してください。
※ IBM Knowledge Centerで指定しているイメージが今回利用したイメージ名と異なっているのでご注意ください。


Dockerのインストールに失敗したとき

Dockerのインストールに失敗することがあります。失敗の原因はパッケージが不足しているためですが、通常、yumが使える環境であれば自動的にパッケージをインストールします。
yumが利用できるように設定していただくか、インストールイメージもしくはDVDをマウントしていただいてDiskをyumのリポジトリとして利用できるようにしていただければと思います。



今回の内容は以上になります。次回はMulti Cloud Managerという製品を今回作成した環境にインストールしていきたいと思います。(すずきけ)