From 0f330b238259f6909dbbbaa7701421d5b0890ce3 Mon Sep 17 00:00:00 2001 From: "gang.liu" Date: Thu, 17 Aug 2023 15:46:09 +0800 Subject: [PATCH 1/4] add flags for run provisioner out of the cluster Signed-off-by: gang.liu --- Makefile | 4 ++-- cmd/contour/gatewayprovisioner.go | 21 +++++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 76c00be7cae..d7db1b5bfa2 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ BUILD_CGO_ENABLED ?= 0 BUILD_GOPRIVATE ?= "" # Go module mirror to use. -BUILD_GOPROXY ?= https://proxy.golang.org +BUILD_GOPROXY ?= https://goproxy.cn # Checksum db to use. BUILD_GOSUMDB ?= sum.golang.org @@ -227,7 +227,7 @@ lint-flags: .PHONY: generate generate: ## Re-generate generated code and documentation -generate: generate-rbac generate-crd-deepcopy generate-crd-yaml generate-gateway-yaml generate-deployment generate-api-docs generate-metrics-docs generate-uml generate-go +generate: generate-rbac generate-crd-deepcopy generate-crd-yaml generate-deployment generate-api-docs generate-metrics-docs generate-uml generate-go .PHONY: generate-rbac generate-rbac: diff --git a/cmd/contour/gatewayprovisioner.go b/cmd/contour/gatewayprovisioner.go index 68d35a0e3c7..b69462c0f86 100644 --- a/cmd/contour/gatewayprovisioner.go +++ b/cmd/contour/gatewayprovisioner.go @@ -17,12 +17,13 @@ import ( "fmt" "os" - "github.com/novln/docker-parser/distribution/reference" + "github.com/projectcontour/contour/internal/k8s" "github.com/projectcontour/contour/internal/provisioner" "github.com/projectcontour/contour/internal/provisioner/controller" "github.com/projectcontour/contour/pkg/config" "github.com/alecthomas/kingpin/v2" + "github.com/novln/docker-parser/distribution/reference" _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" "k8s.io/client-go/rest" ctrl "sigs.k8s.io/controller-runtime" @@ -56,6 +57,11 @@ func registerGatewayProvisioner(app *kingpin.Application) (*kingpin.CmdClause, * Default(provisionerConfig.gatewayControllerName). StringVar(&provisionerConfig.gatewayControllerName) + cmd.Flag("incluster", "Use in cluster configuration.").BoolVar(&provisionerConfig.inCluster) + cmd.Flag("kubeconfig", "Path to kubeconfig (if not in running inside a cluster)."). + PlaceHolder("/path/to/file"). + StringVar(&provisionerConfig.kubeconfig) + cmd.Flag("leader-election-namespace", "The namespace in which the leader election resource will be created."). Default(config.GetenvOr("CONTOUR_PROVISIONER_NAMESPACE", "projectcontour")). StringVar(&provisionerConfig.leaderElectionNamespace) @@ -95,6 +101,10 @@ type gatewayProvisionerConfig struct { // gatewayControllerName defines the controller string that this gateway provisioner instance // will process GatewayClasses and Gateways for. gatewayControllerName string + + // Kubernetes client parameters. + inCluster bool `yaml:"incluster,omitempty"` + kubeconfig string `yaml:"kubeconfig,omitempty"` } func runGatewayProvisioner(config *gatewayProvisionerConfig) { @@ -111,7 +121,14 @@ func runGatewayProvisioner(config *gatewayProvisionerConfig) { setupLog.Info("using contour", "image", config.contourImage) setupLog.Info("using envoy", "image", config.envoyImage) - mgr, err := createManager(ctrl.GetConfigOrDie(), config) + // Establish k8s core client connection. + restConfig, err := k8s.NewRestConfig(config.kubeconfig, config.inCluster) + if err != nil { + setupLog.Error(err, "failed to create REST config for Kubernetes clients") + os.Exit(1) + } + + mgr, err := createManager(restConfig, config) if err != nil { setupLog.Error(err, "failed to create contour gateway provisioner") os.Exit(1) From a1a5173cade978e6703319caee4990ff0ed3bdbb Mon Sep 17 00:00:00 2001 From: "gang.liu" Date: Thu, 17 Aug 2023 15:51:02 +0800 Subject: [PATCH 2/4] revert change to makefile Signed-off-by: gang.liu --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d7db1b5bfa2..76c00be7cae 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ BUILD_CGO_ENABLED ?= 0 BUILD_GOPRIVATE ?= "" # Go module mirror to use. -BUILD_GOPROXY ?= https://goproxy.cn +BUILD_GOPROXY ?= https://proxy.golang.org # Checksum db to use. BUILD_GOSUMDB ?= sum.golang.org @@ -227,7 +227,7 @@ lint-flags: .PHONY: generate generate: ## Re-generate generated code and documentation -generate: generate-rbac generate-crd-deepcopy generate-crd-yaml generate-deployment generate-api-docs generate-metrics-docs generate-uml generate-go +generate: generate-rbac generate-crd-deepcopy generate-crd-yaml generate-gateway-yaml generate-deployment generate-api-docs generate-metrics-docs generate-uml generate-go .PHONY: generate-rbac generate-rbac: From 8a5bf38903e50004cfda6650bcbfe4bf331e02a8 Mon Sep 17 00:00:00 2001 From: "gang.liu" Date: Thu, 17 Aug 2023 16:10:41 +0800 Subject: [PATCH 3/4] add change log Signed-off-by: gang.liu --- changelogs/unreleased/5686-izturn-small.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelogs/unreleased/5686-izturn-small.md diff --git a/changelogs/unreleased/5686-izturn-small.md b/changelogs/unreleased/5686-izturn-small.md new file mode 100644 index 00000000000..7e36c60111d --- /dev/null +++ b/changelogs/unreleased/5686-izturn-small.md @@ -0,0 +1 @@ +Add flags: `--incluster`, `--kubeconfig` for enable run the `gateway-provisioner` in or out of the cluster. \ No newline at end of file From 0601d2854da03eac6799d7e082c6d01cab64cb57 Mon Sep 17 00:00:00 2001 From: "gang.liu" Date: Fri, 18 Aug 2023 08:26:54 +0800 Subject: [PATCH 4/4] little refactor Signed-off-by: gang.liu --- cmd/contour/gatewayprovisioner.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/cmd/contour/gatewayprovisioner.go b/cmd/contour/gatewayprovisioner.go index b69462c0f86..2e0db631c66 100644 --- a/cmd/contour/gatewayprovisioner.go +++ b/cmd/contour/gatewayprovisioner.go @@ -57,7 +57,9 @@ func registerGatewayProvisioner(app *kingpin.Application) (*kingpin.CmdClause, * Default(provisionerConfig.gatewayControllerName). StringVar(&provisionerConfig.gatewayControllerName) - cmd.Flag("incluster", "Use in cluster configuration.").BoolVar(&provisionerConfig.inCluster) + cmd.Flag("incluster", "Use in cluster configuration."). + Default("true"). + BoolVar(&provisionerConfig.inCluster) cmd.Flag("kubeconfig", "Path to kubeconfig (if not in running inside a cluster)."). PlaceHolder("/path/to/file"). StringVar(&provisionerConfig.kubeconfig) @@ -103,8 +105,8 @@ type gatewayProvisionerConfig struct { gatewayControllerName string // Kubernetes client parameters. - inCluster bool `yaml:"incluster,omitempty"` - kubeconfig string `yaml:"kubeconfig,omitempty"` + inCluster bool + kubeconfig string } func runGatewayProvisioner(config *gatewayProvisionerConfig) {