@@ -22,6 +22,7 @@ import (
2222 "github.com/openshift/console/pkg/serverconfig"
2323 oscrypto "github.com/openshift/library-go/pkg/crypto"
2424
25+ "k8s.io/client-go/rest"
2526 "k8s.io/klog"
2627)
2728
@@ -322,6 +323,13 @@ func main() {
322323 klog .Fatalf ("failed to read bearer token: %v" , err )
323324 }
324325
326+ srv .InternalProxiedK8SClientConfig = & rest.Config {
327+ Host : k8sEndpoint .String (),
328+ TLSClientConfig : rest.TLSClientConfig {
329+ CAFile : k8sInClusterCA ,
330+ },
331+ }
332+
325333 srv .K8sProxyConfig = & proxy.Config {
326334 TLSClientConfig : tlsConfig ,
327335 HeaderBlacklist : []string {"Cookie" , "X-CSRFToken" },
@@ -405,6 +413,11 @@ func main() {
405413 },
406414 }
407415
416+ srv .InternalProxiedK8SClientConfig = & rest.Config {
417+ Host : k8sEndpoint .String (),
418+ Transport : & http.Transport {TLSClientConfig : serviceProxyTLSConfig },
419+ }
420+
408421 srv .K8sProxyConfig = & proxy.Config {
409422 TLSClientConfig : serviceProxyTLSConfig ,
410423 HeaderBlacklist : []string {"Cookie" , "X-CSRFToken" },
@@ -478,11 +491,6 @@ func main() {
478491 apiServerEndpoint = srv .K8sProxyConfig .Endpoint .String ()
479492 }
480493 srv .KubeAPIServerURL = apiServerEndpoint
481- srv .K8sClient = & http.Client {
482- Transport : & http.Transport {
483- TLSClientConfig : srv .K8sProxyConfig .TLSClientConfig ,
484- },
485- }
486494
487495 clusterManagementURL , err := url .Parse (clusterManagementURL )
488496 if err != nil {
@@ -498,31 +506,28 @@ func main() {
498506 case "service-account" :
499507 flags .FatalIfFailed (flags .ValidateFlagIs ("k8s-mode" , * fK8sMode , "in-cluster" ))
500508 srv .StaticUser = & auth.User {
501- Token : k8sAuthServiceAccountBearerToken ,
509+ Token : k8sAuthServiceAccountBearerToken , // FIXME: make it read the token from the file and periodically re-read?
502510 }
503- srv .ServiceAccountToken = k8sAuthServiceAccountBearerToken
511+ srv .InternalProxiedK8SClientConfig . BearerTokenFile = k8sInClusterBearerToken
504512 case "bearer-token" :
505513 flags .FatalIfFailed (flags .ValidateFlagNotEmpty ("k8s-auth-bearer-token" , * fK8sAuthBearerToken ))
506514
507515 srv .StaticUser = & auth.User {
508516 Token : * fK8sAuthBearerToken ,
509517 }
510- srv .ServiceAccountToken = * fK8sAuthBearerToken
518+ srv .InternalProxiedK8SClientConfig . BearerToken = * fK8sAuthBearerToken
511519 case "oidc" , "openshift" :
512520 flags .FatalIfFailed (flags .ValidateFlagIs ("user-auth" , authOptions .AuthType , "oidc" , "openshift" ))
513- srv .ServiceAccountToken = k8sAuthServiceAccountBearerToken
521+ srv .InternalProxiedK8SClientConfig . BearerTokenFile = k8sInClusterBearerToken
514522 default :
515523 flags .FatalIfFailed (flags .NewInvalidFlagError ("k8s-mode" , "must be one of: service-account, bearer-token, oidc, openshift" ))
516524 }
517525
518- monitoringDashboardHttpClientTransport := & http.Transport {
519- TLSClientConfig : srv .K8sProxyConfig .TLSClientConfig ,
520- }
521- if * fK8sMode == "off-cluster" {
522- monitoringDashboardHttpClientTransport .Proxy = http .ProxyFromEnvironment
526+ internalProxiedK8SRT , err := rest .TransportFor (srv .InternalProxiedK8SClientConfig )
527+ if err != nil {
528+ klog .Fatalf ("Failed to create k8s HTTP client: %v" , err )
523529 }
524530 srv .MonitoringDashboardConfigMapLister = server .NewResourceLister (
525- srv .ServiceAccountToken ,
526531 & url.URL {
527532 Scheme : k8sEndpoint .Scheme ,
528533 Host : k8sEndpoint .Host ,
@@ -531,14 +536,11 @@ func main() {
531536 "labelSelector" : {"console.openshift.io/dashboard=true" },
532537 }.Encode (),
533538 },
534- & http.Client {
535- Transport : monitoringDashboardHttpClientTransport ,
536- },
539+ internalProxiedK8SRT ,
537540 nil ,
538541 )
539542
540543 srv .KnativeEventSourceCRDLister = server .NewResourceLister (
541- srv .ServiceAccountToken ,
542544 & url.URL {
543545 Scheme : k8sEndpoint .Scheme ,
544546 Host : k8sEndpoint .Host ,
@@ -547,16 +549,11 @@ func main() {
547549 "labelSelector" : {"duck.knative.dev/source=true" },
548550 }.Encode (),
549551 },
550- & http.Client {
551- Transport : & http.Transport {
552- TLSClientConfig : srv .K8sProxyConfig .TLSClientConfig ,
553- },
554- },
552+ internalProxiedK8SRT ,
555553 knative .EventSourceFilter ,
556554 )
557555
558556 srv .KnativeChannelCRDLister = server .NewResourceLister (
559- srv .ServiceAccountToken ,
560557 & url.URL {
561558 Scheme : k8sEndpoint .Scheme ,
562559 Host : k8sEndpoint .Host ,
@@ -565,11 +562,7 @@ func main() {
565562 "labelSelector" : {"duck.knative.dev/addressable=true,messaging.knative.dev/subscribable=true" },
566563 }.Encode (),
567564 },
568- & http.Client {
569- Transport : & http.Transport {
570- TLSClientConfig : srv .K8sProxyConfig .TLSClientConfig ,
571- },
572- },
565+ internalProxiedK8SRT ,
573566 knative .ChannelFilter ,
574567 )
575568
@@ -578,7 +571,7 @@ func main() {
578571 caCertFilePath = k8sInClusterCA
579572 }
580573
581- if err := completedAuthnOptions .ApplyTo (srv , k8sEndpoint , apiServerEndpoint , caCertFilePath ); err != nil {
574+ if err := completedAuthnOptions .ApplyTo (srv , k8sEndpoint , caCertFilePath ); err != nil {
582575 klog .Fatalf ("failed to apply configuration to server: %v" , err )
583576 os .Exit (1 )
584577 }
@@ -595,9 +588,14 @@ func main() {
595588 flags .FatalIfFailed (flags .NewInvalidFlagError ("listen" , "scheme must be one of: http, https" ))
596589 }
597590
591+ consoleHandler , err := srv .HTTPHandler ()
592+ if err != nil {
593+ klog .Errorf ("failed to set up the console's HTTP handler: %v" , err )
594+ os .Exit (1 )
595+ }
598596 httpsrv := & http.Server {
599597 Addr : listenURL .Host ,
600- Handler : srv . HTTPHandler () ,
598+ Handler : consoleHandler ,
601599 // Disable HTTP/2, which breaks WebSockets.
602600 TLSNextProto : make (map [string ]func (* http.Server , * tls.Conn , http.Handler )),
603601 TLSConfig : oscrypto .SecureTLSConfig (& tls.Config {}),
0 commit comments