OpenShift v3 で Hello world するための簡易手順です。
OpenShiftをテストするには、vegrantやdockerイメージを使うことも可能ですが、今回はシンプルにローカルで稼働させます。テストしているのは、以下の環境です。Linux上でgo(v1.4以降)とdocker(v1.7以降)のインストールが必要になります。
- Fedora 21,22,23
- RHEL 7.1
- CentOS 7.1 (docker-1.7.1-108.el7.centos.x86_64/go1.4.2)
- Ubuntu 14.04 (docker 1.8.1/go1.4)
OpenShift v3 ローカル起動
1. 事前準備
go1.4/docker1.7をインストールしてください。
使用するポートは以下になります。http サーバー(port:80)やetcdは停止しておいてください。また、dockerプロセスは予め停止しておいてください。
53, 80 443 4001 7001 8443
2. OpenShift (Origin) のソースコードを clone
cd /tmp
git clone https://github.com/openshift/origin.git
3. ローカルでサーバーを立ち上げるためのスクリプト(openshift-local-setup.sh)をダウンロードして実行
※注: スクリプトの実行はsudoかrootユーザーでお願いします。
wget https://raw.githubusercontent.com/nak3/openshift-local-setup/master/openshift-local-setup.sh
[root]# bash openshift-local-setup.sh
4. 別のターミナルウィンドウを開いて、3.の最後に出力されたコマンドをコピペして実行
例:
$ export PATH="/tmp/origin/_output/local/go/bin/:$PATH"
$ alias oc="oc --config=/tmp/origin/openshift.local.config/master/admin.kubeconfig"
$ alias oadm="oadm --config=/tmp/origin/openshift.local.config/master/admin.kubeconfig"
$ source /tmp/origin/rel-eng/completions/bash/oc
5. router と docker-registry の Running 状態を確認
$ oc get pod
NAME READY STATUS RESTARTS AGE
docker-registry-1-0llac 1/1 Running 0 24m
router-1-qs783 1/1 Running 0 24m
Hello world, OpenShift v3
1. ログイン & プロジェクトの作成
$ oadm policy add-role-to-user admin testuser
※注: 今回はテスト簡易化のために一般ユーザーにadmin権限を追加しています
$ oc login
Username: testuser
Authentication required for https://192.168.133.3:8443 (openshift)
Password: <テスト環境のため、パスワードはどんな文字列でもログイン可能です>
Login successful.
You don't have any projects. You can try to create a new project, by running
$ oc new-project <projectname>
$ oc new-project testproject
Now using project "testproject" on server "https://192.168.133.3:8443".
2. PHP アプリで Hello World
まずは、PHP を例に作成してみます。
2-1. アプリケーションの作成
$ oc new-app https://github.com/openshift/sti-php.git --context-dir=5.5/test/test-app -l app=php --strategy=source
imagestreams/sti-php
buildconfigs/sti-php
deploymentconfigs/sti-php
services/sti-php
Build "sti-php" created and started - you can run `oc status` to check the progress.
Service "sti-php" created at 172.30.36.155 with port mappings 8080.
2-2. ビルドの確認
$ oc get build
でRunningになってから確認してください。
$ oc build-logs sti-php-1
I0823 02:20:50.437783 1 builder.go:42] $BUILD env var is {"kind":"Build","apiVersion":"v1","metadata":
...
I0823 02:21:56.607111 1 sti.go:149] Pushing 172.30.107.232:5000/foo/sti-php:latest image ...
I0823 02:23:09.661091 1 sti.go:153] Successfully pushed 172.30.107.232:5000/foo/sti-php:latest
※注: この時、Buffering to Disk
で最後のPushがスタックする場合、おそらく環境のリソース不足です。
2-3. ローカルで Hello World
$ oc get pod
NAME READY STATUS RESTARTS AGE
sti-php-1-j7mez 1/1 Running 0 29s
$ oc get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
sti-php 172.30.36.155 <none> 8080/TCP app=php,deploymentconfig=sti-php 3m
$ curl 172.30.36.155:8080 (または、ブラウザでアクセス)
(PHP is working のメッセージ)
Hello Worldが出力されるかと思ったら、ここにあるテストアプリがHello Worldではなく、phpinfo()を出力させるものでした。気にしないで進めます。
2-4. 外部ホストから Hello World
※注: 今回は、/etc/hosts
を使ってテストしていますが、本来は DNS サーバーを使います。
OpenShift が稼働しているホスト上
$ oc expose service sti-php --hostname=hello-php.example.com
NAME HOST/PORT PATH SERVICE LABELS TLS TERMINATION
sti-php hello-php.example.com sti-php app=php
$ hostname -i
192.168.122.3
テスト用クライアントホスト上
# echo "192.168.122.3 hello-php.example.com" >> /etc/hosts
# curl hello-php.example.com (または、ブラウザでアクセス)
(PHP is working)
3. 言語で Hello World
ほぼ全てHello Worldを出力させるサンプルではないですが気にしないでください・・・。 アプリケーション作成時に、-l app=<ラベル名>
を設定しておけば、後から下のコマンドで一括削除が可能です。
アプリケーション削除方法:
oc delete all -l app=<ラベル名>
3-1. Python
以下、テスト方法は 2.PHP のテストと同じです。
oc new-app https://github.com/openshift/sti-python.git --context-dir=3.3/test/standalone-test-app -l app=python --strategy=source
3-2. Ruby
oc new-app https://github.com/openshift/sti-ruby.git --context-dir=2.0/test/puma-test-app -l app=ruby --strategy=source
3-3. Java EE (Wildfly)
oc new-app git://github.com/bparees/openshift-jee-sample -l app=wildfly --strategy=source
3-4. Nodejs
oc new-app https://github.com/openshift/sti-nodejs.git --context-dir=0.10/test/test-app/ -l app=nodejs --strategy=source
3-5. Perl
oc new-app https://github.com/openshift/sti-perl.git --context-dir=5.20/test/sample-test-app -l app=perl --strategy=source
今回は、コマンドラインからの手順でしたが、https://<ホストIP>/8443
にアクセスすれば、Add to project
からアプリケーションをデプロイすることも可能です。