LoginSignup
7
7

More than 5 years have passed since last update.

IBM Bluemix Container Serviceで自前のdocker imageを稼働させるまで

Last updated at Posted at 2017-06-26

Bluemixで自前のdocker imageが動かせたらいいのに。デモ環境とかみんなに配って使ってもらえるし。

こちらにガイド作成されているのですが、どうもBluemixがサービス構成変更してしまったようで・・
http://qiita.com/m_mizutani/items/2926a63a766dcf64776c

IBM Container RegistryIBM Container Serviceを組み合わせることが必要になったようです。

Container Serviceを見ると、いきなり「Kubernetes clusters入門」なんてとこからスタートされて、ちょっとハードル高く感じてしまいますね。シングルノードで動かしたいだけなのだけど・・というわけで以下メモ。

作業するにあたり、以下のものは揃っているものとします。

  • Bluemixアカウント(IBM ID)
  • Bluemix CLI
  • Dockerエンジン(起動しておいてください)
  • Bluemixで動かしたいDockerイメージ

環境

  • macOS Sierra 10.12.5
  • Docker Version 17.03.1-ce-mac12 (17661)
  • Bluemix CLI version 0.5.4+ae22935-2017-05-18T06:24:28+00:00

イメージ稼働までのステップ

まずはイメージがBluemix上で稼働して、ログインできることを目指します。

  1. CLIの準備
  2. IBM Container Registryにdockerイメージ追加
  3. IBM Container ServiceでLite Kubernetes Cluster作成
  4. dockerイメージを実行

IBM Container Registryとは

Container Serviceからdocker image管理のサービスが切り出されたようですね。

サービス説明を見てみると、Dockerイメージ保管と共有のためのサービスとのこと。

IBM® Bluemix® Container Registry provides a multi-tenant private image registry that you can use to safely store and share your Docker images with users in your Bluemix account.

If you used the container registry in IBM Bluemix Container Service before 15 June 2017, you must consider the information in Moving to IBM Bluemix Container Registry.

IBM Container Serviceとは

これまた公式ドキュメントによると、以下のようなサービスとのこと。(著者訳)

IBM® Bluemix® Container Serviceとは、DockerとKubernetes を組み合わせることで、強力なツールと、直感的なユーザーエクスピリエンス、分離環境と組み込まれたセキュリティを、そして個々のホストに分散して配置されたアプリケーションクラスタに対してKubenetes APIを通じたデプロイ・運用・スケーリング、監視の自動化を提供します」

Kubernetes推しですが、今のところはdockerだけ使いたい・・
なんて思ったものの、サービス見て見ると、Lite Kubernete Clusterだと1ノードでした。
(ちょっと手順は増える気がするけど)やりたいことはできそうです。

CLIの準備

プラグイン導入

コンテナサービス用にCLIのプラグインを導入します。
ドキュメント を参考にやってみましょう。

まずはContainerを触るためのプラグイン。

$ bx plugin install container-service -r Bluemix
Looking up 'container-service' from repository 'Bluemix'...
Attempting to download the binary file...
21299472 bytes downloaded
Installing binary...
OK
Plug-in 'container-service 0.1.259' was successfully installed into /Users/hiroshi/.bluemix/plugins/container-service.

container-registryプラグインも導入します。

$ bx plugin install container-registry -r Bluemix
Looking up 'container-registry' from repository 'Bluemix'...
Attempting to download the binary file...
11786288 bytes downloaded
Installing binary...
OK
Plug-in 'container-registry 0.1.166' was successfully installed into /Users/hiroshi/.bluemix/plugins/container-registry.

ちゃんとインストールされたか確認。

$ bx plugin list
Listing installed plug-ins...

Plugin Name          Version   
container-registry   0.1.166   
container-service    0.1.259    

Kubenets CLIのインストール

後ほどContainer Serviceでクラスタ作るときに必要なので、CLI導入します
OS X
https://storage.googleapis.com/kubernetes-release/release/v1.5.6/bin/darwin/amd64/kubectl
Linux
http://storage.googleapis.com/kubernetes-release/release/v1.5.6/bin/linux/amd64/kubectl
Windows
http://storage.googleapis.com/kubernetes-release/release/v1.5.6/bin/windows/amd64/kubectl.exe

落としてきたファイルを /usr/local/binへ移動。

$ mv /users/hiroshi/Downloads/kubectl /usr/local/bin/kubectl

念のためちゃんとパス通ってるよねと。

$ echo $PATH
/usr/local/apache-maven-3.0.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

実行権限忘れずに付けます。

