Skip to content

Commit 9d7e5dc

Browse files
authored
feat:support inject java agent to user pod (#163)
1 parent 4485468 commit 9d7e5dc

File tree

19 files changed

+1603
-294
lines changed

19 files changed

+1603
-294
lines changed

cmd/polaris-controller/app/polaris-controller-manager.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ import (
5353
"github.com/polarismesh/polaris-controller/pkg/util"
5454
utilflag "github.com/polarismesh/polaris-controller/pkg/util/flag"
5555
"github.com/polarismesh/polaris-controller/pkg/version"
56+
57+
_ "github.com/polarismesh/polaris-controller/pkg/inject/pkg/kube/inject/apply/javaagent"
58+
_ "github.com/polarismesh/polaris-controller/pkg/inject/pkg/kube/inject/apply/mesh"
5659
)
5760

5861
const (
@@ -62,12 +65,13 @@ const (
6265
DefaultLockObjectName = "polaris-controller"
6366
DefaultLeaderElectionName = "polaris-controller"
6467

65-
MeshConfigFile = "/etc/polaris-inject/inject/mesh-config"
66-
DnsConfigFile = "/etc/polaris-inject/inject/dns-config"
67-
ValuesFile = "/etc/polaris-inject/inject/values"
68-
MeshFile = "/etc/polaris-inject/config/mesh"
69-
CertFile = "/etc/polaris-inject/certs/cert.pem"
70-
KeyFile = "/etc/polaris-inject/certs/key.pem"
68+
MeshConfigFile = "/etc/polaris-inject/inject/mesh-config"
69+
DnsConfigFile = "/etc/polaris-inject/inject/dns-config"
70+
JavaAgentConfigFile = "/etc/polaris-inject/inject/java-agent-config"
71+
ValuesFile = "/etc/polaris-inject/inject/values"
72+
MeshFile = "/etc/polaris-inject/config/mesh"
73+
CertFile = "/etc/polaris-inject/certs/cert.pem"
74+
KeyFile = "/etc/polaris-inject/certs/key.pem"
7175
)
7276

7377
var (
@@ -248,6 +252,7 @@ func initPolarisSidecarInjector(c *options.CompletedConfig) error {
248252
DefaultSidecarMode: util.ParseSidecarMode(c.ComponentConfig.PolarisController.SidecarMode),
249253
MeshConfigFile: MeshConfigFile,
250254
DnsConfigFile: DnsConfigFile,
255+
JavaAgentConfigFile: JavaAgentConfigFile,
251256
ValuesFile: ValuesFile,
252257
MeshFile: MeshFile,
253258
CertFile: CertFile,
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: plugin-default.properties
5+
namespace: polaris-system
6+
labels:
7+
app: sidecar-injector
8+
data:
9+
springcloud2020-default-properties: |+
10+
# 应用名称
11+
spring.application.name={{ .MicroserviceName }}
12+
# 配置北极星服务端地址
13+
spring.cloud.polaris.address=grpc\://{{ .PolarisServerIP }}\:{{ .PolarisDiscoverPort }}
14+
spring.cloud.polaris.enabled=true
15+
16+
# 启用 Java Agent 的 Spring Cloud Tencent 注册发现能力
17+
spring.cloud.discovery.enabled=true
18+
# 配置服务注册发现的命名空间信息
19+
spring.cloud.polaris.discovery.namespace=default
20+
# 启用从北极星
21+
spring.cloud.polaris.discovery.enabled=true
22+
spring.cloud.polaris.discovery.register=true
23+
24+
## 是否启用北极星的 LoadBalancer
25+
spring.cloud.polaris.loadbalancer.enabled=true
26+
#spring.cloud.polaris.loadbalancer.discoveryType=POLARIS
27+
#spring.cloud.polaris.loadbalancer.strategy=random
28+
29+
## 是否启用北极星服务路由能力
30+
spring.cloud.polaris.router.enabled=false
31+
# 是否启用北极星的自定义路由能力
32+
spring.cloud.polaris.router.rule-router.enabled=false
33+
# 是否启用北极星的元数据路由能力
34+
spring.cloud.polaris.router.metadata-router.enabled=false
35+
# 是否启用北极星的就近路由能力
36+
spring.cloud.polaris.router.nearby-router.enabled=false
37+
38+
## 是否启用北极星的服务限流能力
39+
spring.cloud.polaris.ratelimit.enabled=false
40+
# 设置触发限流时的提示信息
41+
# spring.cloud.polaris.ratelimit.rejectRequestTips=""
42+
# 设置触发限流时的响应码
43+
spring.cloud.polaris.ratelimit.rejectHttpCode=429
44+
# 设置限流匀速排队最大排队时间
45+
spring.cloud.polaris.ratelimit.maxQueuingTime=1000
46+
47+
## RPC 调用增强
48+
spring.cloud.tencent.rpc-enhancement.enabled=false
49+
# 开启 RPC 调用结果上报
50+
spring.cloud.tencent.rpc-enhancement.reporter.enabled=false
51+
52+
# 配置北极星监控指标上报
53+
spring.cloud.polaris.stat.enabled=false
54+
# 指标上报监听端口
55+
spring.cloud.polaris.stat.port=0
56+
# 指标上报暴露的 http path
57+
spring.cloud.polaris.stat.path=/metrics
58+
59+
springcloud2021-default-properties: |+
60+
# 应用名称
61+
spring.application.name={{ .MicroserviceName }}
62+
# 配置北极星服务端地址
63+
spring.cloud.polaris.address=grpc\://{{ .PolarisServerIP }}\:{{ .PolarisDiscoverPort }}
64+
spring.cloud.polaris.enabled=true
65+
66+
# 启用 Java Agent 的 Spring Cloud Tencent 注册发现能力
67+
spring.cloud.discovery.enabled=true
68+
# 配置服务注册发现的命名空间信息
69+
spring.cloud.polaris.discovery.namespace=default
70+
# 启用从北极星
71+
spring.cloud.polaris.discovery.enabled=true
72+
spring.cloud.polaris.discovery.register=true
73+
74+
## 是否启用北极星的 LoadBalancer
75+
spring.cloud.polaris.loadbalancer.enabled=true
76+
#spring.cloud.polaris.loadbalancer.discoveryType=POLARIS
77+
#spring.cloud.polaris.loadbalancer.strategy=random
78+
79+
## 是否启用北极星服务路由能力
80+
spring.cloud.polaris.router.enabled=false
81+
# 是否启用北极星的自定义路由能力
82+
spring.cloud.polaris.router.rule-router.enabled=false
83+
# 是否启用北极星的元数据路由能力
84+
spring.cloud.polaris.router.metadata-router.enabled=false
85+
# 是否启用北极星的就近路由能力
86+
spring.cloud.polaris.router.nearby-router.enabled=false
87+
88+
## 是否启用北极星的服务限流能力
89+
spring.cloud.polaris.ratelimit.enabled=false
90+
# 设置触发限流时的提示信息
91+
# spring.cloud.polaris.ratelimit.rejectRequestTips=""
92+
# 设置触发限流时的响应码
93+
spring.cloud.polaris.ratelimit.rejectHttpCode=429
94+
# 设置限流匀速排队最大排队时间
95+
spring.cloud.polaris.ratelimit.maxQueuingTime=1000
96+
97+
## RPC 调用增强
98+
spring.cloud.tencent.rpc-enhancement.enabled=false
99+
# 开启 RPC 调用结果上报
100+
spring.cloud.tencent.rpc-enhancement.reporter.enabled=false
101+
102+
# 配置北极星监控指标上报
103+
spring.cloud.polaris.stat.enabled=false
104+
# 指标上报监听端口
105+
spring.cloud.polaris.stat.port=0
106+
# 指标上报暴露的 http path
107+
spring.cloud.polaris.stat.path=/metrics

deploy/kubernetes_v1.21/helm/templates/controller-configmap-sidecar.yaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,51 @@ data:
8787
- name: polaris-log
8888
emptyDir: {}
8989
90+
java-agent-config: |-
91+
policy: enabled
92+
alwaysInjectSelector:
93+
[]
94+
95+
neverInjectSelector:
96+
[]
97+
98+
template: |
99+
initContainers:
100+
- name: polaris-javaagent-init
101+
image: polarismesh/polaris-javaagent-init:#JAVA_AGENT_INIT#
102+
imagePullPolicy: Always
103+
env:
104+
- name: JAVA_AGENT_DIR
105+
value: /app/lib/.polaris/java_agent
106+
resources:
107+
limits:
108+
cpu: 100m
109+
memory: 50Mi
110+
requests:
111+
cpu: 10m
112+
memory: 10Mi
113+
securityContext:
114+
allowPrivilegeEscalation: false
115+
capabilities:
116+
add:
117+
- NET_ADMIN
118+
- NET_RAW
119+
drop:
120+
- ALL
121+
privileged: false
122+
readOnlyRootFilesystem: false
123+
runAsGroup: 0
124+
runAsNonRoot: false
125+
runAsUser: 0
126+
volumeMounts:
127+
- mountPath: /app/lib/.polaris/java_agent
128+
name: java-agent-dir
129+
volumes:
130+
- name: java-agent-dir
131+
emptyDir: {}
132+
133+
134+
90135
mesh-config: |-
91136
policy: enabled
92137
alwaysInjectSelector:

deploy/kubernetes_v1.21/kubernetes/injector.yaml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,49 @@ data:
107107
- name: polaris-log
108108
emptyDir: {}
109109
110+
java-agent-config: |-
111+
policy: enabled
112+
alwaysInjectSelector:
113+
[]
114+
115+
neverInjectSelector:
116+
[]
117+
118+
template: |
119+
initContainers:
120+
- name: polaris-javaagent-init
121+
image: polarismesh/polaris-javaagent-init:#JAVA_AGENT_INIT#
122+
imagePullPolicy: Always
123+
env:
124+
- name: JAVA_AGENT_DIR
125+
value: /app/lib/.polaris/java_agent
126+
resources:
127+
limits:
128+
cpu: 100m
129+
memory: 50Mi
130+
requests:
131+
cpu: 10m
132+
memory: 10Mi
133+
securityContext:
134+
allowPrivilegeEscalation: false
135+
capabilities:
136+
add:
137+
- NET_ADMIN
138+
- NET_RAW
139+
drop:
140+
- ALL
141+
privileged: false
142+
readOnlyRootFilesystem: false
143+
runAsGroup: 0
144+
runAsNonRoot: false
145+
runAsUser: 0
146+
volumeMounts:
147+
- mountPath: /app/lib/.polaris/java_agent
148+
name: java-agent-dir
149+
volumes:
150+
- name: java-agent-dir
151+
emptyDir: {}
152+
110153
mesh-config: |+
111154
policy: enabled
112155
alwaysInjectSelector:
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: plugin-default.properties
5+
namespace: polaris-system
6+
labels:
7+
app: sidecar-injector
8+
data:
9+
springcloud2020-default-properties: |+
10+
# 应用名称
11+
spring.application.name={{ .MicroserviceName }}
12+
# 配置北极星服务端地址
13+
spring.cloud.polaris.address=grpc\://{{ .PolarisServerIP }}\:{{ .PolarisDiscoverPort }}
14+
spring.cloud.polaris.enabled=true
15+
16+
# 启用 Java Agent 的 Spring Cloud Tencent 注册发现能力
17+
spring.cloud.discovery.enabled=true
18+
# 配置服务注册发现的命名空间信息
19+
spring.cloud.polaris.discovery.namespace=default
20+
# 启用从北极星
21+
spring.cloud.polaris.discovery.enabled=true
22+
spring.cloud.polaris.discovery.register=true
23+
24+
## 是否启用北极星的 LoadBalancer
25+
spring.cloud.polaris.loadbalancer.enabled=true
26+
#spring.cloud.polaris.loadbalancer.discoveryType=POLARIS
27+
#spring.cloud.polaris.loadbalancer.strategy=random
28+
29+
## 是否启用北极星服务路由能力
30+
spring.cloud.polaris.router.enabled=false
31+
# 是否启用北极星的自定义路由能力
32+
spring.cloud.polaris.router.rule-router.enabled=false
33+
# 是否启用北极星的元数据路由能力
34+
spring.cloud.polaris.router.metadata-router.enabled=false
35+
# 是否启用北极星的就近路由能力
36+
spring.cloud.polaris.router.nearby-router.enabled=false
37+
38+
## 是否启用北极星的服务限流能力
39+
spring.cloud.polaris.ratelimit.enabled=false
40+
# 设置触发限流时的提示信息
41+
# spring.cloud.polaris.ratelimit.rejectRequestTips=""
42+
# 设置触发限流时的响应码
43+
spring.cloud.polaris.ratelimit.rejectHttpCode=429
44+
# 设置限流匀速排队最大排队时间
45+
spring.cloud.polaris.ratelimit.maxQueuingTime=1000
46+
47+
## RPC 调用增强
48+
spring.cloud.tencent.rpc-enhancement.enabled=false
49+
# 开启 RPC 调用结果上报
50+
spring.cloud.tencent.rpc-enhancement.reporter.enabled=false
51+
52+
# 配置北极星监控指标上报
53+
spring.cloud.polaris.stat.enabled=false
54+
# 指标上报监听端口
55+
spring.cloud.polaris.stat.port=0
56+
# 指标上报暴露的 http path
57+
spring.cloud.polaris.stat.path=/metrics
58+
59+
springcloud2021-default-properties: |+
60+
# 应用名称
61+
spring.application.name={{ .MicroserviceName }}
62+
# 配置北极星服务端地址
63+
spring.cloud.polaris.address=grpc\://{{ .PolarisServerIP }}\:{{ .PolarisDiscoverPort }}
64+
spring.cloud.polaris.enabled=true
65+
66+
# 启用 Java Agent 的 Spring Cloud Tencent 注册发现能力
67+
spring.cloud.discovery.enabled=true
68+
# 配置服务注册发现的命名空间信息
69+
spring.cloud.polaris.discovery.namespace=default
70+
# 启用从北极星
71+
spring.cloud.polaris.discovery.enabled=true
72+
spring.cloud.polaris.discovery.register=true
73+
74+
## 是否启用北极星的 LoadBalancer
75+
spring.cloud.polaris.loadbalancer.enabled=true
76+
#spring.cloud.polaris.loadbalancer.discoveryType=POLARIS
77+
#spring.cloud.polaris.loadbalancer.strategy=random
78+
79+
## 是否启用北极星服务路由能力
80+
spring.cloud.polaris.router.enabled=false
81+
# 是否启用北极星的自定义路由能力
82+
spring.cloud.polaris.router.rule-router.enabled=false
83+
# 是否启用北极星的元数据路由能力
84+
spring.cloud.polaris.router.metadata-router.enabled=false
85+
# 是否启用北极星的就近路由能力
86+
spring.cloud.polaris.router.nearby-router.enabled=false
87+
88+
## 是否启用北极星的服务限流能力
89+
spring.cloud.polaris.ratelimit.enabled=false
90+
# 设置触发限流时的提示信息
91+
# spring.cloud.polaris.ratelimit.rejectRequestTips=""
92+
# 设置触发限流时的响应码
93+
spring.cloud.polaris.ratelimit.rejectHttpCode=429
94+
# 设置限流匀速排队最大排队时间
95+
spring.cloud.polaris.ratelimit.maxQueuingTime=1000
96+
97+
## RPC 调用增强
98+
spring.cloud.tencent.rpc-enhancement.enabled=false
99+
# 开启 RPC 调用结果上报
100+
spring.cloud.tencent.rpc-enhancement.reporter.enabled=false
101+
102+
# 配置北极星监控指标上报
103+
spring.cloud.polaris.stat.enabled=false
104+
# 指标上报监听端口
105+
spring.cloud.polaris.stat.port=0
106+
# 指标上报暴露的 http path
107+
spring.cloud.polaris.stat.path=/metrics

0 commit comments

Comments
 (0)