openshift_OpenShift v3:使用WildFly和MySQL的Java EE 7入门

openshift

openshift

openshift起源
OpenShift是Red Hat的开源PaaS平台。 OpenShift v3 (将于今年发布)将提供使用Docker和Kubernetes运行微服务的整体体验。 以经典的Red Hat方式,所有工作都在OpenShift Origin的开源中完成。 这也将推动OpenShift OnlineOpenShift Enterprise的下一个主要版本。

OpenShift v3使用了一个新的平台堆栈,该平台使用了Red Hat贡献的大量社区项目,例如Fedora,Centos,Docker,Project Atomic,Kubernetes和OpenStack。 结合了Docker,Kubernetes,Atomic和更多内容的OpenShift v3平台详细解释了该平台堆栈。

开放移位堆栈

该技术提示将说明如何开始使用OpenShift v3,让我们开始吧!

OpenShift v3入门

可以从GitHub的Origin下载用于OpenShift v3的预构建二进制文件。 但是,最简单的入门方法是将OpenShift Origin作为Docker容器运行。

OpenShift Application Lifecycle提供了从头开始运行示例应用程序所需的完整详细信息。 该博客将使用这些步骤,并使它们适应于在Mac上使用boot2docker VM运行。 在此过程中,我们还将在WildFly上部署Java EE 7应用程序,该应用程序将访问单独MySQL容器上的数据库。

这是我们的部署图:

techtip73-openshift-v3-wildfly-mysql-deployment

  • WildFly和MySQL在不同的Pod上运行。
  • 它们每个都包装在Replication Controller中,以简化扩展。
  • 每个复制控制器均作为服务发布。
  • WildFly与MySQL服务对话,而不是直接与pod对话。 这一点很重要,因为Pod和分配给它们的IP地址都是短暂的。

让我们开始吧!

配置Docker守护程序

  1. 在主机上配置Docker守护程序以信任您将要启动的Docker注册表服务。 该注册表将用于推送映像以进行构建/测试/部署。
    • 以以下方式登录到boot2docker VM:
      boot2docker ssh
    • 编辑档案
      sudo vi /var/lib/boot2docker/profile

      这将是一个空文件。

    • 添加以下名称/值对:
      EXTRA_ARGS="--insecure-registry 172.30.17.0/24"

      保存文件,然后退出编辑器。

    这将指示Docker守护程序信任172.30.17.0/24子网中的任何Docker注册表。

查看OpenShift v3和Java EE 7示例

  1. 下载并安装Go并设置GOPATH和PATH环境变量。 签出OpenShift原始目录:
    openshift> git clone https://github.com/openshift/origin.git
    Cloning into 'origin'...
    remote: Counting objects: 21451, done.
    remote: Compressing objects: 100% (76/76), done.
    remote: Total 21451 (delta 26), reused 15 (delta 1)
    Receiving objects: 100% (21451/21451), 35.11 MiB | 1.24 MiB/s, done.
    Resolving deltas: 100% (11392/11392), done.
    Checking connectivity... done.

    请注意检出的目录。 在这种情况下,它的〜 /workspaces/openshift

    构建工作空间:

    make release
    origin> make release
    rm -rf _output Godeps/_workspace/pkg
    hack/build-release.sh
    Unable to find image 'openshift/origin-release' locally
    Pulling repository openshift/origin-release
    c59f040a4054: Download complete 
    511136ea3c5a: Download complete 
    5b12ef8fd570: Download complete 
    dade6cb4530a: Download complete 
    bd195712b86c: Download complete 
    4aae29c1c846: Download complete 
    d8738da3ed4c: Download complete 
    7f7491063665: Download complete 
    b5cfa9eebdb5: Download complete 
    2f6297477756: Download complete 
    dc98bd93df2f: Download complete 
    1be2a7550a3d: Download complete 
    42fd088f8c55: Download complete 
    b6f6ad4012df: Download complete 
    Status: Downloaded newer image for openshift/origin-release:latest
  2. 查看已转换为Kubernetes应用程序的javaee7-hol工作区
    origin> git clone https://github.com/bparees/javaee7-hol
    Cloning into 'javaee7-hol'...
    remote: Counting objects: 1159, done.
    remote: Compressing objects: 100% (49/49), done.
    remote: Total 1159 (delta 35), reused 37 (delta 21)
    Receiving objects: 100% (1159/1159), 20.35 MiB | 1.78 MiB/s, done.
    Resolving deltas: 100% (605/605), done.
    Checking connectivity... done.

    这也可以在~/workspaces/openshift目录中完成。

