OpenShiftファースト・ステップ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>OpenShift]]
--OpenShiftファースト・ステップ
--[[OpenShiftセカンド・ステップ]]
*目次 [#l97a5d0b]
#contents
*概要 [#b18f50c2]
-OpenShiftのファーストステップをどうやるか?~
取り敢えず、以下のTest Drive OpenShiftから入ることにした。
--Try Red Hat OpenShift Container Platform for Free~
https://www.openshift.com/products/container-platform/tri...
-Test Drive OpenShift
--Test Drive OpenShiftは、GCP, Azure, OPS?で提供されてい...
--OpenShift Container Platformの機能を体験するのに役立つ。
--以下は、「on Azure」のドキュメントと手順から。
-Azureを使用するので、Azureのアカウントを作成しておく。
*サンプル [#fcc28c76]
国立公園サンプル・アプリケーション
-Java EEベースのアプリケーション
-MongoDBデータベースに対して2D地理空間検索を実行。
-世界中のすべての国立公園を検索してマップする。
*アーキテクチャ [#nd02a3f7]
Azure上にデプロイされる。
**Azure上のアーキテクチャ [#nc246381]
-同一のResourceグループ、仮想ネットワーク
-マスターとノードで異なるサブネット・可用性セット
-マスター → ノードは内部ロードバランサを経由する。
**[[OpenShiftのアーキテクチャ>OpenShift#o75598f0]] [#i725...
*立上 [#qbee041e]
**探索 [#bf9e2db5]
-[[Microsoft Azure Test Drive>https://testdrive.azure.com...
-すると、
>「No test drive was found!」
>と表示されるので、
-以下のリンク
>「Explore more solutions on Azure Marketplace [See more]」
>を押下して、Marketplace 起動する。
-そこで、OpenShiftを検索し、~
[Red Hat OpenShift Container Platform]を選択する。
**起動 [#t7a8be1e]
-以下の画面が表示されるので、[体験版]をクリックする(5hだ...
#ref(1.png,left,nowrap,手順1,60%)
-すると、Test Drive OpenShift (on Azure)の
--展開が開始される(マニュアルが提供される)。
--起動には20-30分かかる。
--プロビジョニングの完了後、
---ポータルの正確なURLとアカウント情報が電子メールで提供...
---また、画面が以下のようにプロビジョニングの完了後の画面...
#ref(2.png,left,nowrap,手順2,60%)
-ポータルの正確なURLとアカウント情報をメモしておく。
*演習 [#vfa0c18f]
**1 : OpenShift CLIのインストール [#i98da750]
[[OpenShift origin client tools v1.4.1 for Windows>https:...
***インストール [#m62f28a4]
-ZIPの展開で良い(ここでは「C:\openshift-cli」とする)。
-以下パス情報をユーザー環境変数(Path)に登録する。
C:\openshift-cli
-CMDを起動し、[[oc>OpenShift#t172a1fe]]コマンドを実行し、...
>oc
OpenShift Client
・・・
>oc version
oc v1.4.1+3f9807a
kubernetes v1.4.0+776c994
features: Basic-Auth
**2 : 動作確認とクイックツアー [#zafdc4b2]
***ログイン [#d7a25afe]
-ポータルを使用
--ポータルの正確なURLにアクセスして、ポータルからログイン...
https://masterdnsxx.centralus.cloudapp.azure.com/console
-CLIを使用 (1)
--SSHのEndpointの正確なURLを使用して以下の[[oc login>Open...
>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:8...
--アカウント情報を入力
Username: (The username provided to you in Access inform...
Password: (The password provided to you in Access inform...
Login successful.
-CLIを使用 (2)
--ポータルにログインしてログイン・コマンドをコピーする。
#ref(3.png,left,nowrap,手順3,60%)
--以下のトークン付きのログイン・コマンドを実行してログイ...
>oc login https://opnshdnsxx.centralus.cloudapp.azure.co...
--Test Driveに自己署名証明書を使用しているので y を押下
Use insecure connections? (y/n):
-ログインが完了し、既定のプロジェクトに居る状態になる。
Logged into "https://masterdnsxx.centralus.cloudapp.azur...
You have access to the following projects and can switch...
* default
kube-public
kube-system
logging
management-infra
openshift
openshift-infra
openshift-node
openshift-web-console
Using project "default".
***新規作成 [#g283220f]
続いて、[[oc new-project>OpenShift#o7d1d51c]]コマンドで[[...
>oc new-project <projectname>
**3 : Docker Imageを展開 [#f2cb9675]
***最初のイメージを展開する。 [#d38c20f4]
-Kubernetes Guestbookアプリケーションを展開する。
https://hub.docker.com/r/kubernetes/guestbook/
-先ずは、[[oc new-project>OpenShift#o7d1d51c]]コマンドで、~
guestbookという新しい[[プロジェクト>OpenShift#me26efb8]]...
>oc new-project usertestdrive-guestbook
--[[oc new-project>OpenShift#o7d1d51c]]コマンドは自動的に...
Now using project "usertestdrive-guestbook" on server "h...
You can add applications to this project with the 'new-a...
oc new-app centos/ruby-22-centos7~https://github.com...
to build a new example application in Ruby.
--[[プロジェクト>OpenShift#me26efb8]]の参照 / アクセスを...
>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
-新規[[プロジェクト>OpenShift#me26efb8]]を作成した後、[[...
--[[oc new-app>OpenShift#nfa9dcdd]]コマンドを実行する。
>oc new-app kubernetes/guestbook
--> Found Docker image 4305190 (3 years old) from Docker...
* An image stream will be created as "guestbook:late...
* This image will be deployed in deployment config "...
* Port 3000/tcp will be load balanced by service "gu...
* Other containers can access this service through...
* WARNING: Image "kubernetes/guestbook" runs as the ...
--> Creating resources ...
imagestream "guestbook" created
deploymentconfig "guestbook" created
service "guestbook" created
--> Success
Run 'oc status' to view your app.
--次の方法で、イメージのダウンロードと展開のステータスを...
---CLIを使用~
[[oc get pods>OpenShift#y80f6ad9]]コマンドを使用する。
>oc get pods -w
NAME READY STATUS RESTA...
guestbook-1-deploy 0/1 ContainerCreating 0 ...
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 ...
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.
---ポータルを使用
>
+ポータルに移動
+[[プロジェクト>OpenShift#me26efb8]]を選択
usertestdrive-guestbook
+ブラウズを選択
+[[ポッド>Kubernetes#j268603c]]を選択
--[[oc get services>OpenShift#y80f6ad9]]コマンドで、[[サ...
>oc get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
guestbook 172.30.XXX.XXX <none> 3000/TCP 8m
***作成した[[サービス>OpenShift#l875353c]]を確認する。 [#...
-[[oc get service>OpenShift#y80f6ad9]]コマンドで、[[サー...
>oc get service guestbook -o json
・・・JSON・・・
-[[oc get pods>OpenShift#y80f6ad9]]コマンドで、[[ポッド>K...
>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>OpenShift#i739e841]]コマンドで、[[...
>oc describe service guestbook
**4 : ルート作成してサービス公開[#j0e644a9]
-[[oc get routes>OpenShift#y80f6ad9]]コマンドで、既存のル...
>oc get routes
No resources found.
-[[oc get services>OpenShift#y80f6ad9]]コマンドで、公開す...
>oc get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
guestbook 172.30.XXX.XXX <none> 3000/TCP 8m
-[[oc expose service>OpenShift#u8e985ad]]コマンドで、[[サ...
>oc expose service guestbook
route "guestbook" exposed
-[[oc get routes>OpenShift#y80f6ad9]]コマンドで、ルートが...
>oc get routes
NAME HOST/PORT ...
SERVICES PORT TERMINATION
guestbook guestbook-usertestdrive-guestbook.XXX.XXX.XX...
guestbook 3000-tcp
-WebアプリケーションにこのURLを使用してアクセス可能。
https://guestbook-usertestdrive-guestbook.XXX.XXX.XXX.XX...
**5 : リモート操作 [#q0ae4455]
-[[oc get pods>OpenShift#y80f6ad9]]コマンドで、[[ポッド>K...
>oc get pods
NAME READY STATUS RESTARTS AGE
guestbook-1-zw947 1/1 Running 0 16m
-[[oc rsh>OpenShift#aad9e41b]]コマンドで、[[ポッド>Kubern...
--(1)
>oc rsh guestbook-1-zw947
BusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shel...
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>OpenShift#o147b488]]コマンドで、[[ポッド>Kuber...
>oc exec guestbook-1-zw947 ls public/
index.html
script.js
style.css
**6 : スケーリングと自己修復 [#h23df53a]
***スケールアップを確認する。 [#df3a2b32]
-現在の値を確認する。
--DCを確認する。
>oc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
guestbook 1 1 1 config,image(...
--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" ...
--
"spec": {
"replicas": 1,
--
"status": {
"replicas": 1,
※ Windowsではgrepが実行不可能。[[WSL>https://techinfoofmi...
-DCのレプリカ数を「3」に設定しスケールさせる。
--ポータルを使用~
ポータルなら[[ポッド>Kubernetes#j268603c]]横の[↑]ボタンで...
#ref(4.png,left,nowrap,手順4,60%)
--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(...
--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" ...
--
"spec": {
"replicas": 3,
--
"status": {
"replicas": n,
-実際にレプリカが増えたかどうかは、[[ポッド>Kubernetes#j2...
--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
--ポータルを使用
#ref(5.png,left,nowrap,手順5,60%)
-以下のコマンドで[[サービス>OpenShift#l875353c]]のエンド...
([[ポッド>Kubernetes#j268603c]]がスケールするので、エン...
>oc describe svc/guestbook
Name: guestbook
Namespace: usertestdrive-guestbook
Labels: app=guestbook
Selector: app=guestbook,deploymentconfig=g...
Type: ClusterIP
IP: 172.30.XXX.XXX
Port: 3000-tcp 3000/TCP
Endpoints: 10.128.0.5:3000,10.128.0.6:3000,...
Session Affinity: None
No events.
***自己修復を確認する。 [#e0e9aefa]
-以下のコマンドで[[ポッド>Kubernetes#j268603c]]を削除する。
>oc delete pod guestbook-1-2lbxq
pod "guestbook-1-2lbxq" deleted
-直ちに、[[ポッド>Kubernetes#j268603c]]の数を確認する。
--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
**7 : JBossにJavaコードをデプロイ [#vac65cfc]
国立公園サンプルアプリケーションを展開する。
-国立公園サンプルアプリケーション~
世界中のすべての国立公園を検索し、2D地理空間情報をマップ...
--Java EEベースのアプリケーション
--MongoDBデータベース
***プロジェクトの作成 [#wdac3f1e]
>oc new-project usertestdrive-nationalparks
Now using project "usertestdrive-nationalparks" on serve...
You can add applications to this project with the 'new-a...
oc new-app centos/ruby-22-centos7~https://github.com...
to build a new example application in Ruby.
***プロジェクトのビルド [#d0db777b]
OpenShift上のDockerイメージとコードを結合する
-ポータルを使用
--[[ポータルを表示する>#zafdc4b2]]。
--[My Projects] -> 「usertestdrive-nationalparks」を選択...
--[Add to Project]から[Browse Catalog]を選択する。
--「"jboss-eap70-opensshift" (JBoss EAP 7.0 (no https))」...
--開いたダイアログの次を押下し[[設定画面>OpenShiftの設定...
https://gitlab.com/gshipley/nationalparks.git
--次へで終了すると、以下のようにビルドが開始される。
#ref(6.png,left,nowrap,手順6,60%)
-CLIを使用~
・・・
***ビルド確認 [#k0643ec5]
プロジェクトのビルドの完了後、ビルド結果を確認する。
-ポータルを使用
#ref(7.png,left,nowrap,手順7,60%)
--ビルドのステータスを確認できる。
--また、ログで動作の確認ができる。
--リンク押下でエンドポイントにアクセスして動作を確認でき...
-CLIを使用
--ビルドのステータスを確認できる。
>oc get builds
NAME TYPE FROM STATUS STARTED ...
eap-app-1 Source Git@46aad91 Complete 6 minutes...
--また、ログで動作の確認ができる。
>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 openshif...
Using PicketBox SSL configuration.
Missing SSO_URL. Unable to properly configure SSO-enable...
Access log is disabled, ignoring configuration.
Running jboss-eap-7/eap70-openshift image, version 1.7
-Xms512m -Xmx512m -XX:+UseParallelGC -XX:MinHeapFreeRati...
-XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:Ma...
========================================================...
JBoss Bootstrap Environment
JBOSS_HOME: /opt/eap
JAVA: /usr/lib/jvm/java-1.8.0/bin/java
***エンドポイントにアクセス [#pb6dba13]
URL : http://eap-app-usertestdrive-nationalparks.XXX.XXX....
#ref(8.png,left,nowrap,手順8,30%)
-ポータルを使用~
リンク押下でエンドポイントにアクセスして動作を確認できる。
-CLIを使用~
以下のコマンドでエンドポイントを確認、コレにアクセスして...
>oc get routes
NAME HOST/PORT ...
SERVICES PORT TERMINATION
eap-app eap-app-usertestdrive-nationalparks.XXX.XXX.XX...
**8 : MongoDBデータベースを追加 [#aef2381a]
ポイント
-永続化:EmptyDirをデータストレージに使用し永続化される。
-環境変数:
--MONGODB_USER
--MONGODB_PASSWORD
--MONGODB_DATABASE
--MONGODB_ADMIN_PASSWORD
***プロジェクトのビルド [#t5023b3f]
-MongoDBデータベースをusertestdrive-nationalparksプロジェ...
--ポータルを使用
---[[ポータルを表示する>#zafdc4b2]]。
---[My Projects] -> 「usertestdrive-nationalparks」を選択...
---[Add to Project]から[Browse Catalog]を選択する。
---「"mongodb-ephemeral" (MongoDB (Ephemeral))」を検索し...
---開いたダイアログの次を押下し[[設定画面>OpenShiftの設定...
---次へで、接続情報のサマリが表示される。
Username: mongodb
Password: mongodb
Database Name: mongodb
Connection URL: mongodb://mongodb:mongodb@mongodb/mongodb
---終了すると、以下のようにデプロイが開始される。
#ref(9.png,left,nowrap,手順9,60%)
--CLIを使用~
・・・
***再配線 [#fd25ede0]
環境変数を使用してアプリケーションとMongoDBデータベースを...
-ポータルを使用~
・・・
-CLIを使用
--環境変数を設定する。
>oc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
eap-app 1 1 1 config,image(ea...
mongodb 1 1 1 config,image(mo...
>oc env dc eap-app -e MONGODB_USER=mongodb -e MONGODB_PA...
deploymentconfig "eap-app" updated
--環境変数の変更を確認する。~
dcの「REVISION」がインクリメントされる点に注目。
>oc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
eap-app 2 1 1 config,image(ea...
mongodb 1 1 1 config,image(mo...
>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
***エンドポイントにアクセス [#a1b90616]
-URL : http://eap-app-usertestdrive-nationalparks.XXX.XXX...
-世界中のすべての国立公園がマップされていることを確認でき...
#ref(10.png,left,nowrap,手順10,30%)
**9 : [[テンプレート>OpenShift#z02ad51f]]の使用 [#f869c572]
-まず新しいプロジェクトを作成して
>oc new-project nationalparks-template
-テンプレートをプロジェクトに追加~
( "metadata": { "name": "nationalparks-eap", ・・・ )
>oc create -f https://gitlab.com/jorgemoralespou/openshi...
template "nationalparks-eap" created
-上記、読み込んだテンプレートを使用して[[サービス>OpenShi...
( この際、nameを指定し、GIT_URIを書き換える )
>oc new-app nationalparks-eap --name=nationalparks –p GI...
--> Deploying template "nationalparks-template/nationalp...
nationalparks-eap
---------
Application template for MLB Parks application on E...
* With parameters:
* APPLICATION_NAME=nationalparks
* APPLICATION_HOSTNAME=
* GIT_URI=https://gitlab.com/gshipley/nationalpa...
* 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' t...
Run 'oc status' to view your app.
-以下のコマンドでエンドポイントを確認、コレにアクセスして...
(エンドポイントが開くまで、暫く時間がかかった)
>oc get routes
NAME HOST/PORT ...
nationalparks nationalparks-nationalparks-template.XXX...
**10 : コンテナ内のMongoコマンドラインシェルの使用 [#wf08...
***[[ポッド>Kubernetes#j268603c]]上のMongoに接続 [#j7d436...
-ポータルを使用
--[[ポータルを表示する>#zafdc4b2]]。
--[My Projects] -> 「usertestdrive-nationalparks」を選択...
--[[ポッド>Kubernetes#j268603c]]を選択し、[コンソール]タ...
--bashを使用して、[[ポッド>Kubernetes#j268603c]]内のMongo...
>mongo -u mongodb -p mongodb mongodb
-CLIを使用
--接続先のMongoの[[ポッド>Kubernetes#j268603c]]の名称を取...
>oc get pods
--bashを使用して、[[ポッド>Kubernetes#j268603c]]上のMongo...
---手動
>oc exec -ti mongodb-1 -- bash -c 'mongo -u mongodb -p m...
---自動(テンプレート)
>oc exec -ti nationalparks-mongodb-1-xf5kn -- bash -c "m...
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
***Mongoコマンドラインシェルを実行 [#bb1c9e29]
-データベースに追加された国立公園の数を数える。
>db.parks.count();
2740
-jsonドキュメントを表示することもできる。
>db.parks.find();
{ "_id" : ObjectId("5b16032bf7c92700991bca3b"), "country...
・・・
*参考 [#jcb9f653]
**世界のやまさ [#d9fbe3c6]
-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/b6650c77787...
**銀の光と碧い空 [#j8dc2a6f]
-OpenShift で .NET Core 2.0を使いはじめる~
http://tech.tanaka733.net/entry/2017/09/06/OpenShift_%E3%...
***Red Hat Customer Portal [#jba12ca3]
-Getting Started Guide~
https://access.redhat.com/documentation/en-us/net_core/2....
-Chapter 2. .NET Core 2.0 on Red Hat OpenShift Container ...
https://access.redhat.com/documentation/en-us/net_core/2....
--2.1. Install Image Streams
--2.2. Deploy Applications
--2.3. Configuration
--2.4. Sample Applications
--2.5. Create a Runtime Image
**その他 [#zb45a00b]
-Announcing .NET Core 2.0 Support for OpenShift – OpenShi...
https://blog.openshift.com/announcing-net-core-2-0-suppor...
-Developing .NET Core 2.0 Web Applications on OpenShift -...
https://developers.redhat.com/blog/2017/11/22/developing-...
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>OpenShift]]
--OpenShiftファースト・ステップ
--[[OpenShiftセカンド・ステップ]]
*目次 [#l97a5d0b]
#contents
*概要 [#b18f50c2]
-OpenShiftのファーストステップをどうやるか?~
取り敢えず、以下のTest Drive OpenShiftから入ることにした。
--Try Red Hat OpenShift Container Platform for Free~
https://www.openshift.com/products/container-platform/tri...
-Test Drive OpenShift
--Test Drive OpenShiftは、GCP, Azure, OPS?で提供されてい...
--OpenShift Container Platformの機能を体験するのに役立つ。
--以下は、「on Azure」のドキュメントと手順から。
-Azureを使用するので、Azureのアカウントを作成しておく。
*サンプル [#fcc28c76]
国立公園サンプル・アプリケーション
-Java EEベースのアプリケーション
-MongoDBデータベースに対して2D地理空間検索を実行。
-世界中のすべての国立公園を検索してマップする。
*アーキテクチャ [#nd02a3f7]
Azure上にデプロイされる。
**Azure上のアーキテクチャ [#nc246381]
-同一のResourceグループ、仮想ネットワーク
-マスターとノードで異なるサブネット・可用性セット
-マスター → ノードは内部ロードバランサを経由する。
**[[OpenShiftのアーキテクチャ>OpenShift#o75598f0]] [#i725...
*立上 [#qbee041e]
**探索 [#bf9e2db5]
-[[Microsoft Azure Test Drive>https://testdrive.azure.com...
-すると、
>「No test drive was found!」
>と表示されるので、
-以下のリンク
>「Explore more solutions on Azure Marketplace [See more]」
>を押下して、Marketplace 起動する。
-そこで、OpenShiftを検索し、~
[Red Hat OpenShift Container Platform]を選択する。
**起動 [#t7a8be1e]
-以下の画面が表示されるので、[体験版]をクリックする(5hだ...
#ref(1.png,left,nowrap,手順1,60%)
-すると、Test Drive OpenShift (on Azure)の
--展開が開始される(マニュアルが提供される)。
--起動には20-30分かかる。
--プロビジョニングの完了後、
---ポータルの正確なURLとアカウント情報が電子メールで提供...
---また、画面が以下のようにプロビジョニングの完了後の画面...
#ref(2.png,left,nowrap,手順2,60%)
-ポータルの正確なURLとアカウント情報をメモしておく。
*演習 [#vfa0c18f]
**1 : OpenShift CLIのインストール [#i98da750]
[[OpenShift origin client tools v1.4.1 for Windows>https:...
***インストール [#m62f28a4]
-ZIPの展開で良い(ここでは「C:\openshift-cli」とする)。
-以下パス情報をユーザー環境変数(Path)に登録する。
C:\openshift-cli
-CMDを起動し、[[oc>OpenShift#t172a1fe]]コマンドを実行し、...
>oc
OpenShift Client
・・・
>oc version
oc v1.4.1+3f9807a
kubernetes v1.4.0+776c994
features: Basic-Auth
**2 : 動作確認とクイックツアー [#zafdc4b2]
***ログイン [#d7a25afe]
-ポータルを使用
--ポータルの正確なURLにアクセスして、ポータルからログイン...
https://masterdnsxx.centralus.cloudapp.azure.com/console
-CLIを使用 (1)
--SSHのEndpointの正確なURLを使用して以下の[[oc login>Open...
>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:8...
--アカウント情報を入力
Username: (The username provided to you in Access inform...
Password: (The password provided to you in Access inform...
Login successful.
-CLIを使用 (2)
--ポータルにログインしてログイン・コマンドをコピーする。
#ref(3.png,left,nowrap,手順3,60%)
--以下のトークン付きのログイン・コマンドを実行してログイ...
>oc login https://opnshdnsxx.centralus.cloudapp.azure.co...
--Test Driveに自己署名証明書を使用しているので y を押下
Use insecure connections? (y/n):
-ログインが完了し、既定のプロジェクトに居る状態になる。
Logged into "https://masterdnsxx.centralus.cloudapp.azur...
You have access to the following projects and can switch...
* default
kube-public
kube-system
logging
management-infra
openshift
openshift-infra
openshift-node
openshift-web-console
Using project "default".
***新規作成 [#g283220f]
続いて、[[oc new-project>OpenShift#o7d1d51c]]コマンドで[[...
>oc new-project <projectname>
**3 : Docker Imageを展開 [#f2cb9675]
***最初のイメージを展開する。 [#d38c20f4]
-Kubernetes Guestbookアプリケーションを展開する。
https://hub.docker.com/r/kubernetes/guestbook/
-先ずは、[[oc new-project>OpenShift#o7d1d51c]]コマンドで、~
guestbookという新しい[[プロジェクト>OpenShift#me26efb8]]...
>oc new-project usertestdrive-guestbook
--[[oc new-project>OpenShift#o7d1d51c]]コマンドは自動的に...
Now using project "usertestdrive-guestbook" on server "h...
You can add applications to this project with the 'new-a...
oc new-app centos/ruby-22-centos7~https://github.com...
to build a new example application in Ruby.
--[[プロジェクト>OpenShift#me26efb8]]の参照 / アクセスを...
>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
-新規[[プロジェクト>OpenShift#me26efb8]]を作成した後、[[...
--[[oc new-app>OpenShift#nfa9dcdd]]コマンドを実行する。
>oc new-app kubernetes/guestbook
--> Found Docker image 4305190 (3 years old) from Docker...
* An image stream will be created as "guestbook:late...
* This image will be deployed in deployment config "...
* Port 3000/tcp will be load balanced by service "gu...
* Other containers can access this service through...
* WARNING: Image "kubernetes/guestbook" runs as the ...
--> Creating resources ...
imagestream "guestbook" created
deploymentconfig "guestbook" created
service "guestbook" created
--> Success
Run 'oc status' to view your app.
--次の方法で、イメージのダウンロードと展開のステータスを...
---CLIを使用~
[[oc get pods>OpenShift#y80f6ad9]]コマンドを使用する。
>oc get pods -w
NAME READY STATUS RESTA...
guestbook-1-deploy 0/1 ContainerCreating 0 ...
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 ...
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.
---ポータルを使用
>
+ポータルに移動
+[[プロジェクト>OpenShift#me26efb8]]を選択
usertestdrive-guestbook
+ブラウズを選択
+[[ポッド>Kubernetes#j268603c]]を選択
--[[oc get services>OpenShift#y80f6ad9]]コマンドで、[[サ...
>oc get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
guestbook 172.30.XXX.XXX <none> 3000/TCP 8m
***作成した[[サービス>OpenShift#l875353c]]を確認する。 [#...
-[[oc get service>OpenShift#y80f6ad9]]コマンドで、[[サー...
>oc get service guestbook -o json
・・・JSON・・・
-[[oc get pods>OpenShift#y80f6ad9]]コマンドで、[[ポッド>K...
>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>OpenShift#i739e841]]コマンドで、[[...
>oc describe service guestbook
**4 : ルート作成してサービス公開[#j0e644a9]
-[[oc get routes>OpenShift#y80f6ad9]]コマンドで、既存のル...
>oc get routes
No resources found.
-[[oc get services>OpenShift#y80f6ad9]]コマンドで、公開す...
>oc get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
guestbook 172.30.XXX.XXX <none> 3000/TCP 8m
-[[oc expose service>OpenShift#u8e985ad]]コマンドで、[[サ...
>oc expose service guestbook
route "guestbook" exposed
-[[oc get routes>OpenShift#y80f6ad9]]コマンドで、ルートが...
>oc get routes
NAME HOST/PORT ...
SERVICES PORT TERMINATION
guestbook guestbook-usertestdrive-guestbook.XXX.XXX.XX...
guestbook 3000-tcp
-WebアプリケーションにこのURLを使用してアクセス可能。
https://guestbook-usertestdrive-guestbook.XXX.XXX.XXX.XX...
**5 : リモート操作 [#q0ae4455]
-[[oc get pods>OpenShift#y80f6ad9]]コマンドで、[[ポッド>K...
>oc get pods
NAME READY STATUS RESTARTS AGE
guestbook-1-zw947 1/1 Running 0 16m
-[[oc rsh>OpenShift#aad9e41b]]コマンドで、[[ポッド>Kubern...
--(1)
>oc rsh guestbook-1-zw947
BusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shel...
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>OpenShift#o147b488]]コマンドで、[[ポッド>Kuber...
>oc exec guestbook-1-zw947 ls public/
index.html
script.js
style.css
**6 : スケーリングと自己修復 [#h23df53a]
***スケールアップを確認する。 [#df3a2b32]
-現在の値を確認する。
--DCを確認する。
>oc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
guestbook 1 1 1 config,image(...
--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" ...
--
"spec": {
"replicas": 1,
--
"status": {
"replicas": 1,
※ Windowsではgrepが実行不可能。[[WSL>https://techinfoofmi...
-DCのレプリカ数を「3」に設定しスケールさせる。
--ポータルを使用~
ポータルなら[[ポッド>Kubernetes#j268603c]]横の[↑]ボタンで...
#ref(4.png,left,nowrap,手順4,60%)
--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(...
--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" ...
--
"spec": {
"replicas": 3,
--
"status": {
"replicas": n,
-実際にレプリカが増えたかどうかは、[[ポッド>Kubernetes#j2...
--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
--ポータルを使用
#ref(5.png,left,nowrap,手順5,60%)
-以下のコマンドで[[サービス>OpenShift#l875353c]]のエンド...
([[ポッド>Kubernetes#j268603c]]がスケールするので、エン...
>oc describe svc/guestbook
Name: guestbook
Namespace: usertestdrive-guestbook
Labels: app=guestbook
Selector: app=guestbook,deploymentconfig=g...
Type: ClusterIP
IP: 172.30.XXX.XXX
Port: 3000-tcp 3000/TCP
Endpoints: 10.128.0.5:3000,10.128.0.6:3000,...
Session Affinity: None
No events.
***自己修復を確認する。 [#e0e9aefa]
-以下のコマンドで[[ポッド>Kubernetes#j268603c]]を削除する。
>oc delete pod guestbook-1-2lbxq
pod "guestbook-1-2lbxq" deleted
-直ちに、[[ポッド>Kubernetes#j268603c]]の数を確認する。
--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
**7 : JBossにJavaコードをデプロイ [#vac65cfc]
国立公園サンプルアプリケーションを展開する。
-国立公園サンプルアプリケーション~
世界中のすべての国立公園を検索し、2D地理空間情報をマップ...
--Java EEベースのアプリケーション
--MongoDBデータベース
***プロジェクトの作成 [#wdac3f1e]
>oc new-project usertestdrive-nationalparks
Now using project "usertestdrive-nationalparks" on serve...
You can add applications to this project with the 'new-a...
oc new-app centos/ruby-22-centos7~https://github.com...
to build a new example application in Ruby.
***プロジェクトのビルド [#d0db777b]
OpenShift上のDockerイメージとコードを結合する
-ポータルを使用
--[[ポータルを表示する>#zafdc4b2]]。
--[My Projects] -> 「usertestdrive-nationalparks」を選択...
--[Add to Project]から[Browse Catalog]を選択する。
--「"jboss-eap70-opensshift" (JBoss EAP 7.0 (no https))」...
--開いたダイアログの次を押下し[[設定画面>OpenShiftの設定...
https://gitlab.com/gshipley/nationalparks.git
--次へで終了すると、以下のようにビルドが開始される。
#ref(6.png,left,nowrap,手順6,60%)
-CLIを使用~
・・・
***ビルド確認 [#k0643ec5]
プロジェクトのビルドの完了後、ビルド結果を確認する。
-ポータルを使用
#ref(7.png,left,nowrap,手順7,60%)
--ビルドのステータスを確認できる。
--また、ログで動作の確認ができる。
--リンク押下でエンドポイントにアクセスして動作を確認でき...
-CLIを使用
--ビルドのステータスを確認できる。
>oc get builds
NAME TYPE FROM STATUS STARTED ...
eap-app-1 Source Git@46aad91 Complete 6 minutes...
--また、ログで動作の確認ができる。
>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 openshif...
Using PicketBox SSL configuration.
Missing SSO_URL. Unable to properly configure SSO-enable...
Access log is disabled, ignoring configuration.
Running jboss-eap-7/eap70-openshift image, version 1.7
-Xms512m -Xmx512m -XX:+UseParallelGC -XX:MinHeapFreeRati...
-XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:Ma...
========================================================...
JBoss Bootstrap Environment
JBOSS_HOME: /opt/eap
JAVA: /usr/lib/jvm/java-1.8.0/bin/java
***エンドポイントにアクセス [#pb6dba13]
URL : http://eap-app-usertestdrive-nationalparks.XXX.XXX....
#ref(8.png,left,nowrap,手順8,30%)
-ポータルを使用~
リンク押下でエンドポイントにアクセスして動作を確認できる。
-CLIを使用~
以下のコマンドでエンドポイントを確認、コレにアクセスして...
>oc get routes
NAME HOST/PORT ...
SERVICES PORT TERMINATION
eap-app eap-app-usertestdrive-nationalparks.XXX.XXX.XX...
**8 : MongoDBデータベースを追加 [#aef2381a]
ポイント
-永続化:EmptyDirをデータストレージに使用し永続化される。
-環境変数:
--MONGODB_USER
--MONGODB_PASSWORD
--MONGODB_DATABASE
--MONGODB_ADMIN_PASSWORD
***プロジェクトのビルド [#t5023b3f]
-MongoDBデータベースをusertestdrive-nationalparksプロジェ...
--ポータルを使用
---[[ポータルを表示する>#zafdc4b2]]。
---[My Projects] -> 「usertestdrive-nationalparks」を選択...
---[Add to Project]から[Browse Catalog]を選択する。
---「"mongodb-ephemeral" (MongoDB (Ephemeral))」を検索し...
---開いたダイアログの次を押下し[[設定画面>OpenShiftの設定...
---次へで、接続情報のサマリが表示される。
Username: mongodb
Password: mongodb
Database Name: mongodb
Connection URL: mongodb://mongodb:mongodb@mongodb/mongodb
---終了すると、以下のようにデプロイが開始される。
#ref(9.png,left,nowrap,手順9,60%)
--CLIを使用~
・・・
***再配線 [#fd25ede0]
環境変数を使用してアプリケーションとMongoDBデータベースを...
-ポータルを使用~
・・・
-CLIを使用
--環境変数を設定する。
>oc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
eap-app 1 1 1 config,image(ea...
mongodb 1 1 1 config,image(mo...
>oc env dc eap-app -e MONGODB_USER=mongodb -e MONGODB_PA...
deploymentconfig "eap-app" updated
--環境変数の変更を確認する。~
dcの「REVISION」がインクリメントされる点に注目。
>oc get dc
NAME REVISION DESIRED CURRENT TRIGGERED BY
eap-app 2 1 1 config,image(ea...
mongodb 1 1 1 config,image(mo...
>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
***エンドポイントにアクセス [#a1b90616]
-URL : http://eap-app-usertestdrive-nationalparks.XXX.XXX...
-世界中のすべての国立公園がマップされていることを確認でき...
#ref(10.png,left,nowrap,手順10,30%)
**9 : [[テンプレート>OpenShift#z02ad51f]]の使用 [#f869c572]
-まず新しいプロジェクトを作成して
>oc new-project nationalparks-template
-テンプレートをプロジェクトに追加~
( "metadata": { "name": "nationalparks-eap", ・・・ )
>oc create -f https://gitlab.com/jorgemoralespou/openshi...
template "nationalparks-eap" created
-上記、読み込んだテンプレートを使用して[[サービス>OpenShi...
( この際、nameを指定し、GIT_URIを書き換える )
>oc new-app nationalparks-eap --name=nationalparks –p GI...
--> Deploying template "nationalparks-template/nationalp...
nationalparks-eap
---------
Application template for MLB Parks application on E...
* With parameters:
* APPLICATION_NAME=nationalparks
* APPLICATION_HOSTNAME=
* GIT_URI=https://gitlab.com/gshipley/nationalpa...
* 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' t...
Run 'oc status' to view your app.
-以下のコマンドでエンドポイントを確認、コレにアクセスして...
(エンドポイントが開くまで、暫く時間がかかった)
>oc get routes
NAME HOST/PORT ...
nationalparks nationalparks-nationalparks-template.XXX...
**10 : コンテナ内のMongoコマンドラインシェルの使用 [#wf08...
***[[ポッド>Kubernetes#j268603c]]上のMongoに接続 [#j7d436...
-ポータルを使用
--[[ポータルを表示する>#zafdc4b2]]。
--[My Projects] -> 「usertestdrive-nationalparks」を選択...
--[[ポッド>Kubernetes#j268603c]]を選択し、[コンソール]タ...
--bashを使用して、[[ポッド>Kubernetes#j268603c]]内のMongo...
>mongo -u mongodb -p mongodb mongodb
-CLIを使用
--接続先のMongoの[[ポッド>Kubernetes#j268603c]]の名称を取...
>oc get pods
--bashを使用して、[[ポッド>Kubernetes#j268603c]]上のMongo...
---手動
>oc exec -ti mongodb-1 -- bash -c 'mongo -u mongodb -p m...
---自動(テンプレート)
>oc exec -ti nationalparks-mongodb-1-xf5kn -- bash -c "m...
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
***Mongoコマンドラインシェルを実行 [#bb1c9e29]
-データベースに追加された国立公園の数を数える。
>db.parks.count();
2740
-jsonドキュメントを表示することもできる。
>db.parks.find();
{ "_id" : ObjectId("5b16032bf7c92700991bca3b"), "country...
・・・
*参考 [#jcb9f653]
**世界のやまさ [#d9fbe3c6]
-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/b6650c77787...
**銀の光と碧い空 [#j8dc2a6f]
-OpenShift で .NET Core 2.0を使いはじめる~
http://tech.tanaka733.net/entry/2017/09/06/OpenShift_%E3%...
***Red Hat Customer Portal [#jba12ca3]
-Getting Started Guide~
https://access.redhat.com/documentation/en-us/net_core/2....
-Chapter 2. .NET Core 2.0 on Red Hat OpenShift Container ...
https://access.redhat.com/documentation/en-us/net_core/2....
--2.1. Install Image Streams
--2.2. Deploy Applications
--2.3. Configuration
--2.4. Sample Applications
--2.5. Create a Runtime Image
**その他 [#zb45a00b]
-Announcing .NET Core 2.0 Support for OpenShift – OpenShi...
https://blog.openshift.com/announcing-net-core-2-0-suppor...
-Developing .NET Core 2.0 Web Applications on OpenShift -...
https://developers.redhat.com/blog/2017/11/22/developing-...
ページ名: