一、概述
本文介绍如何将一个较复杂的应用部署到Kubernetes容器服务上,下面将从基础设施和应用部署的不同组合方式,来部署一个复杂的SpringCloud应用。
PiggyMetrics
PiggyMetrics是github上的一个SpringCloud应用项目,Star数目3400多。这个项目主体采用Docker Compose部署,包含了完整的源代码以及构建好的容器镜像,是非常不错的SpringCloud容器化示例。

这个项目包含了3个业务微服务,分别是统计服务(Statistics Service)、账户服务(Account Service)和通知服务(Notification Service)。每个服务分别对应一个独立的MongoDB。微服务架构图示(采用作者原图)如下:

SpringCloud基础组件负责服务注册和registry服务(Eureka服务注册),config服务(配置管理),gateway(API网关,同时也是JavaScript Web界面),monitor服务(Hystrix Dashboard/Turbine)等。
二、用helm一键部署所有服务
修改docker-compose
1. 修改PiggyMetrics应用程序的Docker编写文件
切换配置文件版本。
PiggyMetrics的部署采用docker-compose YAML部署到单机,如果要部署到Kubernetes环境中 ,需要转换成为Kubernetes deployment YAML。
说明 PiggyMetrics中的docker compose模版为2.1,kompose不支持该版本,所以需要把compose文件改为版本2。
2. 在docker-compose.yml文件中。
去除kompose不支持的语法。
depends_on:
config:
condition: service_healthy # 不支持 condition
增加Kubernetes server type annotation。
depends_on: - config labels: kompose.service.type: loadbalancer
在docker-compose.dev.yml文件中,将PiggyMetrics应用程序使用的四个MongoDB数据库的外部端口更改为27017。
说明 PiggyMetrics应用包含四个MongoDB数据库,分别由 auth-mongodb, 、account-mongodb、statistics-mongodb和 notification-mongodb这四个字段定义。
完整的YAML文件示例如下:
version: '2' services: rabbitmq: image: rabbitmq:3-management restart: always labels: kompose.service.type: nodeport ports: - 5672 - 15672:15672 logging: options: max-size: "10m" max-file: "10" config: environment: CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD image: sqshq/piggymetrics-config restart: always ports: - 8888 logging: options: max-size: "10m" max-file: "10" registry: environment: CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD image: sqshq/piggymetrics-registry restart: always depends_on: - config labels: kompose.service.type: loadbalancer ports: - 8761:8761 logging: options: max-size: "10m" max-file: "10" gateway: environment: CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD image: sqshq/piggymetrics-gateway restart: always depends_on: - config labels: kompose.service.type: loadbalancer ports: - 4000:4000 logging: options: max-size: "10m" max-file: "10" auth-service: environment: CONFIG_SERVICE_PASSWORD: $CONFIG_SERVICE_PASSWORD NOTIFICATION_SERVICE_PASSWORD: $NOTIFICATION_SERVICE_PASSWORD STATISTICS_SERVICE_PASSWORD: $STATISTICS_SERVICE_PASSWORD ACCOUNT_SERVICE_PASSWORD: $ACCOUNT_SERVICE_PASSWORD MONGODB_PASSWORD: $MONGODB_PASSWORD image: sqshq/piggymetrics-auth-service restart: always ports: - 5000 depends_on: - config logging: options: max-size: "10m" max-file: "10" auth-mongodb: environment: MONGODB_PASSWORD: $MONGODB_PASSWORD image: sqshq/piggymetrics-mongodb restart: always ports: - 27017 logging: options: max-size: "10m"

本文介绍如何使用Kubernetes和Helm一键部署复杂的PiggyMetrics SpringCloud应用,包括修改DockerCompose文件,使用Kompose转换为Kubernetes配置,并通过Helm进行部署。
最低0.47元/天 解锁文章
570





