OpenShift v3 beta (v0.4)を試す

暫くアップデートしていなかったので、最新版はどうかなということで試してみました。

#日々、こまごまと変化しており、4/12にcloneしたソースコードとすでに変わってます。。。

環境構築

仮想OS の起動

Release v0.4.3 のソースコードアーカイブでは hack/build-go.sh がうまく行かなかったので、素直に git clone で最新のソースコードを取得すること方が良さそうです。

手順は以下の通りです。

(1) git clone https://github.com/openshift/origin.git

(2) cd <ローカルのクローンしたディレクトリ>

(3) vagrant up で、仮想OS の起動

(4) vagrant ssh で、仮想OSへログイン

(5) cd /data/src/github.com/openshift/origin; hack/build-go.sh

※/data/src/github.com/openshift/origin にホストOSのクローンしたディレクトリがマウントされています。

(6) sudo systemctl start openshift

インストールの詳細はOpenShift v3 beta1 を試す - akubicharm’s blog を見てください。(ただし、GUI モードだとちゃんと動作しないので、GUIパッケージのインストールと有効化はやらないでください)

動作確認

systemd の状態を確認すると、以下のようにpublic-master=https://10.0.2.15:8443  とNATのアドレスの 8443 ポートで管理コンソールが動作するようになっています。

[root@openshiftdev etc]# systemctl status openshift
● openshift.service - OpenShift
   Loaded: loaded (/usr/lib/systemd/system/openshift.service; disabled)
   Active: active (running) since Sun 2015-04-12 14:58:16 UTC; 45min ago
     Docs: https://github.com/openshift/origin
 Main PID: 18782 (openshift)
   CGroup: /system.slice/openshift.service
           ├─18782 /data/src/github.com/openshift/origin/_output/local/go/bin/openshift start --public-master=https://10.0.2.15:8443
           └─18822 journalctl -f

8443ポートはポートフォワーディングの設定がされているので、ホストOS のブラウザかで https://localhost:8443/console へアクセスすると、管理コンソールらしき画面が表示されます。

しかし、、、。ログイン画面は public-master で指定された URL にフォワードされるので NAT のアドレスになっていると、ホストOSのブラウザからはアクセスできません。

そこで、/usr/lib/systemd/system/openshift.service の起動オプションを次のように変更します。

[Unit]
Description=OpenShift
After=docker.service
Requires=docker.service
Documentation=https://github.com/openshift/origin

[Service]
Type=simple
EnvironmentFile=-/etc/profile.d/openshift.sh
#ExecStart=/data/src/github.com/openshift/origin/_output/local/go/bin/openshift start --public-master=https://10.0.2.15:8443
ExecStart=/data/src/github.com/openshift/origin/_output/local/go/bin/openshift start --public-master=https://localhost:8443

[Install]
WantedBy=multi-user.target

OpenShift を再起動します。

systemctl restart openshift
管理コンソールへのログイン

これで、ホストOSのブラウザで管理コンソールが表示されました。

admin/admin でログインでログインすることができます。

f:id:akubicharm:20150413015156p:plain

管理コマンドの利用

プロジェクトを作成しアプリケーションをデプロイする前に、環境変数を変更します。KUBERNETES_MASTER=http://localhost:8080

となっていますが、https://localhost:8443 で起動するようになっていますので、OpenShift v3 beta1 を試す - akubicharm’s blog と同様に環境変数を変更します。

export KUBECONFIG=/openshift.local.certificates/admin/.kubeconfig
export KUBERNETES_MASTER=https://localhost:8443
export CURL_CA_BUNDLE=/openshift.local.certificates/admin/root.crt
export CERT_DIR=/openshift.local.certificates/master



これで osc コマンドが使えるようになりました。osc status で確認すると次のように出力されます。

[root@openshiftdev ~]# osc status
In project default

service kubernetes (172.30.0.2:443 -> 443)

service kubernetes-ro (172.30.0.1:80 -> 80)

To see more information about a service or deployment config, use 'osc describe service <name>' or 'osc describe dc <name>'.
You can use 'osc get pods,svc,dc,bc,builds' to see lists of each of the types described above.

ローカルの Docker Registoryの作成

/data/src/github.com/openshift/origin/examples/sample-app/pullimages.shで Docker Image をダウンロード

[root@openshiftdev sample-app]# openshift ex registry --create --credentials=/openshift.local.certificates/openshift-registry/.kubeconfig --images=openshift/docker-registry:latest
services/docker-registry
deploymentConfigs/docker-registry
[root@openshiftdev sample-app]# osc get services
NAME              LABELS                                    SELECTOR                  IP             PORT(S)
docker-registry   docker-registry=default                   docker-registry=default   172.30.96.26   5000/TCP
kubernetes        component=apiserver,provider=kubernetes   <none>                    172.30.0.2     443/TCP
kubernetes-ro     component=apiserver,provider=kubernetes   <none>                    172.30.0.1     80/TCP

確認は example/sample-app/README.md ではcurl `osc get service docker-registry --template="{{ .portalIP }}:{{ .port }}"`と書いてありますが、ポート番号の表記方法が異なるため、この方法では確認ができません。

[root@openshiftdev ~]# osc get services | grep registry
docker-registry   docker-registry=default                   docker-registry=default   172.30.136.235   5000/TCP
[root@openshiftdev ~]# curl 172.30.136.235:5000
"docker-registry server (dev) (v0.9.0)"

プロジェクトの作成
[root@openshiftdev sample-app]# openshift ex new-project test --display-name="OpenShift 3 Sample" --description="This is an example project to demonstrate OpenShift v3" --admin=panda
[root@openshiftdev ~]# osc login -u panda -p panda
Login successful.

Using project "test"
[root@openshiftdev ~]# osc project test
Now using project "test" on server "https://10.0.2.15:8443"