Edited at

IBM Cloud Private: Kubernetesをオンプレミス(IaaS)に導入してみる

※注意(2018/10/17)

ICP CE V3.1.0 導入手順は 無償版 Kubernetes インストール手順 (ICP CE V3.1.0)を参照ください。


はじめに

クラウドネイティブの世界をオンプレで実現する次世代基盤 IBM Cloud Private を導入してみたいと思います。

自身のメモ書きレベルですが,せっかくなのでチャレンジしたい方のお役に立てれば幸いです。

今回使用するのは,CE版(Community Edition)です。※開発用途は無償利用可

※注意(2018/2/2)

本投稿は,V2.1.0を使用しておりますが,最新バージョンはV2.1.0.1となります。

適宜,公式リンク IBM Cloud Private-CE インストール も参照ください。


クラウドネイティブ戦争の幕開け

CNCF (Cloud Native Computing Foundation) という団体をご存知でしょうか。

この団体は,2015年にGoogleやIBM,RedHat らで設立した団体であり,Kubernetes をはじめとする様々なプロジェクトを管理・推進しています。

image.png

参考: CNCF Currently Hosted Projects


What is cloud native?


Cloud native computing uses an open source software stack to be:


  • Containerized. Each part (applications, processes, etc) is packaged in its own container. This facilitates reproducibility, transparency, and resource isolation.

  • Dynamically orchestrated. Containers are actively scheduled and managed to optimize resource utilization.

  • Microservices oriented. Applications are segmented into microservices. This significantly increases the overall agility and maintainability of applications.


参考: CFCF FAQ

クラウドネイティブ・コンピューティングは,コンテナベースで 動的にスケールでき,マイクロサービス指向であること のように解釈できます。CNCFは,コンテナオーケストレーションや,ロギング,モニタリング,分散トレース,サービスメッシュ,ネットワーキングなど様々なカテゴリで整理しています。

つまり,GoogleやIBMをはじめとするCNCF設立・加入ベンダーは,

クラウドネイティブの世界で必要不可欠となるオープンテクノロジーを自ら見出し,

自社製品やサービスに積極的に取り込むことで,世の中の強い流れを取り込もうとしているわけです。

ちなみに2017年夏頃には,AWSやMicrosoft,Oracleなどが2年ほど遅れて加入しました。

2017年は,まさにクラウドネイティブ戦争の幕開けといったところでしょうか。

いままでアンテナの高い人がおもちゃのように使ってたオープンテクノロジーを中心において,

超大企業が我こそは!と市場獲得に猛ダッシュしています。

※以降,Kubernetesをk8sと表現する場合があります。


IBM Cloud Privateとは

IBM Cloud Private は,Kubernetesベースのコンテナ実行環境をLinuxに構築するソフトウェア製品 です。

死守したい資産の保護や,高い開発生産性,運用保守における自由度,セキュリティ,ロックイン回避など様々なレイヤーで,お客様にはそれぞれ思いがあります。

IBMはそれに応える形でプライベートクラウドにクラウドネイティブを実現する基盤として提供しています。

(例えば企業内全体を考えてみた時に,なんでパブリッククラウドじゃないの?って思えるヒトは,パブリックが許されるケースに所属されているので羨ましい限りです。それはそれでロックイン問題があったりもすると思いますが。)

話は戻りますが,

IBM Cloud Privateはソフトウェアなので オンプレミスやIaaSなどプラットフォームを問わず導入可能 です。

Power,IBM Z のようなIBM Platform もサポートしているため,GPUをフル活用したDeep Learningや,

処理能力がキーになるブロックチェーンなどの用途にもハイスペックな資産を活用できますね。

本稿では詳細に触れませんが,IBM Cloud Private は3つの側面 を持っています。


  • エンタープライズ向け Kubernetes環境

  • マルチクラウド環境の構築自動化・管理基盤

  • Cloud Foundryのオンプレミス基盤

一言で表すなら,

IBM Cloud Private は,お客様環境の次世代化を担う 司令塔 です。

image.png

参考: IBM Cloud Private の全貌 (kubernetesベース)

