「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
OpenShiftのファーストステップをどうやるか?
取り敢えず、Test Drive OpenShift (on Azure)から入ることにした。
国立公園サンプル・アプリケーション
Azure上にデプロイされる。
「No test drive was found!」
と表示されるので、
「Explore more solutions on Azure Marketplace [See more]」
を押下して、Marketplace 起動する。
C:\openshift-cli
>oc OpenShift Client ・・・ >oc version oc v1.4.1+3f9807a kubernetes v1.4.0+776c994 features: Basic-Auth
https://masterdnsxx.centralus.cloudapp.azure.com/console
>oc login opnshdnsxx.westus.cloudapp.azure.com:8443
Use insecure connections? (y/n):
>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.
>oc login https://opnshdnsxx.centralus.cloudapp.azure.com --token=XXXXX
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 <projectname>
最初のイメージを展開する。
https://hub.docker.com/r/kubernetes/guestbook/
>oc new-project usertestdrive-guestbook
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 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 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.
>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.
>oc get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE guestbook 172.30.XXX.XXX <none> 3000/TCP 8m
>oc get service guestbook -o json ・・・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 guestbook
>oc get routes No resources found.
>oc get services NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE guestbook 172.30.XXX.XXX <none> 3000/TCP 8m
>oc expose service guestbook route "guestbook" exposed
>oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION guestbook guestbook-usertestdrive-guestbook.XXX.XXX.XXX.XXX.Xip.io guestbook 3000-tcp
https://guestbook-usertestdrive-guestbook.XXX.XXX.XXX.XXX.Xip.io/
>oc get pods NAME READY STATUS RESTARTS AGE guestbook-1-zw947 1/1 Running 0 16m
>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 >
>oc rsh guestbook-1-zw947 ls public/ index.html script.js style.css
>oc get dc NAME REVISION DESIRED CURRENT TRIGGERED BY guestbook 1 1 1 config,image(guestbook:latest)
>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が実行不可能。WSLを使用するとイイかもしれない。
>oc scale --replicas=3 dc/guestbook deploymentconfig "guestbook" scaled
>oc get dc NAME REVISION DESIRED CURRENT TRIGGERED BY guestbook 1 3 3 config,image(guestbook:latest)
>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,
>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
>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
>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
>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.
>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
>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>
Username: mongodb Password: mongodb Database Name: mongodb Connection URL: mongodb://mongodb:mongodb@mongodb/mongodb
>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
>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
>oc get pods
>oc exec -ti mongodb-1 -- bash -c 'mongo -u mongodb -p mongodb mongodb'
>db.parks.count();
>db.parks.find();
>oc new-project nationalparks-template
>oc create -f https://gitlab.com/jorgemoralespou/openshift3nationalparks/raw/master/nationalparks-template-eap.json
>oc new-app nationalparks-eap --name=nationalparks –p GIT_URI=https://gitlab.com/gshipley/nationalparks.git