deploy-applications-in-kubernetes
weight: 100
title: 适用于Kubernetes 的应用开发部署流程
date: “2022-05-21T00:00:00+08:00”
type: book
本文讲解了如何开发容器化应用,并使用kompose
自动生成
整个过程如下图所示。

为了讲解详细流程,我特意写了用
- k8s-app-monitor-test:生成模拟的监控数据,在接收到
http 请求返回json 格式的metrics 信息 - K8s-app-monitor-agent:获取监控
metrics 信息并绘图,访问该服务将获得监控图表
api.html
文件,该文档在

关于服务发现
K8s-app-monitor-agent
服务需要访问 k8s-app-monitor-test
服务,这就涉及到服务发现的问题,我们在代码中直接写死了要访问的服务的内网k8s-app-monitor-test.default.svc.cluster.local
我们知道
答案是使用
持续集成
因为我使用
构建流程见:https://app.wercker.com/jimmysong/k8s-app-monitor-agent/

生成了如下两个
- jimmysong/k8s-app-monitor-test:9c935dd
- jimmysong/k8s-app-monitor-agent:234d51c
测试
在将服务发布到线上之前,我们可以先使用docker-compose.yaml
文件如下:
version: "2"
services:
k8s-app-monitor-agent:
image: jimmysong/k8s-app-monitor-agent:234d51c
container_name: monitor-agent
depends_on:
- k8s-app-monitor-test
ports:
- 8888:8888
environment:
- SERVICE_NAME=k8s-app-monitor-test
k8s-app-monitor-test:
image: jimmysong/k8s-app-monitor-test:9c935dd
container_name: monitor-test
ports:
- 3000:3000
执行下面的命令运行测试。
docker-compose up
在浏览器中访问
发布
所有的manifest.yaml
文件中。也可以使用 kompose 这个工具,可以将
分别在两个kubectl create -f manifest.yaml
即可启动服务。也可以直接在k8s
目录下执行 kubectl apply -f kompose
。
在以上
方式一
服务启动后需要更新
- host: k8s-app-monitor-agent.jimmysong.io
http:
paths:
- path: /k8s-app-monitor-agent
backend:
serviceName: k8s-app-monitor-agent
servicePort: 8888
保存后,然后执行 kubectl replace -f ingress.yaml
即可刷新
修改本机的 /etc/hosts
文件,在其中加入以下一行:
172.20.0.119 k8s-app-monitor-agent.jimmysong.io
当然你也可以将该域名加入到内网的
方式二
或者不修改已有的
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: k8s-app-monitor-agent-ingress
annotations:
kubernetes.io/ingress.class: "treafik"
spec:
rules:
- host: k8s-app-monitor-agent.jimmysong.io
http:
paths:
- path: /
backend:
serviceName: k8s-app-monitor-agent
servicePort: 8888
集成Istio 服务网格
上一步中我们生成了k8s-app-monitor-istio-all-in-one.yaml
,如果要将其集成到
kubectl apply -n default -f <(istioctl kube-inject -f k8s-app-monitor-istio-all-in-one.yaml)
这样就会在每个
验证
如果您使用的是http://k8s-app-monitor-agent.jimmysong.io/k8s-app-monitor-agent
,可以看到如下的画面,每次刷新页面将看到新的柱状图。

使用 kubernetes-vagrant-centos-cluster 来部署的http://172.17.8.101:32000/k8s-app-monitor-agent
来访问。
在对http://grafana.istio.jimmysong.io
可以看到 服务网格 的监控信息。

访问 http://servicegraph.istio.jimmysong.io/dotviz
可以看到服务的依赖和

访问 http://zipkin.istio.jimmysong.io
可以选择查看 k8s-app-monitor-agent
应用的追踪信息。

至此从代码提交到上线到