他にも細かく見ていくと,マイクロサービスの開発から運用まで含めて考慮されたツールチェーン機能も含まれます。

しかも,いままでのIBMとは思えないほどの 「基本 All オープンソース・テクノロジー!!」

image.png

参考: Private cloud reference architecture

これがぜんぶ含まれて構成されるとは。

あーこれは使ってる。こっちは使いたいけどまだ取り込めてないなーなど色々ありますよね。

一個人としてもテンションあがります。(今頃はKubeCon2017やってるんだよなぁ〜・・・)

・・・さて,そろそろ本題にいきましょう。

はい,では改めまして,

今回は私自身がすぐに試すことができた "Kubernetes環境" の導入作業手順を紹介したいと思います。

※相変わらず備忘録代わりにQiitaを使ってしまってすみません。


環境

今回はシングルノードでKubernetesクラスターを組みますので,以下のように準備しました。



  • VMインスタンス 1つ


    • OS: Ubuntu Server 16.04

    • vCPU: 8

    • Memory: 16GB

    • Storage: 100GB

    • (2コア,8GB Macbook Air Early2015で,VirtualBow/VMware fusion上の動作実績あり)

    • (4コア,16GB Macbook Pro Late2016は,余裕でOKでした)




  • インストールするコンポーネント


    • Docker CE V17.06.2

    • Python V2.7

    • IBM Cloud Private CE (Community Edition) V2.1.0




  • 操作元のPC


    • macOS 10.13.1

    • Firefox 52.5.2

    • iTerm2 Build 3.0.15



参考: ハードウェア: システム要件

参考: OS: システム要件


導入手順


サーバーインスタンスの準備

Ubuntu or RHELならOKです。

ほんとは良くないですが,ルート権限でやるとラクです。

$ sudo -i

以降root実行するので,コマンド頭の記号は $から#に変更になります。

image.png


OS設定


  • hostsをいじります。

ループバックアドレスをコメントアウトします。

シングルノードのIPとホスト名を追加します。

# vi /etc/hosts


/etc/hosts

127.0.0.1       localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

#127.0.1.1 k8s-icp-single // <== コメントアウトする
10.132.75.83 k8s-icp-single // <== 追加: シングルノードのIPとホスト名



  • vm.max_map_countのサイズを広げる

vm.max_map_countは,プロセスが使用可能なスレッド数の上限値です。

この値が小さいと,Elasticsearch起動時に怒られるので,262144まで広げます。

# sysctl vm.max_map_count

vm.max_map_count = 65530 // デフォルト値
# sysctl -w vm.max_map_count=262144 // 262144 まで広げる
# echo "vm.max_map_count=262144" | tee -a /etc/sysctl.conf // システム構成ファイルに登録して永続化


Docker導入

IBM Cloud PrivateのインストールイメージはDockerイメージなので,インストール作業のためのDockerを導入します。

IBM Cloud Privateのシステム要件にあったバージョンのDocker CEを導入します。(今回は,V17.06.2~ce-0 です)

参考: IBM Cloud PrivateでサポートされるDocker version

# apt-get update

# apt-get install apt-transport-https ca-certificates curl software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# apt-key fingerprint 0EBFCD88 // <== 省略OK。ハッシュ値確認してるだけ
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# apt-get update
# apt-get install docker-ce=17.06.2~ce-0~ubuntu // バージョンを指定してDockerをインストール


Python導入

IBM Cloud Privateをインストールする際には,ansible を使用します。

その際,pythonを使用しますので導入しておきます。(Python V2.6〜2.9.x)

今回は,Python V 2.7.12 がインストールされました。

# apt install python

# apt-get update
# apt-get install python-pip


IBM Cloud Private導入

通常,数台のノードによってKubernetesクラスターを構成します。

IBM Cloud Privateでは,事前にクラスター構成ファイルにIPアドレスなどを指定しておくことで,自動的に構成される仕組みです。

image.png

