OpenShiftそのものをDockerで動かす構成でセットアップしようとしていろいろハマったので作業ログを残しておく
1. 環境を用意する
1-1. 仮想マシン立ち上げ
Vagrantで適当な実験環境を作る。Vagrantfileはこちら。
仮想マシンを立ち上げ、SSHで中に入る。ここから先はすべて仮想環境で実行。
$ ls
Vagrantfile docker-compose.yml
$ vagrant up
$ vagrant ssh
ここでの仮想マシンのIPアドレスは192.168.99.101
1-2. Dockerをインストール
yumで普通にインストールする。ついでにdocker-composeも入れておく。
Dockerを立ち上げる前に/etc/sysconfig/docker
をいじってinsecure registryを許可するようにする。
OpenShiftの内部では自前でdocker registryを持っていて、そこからビルドされたアプリが出し入れされる模様。
今回は簡単に--insecure-regisry 0.0.0.0/0
をつけて起動するように変更。
これらの操作はVagrantfileの中で実行済み。
ちなみに今回利用したdockerコンテナ内のOpenShiftバイナリのバージョンは1.0.6
2. OpenShiftコンテナを立ち上げる
2-1. コンテナの立ち上げ
こんな感じのdocker-compose.ymlを使って立ち上げる。
$ cd /vagrant
$ ls
Vagrantfile docker-compose.yml
$ sudo docker-compose up -d
2-2. OpenShiftのWeb UIを開いてみる
(仮想環境の)ホスト側からhttp://openshift.192.168.99.101.xip.io:8443
を開き、ログインできればOK。
ちなみに管理者のIDと初期パスワードはadmin:admin
になっているはず。
3. OpenShift用のDocker registryを立ち上げる
ここから先は簡単のためOpenShiftコンテナの中で作業する。
$ sudo docker ps # コンテナのIDなどを確認
$ sudo docker exec -it vagrant_origin_1 /bin/bash
Docker Registryを立ち上げる。
立ち上げておかないとアプリのビルドで失敗する。
# oadm registry --create --credentials=openshift.local.config/master/openshift-registry.kubeconfig --config=openshift.local.config/master/admin.kubeconfig
4. OpenShiftの内外をつなぐためのルータを立ち上げる
# echo '{"kind":"ServiceAccount","apiVersion":"v1","metadata":{"name":"router"}}' | oc create -f -
# oc edit scc privileged
(users: の中に`- system:serviceaccount:default:router`を追加)
# oadm router router --credentials=openshift.local.config/master/openshift-router.kubeconfig --service-account=router
5. 適当なアプリをデプロイしてみる
https://github.com/openshift/nodejs-ex をデプロイしてみる。
# oc login --username=admin --password=admin
# oc new-project my-project
# oc new-app openshift/nodejs-010-centos7~https://github.com/openshift/nodejs-ex.git
Web UI(またはoc status
)で「ビルドしてます」的な画面が見える。終わるまで少し待つ。
ビルド終了後、Web UIなどに出ているアドレス(172.17.0.7:8080
とか)へアクセスして応答が帰ってくることを確認する。
6. 外から見えるようにする
(仮想環境の)ホスト側から直接アプリが見えるようにする。
# oc expose service nodejs-ex --hostname=nodejs-ex.openshift.192.168.99.101.xip.io
ホスト側からnodejs-ex.openshift.192.168.99.101.xip.io
でアクセスできるようになっていればOK。
おつかれさまでした。