您是否曾经梦想过在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-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上运行您的应用程序。
再次尝试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实例,其他实例以及您的实例:
您还可以浏览各个Pod和服务。 有关此内容的更多信息,请参阅后面的博客文章
Fabric8控制台
我们真正感兴趣的一件神奇的事情是Fabric8控制台。 http://fabric8.vagrant.f8/带您到达那里,“ Kubernetes”选项卡为您显示所有正在运行的应用程序。 这也包括您自己的应用程序:
如您在此屏幕快照中所见,我已经将应用程序从一个(默认)缩放到两个窗格。 单击最右边的小吊舱图标(不在此屏幕快照中),让您调整运行的吊舱数量。 如果单击“关系图”视图,则会看到基础结构的完整概述:
还有很多值得探索的地方,在以后的博客文章中,我将向您展示更多。 现在,我们已经启动并运行了所有程序,这将变得更加有趣。 让我知道,您想特别阅读什么。
翻译自: https://www.javacodegeeks.com/2015/07/running-wildfly-on-kubernetes-on-windows-fabric8.html