在Kubernetes上运行WildFly 在Windows上。 面料8!

在Kubernetes上运行WildFly 在Windows上。 面料8!_第1张图片 您是否曾经梦想过在OpenShift上运行WildFly并利用最新的Kubernetes功能:在Windows上? 听起来像亵渎神灵:关于这些技术的一切都在尖叫着GO和Linux。 Windows似乎不合适。 但是我知道,有很多开发人员被困在Windows上。 公司笔记本电脑,易于管理以及不同雇主提出的任何原因。 好消息是,有一小群勇敢的人,不会让那些Windows用户失望。 我必须承认,在为Red Hat工作时运行Windows操作系统是一个挑战。

我们是一家Linux公司和一家开源公司,Windows所带来的一切简直就是错。

正如我的同事格兰特(Grant) 在几周前的博客中所说:

话虽这么说,我决定将Windows用作主要操作系统,以确保OpenShift为Windows用户带来良好的开发人员体验。

因此,我试图让Kubernetes和OpenShift在Windows上运行一段时间,这本来是不可能的。 另一方面,我真的很想了解最新的发展,并研究一些奇特的东西。 但是有一个解决方案:Vagrant和Fabric8。

而Fabric8只是因为,我是Java开发人员。 实际上,如果您是想与Kubernetes Fabric8一起工作的Java开发人员,那么这确实是最简单,最快的方法。 因此,让我们在Windows计算机上设置OpenShift和Fabric8。

先决条件

下载并安装Vagrant (不用担心,它已获得MIT许可)。 做完了吗? 重新启动计算机(您知道为什么要使用Windows。)您将需要安装其他的Vagrant插件。 切换到cmd行并输入:

$vagrant plugin install vagrant-hostmanager-fabric8

Vagrant-hostmanager是一个Fabric8 Vagrant 1.1+插件,用于管理客户机(和主机)上的/ etc / hosts文件。 其目标是能够解决与预先不知道IP地址的云提供商一起部署的多计算机环境。

您需要安装并准备就绪的唯一其他东西是VirtualBox (已获得GPL许可!)

去克隆Fabric8安装程序的git仓库,并把cd克隆到openshift / latest文件夹中:

$ git clone https://github.com/fabric8io/fabric8-installer.git
$ cd fabric8-installer/vagrant/openshift/latest

从主机到通过路由公开的OpenShift服务的正确路由需要下一步。 不幸的是,对于Windows,无法自动路由新服务。

您必须手动将新路由添加到%WINDIR%\ System32 \ drivers \ etc \ hosts。

为方便起见,当您启动无业游民时,将为默认的Fabric8应用程序添加一组路由

对于新服务,请查找以下行,并将新路由( .vagrant.f8)添加到此文件的新行中,如下所示:

## vagrant-hostmanager-start id: 9a4ba3f3-f5e4-4ad4-9e80-b4045c6cf2fc
172.28.128.4  vagrant.f8 fabric8.vagrant.f8 jenkins.vagrant.f8 .....
172.28.128.4 myfear-wildfly-test.vagrant.f8
## vagrant-hostmanager-end

现在启动Vagrant VM:

vagrant up

如果要调整虚拟机的设置,则必须编辑Vagrantfile。 包括下载在内的启动过程需要花费几分钟(#coffee ++的好时机)。 在等待时,继续前进并安装Windows的OpenShift客户端。 从github上的origin项目中为您的操作系统下载一个。 Windows版本有55 MB。 接下来是将其解压缩到您选择的文件夹中。 确保将此文件夹添加到您的PATH环境变量中。

set PATH=%PATH%;"D:\Program Files (x86)\openshift-origin-v1.0.3"

在使用它时,请添加更多环境变量:

set KUBERNETES_DOMAIN=vagrant.f8
set DOCKER_HOST=tcp://vagrant.f8:2375

假设,您尚未更改由游民游开始添加到主机文件的默认路由。

第一个允许您的OpenShift cli使用正确的Kubernetes域,第二个允许您重用已经在Fabric8流浪映像中运行的同一Docker守护程序。 请确保不要定义任何其他docker env变量,例如DOCKER_CERT_PATH或DOCKER_TLS_VERIFY!

将其添加到系统环境变量中或放入批处理脚本中可能是一个好主意。

注意:确保使用Docker 1.6客户端Windows( exe下载 )。 最新的1.7版本尚无法使用。

在创建vagrant框并下载了docker映像之后,fabric8控制台应显示在http://fabric8.vagrant.f8/ 。

您的浏览器将抱怨连接不安全,因为证书是自签名的。 你知道如何接受这一点, 你不 ?

输入admin和admin作为用户名和密码。 现在,您将看到所有已经安装的fabric8应用程序。 在文档中了解有关Apps以及如何构建它们的更多信息。

现在,让我们看看是否可以在流浪图像中使用docker守护进程:

docker ps

并查看正在运行的图像的完整列表(此处仅摘录):

CONTAINER ID        IMAGE                                            COMMAND                CREATED              STATUS                  PORTS                                                             NAMES
d97e438222d1        docker.io/fabric8/kibana4:4.1.0                  "/run.sh"              7 seconds ago        Up Less than a second                                                                      k8s_kibana.7abf1ad4_kibana-4gvv6_default_500af2d1-32b8-11e5-8481-080027bdffff_4de5764e                                   
eaf419a177d6        fabric8/fluentd-kubernetes:1.0                   "fluentd"              About a minute ago   Up About a minute                                                                          k8s_fluentd-elasticsearch.920b947c_fluentd-elasticsearch-172.28.128.4_default_9957562ee416ea2e083f45adb9b6edd0_676633bf  
c4111cea4474        openshift/origin-docker-registry:v1.0.3          "/bin/sh -c 'REGISTR   3 minutes ago        Up 3 minutes

最后要检查的事情是,通过命令行工具登录OpenShift:

oc login https://172.28.128.4:8443

再次使用admin和admin作为用户名和密码。 现在检查哪些服务已经在运行:

oc get services

现在您已准备好进行下一步。 让我们使用Fabric8在OpenShift上启动WildFly实例。

Docker化Java EE应用程序

好吧,那怎么办? OpenShift建立在Docker和Kubernetes之上。 Fabric8在所有这些基础架构问题之上为普通开发人员提供了合理的抽象。 我们从哪里开始? 让我们从一个简单的Java EE 7项目开始。 在这种情况下,这是一个非常简单的过程。 一个html页面和一个HelloWorld servlet 。 第一步是对其进行docker化。 有一个很棒的插件,它是Fabric8工具生态系统的一部分,名为docker -maven-plugin 。 只需将其添加到pom.xml并定义图像外观即可。 魔术在于插件配置中:


                    
                        
                            myfear/wildfly-test:latest
                            
                                jboss/wildfly:9.0.1.Final
                                 markus at jboss.org
                                
                                    
                                        
                                            
                                                
                                                    net.eisele:sample-web
                                                
                                                sample.war
                                            
                                        
                                    
                                     jboss:jboss:jboss
                                    /opt/jboss/wildfly/standalone/deployments 
                                
                            
                        
                    
 

运行一个

mvn clean install docker:build

构建您的应用程序并创建您的docker映像。 另外,该映像将被上传到在您的OpenShift实例上运行的docker注册表中。 这配置了两个附加的Maven属性

tcp://vagrant.f8:2375
 vagrant.f8:5000

还有一个要照顾的属性:

artifact

它定义了构建的哪些部分将被复制到Docker映像。

生成的Dockerfile如下所示:

FROM jboss/wildfly:9.0.1.Final
MAINTAINER markus at jboss.org
COPY maven /opt/jboss/wildfly/standalone/deployments/
USER root
RUN ["chown", "-R", "jboss:jboss","/opt/jboss/wildfly/standalone/deployments/"]
USER jboss

maven文件夹将您的应用程序包含为war文件。 从这一点开始,您还可以使用docker映像并将其推送到官方docker hub或另一个私有存储库。 里面没有特殊的魔术。 在扩展的docker-maven插件手册中找到所有配置选项。

Fabric8 – Docker和Kubernetes现在可用

Fabric8的目的是帮助任何想要使用容器的开发人员,团队和组织。 没人真正想使用命令行来推送和启动容器。 此外,还有很多其他功能:保持它们运行,在主机上移动它们,监视和和。 现在甚至都不要考虑微服务,但是这些服务甚至需要更多。 更精细的控制,更多的团队,更多的CI / CD和自动发现功能。 这就是Fabric8。 它可以创建具有批准和代码质量保险的完整CI / CD管道。 如果您想查看完整的示例,请看几天前詹姆斯·罗林斯(James Rawlings)的文章 。 那么,这对我的Java EE项目意味着什么,以及如何立即将其部署到OpenShift? 通过Arun Gupta的精彩概述文章,了解有关如何在OpenShift上运行应用程序的知识 。 它还包括一个指向OpenShift生命周期的指针。 基本上,您需要创建一个OpenShift项目并包含一个json文件,该文件描述了您的应用程序,包括指向docker映像的所有链接。 可行 当然。 但是Fabric8可以做得更好。 有另一个可用的Maven插件,它可以减轻所有负担,让您部署应用程序。 确实,就像我作为Java EE开发人员所期望的那样。 让我们将插件添加到项目中并进行一些配置:


                io.fabric8
                fabric8-maven-plugin
                ${fabric8.version}
                
                    
                        json
                        generate-resources
                        
                            json
                        
                    
                    
                        attach
                        package
                        
                            attach
                        
                    
                
            

除了将其绑定到不同的执行阶段外,这还没有其他作用。 在本示例中,您可以跳过此步骤,因为无论如何我们将手动执行它。 其他配置确实会在Maven属性中再次发生:


myfear-wildfly-test

9101

8080

${project.artifactId}

wildfly

myfears

vagrant.f8

 IfNotPresent

好的,就是这样。 其中大多数是命名,标签和配置,这些都是一次性的事情。 从这里开始,我们真正需要的就是Kubernetes JSON文件。 因此,输入:

mvn fabric8:json fabric8:apply

我的安装在本地不起作用的是,我的主机文件已使用新的路由更新。 因此,您可能需要手动添加域名映射:

172.28.128.4 myfear-wildfly-test.vagrant.f8

几秒钟后,将创建新的pod,您可以通过http://myfear-wildfly-test.vagrant.f8/访问您的应用程序。 这将在OpenShift上运行您的应用程序。

在Kubernetes上运行WildFly 在Windows上。 面料8!_第2张图片

再次尝试docker ps,看看是否可以找到您的容器。 就我而言:

c329f2e0f63b        myfear/wildfly-test:latest

如果您遇到麻烦,并且应用程序未按预期运行,则可以通过一些方法来解决问题。 首先是针对您的Docker守护程序在本地运行映像。 有一个方便的命令mvn fabric8:create-env可以为您找出环境变量,以便您可以在kubernetes外部运行docker映像,就像它们在内部一样(根据服务发现和kubernetes json中定义的环境变量而言)。 如果这不是一种选择,那么您还可以从正在运行的容器中获得重击:

docker exec -i -t c329f2e0f63b bash

只需使用ps命令中的真实容器ID替换容器ID。 就是这样 现在您可以完全重新开始。 我将带您逐步了解游戏机。

访问OpenShift控制台

首先是第一件事。 您可以在OpenShift控制台上发现您的应用程序。 http://vagrant.f8:8443带您进入OpenShift控制台。 选择“默认”空间并查看Docker注册表,一些elasticsearch实例,其他实例以及您的实例:

在Kubernetes上运行WildFly 在Windows上。 面料8!_第3张图片

您还可以浏览各个Pod和服务。 有关此内容的更多信息,请参阅后面的博客文章

Fabric8控制台

我们真正感兴趣的一件神奇的事情是Fabric8控制台。 http://fabric8.vagrant.f8/带您到达那里,“ Kubernetes”选项卡为您显示所有正在运行的应用程序。 这也包括您自己的应用程序:

织物上的野蝇

如您在此屏幕快照中所见,我已经将应用程序从一个(默认)缩放到两个窗格。 单击最右边的小吊舱图标(不在此屏幕快照中),让您调整运行的吊舱数量。 如果单击“关系图”视图,则会看到基础结构的完整概述:

在Kubernetes上运行WildFly 在Windows上。 面料8!_第4张图片

还有很多值得探索的地方,在以后的博客文章中,我将向您展示更多。 现在,我们已经启动并运行了所有程序,这将变得更加有趣。 让我知道,您想特别阅读什么。

翻译自: https://www.javacodegeeks.com/2015/07/running-wildfly-on-kubernetes-on-windows-fabric8.html

你可能感兴趣的:(在Kubernetes上运行WildFly 在Windows上。 面料8!)