$ chmod +x /usr/local/bin/kubectl

IBM Container Registry にイメージを追加する

こちらから手順をピックアップして簡単に。

Bluemix CLIログイン

$ bx login -a api.ng.bluemix.net [-sso]

US-South以外を使用している場合は、api.ng.blumix.net の部分を変更してください。

  • api.au-syd.bluemix.net
  • api.eu-gb.bluemix.net

アカウント、パスワード等聞かれるので入力します。
認証連携されてる場合は、-ssoを忘れずに。

Container Registryへのログイン

$ bx cr login
Logging in to 'registry.ng.bluemix.net'...
Logged in to 'registry.ng.bluemix.net'.

OK

Namespaceの設定

Dockerイメージを登録する先としてNamespaceを決めます(hirokitaの部分をそれぞれ変えてください)
Regionごとにユニークである必要があるとのこと。

$ bx cr namespace-add hirokita
Adding namespace 'hirokita'...

Successfully added namespace 'hirokita'

OK

dockerイメージのpush

tag設定するため、pushしたいイメージのIMAGE IDを探します。

$ docker images
REPOSITORY                                        TAG                 IMAGE ID            CREATED             SIZE
irtest                                            latest              72b70d9a8360        8 minutes ago       2.55 GB

Bluemixのリポジトリに合わせてtag設定し、

$ docker tag <IMAGE ID> registry.ng.bluemix.com/<namespace>/<image_repo>:<tag>

例
$ docker tag 72b70d9a8360 registry.ng.bluemix.com/hirokita/irtest:latest

イメージをpushします。

$ docker push registry.ng.bluemix.net/hirokita/irtest
The push refers to a repository [registry.ng.bluemix.net/hirokita/irtest]
7cffb2d94fff: Pushed 
latest: digest: sha256:53aeb262ea8363d2a309dd206b3d5414d45d656a1a61ac3034de9827bae855b8 size: 529

イメージが追加されたことを確認。

$ bx cr image-list
Listing images...

REPOSITORY                                NAMESPACE   TAG      DIGEST         CREATED       SIZE     VULNERABILITY STATUS   
registry.ng.bluemix.net/hirokita/irtest   hirokita    latest   53aeb262ea83   5 hours ago   605 MB   OK

Container実行、その前に。

Container Serviceプラグインへのログイン

$ bx cs init
Using default API endpoint: https://us-south.containers.bluemix.net
OK

Lite Kubernetes Cluster作成

リンク先 にあるような、シングルインスタンスのクラスタを作成します。

$ bx cs cluster-create --name first_cluster
Creating cluster...
OK

コマンドはすぐ返ってきますが、デプロイにはちょっと時間がかかります。(ドキュメントによると最大15分くらいかかるかも)

ワーカーノードのデプロイが完了したかチェックします。
(NGの例)

$ bx cs workers first_cluster
Listing cluster workers...
OK
ID                                                 Public IP   Private IP   Machine Type   State               Status   
kube-hou02-pafea0786bae5246c3b718e47384af8300-w1   -           -            free           provision_pending   Waiting for master to be ready 

(OKの例: Stateがdeployedになっている)

$ bx cs workers first_cluster
Listing cluster workers...
OK
ID                                                 Public IP        Private IP     Machine Type   State      Status   
kube-hou02-pafea0786bae5246c3b718e47384af8300-w1   169.48.131.37   10.177.161.132   free           deployed   Deploy Automation Successful  

環境変数を取得します。今後このクラスターを操作する際には必ずこのコマンドを実行して設定を取得する必要あり。

$ bx cs cluster-config first_cluster
Downloading cluster config for first_cluster
OK
The configuration for first_cluster was downloaded successfully. Export environment variables to start using Kubernetes.

export KUBECONFIG=/Users/<username>/.bluemix/plugins/container-service/clusters/first_cluster/kube-config-hou02-first_cluster.yml

最後の一行、コピー&ペーストして実行します

$ export KUBECONFIG=/Users/<username>/.bluemix/plugins/container-service/clusters/first_cluster/kube-config-hou02-first_cluster.yml

Kubernete CLIコマンドを使って、Server Versionが正しく取得できることを確認します。

$ kubectl version --short
Client Version: v1.5.6
Server Version: v1.5.6-4+abe34653415733

Deploymentを作成します。

$ kubectl run irtest-deployment --image=registry.ng.bluemix.net/hirokita/irtest:latest
deployment "irtest-deployment" created

この図 のように、1つのPodから構成されるDeploymentを作成したことになります。

7
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7