Skip to content

Commit 09c6200

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

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
@@ -62,6 +62,10 @@ func run(cmd *cobra.Command, args []string) error {
6262
if err != nil {
6363
return err
6464
}
65+
metricsAddr, err := cmd.Flags().GetString("metrics")
66+
if err != nil {
67+
return err
68+
}
6569

6670
ctrl.SetLogger(zap.New(zap.UseDevMode(true)))
6771
setupLog := ctrl.Log.WithName("setup")
@@ -73,7 +77,7 @@ func run(cmd *cobra.Command, args []string) error {
7377
mgr, err := ctrl.NewManager(restConfig, manager.Options{
7478
Scheme: setupScheme(),
7579
Namespace: namespace,
76-
MetricsBindAddress: defaultMetricsPort,
80+
MetricsBindAddress: metricsAddr,
7781
LeaderElection: !disableLeaderElection,
7882
LeaderElectionNamespace: namespace,
7983
LeaderElectionID: leaderElectionConfigmapName,

cmd/package-server-manager/start.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ func newStartCmd() *cobra.Command {
1616
cmd.Flags().String("namespace", defaultNamespace, "configures the metadata.namespace that contains the packageserver csv resource")
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")
19+
cmd.Flags().String("metrics", defaultMetricsPort, "configures the metrics port that the process exposes")
1920
cmd.Flags().Bool("disable-leader-election", false, "configures whether leader election will be disabled")
2021

2122
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
@@ -41,6 +67,7 @@ spec:
4167
- $(PACKAGESERVER_NAME)
4268
- --namespace
4369
- $(PACKAGESERVER_NAMESPACE)
70+
- "--metrics=:9090"
4471
image: quay.io/operator-framework/olm@sha256:de396b540b82219812061d0d753440d5655250c621c753ed1dc67d6154741607
4572
imagePullPolicy: IfNotPresent
4673
env:
@@ -85,3 +112,7 @@ spec:
85112
key: node.kubernetes.io/not-ready
86113
operator: Exists
87114
tolerationSeconds: 120
115+
volumes:
116+
- name: package-server-manager-serving-cert
117+
secret:
118+
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
@@ -41,6 +67,7 @@ spec:
4167
- $(PACKAGESERVER_NAME)
4268
- --namespace
4369
- $(PACKAGESERVER_NAMESPACE)
70+
- "--metrics=:9090"
4471
image: quay.io/operator-framework/olm@sha256:de396b540b82219812061d0d753440d5655250c621c753ed1dc67d6154741607
4572
imagePullPolicy: IfNotPresent
4673
env:
@@ -86,3 +113,7 @@ spec:
86113
key: node.kubernetes.io/not-ready
87114
operator: Exists
88115
tolerationSeconds: 120
116+
volumes:
117+
- name: package-server-manager-serving-cert
118+
secret:
119+
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
@@ -151,6 +181,7 @@ spec:
151181
- \$(PACKAGESERVER_NAME)
152182
- --namespace
153183
- \$(PACKAGESERVER_NAMESPACE)
184+
- "--metrics=:9090"
154185
image: quay.io/operator-framework/olm@sha256:de396b540b82219812061d0d753440d5655250c621c753ed1dc67d6154741607
155186
imagePullPolicy: IfNotPresent
156187
env:
@@ -196,6 +227,54 @@ spec:
196227
key: node.kubernetes.io/not-ready
197228
operator: Exists
198229
tolerationSeconds: 120
230+
volumes:
231+
- name: package-server-manager-serving-cert
232+
secret:
233+
secretName: package-server-manager-serving-cert
234+
EOF
235+
236+
cat << EOF > manifests/0000_50_olm_06-psm-operator.service.yaml
237+
apiVersion: v1
238+
kind: Service
239+
metadata:
240+
annotations:
241+
include.release.openshift.io/self-managed-high-availability: "true"
242+
service.alpha.openshift.io/serving-cert-secret-name: package-server-manager-serving-cert
243+
name: package-server-manager-metrics
244+
namespace: openshift-operator-lifecycle-manager
245+
spec:
246+
ports:
247+
- name: metrics
248+
port: 8443
249+
protocol: TCP
250+
targetPort: metrics
251+
selector:
252+
app: package-server-manager
253+
sessionAffinity: None
254+
type: ClusterIP
255+
EOF
256+
257+
cat << EOF > manifests/0000_50_olm_06-psm-operator.servicemonitor.yaml
258+
apiVersion: monitoring.coreos.com/v1
259+
kind: ServiceMonitor
260+
metadata:
261+
name: package-server-manager-metrics
262+
namespace: openshift-operator-lifecycle-manager
263+
annotations:
264+
include.release.openshift.io/self-managed-high-availability: "true"
265+
spec:
266+
endpoints:
267+
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
268+
interval: 30s
269+
port: metrics
270+
scheme: https
271+
tlsConfig:
272+
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
273+
serverName: package-server-manager-metrics.openshift-operator-lifecycle-manager.svc
274+
namespaceSelector:
275+
matchNames:
276+
- openshift-operator-lifecycle-manager
277+
selector: {}
199278
EOF
200279

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

0 commit comments

Comments
 (0)