Skip to content

Commit 19fe753

Browse files
committed
WIP: Remove kube-rbac-proxy
Signed-off-by: Todd Short <todd.short@me.com>
1 parent 4cc2eca commit 19fe753

File tree

4 files changed

+99
-73
lines changed

4 files changed

+99
-73
lines changed

cmd/package-server-manager/main.go

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import (
44
"fmt"
55
"os"
66

7+
"github.com/sirupsen/logrus"
78
"github.com/spf13/cobra"
89

910
olmv1alpha1 "github.com/operator-framework/api/pkg/operators/v1alpha1"
11+
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/server"
1012

1113
"k8s.io/apimachinery/pkg/fields"
1214
_ "k8s.io/client-go/plugin/pkg/client/auth"
@@ -17,7 +19,6 @@ import (
1719
ctrl "sigs.k8s.io/controller-runtime"
1820
"sigs.k8s.io/controller-runtime/pkg/cache"
1921
"sigs.k8s.io/controller-runtime/pkg/client"
20-
"sigs.k8s.io/controller-runtime/pkg/healthz"
2122
"sigs.k8s.io/controller-runtime/pkg/log/zap"
2223
"sigs.k8s.io/controller-runtime/pkg/manager"
2324
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
@@ -30,8 +31,8 @@ import (
3031
const (
3132
defaultName = "packageserver"
3233
defaultNamespace = "openshift-operator-lifecycle-manager"
33-
defaultMetricsPort = "0"
34-
defaultHealthCheckPort = ":8080"
34+
defaultMetricsPort = "0" // Disable controller-runtime metrics (using pkg/lib/server instead)
35+
defaultHealthCheckPort = "" // Disable controller-runtime health (using pkg/lib/server instead)
3536
defaultPprofPort = ":6060"
3637
defaultInterval = ""
3738
leaderElectionConfigmapName = "packageserver-controller-lock"
@@ -75,11 +76,51 @@ func run(cmd *cobra.Command, args []string) error {
7576
if err != nil {
7677
return err
7778
}
79+
tlsCertPath, err := cmd.Flags().GetString("tls-cert")
80+
if err != nil {
81+
return err
82+
}
83+
tlsKeyPath, err := cmd.Flags().GetString("tls-key")
84+
if err != nil {
85+
return err
86+
}
87+
clientCAPath, err := cmd.Flags().GetString("client-ca")
88+
if err != nil {
89+
return err
90+
}
91+
debug, err := cmd.Flags().GetBool("debug")
92+
if err != nil {
93+
return err
94+
}
7895

7996
ctrl.SetLogger(zap.New(zap.UseDevMode(true)))
8097
setupLog := ctrl.Log.WithName("setup")
8198

8299
restConfig := ctrl.GetConfigOrDie()
100+
101+
// Create logrus logger for the server library
102+
logger := logrus.New()
103+
if debug {
104+
logger.SetLevel(logrus.DebugLevel)
105+
}
106+
107+
// Start HTTPS server with metrics/health endpoints
108+
listenAndServe, err := server.GetListenAndServeFunc(
109+
server.WithLogger(logger),
110+
server.WithTLS(&tlsCertPath, &tlsKeyPath, &clientCAPath),
111+
server.WithKubeConfig(restConfig),
112+
server.WithDebug(debug),
113+
)
114+
if err != nil {
115+
setupLog.Error(err, "failed to setup health/metric/pprof service")
116+
return err
117+
}
118+
119+
go func() {
120+
if err := listenAndServe(); err != nil {
121+
setupLog.Error(err, "server error")
122+
}
123+
}()
83124
le := leaderelection.GetLeaderElectionConfig(setupLog, restConfig, !disableLeaderElection)
84125

85126
packageserverCSVFields := fields.Set{"metadata.name": name}
@@ -136,14 +177,7 @@ func run(cmd *cobra.Command, args []string) error {
136177
return err
137178
}
138179

139-
if err := mgr.AddReadyzCheck("ping", healthz.Ping); err != nil {
140-
setupLog.Error(err, "failed to establish a readyz check")
141-
return err
142-
}
143-
if err := mgr.AddHealthzCheck("ping", healthz.Ping); err != nil {
144-
setupLog.Error(err, "failed to establish a healthz check")
145-
return err
146-
}
180+
// Health checks are now handled by pkg/lib/server (not controller-runtime)
147181
// +kubebuilder:scaffold:builder
148182
setupLog.Info("starting manager")
149183
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {

cmd/package-server-manager/start.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ func newStartCmd() *cobra.Command {
1919
cmd.Flags().String("interval", defaultInterval, "configures the wakeup interval for the packageserver csc resource")
2020
cmd.Flags().String("metrics", defaultMetricsPort, "configures the metrics port that the process exposes")
2121
cmd.Flags().Bool("disable-leader-election", false, "configures whether leader election will be disabled")
22+
cmd.Flags().String("tls-cert", "", "path to use for certificate key (requires tls-key)")
23+
cmd.Flags().String("tls-key", "", "path to use for private key (requires tls-cert)")
24+
cmd.Flags().String("client-ca", "", "path to watch for client ca bundle")
25+
cmd.Flags().Bool("debug", false, "enable debug logging")
2226

2327
return cmd
2428
}

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

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -31,33 +31,6 @@ spec:
3131
serviceAccountName: olm-operator-serviceaccount
3232
priorityClassName: "system-cluster-critical"
3333
containers:
34-
- args:
35-
- --secure-listen-address=0.0.0.0:8443
36-
- --upstream=http://127.0.0.1:9090/
37-
- --tls-cert-file=/etc/tls/private/tls.crt
38-
- --tls-private-key-file=/etc/tls/private/tls.key
39-
- --logtostderr=true
40-
image: quay.io/openshift/origin-kube-rbac-proxy:latest
41-
imagePullPolicy: IfNotPresent
42-
name: kube-rbac-proxy
43-
securityContext:
44-
allowPrivilegeEscalation: false
45-
readOnlyRootFilesystem: true
46-
capabilities:
47-
drop: ["ALL"]
48-
ports:
49-
- containerPort: 8443
50-
name: metrics
51-
protocol: TCP
52-
resources:
53-
requests:
54-
memory: 20Mi
55-
cpu: 10m
56-
terminationMessagePath: /dev/termination-log
57-
terminationMessagePolicy: FallbackToLogsOnError
58-
volumeMounts:
59-
- mountPath: /etc/tls/private
60-
name: package-server-manager-serving-cert
6134
- name: package-server-manager
6235
securityContext:
6336
allowPrivilegeEscalation: false
@@ -72,7 +45,12 @@ spec:
7245
- $(PACKAGESERVER_NAME)
7346
- --namespace
7447
- $(PACKAGESERVER_NAMESPACE)
75-
- "--metrics=:9090"
48+
- --tls-cert
49+
- /srv-cert/tls.crt
50+
- --tls-key
51+
- /srv-cert/tls.key
52+
- --client-ca
53+
- /profile-collector-cert/tls.crt
7654
image: quay.io/operator-framework/olm@sha256:de396b540b82219812061d0d753440d5655250c621c753ed1dc67d6154741607
7755
imagePullPolicy: IfNotPresent
7856
env:
@@ -92,17 +70,30 @@ spec:
9270
requests:
9371
cpu: 10m
9472
memory: 10Mi
73+
ports:
74+
- containerPort: 8443
75+
name: metrics
76+
protocol: TCP
9577
livenessProbe:
9678
httpGet:
9779
path: /healthz
98-
port: 8080
80+
port: 8443
81+
scheme: HTTPS
9982
initialDelaySeconds: 30
10083
readinessProbe:
10184
httpGet:
10285
path: /healthz
103-
port: 8080
86+
port: 8443
87+
scheme: HTTPS
10488
initialDelaySeconds: 30
10589
terminationMessagePolicy: FallbackToLogsOnError
90+
volumeMounts:
91+
- name: srv-cert
92+
mountPath: "/srv-cert"
93+
readOnly: true
94+
- name: profile-collector-cert
95+
mountPath: "/profile-collector-cert"
96+
readOnly: true
10697
nodeSelector:
10798
kubernetes.io/os: linux
10899
tolerations:
@@ -118,6 +109,9 @@ spec:
118109
operator: Exists
119110
tolerationSeconds: 120
120111
volumes:
121-
- name: package-server-manager-serving-cert
112+
- name: srv-cert
113+
secret:
114+
secretName: package-server-manager-serving-cert
115+
- name: profile-collector-cert
122116
secret:
123117
secretName: package-server-manager-serving-cert

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

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -31,33 +31,6 @@ spec:
3131
serviceAccountName: olm-operator-serviceaccount
3232
priorityClassName: "system-cluster-critical"
3333
containers:
34-
- args:
35-
- --secure-listen-address=0.0.0.0:8443
36-
- --upstream=http://127.0.0.1:9090/
37-
- --tls-cert-file=/etc/tls/private/tls.crt
38-
- --tls-private-key-file=/etc/tls/private/tls.key
39-
- --logtostderr=true
40-
image: quay.io/openshift/origin-kube-rbac-proxy:latest
41-
imagePullPolicy: IfNotPresent
42-
name: kube-rbac-proxy
43-
securityContext:
44-
allowPrivilegeEscalation: false
45-
readOnlyRootFilesystem: true
46-
capabilities:
47-
drop: ["ALL"]
48-
ports:
49-
- containerPort: 8443
50-
name: metrics
51-
protocol: TCP
52-
resources:
53-
requests:
54-
memory: 20Mi
55-
cpu: 10m
56-
terminationMessagePath: /dev/termination-log
57-
terminationMessagePolicy: FallbackToLogsOnError
58-
volumeMounts:
59-
- mountPath: /etc/tls/private
60-
name: package-server-manager-serving-cert
6134
- name: package-server-manager
6235
securityContext:
6336
allowPrivilegeEscalation: false
@@ -72,7 +45,12 @@ spec:
7245
- $(PACKAGESERVER_NAME)
7346
- --namespace
7447
- $(PACKAGESERVER_NAMESPACE)
75-
- "--metrics=:9090"
48+
- --tls-cert
49+
- /srv-cert/tls.crt
50+
- --tls-key
51+
- /srv-cert/tls.key
52+
- --client-ca
53+
- /profile-collector-cert/tls.crt
7654
image: quay.io/operator-framework/olm@sha256:de396b540b82219812061d0d753440d5655250c621c753ed1dc67d6154741607
7755
imagePullPolicy: IfNotPresent
7856
env:
@@ -92,17 +70,30 @@ spec:
9270
requests:
9371
cpu: 10m
9472
memory: 10Mi
73+
ports:
74+
- containerPort: 8443
75+
name: metrics
76+
protocol: TCP
9577
livenessProbe:
9678
httpGet:
9779
path: /healthz
98-
port: 8080
80+
port: 8443
81+
scheme: HTTPS
9982
initialDelaySeconds: 30
10083
readinessProbe:
10184
httpGet:
10285
path: /healthz
103-
port: 8080
86+
port: 8443
87+
scheme: HTTPS
10488
initialDelaySeconds: 30
10589
terminationMessagePolicy: FallbackToLogsOnError
90+
volumeMounts:
91+
- name: srv-cert
92+
mountPath: "/srv-cert"
93+
readOnly: true
94+
- name: profile-collector-cert
95+
mountPath: "/profile-collector-cert"
96+
readOnly: true
10697
nodeSelector:
10798
kubernetes.io/os: linux
10899
node-role.kubernetes.io/master: ""
@@ -119,6 +110,9 @@ spec:
119110
operator: Exists
120111
tolerationSeconds: 120
121112
volumes:
122-
- name: package-server-manager-serving-cert
113+
- name: srv-cert
114+
secret:
115+
secretName: package-server-manager-serving-cert
116+
- name: profile-collector-cert
123117
secret:
124118
secretName: package-server-manager-serving-cert

0 commit comments

Comments
 (0)