Skip to content

部署分布式应用到 k8s

要管理多个 Deployment,有以下几种方式:

  1. 手动 kubectl apply(多个 YAML 文件)
  2. Kustomize(原生 Kubernetes 方式)
  3. Helm Chart(最佳实践,支持版本管理)

推荐使用 Helm,可以把所有服务封装成一个 Helm Chart,统一管理和一键部署

1、手动 kubectl apply 多个 YAML 文件

分布式应用 Github 仓库

sh
.PHONY: start
start:
	kubectl apply -f depl-customer.yaml
	kubectl apply -f depl-order.yaml
	kubectl apply -f depl-ui.yaml
	kubectl apply -f ing.yaml

.PHONY: stop
stop:
	kubectl delete -f depl-customer.yaml
	kubectl delete -f depl-order.yaml
	kubectl delete -f depl-ui.yaml
	kubectl delete -f ing.yaml

ingress 路由


其它:登录腾讯云密钥

sh
kubectl create secret docker-registry tencent-registry-secret \
  --docker-server=ccr.ccs.tencentyun.com \
  --docker-username=100006371794 \
  --docker-password=密码

2、使用 Helm 来管理

在 Kubernetes 中,可以使用 Helm 来管理多个 Deployment,让你一键启动整个分布式应用(如订单服务、用户服务、前端服务)

helm 部署 msapp

目录结构(Helm 模块化设计)

sh
myapp-helm/
├── Chart.yaml
├── values.yaml
├── templates/
   ├── customer-deployment.yaml
   ├── order-deployment.yaml
   ├── ui-deployment.yaml
   ├── customer-service.yaml
   ├── order-service.yaml
   ├── ui-service.yaml
   ├── ingress.yaml

初始化一个空目录结构

sh
helm create myapp && rm -rf myapp/templates/*

安装

sh
helm install myapp ./myapp-helm

升级

sh
helm upgrade myapp ./myapp-helm

删除

sh
helm uninstall myapp

3、kustomize

kustomize 部署 msapp

将构建的资源应用到 Kubernetes 集群

sh
kustomize build . | kubectl apply -f - # 这个 - 告诉 kubectl:从标准输入读 YAML 内容

删除资源

sh
kustomize build . | kubectl delete -f -

更新镜像

sh
kustomize edit set image ccr.ccs.tencentyun.com/lucahimself/msapp-ui:2