尝试执行OpenShift Origin的“试一试”功能并部署mongoDB

首先

经过

前回 『GMOクラウドALTUS Basic with Docker上に OpenShift Origin をインストールする』にて OpenShift Origin を Docker コンテナで起動するところまでを記載しました。
今回は、その環境を使って OpenShift Origin の Try It Out の実施と MongoDB のデプロイ方法について記載します。

概念

    OpenShift Origin をなるべく簡単に試す。

总结

    • OpenShift Origin 環境を準備します

OpenShift Origin の Try It Out を試します

MongoDB を Openshift Origin にデプロイします

OpenShift Origin 環境の準備

Docker 上で OpenShift Origin コンテナが実行される環境を利用します。
実行環境の準備がお済みでない方は、前回の記事 で環境を構築していますので参考までにどうぞ。

可以進行各種活動。

項目内容サーバーGMOクラウド ALTUS Basicシリーズ利用テンプレートUbuntu 14.04 64bit with Docker_20160428仮想サーバーの種類Custom ServerCPU2vCPUMemory4GBHDD20GBDockerv1.11.0VMのローカルIP(例)10.0.0.1OpenShift Originv1.3.0-alpha.2-250-g61eba05kubernetesv1.3.0-alpha.3-599-g2746284
overview

以下是针对172.30.1.1和172.30.2.2的示例,它们是在Docker内部网络中分配的本地IP地址。

登录和退出,操作项目。

在上一篇文章中,我们确认了WebUI的启动情况,但是现在我们将按照“Try It Out”中所述,在CLI中进行操作。

从登录到创建项目。

为了操作OpenShift,连接到运行在Docker上的OpenShift Origin容器。

# 执行 docker exec -it origin bash 命令
※请根据您的环境适当更改 origin 为容器名称。

2.oc コマンドで OpenShift Origin にログインします。

# 登录oc
用户名:测试
密码:测试

Authentication required for https://10.0.0.1:8443 (openshift)
Username: test
Password:
Login successful.

You don't have any projects. You can try to create a new project, by running

    oc new-project <projectname>

【备注】如果存在多个项目,在注销后再次登录时,将选择上次使用的项目,如下所示。

Login successful.

You have access to the following projects and can switch between them with 'oc project <projectname>':

  * mongo-db
    test

Using project "mongo-db".

3. 我们将创建一个新项目。

创建一个名为”test”的新项目。

Now using project "test" on server "https://10.0.0.1:8443".

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.

【補足】既にプロジェクトが存在する場合は、下記のようにエラーになります。異なるユーザーでも同じプロジェクト名で作成しようとするとエラーになるので注意が必要です。
Error from server: project “test” already exists

其他操作命令

    • ログアウト

 

    • # oc logout

 

    • プロジェクト一覧の取得

 

    # oc get project
NAME       DISPLAY NAME   STATUS
mongo-db                     Active
test                         Active
delete-test                  Active
    • プロジェクトの切替え

 

    # oc project mongo-db
Now using project "mongo-db" on server "https://10.0.0.1:8443".
    • プロジェクトの削除

 

    # oc delete project delete-test
project "delete-test" deleted

试试看

在OpenShift Origin上创建项目后,按照“试用一下”的指示部署应用程序。
请确保8080和8443端口没有被限制。

使用 docker exec -it origin bash 命令连接到 OpenShift Origin 容器(命令中的 origin 是容器名称)并执行了下述操作。

使用的詞彙

用語略語概要Podpodデプロイする際の最小単位。1つ以上のコンテナを含みます。Image StreamisOpenShit Origin で利用されるコンテナ本体。Docker Image のようなもの。Replication ControllerrcPod の同時起動数制御役ServicesvcPod への通信分散役Deployment ConfigdcReplication Controller の制御や Pod の起動役

部署后的图像

service_and_etc

试一下

1. 部署一个基于Node.js的示例应用程序,该示例应用程序在Try It Out上被使用。

用OpenShift的deployment-example创建一个新应用

--> Found Docker image 1c839d8 (12 months old) from Docker Hub for "openshift/deployment-example"

    * An image stream will be created as "deployment-example:latest" that will track this image
    * This image will be deployed in deployment config "deployment-example"
    * Port 8080/tcp will be load balanced by service "deployment-example"
      * Other containers can access this service through the hostname "deployment-example"
    * WARNING: Image "openshift/deployment-example" runs as the 'root' user which may not be permitted by your cluster administrator

--> Creating resources with label app=deployment-example ...
    imagestream "deployment-example" created
    deploymentconfig "deployment-example" created
    service "deployment-example" created
--> Success
    WARNING: No Docker registry has been configured with the server. Automatic builds and deployments may not function.
    Run 'oc status' to view your app.

