-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_OpenShiftFirstStep
-
戻る
- OpenShiftファースト・ステップ
- OpenShiftセカンド・ステップ
-
OpenShiftのファーストステップをどうやるか?
取り敢えず、以下のTest Drive OpenShiftから入ることにした。- Try Red Hat OpenShift Container Platform for Free
https://www.openshift.com/products/container-platform/trial/
- Try Red Hat OpenShift Container Platform for Free
-
Test Drive OpenShift
- Test Drive OpenShiftは、GCP, Azure, OPS?で提供されている模様。
- OpenShift Container Platformの機能を体験するのに役立つ。
- 以下は、「on Azure」のドキュメントと手順から。
-
Azureを使用するので、Azureのアカウントを作成しておく。
国立公園サンプル・アプリケーション
- Java EEベースのアプリケーション
- MongoDBデータベースに対して2D地理空間検索を実行。
- 世界中のすべての国立公園を検索してマップする。
Azure上にデプロイされる。
- 同一のResourceグループ、仮想ネットワーク
- マスターとノードで異なるサブネット・可用性セット
- マスター → ノードは内部ロードバランサを経由する。
OpenShiftの「アーキテクチャ」の該当節を参照。
-
Microsoft Azure Test Driveにアクセスする。
-
すると、
「No test drive was found!」
と表示されるので、
-
以下のリンク
「Explore more solutions on Azure Marketplace [See more]」
を押下して、Marketplace 起動する。
-
そこで、OpenShiftを検索し、
[Red Hat OpenShift Container Platform]を選択する。
- 以下の画面が表示されるので、[体験版]をクリックする(5hだけ利用可能)。

-
すると、Test Drive OpenShift (on Azure)の
-
展開が開始される(マニュアルが提供される)。
-
起動には20-30分かかる。
-
プロビジョニングの完了後、
-
ポータルの正確なURLとアカウント情報が電子メールで提供される。
-
また、画面が以下のようにプロビジョニングの完了後の画面に遷移する。
-
-

- ポータルの正確なURLとアカウント情報をメモしておく。
※ 以下で使用する oc コマンドや、プロジェクト / サービス / テンプレート等の用語は
OpenShift の該当節を、
ポッドは Kubernetes の該当節を参照。
OpenShift origin client tools v1.4.1 for Windowsをダウンロード
-
ZIPの展開で良い(ここでは「C:\openshift-cli」とする)。
-
以下パス情報をユーザー環境変数(Path)に登録する。
C:\openshift-cli -
CMDを起動し、
ocコマンドを実行し、動作することを確認する。>oc OpenShift Client ・・・ >oc version oc v1.4.1+3f9807a kubernetes v1.4.0+776c994 features: Basic-Auth
-
ポータルを使用
-
ポータルの正確なURLにアクセスして、ポータルからログイン可能。
https://masterdnsxx.centralus.cloudapp.azure.com/console
-
-
CLIを使用 (1)
-
SSHのEndpointの正確なURLを使用して以下の
oc loginコマンドを実行する。>oc login opnshdnsxx.westus.cloudapp.azure.com:8443 -
Test Driveに自己署名証明書を使用しているので y を押下
Use insecure connections? (y/n): -
一部のバージョンのWindows環境では以下のオプションが必要になることがある。
>oc login https://opnshdnsxx.westus.cloudapp.azure.com:8443 --insecure-skip-tls-verify=true -
アカウント情報を入力
Username: (The username provided to you in Access information section of the test-drive) Password: (The password provided to you in Access information section of the test-drive) Login successful.
-
-
CLIを使用 (2)
- ポータルにログインしてログイン・コマンドをコピーする。

