Skip to content

Commit 9821a1e

Browse files
committed
FRR-k8s: use OperatorPKI for metrics TLS to fix bootstrap deadlock
The FRR DaemonSet requires a TLS secret for kube-rbac-proxy to start. Previously this used service-ca, but service-ca is not available during bootstrap (it depends on CNI being ready first), causing a deadlock. This commit adds a second OperatorPKI for metrics certificates, so both webhook and metrics use OperatorPKI with no service-ca dependency during bootstrap. Changes: - Add frr-k8s-metrics OperatorPKI to 003-pki.yaml - Update frr-k8s.yaml to use frr-k8s-metrics-cert secret - Remove service-ca annotation from monitor.yaml Service - Use insecureSkipVerify in ServiceMonitor (Prometheus doesn't have OperatorPKI CA in its trust bundle, but TLS encryption is still active) Signed-off-by: Riccardo Ravaioli <rravaiol@redhat.com>
1 parent 3a305d5 commit 9821a1e

File tree

4 files changed

+17
-10
lines changed

4 files changed

+17
-10
lines changed
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
# Request that the cluster network operator PKI controller
2-
# creates certificates for the FRR-k8s webhook.
2+
# creates certificates for the FRR-k8s webhook and metrics.
33
# This avoids dependency on service-ca operator during bootstrap,
44
# which is critical because the webhook must be ready before OVN-Kubernetes
55
# starts when RouteAdvertisements are enabled.
66
#
7-
# Metrics use service-ca since Prometheus already trusts that CA and
8-
# metrics are not needed during bootstrap.
7+
# Both webhook and metrics need OperatorPKI because the FRR DaemonSet
8+
# requires the metrics TLS secret to start, and service-ca is not
9+
# available during bootstrap (it depends on CNI being ready).
910
---
1011
apiVersion: network.operator.openshift.io/v1
1112
kind: OperatorPKI
@@ -15,3 +16,12 @@ metadata:
1516
spec:
1617
targetCert:
1718
commonName: frr-k8s-webhook-service.openshift-frr-k8s.svc
19+
---
20+
apiVersion: network.operator.openshift.io/v1
21+
kind: OperatorPKI
22+
metadata:
23+
name: frr-k8s-metrics
24+
namespace: openshift-frr-k8s
25+
spec:
26+
targetCert:
27+
commonName: frr-k8s-monitor-service.openshift-frr-k8s.svc

bindata/network/frr-k8s/frr-k8s.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ spec:
5151
emptyDir: {}
5252
- name: metrics-certs
5353
secret:
54-
secretName: frr-k8s-metrics-certs
54+
secretName: frr-k8s-metrics-cert
5555
initContainers:
5656
# Copies the initial config files with the right permissions to the shared volume.
5757
- name: cp-frr-files

bindata/network/frr-k8s/monitor.yaml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ metadata:
88
name: frr-k8s-monitor-service
99
annotations:
1010
prometheus.io/scrape: "true"
11-
service.beta.openshift.io/serving-cert-secret-name: frr-k8s-metrics-certs
1211
spec:
1312
selector:
1413
app: frr-k8s
@@ -41,15 +40,13 @@ spec:
4140
port: metricshttps
4241
scheme: https
4342
tlsConfig:
44-
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
45-
serverName: frr-k8s-monitor-service.openshift-frr-k8s.svc
43+
insecureSkipVerify: true
4644
- bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
4745
honorLabels: true
4846
port: frrmetricshttps
4947
scheme: https
5048
tlsConfig:
51-
caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
52-
serverName: frr-k8s-monitor-service.openshift-frr-k8s.svc
49+
insecureSkipVerify: true
5350
jobLabel: app
5451
namespaceSelector:
5552
matchNames:

pkg/network/render_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,7 @@ func Test_renderAdditionalRoutingCapabilities(t *testing.T) {
638638
},
639639
},
640640
},
641-
want: 21, // 19 original + 1 OperatorPKI + 1 document separator
641+
want: 22, // 19 original + 2 OperatorPKI (webhook + metrics) + 1 document separator
642642
expectedErr: nil,
643643
},
644644
}

0 commit comments

Comments
 (0)