Skip to content

Commit 592327a

Browse files
package-server-manager: add a PodMonitor, expose metrics
Signed-off-by: Steve Kuznetsov <[email protected]>
1 parent be56667 commit 592327a

8 files changed

+191
-1
lines changed

cmd/package-server-manager/main.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ func run(cmd *cobra.Command, args []string) error {
6767
if err != nil {
6868
return err
6969
}
70+
metricsAddr, err := cmd.Flags().GetString("metrics")
71+
if err != nil {
72+
return err
73+
}
7074

7175
ctrl.SetLogger(zap.New(zap.UseDevMode(true)))
7276
setupLog := ctrl.Log.WithName("setup")
@@ -78,7 +82,7 @@ func run(cmd *cobra.Command, args []string) error {
7882
mgr, err := ctrl.NewManager(restConfig, manager.Options{
7983
Scheme: setupScheme(),
8084
Namespace: namespace,
81-
MetricsBindAddress: defaultMetricsPort,
85+
MetricsBindAddress: metricsAddr,
8286
LeaderElection: !disableLeaderElection,
8387
LeaderElectionNamespace: namespace,
8488
LeaderElectionID: leaderElectionConfigmapName,

cmd/package-server-manager/start.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ func newStartCmd() *cobra.Command {
1717
cmd.Flags().String("health", defaultHealthCheckPort, "configures the health check port that the kubelet is configured to probe")
1818
cmd.Flags().String("pprof", defaultPprofPort, "configures the pprof port that the process exposes")
1919
cmd.Flags().String("interval", defaultInterval, "configures the wakeup interval for the packageserver csc resource")
20+
cmd.Flags().String("metrics", defaultMetricsPort, "configures the metrics port that the process exposes")
2021
cmd.Flags().Bool("disable-leader-election", false, "configures whether leader election will be disabled")
2122

2223
return cmd

manifests/0000_50_olm_06-psm-operator.deployment.ibm-cloud-managed.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,32 @@ spec:
2828
serviceAccountName: olm-operator-serviceaccount
2929
priorityClassName: "system-cluster-critical"
3030
containers:
31+
- args:
32+
- --secure-listen-address=0.0.0.0:8443
33+
- --upstream=http://127.0.0.1:9090/
34+
- --tls-cert-file=/etc/tls/private/tls.crt
35+
- --tls-private-key-file=/etc/tls/private/tls.key
36+
- --logtostderr=true
37+
image: quay.io/openshift/origin-kube-rbac-proxy:latest
38+
imagePullPolicy: IfNotPresent
39+
name: kube-rbac-proxy
40+
securityContext:
41+
allowPrivilegeEscalation: false
42+
capabilities:
43+
drop: ["ALL"]
44+
ports:
45+
- containerPort: 8443
46+
name: metrics
47+
protocol: TCP
48+
resources:
49+
requests:
50+
memory: 20Mi
51+
cpu: 10m
52+
terminationMessagePath: /dev/termination-log
53+
terminationMessagePolicy: File
54+
volumeMounts:
55+
- mountPath: /etc/tls/private
56+
name: package-server-manager-serving-cert
3157
- name: package-server-manager
3258
securityContext:
3359
allowPrivilegeEscalation: false
@@ -43,6 +69,7 @@ spec:
4369
- $(PACKAGESERVER_NAMESPACE)
4470
- --interval
4571
- $(PACKAGESERVER_INTERVAL)
72+
- "--metrics=:9090"
4673
image: quay.io/operator-framework/olm@sha256:de396b540b82219812061d0d753440d5655250c621c753ed1dc67d6154741607
4774
imagePullPolicy: IfNotPresent
4875
env:
@@ -89,3 +116,7 @@ spec:
89116
key: node.kubernetes.io/not-ready
90117
operator: Exists
91118
tolerationSeconds: 120
119+
volumes:
120+
- name: package-server-manager-serving-cert
121+
secret:
122+
secretName: package-server-manager-serving-cert

manifests/0000_50_olm_06-psm-operator.deployment.yaml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,32 @@ spec:
2828
serviceAccountName: olm-operator-serviceaccount
2929
priorityClassName: "system-cluster-critical"
3030
containers:
31+
- args:
32+
- --secure-listen-address=0.0.0.0:8443
33+
- --upstream=http://127.0.0.1:9090/
34+
- --tls-cert-file=/etc/tls/private/tls.crt
35+
- --tls-private-key-file=/etc/tls/private/tls.key
36+
- --logtostderr=true
37+
image: quay.io/openshift/origin-kube-rbac-proxy:latest
38+
imagePullPolicy: IfNotPresent
39+
name: kube-rbac-proxy
40+
securityContext:
41+
allowPrivilegeEscalation: false
42+
capabilities:
43+
drop: ["ALL"]
44+
ports:
45+
- containerPort: 8443
46+
name: metrics
47+
protocol: TCP
48+
resources:
49+
requests:
50+
memory: 20Mi
51+
cpu: 10m
52+
terminationMessagePath: /dev/termination-log
53+
terminationMessagePolicy: File
54+
volumeMounts:
55+
- mountPath: /etc/tls/private
56+
name: package-server-manager-serving-cert
3157
- name: package-server-manager
3258
securityContext:
3359
allowPrivilegeEscalation: false
@@ -43,6 +69,7 @@ spec:
4369
- $(PACKAGESERVER_NAMESPACE)
4470
- --interval
4571
- $(PACKAGESERVER_INTERVAL)
72+
- "--metrics=:9090"
4673
image: quay.io/operator-framework/olm@sha256:de396b540b82219812061d0d753440d5655250c621c753ed1dc67d6154741607
4774
imagePullPolicy: IfNotPresent
4875
env:
@@ -90,3 +117,7 @@ spec:
90117
key: node.kubernetes.io/not-ready
91118
operator: Exists
92119
tolerationSeconds: 120
120+
volumes:
121+
- name: package-server-manager-serving-cert
122+
secret:
123+
secretName: package-server-manager-serving-cert
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
annotations:
5+
include.release.openshift.io/self-managed-high-availability: "true"
6+
service.alpha.openshift.io/serving-cert-secret-name: package-server-manager-serving-cert
7+
include.release.openshift.io/ibm-cloud-managed: "true"
8+
name: package-server-manager-metrics
9+
namespace: openshift-operator-lifecycle-manager
10+
spec:
11+
ports:
12+
- name: metrics
13+
port: 8443
14+
protocol: TCP
15+
targetPort: metrics
16+
selector:
17+
app: package-server-manager
18+
sessionAffinity: None
19+
type: ClusterIP
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: monitoring.coreos.com/v1
2+
kind: ServiceMonitor
3+
metadata:
4+
name: package-server-manager-metrics
5+
namespace: openshift-operator-lifecycle-manager
6+
annotations:
7+
include.release.openshift.io/self-managed-high-availability: "true"
8+
include.release.openshift.io/ibm-cloud-managed: "true"
9+
spec:
10+
endpoints:
11+
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
12+
interval: 30s
13+
port: metrics
14+
scheme: https
15+
tlsConfig:
16+
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
17+
serverName: package-server-manager-metrics.openshift-operator-lifecycle-manager.svc
18+
namespaceSelector:
19+
matchNames:
20+
- openshift-operator-lifecycle-manager
21+
selector: {}

manifests/image-references

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,7 @@ spec:
1010
from:
1111
kind: DockerImage
1212
name: quay.io/operator-framework/configmap-operator-registry:latest
13+
- name: kube-rbac-proxy
14+
from:
15+
kind: DockerImage
16+
name: quay.io/openshift/origin-kube-rbac-proxy:latest

scripts/generate_crds_manifests.sh

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ spec:
106106
from:
107107
kind: DockerImage
108108
name: quay.io/operator-framework/configmap-operator-registry:latest
109+
- name: kube-rbac-proxy
110+
from:
111+
kind: DockerImage
112+
name: quay.io/openshift/origin-kube-rbac-proxy:latest
109113
EOF
110114

111115
cat << EOF > manifests/0000_50_olm_06-psm-operator.deployment.yaml
@@ -138,6 +142,32 @@ spec:
138142
serviceAccountName: olm-operator-serviceaccount
139143
priorityClassName: "system-cluster-critical"
140144
containers:
145+
- args:
146+
- --secure-listen-address=0.0.0.0:8443
147+
- --upstream=http://127.0.0.1:9090/
148+
- --tls-cert-file=/etc/tls/private/tls.crt
149+
- --tls-private-key-file=/etc/tls/private/tls.key
150+
- --logtostderr=true
151+
image: quay.io/openshift/origin-kube-rbac-proxy:latest
152+
imagePullPolicy: IfNotPresent
153+
name: kube-rbac-proxy
154+
securityContext:
155+
allowPrivilegeEscalation: false
156+
capabilities:
157+
drop: ["ALL"]
158+
ports:
159+
- containerPort: 8443
160+
name: metrics
161+
protocol: TCP
162+
resources:
163+
requests:
164+
memory: 20Mi
165+
cpu: 10m
166+
terminationMessagePath: /dev/termination-log
167+
terminationMessagePolicy: File
168+
volumeMounts:
169+
- mountPath: /etc/tls/private
170+
name: package-server-manager-serving-cert
141171
- name: package-server-manager
142172
securityContext:
143173
allowPrivilegeEscalation: false
@@ -153,6 +183,7 @@ spec:
153183
- \$(PACKAGESERVER_NAMESPACE)
154184
- --interval
155185
- \$(PACKAGESERVER_INTERVAL)
186+
- "--metrics=:9090"
156187
image: quay.io/operator-framework/olm@sha256:de396b540b82219812061d0d753440d5655250c621c753ed1dc67d6154741607
157188
imagePullPolicy: IfNotPresent
158189
env:
@@ -200,6 +231,54 @@ spec:
200231
key: node.kubernetes.io/not-ready
201232
operator: Exists
202233
tolerationSeconds: 120
234+
volumes:
235+
- name: package-server-manager-serving-cert
236+
secret:
237+
secretName: package-server-manager-serving-cert
238+
EOF
239+
240+
cat << EOF > manifests/0000_50_olm_06-psm-operator.service.yaml
241+
apiVersion: v1
242+
kind: Service
243+
metadata:
244+
annotations:
245+
include.release.openshift.io/self-managed-high-availability: "true"
246+
service.alpha.openshift.io/serving-cert-secret-name: package-server-manager-serving-cert
247+
name: package-server-manager-metrics
248+
namespace: openshift-operator-lifecycle-manager
249+
spec:
250+
ports:
251+
- name: metrics
252+
port: 8443
253+
protocol: TCP
254+
targetPort: metrics
255+
selector:
256+
app: package-server-manager
257+
sessionAffinity: None
258+
type: ClusterIP
259+
EOF
260+
261+
cat << EOF > manifests/0000_50_olm_06-psm-operator.servicemonitor.yaml
262+
apiVersion: monitoring.coreos.com/v1
263+
kind: ServiceMonitor
264+
metadata:
265+
name: package-server-manager-metrics
266+
namespace: openshift-operator-lifecycle-manager
267+
annotations:
268+
include.release.openshift.io/self-managed-high-availability: "true"
269+
spec:
270+
endpoints:
271+
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
272+
interval: 30s
273+
port: metrics
274+
scheme: https
275+
tlsConfig:
276+
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
277+
serverName: package-server-manager-metrics.openshift-operator-lifecycle-manager.svc
278+
namespaceSelector:
279+
matchNames:
280+
- openshift-operator-lifecycle-manager
281+
selector: {}
203282
EOF
204283

205284
cat << EOF > manifests/0000_50_olm_00-pprof-config.yaml

0 commit comments

Comments
 (0)