-
以下のトークン付きのログイン・コマンドを実行してログインする。
>oc login https://opnshdnsxx.centralus.cloudapp.azure.com --token=XXXXX -
Test Driveに自己署名証明書を使用しているので y を押下
Use insecure connections? (y/n): -
ログインが完了し、既定のプロジェクトに居る状態になる。
Logged into "https://masterdnsxx.centralus.cloudapp.azure.com:443" as "testdrive" using the token provided. You have access to the following projects and can switch between them with 'oc project <projectname>': * default kube-public kube-system logging management-infra openshift openshift-infra openshift-node openshift-web-console Using project "default".
続いて、oc new-project コマンドでプロジェクトを新規作成する。
>oc new-project <projectname>
-
Kubernetes Guestbookアプリケーションを展開する。
https://hub.docker.com/r/kubernetes/guestbook/ -
先ずは、
oc new-projectコマンドで、
guestbookという新しいプロジェクトを作成する。>oc new-project usertestdrive-guestbook-
oc new-projectコマンドは自動的にそのプロジェクトを使用するように切り替える。Now using project "usertestdrive-guestbook" on server "https://masterdnsxx.centralus.cloudapp.azure.com:443". You can add applications to this project with the 'new-app' command. For example, try: oc new-app centos/ruby-22-centos7~https://github.com/openshift/ruby-ex.git to build a new example application in Ruby. -
プロジェクトの参照 / アクセスをする場合は、
oc get projectsコマンドを使用する。>oc get projects NAME DISPLAY NAME STATUS default Active kube-public Active kube-system Active logging Active management-infra Active openshift Active openshift-infra Active openshift-node Active openshift-web-console Active usertestdrive-guestbook Active
-
-
新規プロジェクトを作成した後、サービスを作成する。
-
oc new-appコマンドを実行する。>oc new-app kubernetes/guestbook --> Found Docker image 4305190 (3 years old) from Docker Hub for "kubernetes/guestbook" * An image stream will be created as "guestbook:latest" that will track this image * This image will be deployed in deployment config "guestbook" * Port 3000/tcp will be load balanced by service "guestbook" * Other containers can access this service through the hostname "guestbook" * WARNING: Image "kubernetes/guestbook" runs as the 'root' user which may not be permitted by your cluster administrator --> Creating resources ... imagestream "guestbook" created deploymentconfig "guestbook" created service "guestbook" created --> Success Run 'oc status' to view your app. -
次の方法で、イメージのダウンロードと展開のステータスを確認できる。
-
CLIを使用
oc get podsコマンドを使用する。>oc get pods -w NAME READY STATUS RESTARTS AGE guestbook-1-deploy 0/1 ContainerCreating 0 39s NAME READY STATUS RESTARTS AGE guestbook-1-deploy 1/1 Running 0 1m guestbook-1-zw947 0/1 Pending 0 0s guestbook-1-zw947 0/1 Pending 0 0s guestbook-1-zw947 0/1 ContainerCreating 0 0s guestbook-1-zw947 1/1 Running 0 8s guestbook-1-deploy 0/1 Completed 0 1m guestbook-1-deploy 0/1 Terminating 0 1m guestbook-1-deploy 0/1 Terminating 0 1m※ To exit, hit Ctrl+C.
-
ポータルを使用
- ポータルに移動
- プロジェクトを選択(usertestdrive-guestbook)
- ブラウズを選択
- ポッドを選択
-
-
oc get servicesコマンドで、サービスが作成されたのを確認できる。>oc get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE guestbook 172.30.XXX.XXX <none> 3000/TCP 8m
-
-
oc get serviceコマンドで、サービスの詳細をJSON形式で取得できる。>oc get service guestbook -o json ・・・JSON・・・ -
oc get podsコマンドで、ポッドの詳細をJSON形式で取得できる。>oc get pods NAME READY STATUS RESTARTS AGE guestbook-1-zw947 1/1 Running 0 5m >oc get pod guestbook-1-zw947 -o json ・・・JSON・・・ -
oc describe serviceコマンドで、サービスの詳細を取得できる。>oc describe service guestbook
-
oc get routesコマンドで、既存のルートがないことを確認する。>oc get routes No resources found. -
oc get servicesコマンドで、公開するサービス名を取得する。>oc get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE guestbook 172.30.XXX.XXX <none> 3000/TCP 8m -
oc expose serviceコマンドで、サービスのルートを作成する。>oc expose service guestbook route "guestbook" exposed -
oc get routesコマンドで、ルートが作成されたことを確認する。>oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION guestbook guestbook-usertestdrive-guestbook.XXX.XXX.XXX.XXX.Xip.io guestbook 3000-tcp -
WebアプリケーションにこのURLを使用してアクセス可能。
https://guestbook-usertestdrive-guestbook.XXX.XXX.XXX.XXX.Xip.io/
-
oc get podsコマンドで、ポッド名を取得する。>oc get pods NAME READY STATUS RESTARTS AGE guestbook-1-zw947 1/1 Running 0 16m -
oc rshコマンドで、ポッドにRSHを確立できる。-
(1)
>oc rsh guestbook-1-zw947 BusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shell (ash) Enter 'help' for a list of built-in commands. /app $ ls public/ index.html script.js style.css /app $ exit > -
(2)
>oc rsh guestbook-1-zw947 ls public/ index.html script.js style.css
-
-
oc execコマンドで、ポッド内でコマンドを実行できる。>oc exec guestbook-1-zw947 ls public/ index.html script.js style.css
-
現在の値を確認する。
-
DCを確認する。
>oc get dc NAME REVISION DESIRED CURRENT TRIGGERED BY guestbook 1 1 1 config,image(guestbook:latest) -
RCを確認する。
>oc get rc NAME DESIRED CURRENT READY AGE guestbook-1 1 1 1 2m >oc get rc guestbook-1 -o json ・・・JSON・・・ >oc get rc guestbook-1 -o json | grep -B1 -E "replicas" | grep -v "deployment" -- "spec": { "replicas": 1, -- "status": { "replicas": 1,※ Windowsではgrepが実行不可能。Windows Subsystem for Linuxを使用するとイイかもしれない。
-
-
DCのレプリカ数を「3」に設定しスケールさせる。
- ポータルを使用
ポータルならポッド横の[↑]ボタンで行う。
- ポータルを使用

-
CLIを使用
>oc scale --replicas=3 dc/guestbook deploymentconfig "guestbook" scaled -
変更後の値を確認する。
-
DCを確認する。
>oc get dc NAME REVISION DESIRED CURRENT TRIGGERED BY guestbook 1 3 3 config,image(guestbook:latest) -
RCを確認する。
>oc get rc NAME DESIRED CURRENT READY AGE guestbook-1 3 3 3 4m >oc get rc guestbook-1 -o json ・・・JSON・・・ >oc get rc guestbook-1 -o json | grep -B1 -E "replicas" | grep -v "deployment" -- "spec": { "replicas": 3, -- "status": { "replicas": n,
-
-
実際にレプリカが増えたかどうかは、ポッドの数を確認する。
-
CLIを使用
>oc get pods NAME READY STATUS RESTARTS AGE guestbook-1-2lbxq 1/1 Running 0 37m guestbook-1-g7flm 1/1 Running 0 37m guestbook-1-nb9gv 1/1 Running 0 41m -
ポータルを使用
-

-
以下のコマンドでサービスのエンドポイントを確認できる。
(ポッドがスケールするので、エンドポイントも増える)>oc describe svc/guestbook Name: guestbook Namespace: usertestdrive-guestbook Labels: app=guestbook Selector: app=guestbook,deploymentconfig=guestbook Type: ClusterIP IP: 172.30.XXX.XXX Port: 3000-tcp 3000/TCP Endpoints: 10.128.0.5:3000,10.128.0.6:3000,10.128.0.7:3000 Session Affinity: None No events.
-
以下のコマンドでポッドを削除する。
>oc delete pod guestbook-1-2lbxq pod "guestbook-1-2lbxq" deleted -
直ちに、ポッドの数を確認する。
-
Terminating & Pending
>oc get pods NAME READY STATUS RESTARTS AGE guestbook-1-2lbxq 1/1 Terminating 0 39m guestbook-1-7drz5 0/1 Pending 0 0s guestbook-1-g7flm 1/1 Running 0 39m guestbook-1-nb9gv 1/1 Running 0 43m -
Pending -> Running
>oc get pods NAME READY STATUS RESTARTS AGE guestbook-1-7drz5 1/1 Running 0 14s guestbook-1-g7flm 1/1 Running 0 39m guestbook-1-nb9gv 1/1 Running 0 44m
-
国立公園サンプルアプリケーションを展開する。
- 国立公園サンプルアプリケーション
世界中のすべての国立公園を検索し、2D地理空間情報をマップする。- Java EEベースのアプリケーション
- MongoDBデータベース
>oc new-project usertestdrive-nationalparks
Now using project "usertestdrive-nationalparks" on server "https://masterdnsxx.centralus.cloudapp.azure.com:443".
You can add applications to this project with the 'new-app' command. For example, try:
oc new-app centos/ruby-22-centos7~https://github.com/openshift/ruby-ex.git
to build a new example application in Ruby.
OpenShift上のDockerイメージとコードを結合する
- ポータルを使用
-
[My Projects] -> 「usertestdrive-nationalparks」を選択する。
-
[Add to Project]から[Browse Catalog]を選択する。
-
「"jboss-eap70-openshift" (JBoss EAP 7.0 (no https))」を検索して選択する。
-
開いたダイアログの次を押下し設定画面(OpenShiftの設定画面の該当節を参照)でアプリケーションのGitソースURIの設定を行う。
https://gitlab.com/gshipley/nationalparks.git -
次へで終了すると、以下のようにビルドが開始される。

- CLIを使用
・・・
プロジェクトのビルドの完了後、ビルド結果を確認する。
- ポータルを使用

-
ビルドのステータスを確認できる。
-
また、ログで動作の確認ができる。
-
リンク押下でエンドポイントにアクセスして動作を確認できる。
-
CLIを使用
-
ビルドのステータスを確認できる。
>oc get builds NAME TYPE FROM STATUS STARTED DURATION eap-app-1 Source Git@46aad91 Complete 6 minutes ago 3m3s -
また、ログで動作の確認ができる。
>oc get pods NAME READY STATUS RESTARTS AGE eap-app-1-86dz6 1/1 Running 0 36m eap-app-1-build 0/1 Completed 0 39m >oc logs -f eap-app-1-86dz6 INFO: Configuring JGroups discovery protocol to openshift.DNS_PING Using PicketBox SSL configuration. Missing SSO_URL. Unable to properly configure SSO-enabled applications Access log is disabled, ignoring configuration. Running jboss-eap-7/eap70-openshift image, version 1.7 -Xms512m -Xmx512m -XX:+UseParallelGC -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MaxMetaspaceSize=100m -XX:+ExitOnOutOfMemoryError ========================================================================= JBoss Bootstrap Environment JBOSS_HOME: /opt/eap JAVA: /usr/lib/jvm/java-1.8.0/bin/java
-
URL : http://eap-app-usertestdrive-nationalparks.XXX.XXX.XXX.XXX.nip.io

-
ポータルを使用
リンク押下でエンドポイントにアクセスして動作を確認できる。 -
CLIを使用
以下のコマンドでエンドポイントを確認、コレにアクセスして動作を確認できる。>oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION eap-app eap-app-usertestdrive-nationalparks.XXX.XXX.XXX.XXX.nip.io eap-app <all>
ポイント
- 永続化:EmptyDirをデータストレージに使用し永続化される。
- 環境変数:
- MONGODB_USER
- MONGODB_PASSWORD
- MONGODB_DATABASE
- MONGODB_ADMIN_PASSWORD
-
MongoDBデータベースをusertestdrive-nationalparksプロジェクトに追加する。
- ポータルを使用
-
[My Projects] -> 「usertestdrive-nationalparks」を選択する。
-
[Add to Project]から[Browse Catalog]を選択する。
-
「"mongodb-ephemeral" (MongoDB (Ephemeral))」を検索して選択する。
-
開いたダイアログの次を押下し設定画面(OpenShiftの設定画面の該当節を参照)で接続情報欄を全て「mongodb」と入力する。
-
次へで、接続情報のサマリが表示される。
Username: mongodb Password: mongodb Database Name: mongodb Connection URL: mongodb://mongodb:mongodb@mongodb/mongodb -
終了すると、以下のようにデプロイが開始される。
- ポータルを使用

- CLIを使用
・・・
環境変数を使用してアプリケーションとMongoDBデータベースを再配線
-
ポータルを使用
・・・ -
CLIを使用
-
環境変数を設定する。
>oc get dc NAME REVISION DESIRED CURRENT TRIGGERED BY eap-app 1 1 1 config,image(eap-app:latest) mongodb 1 1 1 config,image(mongodb:3.2) >oc env dc eap-app -e MONGODB_USER=mongodb -e MONGODB_PASSWORD=mongodb -e MONGODB_DATABASE=mongodb deploymentconfig "eap-app" updated -
環境変数の変更を確認する。
dcの「REVISION」がインクリメントされる点に注目。>oc get dc NAME REVISION DESIRED CURRENT TRIGGERED BY eap-app 2 1 1 config,image(eap-app:latest) mongodb 1 1 1 config,image(mongodb:3.2) >oc get dc eap-app -o json "spec": { ・・・ "template": { ・・・ "spec": { ・・・ "containers": [ { ・・・ "env": [ { "name": "MONGODB_DATABASE", "value": "mongodb" }, { "name": "MONGODB_PASSWORD", "value": "mongodb" }, { "name": "MONGODB_USER", "value": "mongodb" } >oc get rc NAME DESIRED CURRENT READY AGE eap-app-1 0 0 0 2h eap-app-2 1 1 1 10m mongodb-1 1 1 1 19m
-
- URL : http://eap-app-usertestdrive-nationalparks.XXX.XXX.XXX.XXX.nip.io
- 世界中のすべての国立公園がマップされていることを確認できる。

テンプレートについては OpenShift の該当節を参照。
-
まず新しいプロジェクトを作成して
>oc new-project nationalparks-template -
テンプレートをプロジェクトに追加
( "metadata": { "name": "nationalparks-eap", ・・・ )>oc create -f https://gitlab.com/jorgemoralespou/openshift3nationalparks/raw/master/nationalparks-template-eap.json template "nationalparks-eap" created -
上記、読み込んだテンプレートを使用してサービスを作成する。
( この際、nameを指定し、GIT_URIを書き換える )>oc new-app nationalparks-eap --name=nationalparks -p GIT_URI=https://gitlab.com/gshipley/nationalparks.git --> Deploying template "nationalparks-template/nationalparks-eap" to project nationalparks-template nationalparks-eap --------- Application template for MLB Parks application on EAP 6 & MongoDB built using STI * With parameters: * APPLICATION_NAME=nationalparks * APPLICATION_HOSTNAME= * GIT_URI=https://gitlab.com/gshipley/nationalparks.git * GIT_REF=master * Maven mirror url= * MONGODB_DATABASE=root * MONGODB_NOPREALLOC= * MONGODB_SMALLFILES= * MONGODB_QUIET= * MONGODB_USER=user6wH # generated * MONGODB_PASSWORD=EMJQgkSS # generated * MONGODB_ADMIN_PASSWORD=BfgwtDdJ # generated * GITHUB_TRIGGER_SECRET=BF5dVxOe # generated * GENERIC_TRIGGER_SECRET=K1vwlRJh # generated --> Creating resources ... buildconfig "nationalparks" created imagestream "nationalparks" created deploymentconfig "nationalparks-mongodb" created deploymentconfig "nationalparks" created route "nationalparks" created service "mongodb" created service "nationalparks" created service "ping" created --> Success Build scheduled, use 'oc logs -f bc/nationalparks' to track its progress. Run 'oc status' to view your app. -
以下のコマンドでエンドポイントを確認、コレにアクセスして動作を確認できる。
(エンドポイントが開くまで、暫く時間がかかった)>oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION nationalparks nationalparks-nationalparks-template.XXX.XXX.XXX.XXX.nip.io nationalparks <all>
-
ポータルを使用
-
[My Projects] -> 「usertestdrive-nationalparks」を選択する。
-
ポッドを選択し、[コンソール]タブからコンソールを表示する。
-
bashを使用して、ポッド内のMongoに接続
>mongo -u mongodb -p mongodb mongodb
-
CLIを使用
-
接続先のMongoのポッドの名称を取得する。
>oc get pods -
bashを使用して、ポッド上のMongoに接続
-
手動
>oc exec -ti mongodb-1 -- bash -c 'mongo -u mongodb -p mongodb mongodb' -
自動(テンプレート)
>oc exec -ti nationalparks-mongodb-1-xf5kn -- bash -c "mongo -u user6wH -p EMJQgkSS root" MongoDB shell version: 3.2.10 connecting to: root Welcome http://docs.mongodb.org/ Questions? Try the support group". For morehttp://groups.google.com/group/mongodb-user
-
-
-
データベースに追加された国立公園の数を数える。
>db.parks.count(); 2740 -
jsonドキュメントを表示することもできる。
>db.parks.find(); { "_id" : ObjectId("5b16032bf7c92700991bca3b"), "countryCode" : "ZW", "countryName" : "Zimbabwe", "pos" : [ -18.62987, 27.02104 ], "name" : "Hwange National Park Airport", "toponymName" : "Hwange National Park Airport" } ・・・
-
Microsoft Azure Test Drive で Red Hat OpenShift が無料ですぐに試せた。
http://blog.nnasaki.com/entry/2017/05/15/060000 -
すべての製品 – Microsoft Azure Marketplace > アプリ >
Red Hat OpenShift Container Platform > 体験版 > ユーザー マニュアル
https://ctlabmgrstatesn.blob.core.windows.net/b6650c77787145419eb0f71f69f81048/user-manual.pdf
- OpenShift で .NET Core 2.0を使いはじめる
http://tech.tanaka733.net/entry/2017/09/06/OpenShift_%E3%81%A7_.NET_Core_2.0%E3%82%92%E4%BD%BF%E3%81%84%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B
-
Getting Started Guide
https://access.redhat.com/documentation/en-us/net_core/2.0/html/getting_started_guide/ -
Chapter 2. .NET Core 2.0 on Red Hat OpenShift Container Platform
https://access.redhat.com/documentation/en-us/net_core/2.0/html/getting_started_guide/gs_dotnet_on_openshift- 2.1. Install Image Streams
- 2.2. Deploy Applications
- 2.3. Configuration
- 2.4. Sample Applications
- 2.5. Create a Runtime Image
- Announcing .NET Core 2.0 Support for OpenShift – OpenShift Blog
https://blog.openshift.com/announcing-net-core-2-0-support-openshift/ - Developing .NET Core 2.0 Web Applications on OpenShift - RHD Blog
https://developers.redhat.com/blog/2017/11/22/developing-net-core-2-0-web-applications-openshift/
移行メモ
- 「"jboss-eap70-opensshift"」→「"jboss-eap70-openshift"」に修正した。
oc login … –insecure-skip-tls-verify=trueおよびoc new-app … –p GIT_URI=…のハイフンが全角ダッシュ(–)だったため 半角ハイフンに修正した。- 元 Wiki では
ocコマンドや用語(プロジェクト / サービス / テンプレート / ポッド)に逐一 OpenShift / Kubernetes の ページ内アンカへのリンクが張られていたが、GitHub Wiki では再現できないため、 「演習」の冒頭にまとめて参照を置き、本文中はプレーン・テキストとした。- マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの Windows Subsystem for Linux に張り替えた。
- 同名の見出し(「プロジェクトのビルド」「エンドポイントにアクセス」)が 複数あり GitHub Wiki でアンカが衝突するため、括弧で文脈を補って一意にした。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名の該当節を参照)」の形に置き換えた。
Tags: 移行, OpenShift, Azure, Test Drive, oc, Kubernetes, JBoss EAP, MongoDB, テンプレート
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。