参考: アーキテクチャ


  • Bootノード


    • 必須

    • k8sクラスターの導入・構成をキックするためのノード

    • 高可用に組む必要はない



  • Masterノード


    • 必須

    • k8sクラスターの管理を担うノード

    • リソース割当,ステート管理,スケジューリング,モニタリング,etc.

    • 複数台での高可用構成が望ましい



  • Proxyノード


    • 必須

    • 外部からのリクエストに対するプロキシーサーバー

    • 複数台での高可用構成が望ましい



  • Workerノード


    • 必須

    • アプリケーション(Pod/Deployment/Serviceなど)が動作するノード

    • パフォーマンスの観点で,十分な数のノード構成が望ましい

    • 複数台での高可用構成が望ましい



  • Managementノード


    • モニタリングなど管理系に特化したノード

    • Masterノードの負荷を軽減する役割なので必ずしも必須ではない



※本稿ではシングルノードで構成するので,Monitoringノードを除く,4ノード全てを1つのVMに構成します。

この後の手順では,以下を実施します。


  1. SSHキーの生成と,各ノードへの配布

  2. IBM Cloud Private CE インストールイメージを取得

  3. クラスター構成ファイル群の編集

  4. IBM Cloud Private CE のインストール

以下余談です。

IBM Cloud Privateのインストールイメージは,IBMによる動作テストを合格したコンポーネントの組合せとして,tarボールで固められています。

例えば,クラスター内で使用するための Docker CE も含まれており,クラスターを構成する各ノードに自動的に配布・導入されます。他にも,監視やロギング,利用量計測など様々な機能も標準機能としてビルトインで自動構築されます。


1) SSHキーの生成と各ノードへの配布

セキュアなノード間通信をするために,SSHキーを準備します。

※今回はシングルノード構成なので,公開鍵を各ノードにコピーするステップ(3行目)はスキップします。

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

# cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys
# ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<node_ip_address> // 今回はスキップ


2) IBM Cloud Private CE インストールイメージを取得

DockerHubから,IBM Cloud Private CEのインストールイメージをpullします。

※バージョン適宜変更してください。(2.1.0を2.1.0.1に変えるなど)

# docker pull ibmcom/icp-inception:2.1.0

2.1.0: Pulling from ibmcom/icp-inception
280aca6ddce2: Pull complete
6451c4289e16: Pull complete
fbf5ac173ad7: Pull complete
6161b89225d1: Pull complete
4242bdbf845a: Pull complete
3f3305395b3d: Pull complete
755ec132e2c4: Pull complete
f2dd77596efe: Pull complete
14740eadc65e: Pull complete
e9e523b58170: Pull complete
1e47726d79c6: Pull complete
Digest: sha256:eceb8e587b9f4fd75680672a26daa96fd5283df36ec08da197d1e393fa26cbcc
Status: Downloaded newer image for ibmcom/icp-inception:2.1.0
root@k8s-icp-single:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ibmcom/icp-inception 2.1.0 fa65473d72d8 6 weeks ago 445MB


3) クラスター構成ファイル群の編集

IBM Cloud Privateをインストールする前に,

k8sクラスターを構成する各ノードのIPアドレスや,外部公開するアドレスなどを事前設定します。

3-1) インストールするディレクトリの作成 (以下例では,k8s-icpというディレクトリ)

# mkdir /opt/k8s-icp

# cd /opt/k8s-icp

3-2) IBM Cloud Privateのインストールイメージから,構成用のファイル群を抽出

# docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0 cp -r cluster /data

# ls cluster
config.yaml hosts misc ssh_key

インストールディレクトリ内に,clusterディレクトリと,その下にファイル群が生成されていることが分かります。

ファイル名
k8sクラスターにおける用途

config.yaml
インストール用構成ファイル

hosts
各ノードの定義情報

misc/storage_class
動的ストレージのクラス定義

ssh_key
各ノードに通信するための秘密鍵

3-3) クラスターを構成する各ノードのIPを定義 (cluster/hosts)

# cd cluster

# vi hosts


/etc/k8s-icp/cluster/hosts

[master]

10.132.75.83 kubelet_extra_args='["--eviction-hard=memory.available<100Mi,nodefs.available<2Gi,nodefs.inodesFree<5%", "--image-gc-high-threshold=100%", "--image-gc-low-threshold=100%"]'

[worker]
10.132.75.83

