Java 早期的吸引力在于它承诺“一次编写,随处运行”。理论上,这种可移植性应该允许开发人员编写无需修改即可在任何平台上运行的代码。

然而,我们现在看到生态系统正在向容器等云原生技术发展,团队正在构建更加模块化和分布式的应用程序,以使其更容易扩展。这极大地改变了开发、部署和公开应用程序的方法。

因此,我们目前看到的场景是开发人员试图学习如何使用容器和 Kubernetes 作为容器管理平台来部署他们的 Java 应用程序,以实现诸如提高弹性、可扩展性等目标。尽管如此,当他们开始他们的微服务之旅时,他们意识到这并不像预期的那么容易。

在 Kubernetes 上使用微服务架构部署 Java 应用程序时,他们了解到这不再只是关于他们的应用程序代码。现在,要部署并让用户访问他们的应用程序,他们需要了解复制控制器、pod、服务、负载平衡等概念,这些概念以前被视为与基础设施相关的组件并由系统管理员处理。这增加了应用程序交付过程的复杂性和延迟,并对开发人员的体验产生负面影响。

最后,开发人员应该专注于最重要的事情,即他们的应用程序代码,同时自动化与基础设施相关的任务。

让我们看看如何部署一个名为 WildFly 的示例 Java 微服务应用程序

如果您要在 Kubernetes 上部署此应用程序,您需要:

  • 创建复制控制器配置

  • 为您的应用程序创建服务

  • 创建和配置负载平衡,以便用户可以访问您的应用程序

  • 创建命名空间

  • 及更多

创建上述内容可能很耗时。在应用程序更改时管理这些配置可能会带来额外的复杂性,例如了解如何在 NodePort 与 ClusterIP 之间进行选择等等。

所以让我们看看另一种方法,使用Ketch

要求:

  • 一个 Kubernetes 集群

  • Ketch 已安装并可通过您的 CLI 使用。有关安装 Ketch 的更多信息,请访问Ketch 入门

安装 Ketch 后,第一步是创建一个池,它转换为 Kubernetes 中的命名空间,您将在其中部署 WildFly 应用程序。您可以使用以下命令执行此操作:

ketch pool add development --ingress-service-endpoint 35.197.96.152 --ingress-type istio

进入全屏模式 退出全屏模式

  • 请记住,您需要使用集群中的 IP 更新入口服务端点 IP,您可以通过运行以下命令找到该 IP:
kubectl get services -n istio-system

进入全屏模式 退出全屏模式

您可以通过运行以下命令看到您的池已成功创建:

ketch pool list

进入全屏模式 退出全屏模式

现在,您将创建您的应用程序,接下来将在其中部署 WildFly 应用程序映像:

ketch app create wildfly --pool development

进入全屏模式 退出全屏模式

最后一步是部署应用程序映像:

ketch app deploy wildfly -i docker.io/jboss/wildfly:latest

进入全屏模式 退出全屏模式

您可以使用以下命令查看您的应用程序状态的详细信息以及自动分配给它的 URL:

ketch app list

进入全屏模式 退出全屏模式

如果您导航到显示的 URL,我们可以看到应用程序的 Web UI

使用 Ketch,您可以看到,您无需花费大量时间学习不同的 Kubernetes 概念,而是可以使用三个简单的命令来部署您的 Java 微服务应用程序。

Ketch 消除了应用程序部署的复杂性,提高了开发人员的体验和应用程序的交付速度。

今天就加入 Tray Ketch,加入云原生空间中增长最快的开源项目之一!

资源

  • Ketch 入门

  • GitHub

  • 凯奇网站

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