From 0822a9263f263934e9e742344527d1c5d9b96de5 Mon Sep 17 00:00:00 2001 From: Jakub Warczarek Date: Mon, 1 Jul 2024 17:24:50 +0200 Subject: [PATCH 1/4] feat: set proper User-Agent for each request (#387) --- CHANGELOG.md | 9 +++++++++ modules/manager/metadata/metadata.go | 29 ++++++++++++++++++++++----- modules/manager/run.go | 30 ++++++++-------------------- 3 files changed, 41 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6dc231ac..dde87b730 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,15 @@ - [v0.1.1](#v011) - [v0.1.0](#v010) +## Unreleased + +> Release date: TBD + +### Added + +- Proper `User-Agent` header is now set on outgoing HTTP requests. + [#387](https://github.com/Kong/gateway-operator/pull/387) + ## [v1.3.0] > Release date: 2024-06-24 diff --git a/modules/manager/metadata/metadata.go b/modules/manager/metadata/metadata.go index 0fca1acbe..d8681d2ac 100644 --- a/modules/manager/metadata/metadata.go +++ b/modules/manager/metadata/metadata.go @@ -1,6 +1,11 @@ // Package metadata includes metadata variables for logging and reporting. package metadata +import ( + "fmt" + "runtime" +) + // ----------------------------------------------------------------------------- // Controller Manager - Versioning Information // ----------------------------------------------------------------------------- @@ -8,6 +13,16 @@ package metadata // WARNING: moving any of these variables requires changes to both the Makefile // and the Dockerfile which modify them during the link step with -X +// BuildFlavor is the flavor of the build. +type BuildFlavor string + +const ( + // OSSFlavor is the open-source flavor. + OSSFlavor BuildFlavor = "oss" + // EEFlavor is the enterprise flavor. + EEFlavor BuildFlavor = "enterprise" +) + // Info is a struct type that holds the metadata for the controller manager. type Info struct { // Release returns the release version, generally a semver like v1.0.0. @@ -29,7 +44,14 @@ type Info struct { Organization string // Flavor is the flavor of the build. - Flavor string + Flavor BuildFlavor +} + +// UserAgent returns the User-Agent string to use in all HTTP requests made by KGO. +func (inf Info) UserAgent() string { + return fmt.Sprintf("%s/%s (%s/%s) (%s)", + inf.ProjectName, inf.Release, runtime.GOOS, runtime.GOARCH, inf.Flavor, + ) } var ( @@ -50,9 +72,6 @@ var ( // Organization is the Kong organization organization = "Kong" - - // Flavor is the flavor of the build. - flavor = "oss" ) // Metadata returns the metadata for the controller manager. @@ -64,6 +83,6 @@ func Metadata() Info { Commit: commit, ProjectName: projectName, Organization: organization, - Flavor: flavor, + Flavor: OSSFlavor, } } diff --git a/modules/manager/run.go b/modules/manager/run.go index d69f6526e..cef10fdee 100644 --- a/modules/manager/run.go +++ b/modules/manager/run.go @@ -36,7 +36,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/rest" - "k8s.io/client-go/tools/clientcmd" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/healthz" @@ -82,7 +81,7 @@ type Config struct { DataPlaneControllerEnabled bool DataPlaneBlueGreenControllerEnabled bool - // Controllers for speciality APIs and experimental features. + // Controllers for specialty APIs and experimental features. AIGatewayControllerEnabled bool // webhook and validation options @@ -156,7 +155,10 @@ func Run( setupLog.Info("leader election disabled") } - mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ + restCfg := ctrl.GetConfigOrDie() + restCfg.UserAgent = metadata.UserAgent() + + mgr, err := ctrl.NewManager(restCfg, ctrl.Options{ Scheme: scheme, Metrics: server.Options{ BindAddress: cfg.MetricsAddr, @@ -244,7 +246,7 @@ func Run( // Enable anonnymous reporting when configured but not for development builds // to reduce the noise. if cfg.AnonymousReports && !cfg.DevelopmentMode { - stopAnonymousReports, err := setupAnonymousReports(context.Background(), cfg, setupLog, metadata) + stopAnonymousReports, err := setupAnonymousReports(context.Background(), restCfg, setupLog, metadata) if err != nil { setupLog.Error(err, "failed setting up anonymous reports") } else { @@ -353,35 +355,19 @@ func (m *caManager) maybeCreateCACertificate(ctx context.Context) error { return nil } -func getKubeconfig(apiServerPath string, kubeconfig string) (*rest.Config, error) { - config, err := clientcmd.BuildConfigFromFlags(apiServerPath, kubeconfig) - if err != nil { - // Fall back to default client loading rules. - loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() - // if you want to change the loading rules (which files in which order), you can do so here - kubeConfig := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loadingRules, nil) - return kubeConfig.ClientConfig() - } - return config, nil -} - // setupAnonymousReports sets up and starts the anonymous reporting and returns // a cleanup function and an error. // The caller is responsible to call the returned function - when the returned // error is not nil - to stop the reports sending. -func setupAnonymousReports(ctx context.Context, cfg Config, logger logr.Logger, metadata metadata.Info) (func(), error) { +func setupAnonymousReports(ctx context.Context, restCfg *rest.Config, logger logr.Logger, metadata metadata.Info) (func(), error) { logger.Info("starting anonymous reports") - restConfig, err := getKubeconfig(cfg.APIServerPath, cfg.KubeconfigPath) - if err != nil { - return nil, fmt.Errorf("failed to get kubeconfig: %w", err) - } payload := telemetry.Payload{ "v": metadata.Release, "flavor": metadata.Flavor, } - tMgr, err := telemetry.CreateManager(telemetry.SignalPing, restConfig, logger, payload) + tMgr, err := telemetry.CreateManager(telemetry.SignalPing, restCfg, logger, payload) if err != nil { return nil, fmt.Errorf("failed to create anonymous reports manager: %w", err) } From 9f768836187e7bd81c1ed2785171e2d4866ab609 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 11:51:47 +0200 Subject: [PATCH 2/4] chore(deps): update kong/kubernetes-ingress-controller docker tag to v3.2.2 (#394) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- config/samples/controlplane.yaml | 2 +- config/samples/gateway-httproute-allowedroutes.yaml | 2 +- config/samples/gateway-httproute.yaml | 2 +- .../gateway-with-disabled-controlplane-admission-webhook.yaml | 2 +- internal/versions/controlplane.go | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config/samples/controlplane.yaml b/config/samples/controlplane.yaml index 0de7d9cd6..6d865a5bb 100644 --- a/config/samples/controlplane.yaml +++ b/config/samples/controlplane.yaml @@ -14,7 +14,7 @@ spec: containers: - name: controller # renovate: datasource=docker versioning=docker - image: kong/kubernetes-ingress-controller:3.2.1 + image: kong/kubernetes-ingress-controller:3.2.2 readinessProbe: initialDelaySeconds: 1 periodSeconds: 3 diff --git a/config/samples/gateway-httproute-allowedroutes.yaml b/config/samples/gateway-httproute-allowedroutes.yaml index 674f5e695..e7afbb41f 100644 --- a/config/samples/gateway-httproute-allowedroutes.yaml +++ b/config/samples/gateway-httproute-allowedroutes.yaml @@ -82,7 +82,7 @@ spec: containers: - name: controller # renovate: datasource=docker versioning=docker - image: kong/kubernetes-ingress-controller:3.2.1 + image: kong/kubernetes-ingress-controller:3.2.2 readinessProbe: initialDelaySeconds: 1 periodSeconds: 1 diff --git a/config/samples/gateway-httproute.yaml b/config/samples/gateway-httproute.yaml index 5eee77172..3831f9b89 100644 --- a/config/samples/gateway-httproute.yaml +++ b/config/samples/gateway-httproute.yaml @@ -143,7 +143,7 @@ spec: containers: - name: controller # renovate: datasource=docker versioning=docker - image: kong/kubernetes-ingress-controller:3.2.1 + image: kong/kubernetes-ingress-controller:3.2.2 readinessProbe: initialDelaySeconds: 1 periodSeconds: 1 diff --git a/config/samples/gateway-with-disabled-controlplane-admission-webhook.yaml b/config/samples/gateway-with-disabled-controlplane-admission-webhook.yaml index 781228ed5..7d4fadf98 100644 --- a/config/samples/gateway-with-disabled-controlplane-admission-webhook.yaml +++ b/config/samples/gateway-with-disabled-controlplane-admission-webhook.yaml @@ -78,7 +78,7 @@ spec: containers: - name: controller # renovate: datasource=docker versioning=docker - image: kong/kubernetes-ingress-controller:3.2.1 + image: kong/kubernetes-ingress-controller:3.2.2 readinessProbe: initialDelaySeconds: 1 periodSeconds: 1 diff --git a/internal/versions/controlplane.go b/internal/versions/controlplane.go index 4d0f8322b..7e626d1fc 100644 --- a/internal/versions/controlplane.go +++ b/internal/versions/controlplane.go @@ -13,7 +13,7 @@ const ( // and those tests create KIC's URLs for things like roles or CRDs. // Since KIC only defines the full tags in its repo (as expected) we cannot use // a partial version here, as it would not match KIC's tag. - DefaultControlPlaneVersion = "3.2.1" // renovate: datasource=docker depName=kong/kubernetes-ingress-controller + DefaultControlPlaneVersion = "3.2.2" // renovate: datasource=docker depName=kong/kubernetes-ingress-controller ) // minimumControlPlaneVersion indicates the bare minimum version of the From c2181d8d90aa51742bf7a493e95f236101afe038 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 16:01:06 +0200 Subject: [PATCH 3/4] chore(deps): bump github.com/kong/kubernetes-ingress-controller/v3 (#395) Bumps [github.com/kong/kubernetes-ingress-controller/v3](https://github.com/kong/kubernetes-ingress-controller) from 3.2.1 to 3.2.2. - [Release notes](https://github.com/kong/kubernetes-ingress-controller/releases) - [Changelog](https://github.com/Kong/kubernetes-ingress-controller/blob/main/CHANGELOG.md) - [Commits](https://github.com/kong/kubernetes-ingress-controller/compare/v3.2.1...v3.2.2) --- updated-dependencies: - dependency-name: github.com/kong/kubernetes-ingress-controller/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 90986a8a7..66ef42165 100644 --- a/go.mod +++ b/go.mod @@ -16,7 +16,7 @@ require ( github.com/cloudflare/cfssl v1.6.5 github.com/go-logr/logr v1.4.2 github.com/google/uuid v1.6.0 - github.com/kong/kubernetes-ingress-controller/v3 v3.2.1 + github.com/kong/kubernetes-ingress-controller/v3 v3.2.2 github.com/kong/kubernetes-telemetry v0.1.4 github.com/kong/kubernetes-testing-framework v0.47.1 github.com/kong/semver/v4 v4.0.1 diff --git a/go.sum b/go.sum index 17b07ab48..4f28dfe93 100644 --- a/go.sum +++ b/go.sum @@ -213,8 +213,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kong/go-kong v0.56.0 h1:/9qbnQJWAgrSAKzL2RViBhHMTYOEyG8N4ClkKnUwEW4= github.com/kong/go-kong v0.56.0/go.mod h1:gyNwyP1fzztT6sX/0/ygMQ30OiRMIQ51b2jSfstMrcU= -github.com/kong/kubernetes-ingress-controller/v3 v3.2.1 h1:0JC1Sm6KLdCtC9YvYs+c0AySNvEyd3l16NGZWm1MU04= -github.com/kong/kubernetes-ingress-controller/v3 v3.2.1/go.mod h1:gshVZnDU2FTe/95I3vSJPsH2kyB8zR+GpUIieCyt8C4= +github.com/kong/kubernetes-ingress-controller/v3 v3.2.2 h1:2lFP0AanAfdEQ2XNQwSxR4BP5lpy/BAmNqIxp953qe0= +github.com/kong/kubernetes-ingress-controller/v3 v3.2.2/go.mod h1:gshVZnDU2FTe/95I3vSJPsH2kyB8zR+GpUIieCyt8C4= github.com/kong/kubernetes-telemetry v0.1.4 h1:Yz7OlECxWKgNRG1wJ5imA4+H0dQEpdU9d86uhwUVpu4= github.com/kong/kubernetes-telemetry v0.1.4/go.mod h1:z3yB5naZjUmQCFjzD3hsJ9PVYar7BgPJFKzskUuOejU= github.com/kong/kubernetes-testing-framework v0.47.1 h1:BE2mQLC0Zj/NC5Y8B1Nm5VZymmrdVfu7cfwVKSobWtg= From ceda2db9fb9f6fbb6527da209ffee071dd9abb8f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 Jul 2024 13:48:50 +0200 Subject: [PATCH 4/4] chore(deps): bump docker/build-push-action from 6.2.0 to 6.3.0 (#396) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v6.2.0...v6.3.0) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/__build-workflow.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/__build-workflow.yaml b/.github/workflows/__build-workflow.yaml index 77c7050ff..5d9489aca 100644 --- a/.github/workflows/__build-workflow.yaml +++ b/.github/workflows/__build-workflow.yaml @@ -207,7 +207,7 @@ jobs: - name: Build image id: build - uses: docker/build-push-action@v6.2.0 + uses: docker/build-push-action@v6.3.0 with: context: . build-contexts: ${{ inputs.additional-build-contexts }}