[proxy]
10.132.75.83 kubelet_extra_args='["--eviction-hard=memory.available<100Mi,nodefs.available<2Gi,nodefs.inodesFree<5%", "--image-gc-high-threshold=100%", "--image-gc-low-threshold=100%"]'

#[management]
#4.4.4.4


今回はシングルノード構成なので,全て同じIPアドレスです(10.132.75.83)

[management]ノードは,管理系(ロギングやモニタリングなど)を専門に行うノードです。デフォルトでは,[master]ノードが担っています。[master]ノードの負荷を軽減する場合に[management]ノードを有効化する使いかたがあります。

今回は[management]ノードは使いません。

IPアドレスの後ろについているのは,Kubernetesの Eviction Policyの設定です。

簡単に言うと,メモリーやディスク,inodeのリソースに閾値を設けて,超えた場合にコンテナやイメージを削除してくれる機能の設定です。

Dockerイメージが削除されてしまうと,コンテナやpodを置き換えることが出来なくなったり,IBM Cloud Privateを正常に動作させることができなくなる場合があるため,Dockerイメージが削除されないように設定しています。

("--image-gc-high-threshold=100%", "--image-gc-low-threshold=100%")

※V2.1.0.1から,上記Eviction Policyの設定は不要になりました。

このため,/etc/k8s-icp/cluster/hostsは以下のように指定します。


/etc/k8s-icp/cluster/hosts

[master]

10.132.75.83

[worker]
10.132.75.83

[proxy]
10.132.75.83

#[management]
#4.4.4.4


3-4) SSHキー(秘密鍵)をコピー (cluster/ssh_key)

クラスター内の各ノードへセキュアに通信するために,秘密鍵コピーしておきます。

# cp ~/.ssh/id_rsa /opt/k8s-icp/cluster/ssh_key

3-5) IBM Cloud PrivateのコンソールUIのIPなどを設定 (cluster/config.yml)

以下のconfig.ymlから,パスワードやIPを指定する箇所3行を探して編集します。

# vi config.yml


/etc/k8s-icp/cluster/config.yml

<before>

default_admin_password: admin
# cluster_access_ip: 0.0.0.0
# proxy_access_ip: 0.0.0.0

<after>

default_admin_password: YOUR_PASSWORD // <== 任意のパスワードを設定
cluster_access_ip: 10.132.75.83 // <== IBM Cloud PrivateのコンソールアクセスIP
proxy_access_ip: 10.132.75.83 // <== リクエストを受け付けるプロキシーIP


各IPアドレスは,今回はシングルノードなので,今までと同じIPを指定します。


4) IBM Cloud Private CE のインストール

さて,いよいよ IBM Cloud Privateをインストールします。

dockerコマンドを実行すると,ansibleを使用して自動的に構成されます。

# screen

# docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0 install | tee install.log

※本記事での上記コマンド実行ディレクトリは, "/etc/k8s-icp/cluster/" です。

※自身の "clusterディレクトリ直下" で実行するようにしてください。

15分〜30分ほど待ちましょう。

少し余談。

私の知識の乏しさを露呈するようですが,本当に便利なので紹介しちゃいます。

docker runでIBM Cloud Privateのインストールをする前に,screenコマンドを実行しています。

これは,セッションを作成し,後でセッションIDを指定すれば戻ってこれるようにしています。

操作
種類
効果

screen
コマンド
新しいセッションを作成

Ctrl+a+d
ショートカット
デタッチ (セッションを離れる)

screen -r
コマンド
アタッチ (セッションに戻る)

用途としては,多少時間のかかるコマンドなど実行した際に,

「画面を切り替えて別の作業をしたり」あるいは「会社でコマンド実行して,家に帰ってから確認する」みたいな。

実はこれ,先輩から教えて頂いたのですが,目からウロコでした。

めちゃめちゃ便利。

電車の中で作業していて降車するまでにスクリプトが終わらず,駅のホームで20分ほど座っていたこともありました・・・それから帰宅。。

他の方の記事ですが,詳しくは以下を参照されると良いと思います。

参考: Linux screenコマンド使い方

...

..

.

そろそろですかね。

