Edited at

Hello world, OpenShift v3

More than 3 years have passed since last update.

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からアプリケーションをデプロイすることも可能です。