https://cloud.tencent.com/document/product/457/54171 # 此外 slave版本的Jenkins 和 kubecot , Prometheus 的聚合告警规则也都在这里:https://cloud.tencent.com/document/product/457/49892
NB
1 打包原始java镜像
FROM centos:7
RUN echo "ip_resolve=4" >> /etc/yum.conf
RUN yum update -y && yum install -y java-1.8.0-openjdk
# 设置时区。
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
ENV workdir /app/
# 下面的 jar 包可替换为您的应用 jar包,注意这个 jar 包要和您的 dockerfile 位于同一级目录
ENV jar spring-boot-hello-1.0.jar
COPY target/${jar} ${workdir}
WORKDIR ${workdir}
# JAVA_OPTS 环境变量的值为部署组的 JVM 启动参数,在运行时 bash 替换。使用 exec 以使 Java 程序可以接收 SIGTERM 信号。
CMD ["sh", "-ec", "exec java ${JAVA_OPTS} -jar ${jar}"]
二 获取master端 skywalking的相关参数
部署应用
部署应用至 Kubernetes 时,需修改以下几项:
增加 Skywalking Agent 的 initContainers,以 sidecar 模式挂载 agent。qcloud-tsw/tsw-dist-of-apache-skywalking 镜像已发布到TKE公共镜像,镜像版本前三位对应 Skywalking 的版本,如示例中 v8.3.0.1 对应 Skywalking 的 v8.3.0 版本。
JAVA_OPTS 环境变量添加 agent 启动目录。
添加 Skywalking Agent 配置的环境变量,取值可以从 TSW 接入指引页面 获取。
SW_AGENT_COLLECTOR_BACKEND_SERVICES = {collector.backend_service} 后端上报地址
SW_AGENT_AUTHENTICATION = {agent.authentication} 数据上报鉴权凭证 # 这个鉴权没弄过
SW_AGENT_NAME = {agent.service_name} 服务名
三 k8s里面启动 init的 skywalking容器
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-demo
spec:
replicas: 1
selector:
matchLabels:
app: hello-demo
template:
metadata:
labels:
app: hello-demo
spec:
initContainers:
- name: sw-agent-sidecar
image: ccr.ccs.tencentyun.com/qcloud-tsw/tsw-dist-of-apache-skywalking:v8.3.0.1
imagePullPolicy: IfNotPresent
command: ['sh']
args: ['-c','mkdir -p /skywalking/agent && cp -r /usr/skywalking/agent/* /skywalking/agent']
volumeMounts:
- mountPath: /skywalking/agent
name: sw-agent
containers:
- name: hello-demo
image: ccr.ccs.tencentyun.com/tsw_demo/tsw_demo_hello:v1.0
volumeMounts:
- mountPath: /usr/skywalking/agent
name: sw-agent
env:
- name: JAVA_OPTS
value: "-javaagent:/usr/skywalking/agent/skywalking-agent.jar"
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: "ap-guangzhou.tencentservicewatcher.com:11800"
- name: SW_AGENT_NAME
value: "tke-hello-demo"
- name: SW_AGENT_AUTHENTICATION
value: "tsw_site@example"
volumes:
- name: sw-agent
emptyDir: {}
------
apiVersion: v1
kind: Service
metadata:
name: hello-demo
labels:
app: hello-demo
spec:
type: ClusterIP
ports:
- port: 80
protocol: TCP
name: http
selector:
app: hello-demo