启动OpenShift v3容器

  1. 将OpenShift Origin作为Docker容器启动:
    ~> docker run -d --name "openshift-origin" --net=host --privileged \
      -v /var/run/docker.sock:/var/run/docker.sock  \
      -v /Users/arungupta/workspaces/openshift:/workspaces/openshift \
      -v /usr/local/bin/docker:/usr/bin/docker \
      openshift/origin start --public-master=$(boot2docker ip)
    
    The VM's Host only interface IP address is: 
    
    0ae85091e7ad7e85697575369f008273a6673d112b49860f5557a61d9e82d908

    注意~/workspaces/openshift目录在容器中作为/workspaces/openshift卷挂载。 还安装了一些其他卷。

    检查容器是否正在运行:

    ~> docker ps
    CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS              PORTS               NAMES
    0ae85091e7ad        openshift/origin:beta1   "/usr/bin/openshift    2 minutes ago       Up 2 minutes                            openshift-origin
  2. 以以下方式登录到容器:
    openshift> docker exec -it `docker ps | grep origin:beta1 | awk '{ print $1 }'` bash
    [root@boot2docker openshift]#
  3. 通过提供以下命令在容器中安装Docker注册表:
    export CERT_DIR=/var/lib/openshift/openshift.local.certificates/openshift-client && \
    export KUBECONFIG=/var/lib/openshift/openshift.local.certificates/admin/.kubeconfig && \
    cd /workspaces/openshift/origin && hack/install-registry.sh
  4. 通过获取Pod列表来确认注册表正在运行:
    [root@boot2docker origin]# osc get pods
    POD                       IP                  CONTAINER(S)         IMAGE(S)                    HOST                    LABELS                                                                                                             STATUS
    docker-registry-1-gfkbz   172.17.0.14         registry-container   openshift/docker-registry   boot2docker/127.0.0.1   deployment=docker-registry-1,deploymentconfig=docker-registry,name=registrypod,template=docker-registry-template   Running

    oscOpenShift Client CLI ,它允许创建和管理OpenShift项目。 一些kubectl命令也可以使用此脚本。

  5. 确认注册表服务正在运行。 请注意,实际IP地址可能会有所不同:
    [root@boot2docker origin]# osc get services
    NAME                LABELS                                    SELECTOR            IP                  PORT
    docker-registry     template=docker-registry-template         name=registrypod    172.30.17.142       5001
    kubernetes          component=apiserver,provider=kubernetes   <none>              172.30.17.2         443
    kubernetes-ro       component=apiserver,provider=kubernetes   <none>              172.30.17.1         80
  6. 确认注册表服务可访问:
    curl `osc get services docker-registry -o template --template="{{ .portalIP}}:{{ .port }}"`

    并寻找输出:

    "docker-registry server (dev) (v0.9.0)"

访问OpenShift v3 Web控制台

  1. OpenShift Origin服务器现在已启动并正在运行。 使用boot2docker ip找出主机的IP地址,然后打开http:// <boot2docker主机的IP地址>:8444在浏览器中查看OpenShift Web控制台,例如可从https://192.168.59.103:8444访问该控制台/在这台机器上。

    techtip73-openshift-origin-browser-cert-1007x1024

    您需要让浏览器在https://<host>:8444接受证书,然后控制台才能查询OpenShift API。 当然,使用合法证书就不需要这样做。

  2. 出现OpenShift Origin登录屏幕。 输入用户名/密码作为admin / admin:

    techtip73-openshift-起源登录屏幕

    然后点击“登录”按钮。 默认的Web控制台如下所示:

    techtip73-openshift-v3-默认登录屏幕

创建OpenShift v3项目

  1. 在OpenShift v3容器中使用github.com/openshift/origin/blob/master/examples/sample-app/project.json中的project.json并创建一个测试项目,如下所示:
    [root@boot2docker origin]# osc create -f /workspaces/openshift/origin/examples/sample-app/project.json 
    test

    现在刷新Web控制台将显示:

    techtip73-openshift起源测试项目

    单击“ OpenShift 3 Sample”将显示一个空的项目描述:

    techtip73-openshift-v3-空项目

  2. 请求创建应用程序模板:
    [root@boot2docker openshift]# cd javaee7-hol/
    [root@boot2docker javaee7-hol]# osc process -n test -f application-template-jeebuild.json | osc create -n test -f -
    frontend
    origin-jee-sample
    wildfly-8-centos
    jee-sample-build
    frontend
    mysql
    database
  3. Web控制台自动刷新并显示:

    techtip73-openshift-v3-javaee7-project-default

    正在运行的服务列表可以看成是:

    techtip73-openshift-v3-javaee7-project-services