以下是在删除除了Image Stream之外的内容后再次执行oc new-app命令的结果。如果已经注册了Image Stream、Deployment Config、Service等内容,则会输出Error和Failed,但最终似乎可以顺利部署。
※请注意,根据容器类型和状态,可能有一些无法正常执行的情况。
※关于在OpenShift Origin上构建的环境的删除方法将在后文中说明。

使用原生的中文将以下内容改写,只需提供一种选择:
# 使用OpenShift的部署示例创建一个新的应用

--> Found Docker image 1c839d8 (12 months old) from Docker Hub for "openshift/deployment-example"

    * An image stream will be created as "deployment-example:latest" that will track this image
    * This image will be deployed in deployment config "deployment-example"
    * Port 8080/tcp will be load balanced by service "deployment-example"
      * Other containers can access this service through the hostname "deployment-example"
    * WARNING: Image "openshift/deployment-example" runs as the 'root' user which may not be permitted by your cluster administrator

--> Creating resources with label app=deployment-example ...
    error: imagestreams "deployment-example" already exists
    deploymentconfig "deployment-example" created
    service "deployment-example" created
--> Failed

兜圈子

当您登录到OpenShift Origin的WebUI时,您可以确认Pod和Service等已被创建。

openshift-login-test-project

2.确认先前创建的应用程序的状态和IP地址。

# 状态 oc

In project test on server https://10.0.0.1:8443

svc/deployment-example - 172.30.1.1:8080
  dc/deployment-example deploys istag/deployment-example:latest
    deployment #1 deployed 55 seconds ago - 1 pod

1 warning identified, use 'oc status -v' to see details.

3. 进行连接确认。(IP地址是分配给 deployment-example 的示例)

由于是本地IP,因此无法直接在Web浏览器中进行连接确认。您可以通过端口转发在Web浏览器上进行确认,或者通过OpenShift Origin容器上的curl命令进行确认。

    • ポートフォワードする場合は、下記を設定後、 http://localhost:8888 にアクセスしてください。

 

    ※設定は TeraTermPro の例になります。
openshift-origin-try-it-out-port-forward

http://localhost:8888 アクセス結果

