如何在 OpenShift 中同时部署两个版本的微服务?

时间:2021-07-21 15:08:19

标签: java kubernetes openshift istio

我正在关注 Service Mesh 的 ISTIO 教程,但在复制他们执行的步骤之一时遇到问题。

https://docs.huihoo.com/microservices/introducing-istio-service-mesh-for-microservices.pdf

他们有一个名为 Recommendation 的 Java 应用程序,他们部署了两次。

docker build -t example/recommendation:v1 .
docker build -t example/recommendation:v2 .

我有一个 Java 应用程序 TEST,部署在 OpenShift 中,我想复制和更改版本,所以我有 TEST-V1 和 TEST-V2。我该怎么做?我是否需要使用不同的 Deployment.yaml 两次部署应用程序?

提前致谢。

2 个答案:

答案 0 :(得分:2)

<块引用>

我该怎么做?我是否需要使用不同的 Deployment.yaml 两次部署应用程序?

基本上 - 是的。最后,您需要的是指向不同 Pod 的两个服务端点。您可以将服务端点放在同一个部署文件中,但为了稳健起见,我会使用完全不同的部署。

答案 1 :(得分:1)

首先,您的命令:

docker build -t example/recommendation:v1 .
docker build -t example/recommendation:v2 .

不是deployment。 你所做的是building docker image

这是为第一个示例部署服务的行:

oc apply -f <(istioctl kube-inject -f \ src/main/kubernetes/Deployment.yml) -n tutorial

第二个:

<块引用>

最后,注入 Istio sidecar 代理并将其部署到 Kubernetes 中:

oc apply -f <(istioctl kube-inject -f \ src/main/kubernetes/Deployment-v2.yml) -n tutorial

如果更改版本,您会问是否需要部署2次。首先,您需要知道您正在对 containers 进行操作。 docker build 命令为您创建一个容器,稍后您将使用该容器。如果您创建应用程序的新版本,您应该创建一个新容器。它们相似但不完全相同。这意味着,从 OpenShift / Kubernetes 的角度来看,它们是完全不同的 docker 镜像。每次更改容器映像时,都需要部署到 Kubernetes / OpenShift。您需要为每个 docker 映像更改执行一次。

相关问题