Check! Bluemix の Kubernetes Cluster への踏台コンテナをつくってみました!


こんばんは、 @dz_ こと大平かづみです。

Prologue - はじめに

先日開催した「もくもくクラウド自習室 (自習書付き!) #1」では、参加者の得意分野が十人十色でいろんな知見が得られ、主催の私もとても勉強になりました!

なかでも、メンバーさんから「Bluemix の Kubernetes 環境は1つなら無料!」と聞いて、これは早速試しましょっと!ヽ(☆’v`)★’v`)ノ

まずは Bluemix の Kubernetes に kubectl でアクセスできる踏み台環境を、Docker で作ってみました。

IBM Bluemix Container Service の Kubernetes Cluster について

私自身、口頭で教えてもらって進めたので、ドキュメントを全然読めていません。ひきつづき、この辺のドキュメントを参考に進めようと思います。

それから、メンバーさんが試していたのはこの記事だそうです。

IBM Bluemix Container Service で Kubernetes Cluster を試してみる

Kubernetes Cluster を作成する

Bluemix にログインし、「カタログ」>「コンテナー」>「Kubernetes Cluster」を開きます。

無料のクラスタを作成するには「Lite」を選択して、進めてください。

クラスタの作成はしばらく時間がかかるので、下記に進みましょう。

Bluemix CLI + Kubectl が入ったコンテナづくり

作成した Kubernetes Cluster に接続するためのコンテナを作ります。

IBM Bluemix Container Service のクラスタを立ち上げた後の「アクセス」画面や、下記の資料を参考にしました。

Dockerfile

まず、 Dockerfile を用意しましょう。

私は下記のように、Ubuntu ベースで、 Bluemix CLI と kubectl をインストールしたシンプルなイメージを作りました。

8001 ポートは、 kubectl proxy で立ち上げる Kubernetes のダッシュボードのデフォルトポートです。ホストマシンからアクセスできるように開けました。

FROM ubuntu:16.04

RUN apt-get update -y && \
    apt-get install -y \
        curl \
        sudo

ENV BLCLI_INSTALLER blcli_installer

RUN curl -fsSL -o ${BLCLI_INSTALLER} https://clis.ng.bluemix.net/install/linux && \
    sh ./${BLCLI_INSTALLER} && \
    rm ./${BLCLI_INSTALLER}

RUN bx plugin install container-service -r Bluemix

RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && \
    chmod +x ./kubectl && \
    sudo mv ./kubectl /usr/local/bin/kubectl

EXPOSE 8001

ちなみに、 sudo は Bluemix CLI のインストールスクリプト内でつかうのでインストールしました。が、コンテナにはあまり入れたくないですよね~。あくまで、お試し環境でお使いください。

気になる方は、オフライン・インストールとして、自前で tar.gz を展開・配置する方法もあるようです。

作ったコンテナで IBM Bluemix Container Service に接続する

Dockerfile ができたら、そのディレクトリで以降の作業をします。

# イメージをビルドする
docker build -t bl_kubectl .

# 8001 ポートを接続して、コンテナを起動し、bash にはいる
docker run -it -p 8001:8001 --rm=true bl_kubectl /bin/bash

bl_kubectl コンテナの中で、 Bluemix にログインし、Container Service プラグインを初期化します。

# Bluemix にログインする
bx login -a https://api.ng.bluemix.net

# bx コマンドの Container Service プラグインの初期化を行う
bx cs init
bx cs cluster-config <your-cluster-name>

この時点で、 KUBECONFIGexport するよう促されるので、従ってください。

例:
export KUBECONFIG=<path-to-config-file>/kube-config-hou02-xxx.yml

そして、 kubectl proxy でダッシュボードを起動します。このとき、 --address0.0.0.0 を指定します。 これを指定しないと、デフォルトの 127.0.0.1 で動作してコンテナの外から接続できません。

kubectl proxy --address='0.0.0.0' &

エラーがなければ、ホストマシンのブラウザで 127.0.0.1:8001/ui にアクセスしてみましょう~

よし、Kubernetes のダッシュボードにアクセスできました!ヾ(・∀・)ノ

Epilogue - おわりに

余談ですが、最近ではネットワーク系のコマンドは一新されてるらしく、 netstat の代わりに ss コマンドを使うそうで!

CentOS では こんな感じでそれぞれ置き換わってるみたいです。
- Mobile Study: CentOS6, CentOS7 システムコマンド対応表

Ubuntu も ifconfig がなくて ip address show に代わってました!

さいごに、上記を進めるにあたり、もくもくクラウド自習室に来てくれたみなさんにいろいろ教えてもらいました。ギブ&テイク、すてきですね! ヽ(☆’v`)★’v`)ノ