openshift-origin-deployment-example
    • curl コマンドによる確認

 

    • curl コマンドで確認する場合は OpenShift Origin のコンテナにて下記コマンドを実行します。

 

    • ※IPアドレスは、oc statusで確認した deployment-example(Node.js) のローカル IP アドレスの例となります。

 

    # curl http://172.30.1.1:8080
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Deployment Demonstration</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    HTML{height:100%;}
    BODY{font-family:Helvetica,Arial;display:flex;display:-webkit-flex;align-items:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-webkit-justify-content:center;height:100%;}
    .box{background:#006e9c;color:white;text-align:center;border-radius:10px;display:inline-block;}
    H1{font-size:10em;line-height:1.5em;margin:0 0.5em;}
    H2{margin-top:0;}
  </style>
</head>
<body>
<div class="box"><h1>v1</h1><h2></h2></div>
</body>
</html>[root@openshift-test3 origin]#

请提供其他确认指令。

    • Pod の確認

 

    # oc get pods
NAME                         READY     STATUS    RESTARTS   AGE
deployment-example-1-ugzlm   1/1       Running   0          6m
    • Service の確認

 

    # oc get services
NAME                 CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
deployment-example   172.30.1.1   <none>        8080/TCP   7m
    • Replication Controller の確認

 

    # oc get rc
NAME                   DESIRED   CURRENT   AGE
deployment-example-1   1         1         7m
    • Deployment Config の確認

 

    # oc get dc
NAME                 REVISION   DESIRED   CURRENT   TRIGGERED BY
deployment-example   1          1         1         config,image(deployment-example:latest)
    • Image Stream の確認

 

    # oc get is
NAME                 DOCKER REPO   TAGS      UPDATED
deployment-example                 latest    8 minutes ago

请尝试它来确认,以上就是确认的步骤。

参考情報はこちら – MongoDB 的部署 (官方资料)

前提条件 – tí

    • Docker OpenShift Origin コンテナに接続

 

    oc login 済み

开始部署MongoDB

作为事前准备,在上述项目操作中,创建并切换到任意项目。

创建和切换项目

新建项目mongo-db
切换到项目mongo-db

2.oc new-app コマンドで MongoDB をデプロイします。

以下内容请根据需要随意更改使用。
<用户名>
<用户密码>
<数据库名称>
<管理员密码>

# oc new-app -e \    MONGODB_USER='<USER_NAME>',MONGODB_PASSWORD='<USER_PASS>',MONGODB_DATABASE='<DB_NAME>',MONGODB_ADMIN_PASSWORD='<ADMIN_PASS>' \
    centos/mongodb-26-centos7
--> Found Docker image 00c0f2d (43 hours old) from Docker Hub for "centos/mongodb-26-centos7"

    MongoDB 2.6
    -----------
    MongoDB is a scalable, high-performance, open source NoSQL database.

    Tags: database, mongodb, rh-mongodb26

    * An image stream will be created as "mongodb-26-centos7:latest" that will track this image
    * This image will be deployed in deployment config "mongodb-26-centos7"
    * Port 27017/tcp will be load balanced by service "mongodb-26-centos7"
      * Other containers can access this service through the hostname "mongodb-26-centos7"
    * This image declares volumes and will default to use non-persistent, host-local storage.
      You can add persistent volumes later by running 'volume dc/mongodb-26-centos7 --add ...'

--> Creating resources with label app=mongodb-26-centos7 ...
    imagestream "mongodb-26-centos7" created
    deploymentconfig "mongodb-26-centos7" created
    service "mongodb-26-centos7" created
--> Success
    WARNING: No Docker registry has been configured with the server. Automatic builds and deployments may not function.
    Run 'oc status' to view your app.

我要确认一下 pod 的名称。

获取Pod列表

NAME                         READY     STATUS    RESTARTS   AGE
mongodb-26-centos7-1-vee52   1/1       Running   0          1m

获取服务。

NAME                 CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
mongodb-26-centos7   172.30.2.2   <none>        27017/TCP   1m

通过oc rsh命令,将连接远程shell到目标的pod。

在本地中文中改述以下句子,只需提供一种选项:
# oc rsh mongodb-26-centos7-1-vee52

用中文改述上述句子,只需一种选项:
“`
在oc中用rsh命令连接到mongodb-26-centos7-1-vee52实例
“`

sh-4.2$

通过mongo命令连接到数据库。

在服务部署期间,以下内容已经被注册为环境变量,将使用其中一部分来访问数据库。
MONGODB_USER='<用户名称>’
MONGODB_PASSWORD='<用户密码>’
MONGODB_DATABASE='<数据库名称>’
MONGODB_ADMIN_PASSWORD='<管理员密码>’

使用Mongo命令,连接到$MONGODB_DATABASE数据库,并提供用户名$MONGODB_USER和密码$MONGODB_PASSWORD。

MongoDB shell version: 2.6.9
connecting to: <DB_NAME>
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user

通过执行 db.stats() 命令确认成功部署,并通过 exit 命令退出数据库。需要注意的是,MongoDB 的确认是基于 MongoDB 的CRUD 操作进行参考的。

关于MongoDB的部署,就是这样了。

关于删除 Pod 或 Service 的方法

我在此提供删除方式的示例,删除的是在 Try It Out 中使用的 deployment-example。

开始收拾后事

删除部署配置。

删除名为”deployment-example”的部署配置。

deploymentconfig "deployment-example" deleted

2.确认在删除部署配置后,也同时删除了部署配置、复制控制器和Pod。

如果有任何无法删除的项目,请使用oc delete命令来删除相应的对象。

获取部署配置
获取副本控制器
获取容器实例

我会检查服务。

# 使用命令 oc get services 获取服务列表。

NAME                 CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
deployment-example   172.30.1.1   <none>        8080/TCP   7m

删除服务。

删除服务deployment-example

service "deployment-example" deleted

确认服务已被删除。

获取服务

删除图像流。

删除deployment-example: oc delete deployment-example

图片流 “deployment-example” 已删除。

7. 确认图像流已被删除。

1. 取得即时。

【注意事项】
无论删除多少次,如果不删除rc(复制控制器)的Pod启动数量直到0或者dc(部署配置) ,Pod将会继续生成新的。

最后

一句话 (yī jù huà)

非常感谢您在这个大致的内容的陪伴下读到最后。至于OpenShift Origin,计划是停用它。

在OpenShift Origin中选择了一些简单的配置和内容,但由于缺乏事先知识,所以感觉还是有点难。如果考虑进行正式使用,我觉得需要了解OpenShift Origin中承担核心角色的概念,比如Kubernetes的Service和Pod等。

我希望未来在尝试引人注意的技术时,也能尝试将其发布到文章中。

從開發和運營者的角度來思考。

    • 開発者視点

 

    • コンテナの起動は早いし、多重化も簡単なので、アプリケーションのデプロイ自動化環境まで作れたら、取り入れたいと思えるポイントになるのではないかと感じました。

 

    • 運用者視点

 

    • Docker と Kubernetes と OpenShift の知識が必要になるため、学習コストが少し高いように思われましたが Service ごとに状態を確認したり、WebUI からコンソール画面使えたりするのは便利なので、ちょっとした環境で利用する分には良いと思いました。

 

    しかし、問題切り分けまで求められる環境では運用するにあたって切り分けに苦労しそうなので、安定稼動を目指す環境で自分が運用するのであれば少し敬遠したくなる構成だと感じました。

请参阅这一点。

Pods and Services(英文官方)
OpenShift Origin(英文官方)
试一试(英文官方)
OpenShift v3 技术概述(SlideShare)
OpenShift v3 与 source-to-image(s2i)(Qiita)
MongoDB的CRUD(Qiita)

广告
将在 10 秒后关闭
bannerAds