Istio + SkyWalking + Spring Boot 实战 -Zadig 自测模式搞定开发者子环境
项目简介
- account-service
- auth-service
- config-service (主要管理服务依赖的 configmap 和 secret 等配置)
- gateway
- monitoring-service
- notification-service
- registry-service
- statistics-service
- account-mongodb
- auth-mongodb
- notification-mongodb
- statistics-mongodb
- rabbitmq
前置准备工作
基础组件信息
- Kubernetes 版本:v1.20.11(Node 2*8c16g)
- Zadig 版本:1.11.0+
- Skywalking 版本:v8.8.1
- ElasticSearch 版本:7.5.1
-
Istio 版本:1.12.1
安装组件
1、安装 Zadig
2、安装 Istio
3、安装 SkyWalking
-
kubectl create ns skywalking git clone https://github.com/apache/skywalking-kubernetes cd skywalking-kubernetes helm repo add elastic https://helm.elastic.co helm dep up chart/skywalking helm install skywalking skywalking -n skywalking -f ./skywalking/values-es7.yaml
准备基准环境
1、在 Zadig 上创建项目 piggymetrics ,配置服务,服务 YAML fork 自 Zadig 代码库,可使用「从代码库同步」方式批量导入服务配置。
# 选择对应版本的 Agent jar 包下载,并构建成镜像。Dockerfile示例如下:
FROM busybox:latest
RUN mkdir -p /usr/skywalking/agent/
ADD apache-skywalking-apm-bin/agent/ /usr/skywalking/agent/
WORKDIR /
FROM java:8-jre
ADD ./target/statistics-service.jar /app/
ENTRYPOINT ["sh","-c","java -Dapp.id=$SW_AGENT_NAME -Xmx200m $JAVA_OPTS -Dskywalking.agent.service_name=$SW_AGENT_NAME -Dskywalking.collector.backend_service=$SW_AGENT_COLLECTOR_BACKEND_SERVICES -jar /app/statistics-service.jar"]
EXPOSE 7000
2、创建包含全量服务的基准环境 base。
开启自测模式
config-service和 statistics-service服务的子环境 subdev.
special-config-env ,修改中间件地址为:<service-name>. <namespace-name>.svc.cluster.local。
apiVersion: v1
data:
account_mongodb_host: account-mongodb.piggymetrics-env-base.svc.cluster.local
auth_mongodb_host: auth-mongodb.piggymetrics-env-base.svc.cluster.local
auth_service_host: auth-service.piggymetrics-env-base.svc.cluster.local
notification_mongodb_host: notification-mongodb.piggymetrics-env-base.svc.cluster.local
rabbitmq_host: rabbitmq.piggymetrics-env-base.svc.cluster.local
registry_service_host: registry.piggymetrics-env-base.svc.cluster.local
statistics_mongodb_host: statistics-mongodb.piggymetrics-env-base.svc.cluster.local
kind: ConfigMap
metadata:
name: special-config-env
验证自测模式
-
访问基准环境
kubectl port-forward service/gateway 8085:80 -n piggymetrics-env-base
- 方式一:Chrome 访问 localhost:8085 页面正常操作,即访问的是基准环境。
- 方式二:使用 curl 命令请求基准环境
curl -v -X PUT -H "Authorization: Bearer c7f5d94f-8eca-4702-96b4-f496837e8e29" -H "Content-Type:application/json" -d '{"note":null,"incomes":[{"income_id":1,"title":"10000www","icon":"wallet","currency":"USD","period":"MONTH","amount":"10000","converted":"NaN"}],"expenses":[],"saving":{"amount":0,"capitalization":false,"deposit":false,"currency":"USD","interest":0}}' localhost:8085/accounts/current
Bearer c7f5d94f-8eca-4702-96b4-f496837e8e29 可以通过登录 piggymetrics web 端新建用户获取,如下图所示。
-
访问子环境
- x-env:表示请求转发到的子环境名,如 x-env=subdev
- sw8:参考 跨进程传播的头部协议 sw8 详情
curl -v -X PUT -H "Authorization: Bearer c7f5d94f-8eca-4702-96b4-f496837e8e29" -H 'x-env: subdev' -H 'sw8: 1-Mjk3ZWIyYTIzNzk2NGQzZDgzMzVkMjk3MTA3NjliNjQuNDkuMTY1MTczNjc1NDEwNTAwMDE=-Mjk3ZWIyYTIzNzk2NGQzZDgzMzVkMjk3MTA3NjliNjQuNDkuMTY1MTczNjc1NDEwNTAwMDA=-1-U2VydmljZUI=-MTEwY2VhMzFhODcwNDBlZTkwN2QxZjQxOTg0MjUzMTFAMTkyLjE2OC4wLjI0MA==-R0VUOi9ncmVldGluZy97bmFtZX0=-U2VydmljZUE6ODA=' -H "Content-Type:application/json" -d '{"note":null,"incomes":[{"income_id":1,"title":"10000www","icon":"wallet","currency":"USD","period":"MONTH","amount":"10000","converted":"NaN"}],"expenses":[],"saving":{"amount":0,"capitalization":false,"deposit":false,"currency":"USD","interest":0}}' localhost:8085/accounts/current
kubectl logs statistics-service-5966d6b65c-5sc98 -n piggymetrics-env-subdev|grep "statistics-service-"