終わったみたいです。

PLAY RECAP *********************************************************************

10.132.75.83 : ok=200 changed=66 unreachable=0 failed=0
localhost : ok=214 changed=112 unreachable=0 failed=0

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

UI URL is https://10.132.75.83:8443 , default username/password is admin/xxxxxx

Playbook run took 0 days, 0 hours, 24 minutes, 11 seconds

24分かかったようです。

インストールが正常に完了すると,上記の "POST DEPLOY MESSAGE" の記載にあるように,UIへの接続情報が表示されます。


  • IBM Cloud PrivateのコンソールUI (URL)

  • Username: admin

  • Password: xxxxx (config.ymlで指定したパスワード)

実際の画面を見てみましょう。


少し遊んでみる

操作編は別途記事をあげようと思っていますが,少しだけ遊んでみましょう。


コンソールにログイン

ブラウザで UI URLに接続 (インストール成功時に表示されたものです)

私の場合,

URL: https://10.132.75.83:8443 です。

Username: admin

Password: xxxxxx

ログイン画面

image.png

ログイン後のダッシュボード画面 (ノードのリソース状況が表示されています)

image.png

左上にメニューがあります (ハンバーガーアイコン)

image.png

[メニュー]>[Workloads]>[Deployments] を開いてみましょう

image.png

※Deployment: 正確には正しくないですが,ざっくり言うとアプリケーションのようなものです

[メニュー]>[Catalog] を開いてみましょう

image.png

このカタログから,IBMミドルウェアやソフトウェア,OSSなどを選べば,すぐにコンテナとして実行できます。


カタログからサンプルアプリケーションをコンテナ実行してみる

カタログを開きます。([メニュー]>[Catalog])

※この後の作業は,図に示された内容と同様に入力・選択して進めます。

"ibm-nodejs-sample" を選択

image.png

Release nameに任意の名前を指定し,"I have read..." にチェックを入れる (下図参照)

image.png

Node.jsアプリがリリースされた旨を示すポップアップが表示されるので, "View Helm Release" をクリックする (下図参照)

image.png

一覧の中から,先程指定した名前(例えば "appnodejs")をクリックする (下図参照)

※他にリリースしていなければ,1行だけ表示されるはずです。

image.png

リリース済の詳細が表示されます (下図参照)

カタログからリリースした場合,ServiceとDeploymentがセットでリリースされるように構成されています

image.png

SERVICE欄の "appnodejs-ibm-nodejs-sam" をクリックします (下図参照)

image.png

Serviceの詳細が表示されます

Node port欄の "32598/TCP" をクリックします (下図参照) ※port番号は異なる場合があります

image.png

Node.jsのサンプルアプリケーションの画面が表示されます (下図参照)

image.png

数枚の画面イメージでの説明手順に従って,カタログからNode.jsのサンプルを選択しデプロイしました。

Helm Chartと呼ばれるパッケージ (カタログ上に用意されていたもの)には,

k8sクラスターの外から接続するための Service

アプリケーションをPodという単位でまとめた Deployment

その他,ポリシーなどの初期構成が組まれています。

つまり,必要な値(例えばportや使用するDockerイメージのバージョン・タグ)のみ変更し,迅速にコンテナ実行できるわけです。

用途は色々考えられますが,プロジェクト毎に最適な構成をパッケージ,Deep Learningのアプリ開発用途のパッケージ,などのように準備することも可能です。


IBM Cloud Privateに含まれるDockerイメージ


  • IBM Cloud Private CE に含まれるDockerイメージ


IBMCloudPruvate開発版(CE)

# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
ibmcom/icp-inception 2.1.0 fa65473d72d8 6 weeks ago 445MB
ibmcom/icp-identity-manager 2.1.0 018b45173e47 7 weeks ago 181MB
ibmcom/icp-datastore 2.1.0 3cdeba12adc9 7 weeks ago 1.69GB
ibmcom/icp-identity-provider 2.1.0 e22ffd935288 7 weeks ago 164MB
ibmcom/icp-platform-auth 2.1.0 7a0cbbda8a4c 7 weeks ago 503MB
ibmcom/iam-policy-administration 2.1.0 a6d087878dcb 7 weeks ago 876MB
ibmcom/kubernetes v1.7.3 09a180e57e1e 3 months ago 738MB
ibmcom/calico-policy-controller v0.7.0 60d797585fc5 3 months ago 21.9MB
ibmcom/calico-node v2.4.1 7643422fdf0f 4 months ago 277MB
ibmcom/calico-ctl v1.4.0 b0c499acdc21 4 months ago 43.6MB
ibmcom/calico-cni v1.10.0 88ca805c8ddd 4 months ago 70.3MB
ibmcom/k8s-dns-sidecar 1.14.4 38bac66034a6 5 months ago 41.8MB
ibmcom/k8s-dns-kube-dns 1.14.4 a8e00546bcf3 5 months ago 49.4MB
ibmcom/k8s-dns-dnsmasq-nanny 1.14.4 f7f45b9cb733 5 months ago 41.4MB
ibmcom/etcd v3.1.5 3f6d64a8fae8 7 months ago 152MB
ibmcom/mariadb 10.1.16 3b5159f610ed 16 months ago 392MB
ibmcom/pause 3.0 99e59f495ffa 19 months ago 747kB



  • IBM Cloud Private Cloud Native Edition (製品版) に含まれるイメージ


IBMCloudPrivate製品版

# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
ibmcom/icp-inception 2.1.0-ee e3f9c56cdbe0 7 weeks ago 446MB
ibmcom/icp-identity-manager 2.1.0 018b45173e47 7 weeks ago 181MB
ibmcom/docker 17.10 88c2796ff283 7 weeks ago 99.9MB
ibmcom/icp-datastore 2.1.0 3cdeba12adc9 7 weeks ago 1.69GB
ibmcom/icp-identity-provider 2.1.0 e22ffd935288 7 weeks ago 164MB
ibmcom/iam-token-service 2.1.0 1cd246816870 7 weeks ago 896MB
ibmcom/icp-platform-auth 2.1.0 7a0cbbda8a4c 7 weeks ago 503MB
ibmcom/icp-catalog-ui 2.1.0 d796f932443a 7 weeks ago 110MB
ibmcom/icp-platform-api 2.1.0 41cee979105e 7 weeks ago 140MB
ibmcom/icp-platform-ui 2.1.0 21d762ee71b3 7 weeks ago 157MB
ibmcom/icp-router 2.1.0 a33bb610a231 7 weeks ago 46.5MB
ibmcom/unified-router 2.1.0 56b95d3d24a6 7 weeks ago 50.1MB
ibmcom/icp-image-manager 2.1.0 b2da60c84dd2 7 weeks ago 13.6MB
ibmcom/mb-tools 2.0.0 38ad02e1fc10 7 weeks ago 422MB
ibmcom/icp-helm-api 2.1.0 f4447993b624 7 weeks ago 146MB
ibmcom/icp-helm-repo 2.1.0 4e5263125b93 7 weeks ago 91.7MB
ibmcom/mb-jenkins 2.0.0 2b56150ae924 7 weeks ago 860MB
ibmcom/sas-api 20171015 a5d1540bf097 7 weeks ago 514MB
ibmcom/iam-policy-decision 2.1.0 549e1bf00613 7 weeks ago 517MB
ibmcom/iam-policy-administration 2.1.0 a6d087878dcb 7 weeks ago 876MB
ibmcom/metering-reader 2.1.0 5033e38b5ad8 8 weeks ago 166MB
ibmcom/metering-ui 2.1.0 98a7ff80c3fd 8 weeks ago 435MB
ibmcom/metering-data-manager 2.1.0 08631e3cce6e 8 weeks ago 72.3MB
ibmcom/metering-server 2.1.0 6f87989e29ba 8 weeks ago 630MB
ibmcom/sas-mgmt 20171011 75fe0662a7ab 8 weeks ago 514MB
ibmcom/notification-dispatcher 20171011 a12fcde6365e 8 weeks ago 1.19GB
ibmcom/livescan-proxy 20171011 1f28dd781b9a 8 weeks ago 418MB
ibmcom/rootkit-annotator 20171011 e0d54f8afa6a 8 weeks ago 413MB
ibmcom/usncrawler 20171011 ba4a60853837 8 weeks ago 480MB
ibmcom/password-annotator 20171011 13cbea171a66 8 weeks ago 1.19GB
ibmcom/compliance-annotator 20171011 9a6812e9f19f 8 weeks ago 1.27GB
ibmcom/vulnerability-annotator 20171011 bca818bb6d43 8 weeks ago 1.26GB
ibmcom/config-parser 20171011 b69068191cc9 8 weeks ago 1.22GB
ibmcom/generic-indexer 20171011 9a03a4f3cc64 8 weeks ago 785MB
ibmcom/config-indexer 20171011 6f388d467108 8 weeks ago 785MB
ibmcom/elasticsearch 2.4.1-20171011 7317af2ea391 8 weeks ago 537MB
maven 3.5.0-jdk-8 080cf1fccf1c 2 months ago 750MB
ibmcom/zipkin 2.1.0 1f99fd08ad3f 2 months ago 421MB
ibmcom/reg-crawler 20171006 5317e50c4ae0 2 months ago 716MB
ibmcom/metrics-crawler 20171004 75a5b43eaec3 2 months ago 715MB
ibmcom/live-crawler 20171004 b72b1ccb62e2 2 months ago 715MB
ibmcom/indices-cleaner 0.2 5e092b17e223 2 months ago 210MB
ibmcom/statsd 0.7.2 e6e33f5278c2 2 months ago 640MB
ibmcom/k8s-kubectl v1.7.6 fbd8bfaa7dd2 2 months ago 76.9MB
ibmcom/icp-initcontainer 1.0.0 76da55c8019d 2 months ago 3.97MB
ibmcom/rescheduler v0.5.2 f428ec8116de 2 months ago 48.1MB
ibmcom/ucarp 1.5.2 d6f29a895ed9 3 months ago 7.67MB
ibmcom/tiller v2.6.0 47011b53bf14 3 months ago 48.6MB
ibmcom/kubernetes v1.7.3-ee 44cb09921a21 3 months ago 741MB
ibmcom/k8s-helm v2.5.0 204ddc018348 3 months ago 184MB
ibmcom/nginx-ingress-controller 0.9.0-beta.12 091ec63a2173 3 months ago 118MB
ibmcom/calico-policy-controller v0.7.0 60d797585fc5 3 months ago 21.9MB
ibmcom/service-catalog-apiserver v0.0.15 3a30f3472e44 4 months ago 196MB
ibmcom/service-catalog-controller-manager v0.0.15 708755fff078 4 months ago 193MB
ibmcom/kube-state-metrics v1.0.0 8bbbe7eb4704 4 months ago 43.9MB
ibmcom/calico-node v2.4.1 7643422fdf0f 4 months ago 277MB
ibmcom/grafana 4.4.3 49e2eb4da222 4 months ago 287MB
ibmcom/calico-ctl v1.4.0 b0c499acdc21 4 months ago 43.6MB
ibmcom/calico-cni v1.10.0 88ca805c8ddd 4 months ago 70.3MB
ibmcom/curl 3.6 f73fee23ac74 4 months ago 5.35MB
ibmcom/coredns 010 27e7aa6e71ce 4 months ago 43.5MB
ibmcom/kibana 5.5.1 7bf53f710f44 4 months ago 629MB
ibmcom/filebeat 5.5.1 af80995a4fcf 4 months ago 271MB
ibmcom/logstash 5.5.1 e8f5c2ec30f2 4 months ago 577MB
ibmcom/elasticsearch 5.5.1 74ef44f69db6 4 months ago 544MB
ibmcom/heketi 5 5851537645df 4 months ago 343MB
ibmcom/alertmanager v0.8.0 901c70144da4 4 months ago 17.7MB
ibmcom/heapster v1.4.0 749531a6d2cf 5 months ago 73.4MB
ibmcom/k8s-dns-sidecar 1.14.4 38bac66034a6 5 months ago 41.8MB
ibmcom/k8s-dns-kube-dns 1.14.4 a8e00546bcf3 5 months ago 49.4MB
ibmcom/k8s-dns-dnsmasq-nanny 1.14.4 f7f45b9cb733 5 months ago 41.4MB
ibmcom/prometheus v1.7.1 4da113bb6ae3 5 months ago 74.5MB
ibmcom/etcd v3.1.5 3f6d64a8fae8 7 months ago 152MB
ibmcom/gluster 0.5 d22cfe32c3f8 7 months ago 332MB
ibmcom/node-exporter v0.14.0 bb4a6b774658 8 months ago 18.9MB
ibmcom/kafka 0.10.0.1 223037679e4f 8 months ago 260MB
ibmcom/k8szk v2 2fd25e05d6e2 11 months ago 284MB
ibmcom/mb-jenkins-slave 2.5.2 9b21f9459d7a 15 months ago 644MB
ibmcom/configmap-reload v0.1 b70d7dba98e6 16 months ago 4.78MB
ibmcom/defaultbackend 1.2 4ac4774c2764 16 months ago 6.94MB
ibmcom/mariadb 10.1.16 3b5159f610ed 16 months ago 392MB
ibmcom/registry 2 8ff6a4aae657 18 months ago 172MB
ibmcom/collectd-exporter 0.3.1 8853888e7b44 18 months ago 13.8MB
ibmcom/pause 3.0 99e59f495ffa 19 months ago 747kB