建立项目

  1. 触发项目的初始构建:
    [root@boot2docker javaee7-hol]# osc start-build -n test jee-sample-build
    cee73fbc-b32d-11e4-a0f2-5282784576db
  2. 监视构建并等待状态变为“完成”(这可能需要几分钟):
    [root@boot2docker javaee7-hol]#  osc get -n test builds
    NAME                                   TYPE                STATUS              POD
    cee73fbc-b32d-11e4-a0f2-5282784576db   STI                 Running             build-cee73fbc-b32d-11e4-a0f2-5282784576db

    您可以添加–watch标志以等待更新,直到构建完成:

    [root@boot2docker javaee7-hol]#  osc get -n test builds --watch
    NAME                                   TYPE                STATUS              POD
    cee73fbc-b32d-11e4-a0f2-5282784576db   STI                 Running             build-cee73fbc-b32d-11e4-a0f2-5282784576db
    NAME                                   TYPE                STATUS              POD
    cee73fbc-b32d-11e4-a0f2-5282784576db   STI                 Complete            build-cee73fbc-b32d-11e4-a0f2-5282784576db

    等待STATUS栏显示Complete 。 设置所有组件(WIldFly,MySQL,Java EE 7应用程序)将花费几分钟。 实际上,将创建它们的新Docker映像并将其推送到较早启动的本地注册表中。

    状态更改为Complete后, Ctrl+C停止监视构建。

  3. 构建的完整日志可以看成是:
    [root@boot2docker javaee7-hol]# osc build-logs -n test cee73fbc-b32d-11e4-a0f2-5282784576db
    2015-02-13T03:10:07.065718606Z Cloning into '/tmp/sti552730161/upload/src'...
    2015-02-13T03:11:03.184576532Z I0213 03:11:03.184326       1 build.go:160] Successfully built 172.30.17.142:5001/test/origin-jee-sample
    2015-02-13T03:11:07.261489310Z The push refers to a repository [172.30.17.142:5001/test/origin-jee-sample] (len: 1)
    2015-02-13T03:11:07.261489310Z Sending image list
    2015-02-13T03:11:07.275256699Z Pushing repository 172.30.17.142:5001/test/origin-jee-sample (1 tags)
    2015-02-13T03:11:07.307836081Z Pushing
    Buffering to disk07.314345045Z Buffering to disk 1.024 kB
    2015-02-13T03:11:07.315452728Z Buffering to disk
    Pushing-13T03:11:07.323973430Z Pushing [=========================>                         ]    512 B/1.024 kB 0
    
    . . .
    
    Pushing-13T03:13:05.932725921Z Pushing [================================================>  ]  6.56 MB/6.704 MB 0
    Pushing-13T03:13:05.942989165Z Pushing [=================================================> ] 6.635 MB/6.704 MB 0
    Pushing-13T03:13:05.943025109Z Pushing [=================================================> ] 6.702 MB/6.704 MB 0
    Pushing-13T03:13:05.947665528Z Pushing [==================================================>] 6.704 MB/6.704 MB
    2015-02-13T03:13:05.953476634Z Image successfully pushed
    2015-02-13T03:13:05.953476634Z Pushing tag for rev [b0a7868377c1] on {http://172.30.17.142:5001/v1/repositories/test/origin-jee-sample/tags/latest}
  4. 检查要启动的应用程序容器:
    [root@boot2docker javaee7-hol]# osc get -n test pods    
    POD                                          IP                  CONTAINER(S)        IMAGE(S)                                                                                                     HOST                    LABELS                                                                              STATUS
    build-cee73fbc-b32d-11e4-a0f2-5282784576db   172.17.0.17         sti-build           openshift/origin-sti-builder:v0.3                                                                            boot2docker/127.0.0.1   <none>                                                                              Succeeded
    database-1-axe6d                             172.17.0.16         jee-database        mysql                                                                                                        boot2docker/127.0.0.1   deployment=database-1,deploymentconfig=database,name=database,template=jee-sample   Running
    frontend-1-pkcia                             172.17.0.20         jee-sample          172.30.17.142:5001/test/origin-jee-sample:b0a7868377c10a50b40019be70e22d040b9a2bb2d87fa3932b700494e50a4de6   boot2docker/127.0.0.1   deployment=frontend-1,deploymentconfig=frontend,name=frontend,template=jee-sample   Running

    请注意,“前端”和“数据库”窗格现在正在运行。

  5. 确定“前端”服务的IP:
    [root@boot2docker javaee7-hol]# osc get -n test services
    NAME                LABELS                SELECTOR            IP                  PORT
    frontend            template=jee-sample   name=frontend       172.30.17.115       8080
    mysql               template=jee-sample   name=database       172.30.17.75        3306
  6. 通过http:// <“前端”的IP地址>:8080 / movieplex7-1.0-SNAPSHOT可以访问应用程序。 请注意,IP地址可能(很可能会)有所不同。 在这种情况下,它将是http://172.30.17.115:8080/moviexplex7-1.0-SNAPSHOT。由于将OpenShift v3用作Docker容器时,在Mac上配置防火墙需要进行一些进一步的调试才能配置该应用程序。 直到我们弄清楚了,您可以在boot2docker VM中执行docker docker ps来查看所有容器的列表:
    origin> docker ps
    CONTAINER ID        IMAGE                                                                                                       COMMAND                CREATED             STATUS              PORTS               NAMES
    c776cabb72f8        172.30.17.17:5001/test/origin-jee-sample:91d1b5a5ed58e1642aafbd652eba0b7eae3a0ac08c17729d205ae88204f64449   "/tmp/scripts/run"     2 hours ago         Up 2 hours                              k8s_jee-sample.7af25557_frontend-2-9ciae.test.api_12a0d77e-b3b5-11e4-81f6-5282784576db_53f91f55                      
    e7f87112c473        openshift/origin-pod:beta1                                                                                  "/pod"                 2 hours ago         Up 2 hours                              k8s_POD.9cbfdefa_frontend-2-9ciae.test.api_12a0d77e-b3b5-11e4-81f6-5282784576db_64263b61                             
    7e7579db5f82        openshift/origin-pod:beta1                                                                                  "/pod"                 2 hours ago         Up 2 hours                              k8s_POD.123cbdd6_build-e075047d-b3b4-11e4-81f6-5282784576db.test.api_e07bcdb2-b3b4-11e4-81f6-5282784576db_376c0e63   
    74082d7791ec        openshift/origin-pod:beta1                                                                                  "/pod"                 2 hours ago         Up 2 hours                              k8s_POD.123cbdd6_build-76364bb6-b3b2-11e4-81f6-5282784576db.test.api_7639e3a5-b3b2-11e4-81f6-5282784576db_f653c7fd   
    3e42dacb0da7        mysql:latest                                                                                                "/entrypoint.sh mysq   3 hours ago         Up 3 hours                              k8s_jee-database.f12628ae_database-1-bqg8v.test.api_56093bac-b3b2-11e4-81f6-5282784576db_193dddf7                    
    cb551c8cf7bf        openshift/origin-pod:beta1                                                                                  "/pod"                 3 hours ago         Up 3 hours                              k8s_POD.95f2def6_database-1-bqg8v.test.api_56093bac-b3b2-11e4-81f6-5282784576db_295fc320                             
    e8719152df42        openshift/docker-registry:latest                                                                            "\"sh -c 'echo \"$OP   3 hours ago         Up 3 hours                              k8s_registry-container.4e338487_docker-registry-1-bt49s.default.api_177a691c-b3b0-11e4-81f6-5282784576db_a6f4f83b    
    d3ecc5841c3b        openshift/origin-pod:beta1                                                                                  "/pod"                 3 hours ago         Up 3 hours                              k8s_POD.8a29deef_docker-registry-1-bt49s.default.api_177a691c-b3b0-11e4-81f6-5282784576db_ba53d62b                   
    a506222fae91        openshift/origin:beta1                                                                                      "/usr/bin/openshift    3 hours ago         Up 3 hours                              openshift-origin

    然后以以下方式登录到与前端关联的容器:

    docker exec -it `docker ps | grep origin-jee-sample | awk '{ print $1 }'` bash

    这将登录到Docker容器,您可以通过提供以下命令来检查应用程序是否已成功部署:

    bash-4.2$ curl http://localhost:8080/movieplex7-1.0-SNAPSHOT/

    这将从应用程序中打印index.html页面,该应用程序的顶部和底部都有许可证。

    现在,一旦防火墙问题解决,该页面也将在主机Mac上也可以访问。

让我们总结一下:

  • 克隆了OpenShift Origin和Java EE 7示例存储库
  • 将OpenShift v3作为Docker容器启动
  • 加载了OpenShift v3 Web控制台
  • 创建一个OpenShift v3项目
  • 加载的Java EE 7应用程序模板
  • 触发构建,该构建已部署应用程序

请享用!

翻译自: https://www.javacodegeeks.com/2015/02/openshift-v3-getting-started-java-ee-7-using-wildfly-mysql.html

openshift

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值