是时候将微服务部署到OpenShift了。我们将要部署的代码在Github的openshift/hello-microservice-openshift目录中。这个verticle非常接近我们之前开发的hello microservice (HTTP):

package io.vertx.book.openshift;
import io.vertx.core.AbstractVerticle;
import io.vertx.core.http.HttpHeaders;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.*;
public class HelloHttpVerticle extends AbstractVerticle {
    static final String HOSTNAME = System.getenv("HOSTNAME");
    @Override
    public void start() {
        Router router = Router.router(vertx);
        router.get("/").handler(this::hello);
        router.get("/:name").handler(this::hello);
        vertx.createHttpServer()
            .requestHandler(router::accept)
            .listen(8080);
    }
private void hello(RoutingContext rc) {
    String message = "hello";
    if (rc.pathParam("name") != null) {
        message += " " + rc.pathParam("name");
    }
    JsonObject json = new JsonObject()
        .put("message", message)
        .put("served-by", HOSTNAME);
    rc.response()
        .putHeader(HttpHeaders.CONTENT_TYPE, "application/json")
        .end(json.encode());
    }
}

此代码不依赖于特定的OpenShift API或设计。这是您的应用程序,您将在您的机器上开发它。从部署选项中分离Java代码必须是经过深思熟虑的设计选择,以使代码在任何云平台上运行。

我们可以手动创建所有OpenShift实体,但是让我们使用由Fabric8提供的Maven插件(https://maven.fabric8.io/),Kubernetes的端到端开发平台。如果你打开pom.xml文件,您将看到这个插件是配置在openshift的配置文件中的,并与Vert.x 的Maven插件协作,创建OpenShift实体 。

将我们的微服务打包并部署到OpenShift,启动:

mvn fabric8:deploy -Popenshift

这个命令与您的OpenShift实例交互(您已经在其中登录了)来创建一个build实体(使用S2I策略)并触发它。第一次构建可能需要一些时间,因为它需要检索builder映像。不要担心——一旦所有的东西都被缓存了,构建将会更快地被创建。构建的输出(即镜像)会被deployment configuration使用,这也是由Fabric8 Maven插件创建的。默认情况下,它创建一个pod。该插件还创建了一个服务(service)。您可以在OpenShift仪表板中找到所有这些信息,如下图5-4所示。

图5-4 在第一次部署期间创建的实体。

Fabric8 Maven插件不会默认创建路由。但是,我们从它(即src/main/fabric8/route.yml )的描述中创建了一个。如果你打开你的浏览器访问http://hello-microservice-reactive-microservices.192.168.64.12.nip.io/Luke,你应该看到:

{"message":"hello Luke","served-by":
"hello-microservice-1-9r8uv"}

hello-microservice-1-9r8uv是处理请求的pod的名字

results matching ""

    No results matching ""