いやー,さすがに違いすぎるやろ・・と思ってしまいますが。

開発版(Community Edition)と,商用版(Cloud Native Edition)では,含まれているイメージの数が全然違いました。

IBM Cloud Privateで構築した Kubernetes環境 そのものをしっかり管理していくため に,あらゆるオープンソース・テクノロジーを活用して仕上げているようです。


まとめ


Kubenetes環境を作りました。でもまだまだあります

本稿では,オンプレミスでクラウドネイティブを実現するための環境として,IBM Cloud Private (エンタープライズグレードのKubernetes環境)のCommunity Editionを導入しました。

お試しがてら,コンソール画面の一部や,カタログからサンプルアプリケーションを選択しデプロイ・稼働確認を行いました。

これでクラウドネイティブ・コンピューティングでマイクロサービスを実際に動作させるための最初のステップは行えた!

と言えるかと思います。

しかし,実はまだ・・・

IBM Cloud Privateの3つの側面の1つ目だけです。残る2つは,マルチクラウドの構築自動化・管理機能,さらに Cloud Foundry

細かく見ると有力なものが他にもあります。

例えば,セットで提供されるツール (Microservice Builder) とか。

Microservice Builderを使うと,新規にアプリケーションを開発して IBM Cloud Private環境にアプリケーションをリリース,そして継続的に更新を続けられるようになります。

CI/CD (継続的インテグレーション/デリバリー)って何?って思ってるヒトも勝手に自動化の世界に引き込まれることでしょう。

いまこのエリアのテクノロジーは非常にHOTなので皆さんも楽しんで貰えると思います。

早くやったもん勝ちだと思うので,ぜひ一緒にやりましょう。


1つお願い

しばらく遊んだあとには,ぜひ,組織やチームの体制,もっとも効率よく開発・運用できるツールの組合せ,その実現方法,それらのチームでの使い方,などを少しだけ考えてみてください。(考え込む必要はないと思います)

クラウドネイティブの世界で,"こうあるべき" という姿はあるにはあると思いますが,アプリのアジャイル開発と同様に,実際に使っていく中で組織ごとに最適化していくのが良いのではないでしょうか。

エラそうなこと言っているようですが,私も挑戦者の一人です。ご意見があれば,コメント欄でも,Twitterでも構いませんので,お気軽にどうぞ。公開されないようにDMでも構いません。


次回

さて次回ですが,正直何をやろうか決めてません。方針としては開発・運用者の役に立てるような内容を発信したいと思います。

しかし,一般的な内容にするとレベル感が低すぎるのが難点なのですが,重要なところはとことん細かくやっていければと思います。またよろしくお願いいたします。

内容についてのリクエストなどもあればお気軽にどうぞ。やれる範囲で頑張ります。


参考リンク