From d1b4928472f7dfd4b302e553db37acedec41c1b2 Mon Sep 17 00:00:00 2001 From: Gerrit Date: Fri, 30 Aug 2024 12:00:06 +0200 Subject: [PATCH] Revendor g/g v1.89. (#412) --- .github/workflows/test.yaml | 4 +- Dockerfile | 2 +- example/controller-registration.yaml | 2 +- go.mod | 10 +- go.sum | 12 +- pkg/webhook/controlplane/ensurer.go | 165 ----------------------- pkg/webhook/controlplane/ensurer_test.go | 83 ------------ pkg/webhook/shoot/mutator.go | 2 +- 8 files changed, 16 insertions(+), 264 deletions(-) delete mode 100644 pkg/webhook/controlplane/ensurer_test.go diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5b65624b3..652602142 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -20,10 +20,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Set up Go 1.22 + - name: Setup Go uses: actions/setup-go@v5 with: - go-version: '1.22.x' + go-version-file: 'go.mod' - name: Check (lint) and Test run: | diff --git a/Dockerfile b/Dockerfile index 2f2b8dda4..64aca7432 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ WORKDIR /go/src/github.com/metal-stack/gardener-extension-provider-metal COPY . . RUN make install -FROM alpine:3.19 +FROM alpine:3.20 WORKDIR / COPY charts /charts COPY --from=builder /go/bin/gardener-extension-metal-hyper /gardener-extension-metal-hyper diff --git a/example/controller-registration.yaml b/example/controller-registration.yaml index bf885b3bc..a2a84ed1b 100644 --- a/example/controller-registration.yaml +++ b/example/controller-registration.yaml @@ -8,7 +8,7 @@ providerConfig: chart: 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 values: image: - tag: v0.24.3 + tag: v0.24.4 --- apiVersion: core.gardener.cloud/v1beta1 kind: ControllerRegistration diff --git a/go.mod b/go.mod index 042dacc58..828eda6bd 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module github.com/metal-stack/gardener-extension-provider-metal -go 1.22 +go 1.22.0 require ( github.com/Masterminds/semver/v3 v3.2.1 github.com/ahmetb/gen-crd-api-reference-docs v0.3.0 github.com/coreos/go-systemd/v22 v22.5.0 github.com/gardener/etcd-druid v0.22.0 - github.com/gardener/gardener v1.87.4 + github.com/gardener/gardener v1.89.4 github.com/gardener/gardener-extension-networking-calico v1.36.1 github.com/gardener/gardener-extension-networking-cilium v1.26.0 github.com/gardener/machine-controller-manager v0.50.1 @@ -30,7 +30,7 @@ require ( k8s.io/apimachinery v0.29.3 k8s.io/autoscaler/vertical-pod-autoscaler v1.0.0 k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible - k8s.io/code-generator v0.28.3 + k8s.io/code-generator v0.28.4 k8s.io/component-base v0.29.3 k8s.io/kubelet v0.28.3 sigs.k8s.io/controller-runtime v0.16.6 @@ -44,7 +44,6 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect - github.com/bronze1man/yaml2json v0.0.0-20211227013850-8972abeaea25 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/coreos/go-oidc/v3 v3.10.0 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect @@ -116,6 +115,7 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.71.0 // indirect github.com/prometheus/client_golang v1.19.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.54.0 // indirect @@ -157,7 +157,7 @@ require ( helm.sh/helm/v3 v3.11.1 // indirect istio.io/api v1.19.2-0.20231011000955-f3015ebb5bd4 // indirect istio.io/client-go v1.19.3 // indirect - k8s.io/apiserver v0.28.9 // indirect + k8s.io/apiserver v0.29.2 // indirect k8s.io/cluster-bootstrap v0.28.3 // indirect k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect k8s.io/helm v2.17.0+incompatible // indirect diff --git a/go.sum b/go.sum index a04da9b33..071f7909f 100644 --- a/go.sum +++ b/go.sum @@ -642,8 +642,6 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bronze1man/yaml2json v0.0.0-20211227013850-8972abeaea25 h1:GMDsCxuwEJ1tYY5anXDexdmQ1BDVzyU5BDU7N3PQWl4= -github.com/bronze1man/yaml2json v0.0.0-20211227013850-8972abeaea25/go.mod h1:mVTg4vqWRIHEJK5QnZhSXBUP8GmI7ArXGq182zSJbxM= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -727,8 +725,8 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gardener/etcd-druid v0.22.0 h1:DVe+Zjrb93r9vI1uUiCTMHBffIUoMAKhNzFZNC6hsQ8= github.com/gardener/etcd-druid v0.22.0/go.mod h1:FROhfVKyWBo4krlPe3R6FIhJRmOmijEWBdEeUP0CJjE= -github.com/gardener/gardener v1.87.4 h1:pOWHDirMd04dLGd7I8fcv8UAZwrW6uFV8fJJfiQN0E0= -github.com/gardener/gardener v1.87.4/go.mod h1:MNqPkSxLD2w+HeIP56JnZbZtaqPnDb4hSRl3JWEZTWU= +github.com/gardener/gardener v1.89.4 h1:m2K/lLL25wLta6mAFQ25/ngR+KYeMICF6MWLgrwEtu0= +github.com/gardener/gardener v1.89.4/go.mod h1:9XpmG8MvZ2p36J7200qaGcqaFQ9vaP2ogZVkU6VgNGI= github.com/gardener/gardener-extension-networking-calico v1.36.1 h1:WyAdADamhxQgcCBrQOZAeSM/wm/urmmwBaqd2YLc7MY= github.com/gardener/gardener-extension-networking-calico v1.36.1/go.mod h1:GFmktIEzLxrOV6uNrCREeKjIkwYK6TlVOEPP7dffjAM= github.com/gardener/gardener-extension-networking-cilium v1.26.0 h1:hghmB83FfCzUqFX/q9lxh/u5CsqjEKf6ANQdDGYFcXk= @@ -1125,6 +1123,8 @@ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qR github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.71.0 h1:et+XkusxWLz+XNqZiyMom9tv9ACvNAUyLXti2LTiV7o= +github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.71.0/go.mod h1:3RiUkFmR9kmPZi9r/8a5jw0a9yg+LMmr7qa0wjqvSiI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= @@ -2016,8 +2016,8 @@ k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2E k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc= k8s.io/apimachinery v0.28.3 h1:B1wYx8txOaCQG0HmYF6nbpU8dg6HvA06x5tEffvOe7A= k8s.io/apimachinery v0.28.3/go.mod h1:uQTKmIqs+rAYaq+DFaoD2X7pcjLOqbQX2AOiO0nIpb8= -k8s.io/apiserver v0.28.9 h1:koPXvgSXRBDxKJQjJGdZNgPsT9lQv6scJJFipd1m86E= -k8s.io/apiserver v0.28.9/go.mod h1:D51I37WBZojJhmLcjNVE4GSVrjiUHP+yq+N5KvKn2wY= +k8s.io/apiserver v0.29.2 h1:+Z9S0dSNr+CjnVXQePG8TcBWHr3Q7BmAr7NraHvsMiQ= +k8s.io/apiserver v0.29.2/go.mod h1:B0LieKVoyU7ykQvPFm7XSdIHaCHSzCzQWPFa5bqbeMQ= k8s.io/autoscaler/vertical-pod-autoscaler v0.9.0/go.mod h1:PwWTGRRCxefhAezrDbG/tRYSAW7etHjjMPAr8fXKVAA= k8s.io/autoscaler/vertical-pod-autoscaler v1.0.0 h1:y0TgWoHaeYEv3L1MfLC+D2WVxyN1fGr6axURHXq+wHE= k8s.io/autoscaler/vertical-pod-autoscaler v1.0.0/go.mod h1:w6/LjLR3DPQd57vlgvgbpzpuJKsCiily0+OzQI+nyfI= diff --git a/pkg/webhook/controlplane/ensurer.go b/pkg/webhook/controlplane/ensurer.go index b19738f18..5c8350fa6 100644 --- a/pkg/webhook/controlplane/ensurer.go +++ b/pkg/webhook/controlplane/ensurer.go @@ -2,9 +2,6 @@ package controlplane import ( "context" - "encoding/base64" - "fmt" - "strings" "github.com/Masterminds/semver/v3" "github.com/coreos/go-systemd/v22/unit" @@ -25,7 +22,6 @@ import ( "github.com/metal-stack/gardener-extension-provider-metal/pkg/metal" "github.com/metal-stack/gardener-extension-provider-metal/pkg/apis/config" - metalapi "github.com/metal-stack/gardener-extension-provider-metal/pkg/apis/metal" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -180,167 +176,6 @@ func (e *ensurer) EnsureVPNSeedServerDeployment(ctx context.Context, gctx gconte return nil } -// TODO: -// - Write configuration also into shoot.spec.worker[n].image.providerconfig, but then the worker rolls ? -// - calculate hash over containerd/config.toml and add to containerd.service Unit to trigger restart on changes - -// EnsureAdditionalFiles adds additional files to override DNS and NTP configurations from the NetworkIsolation. -func (e *ensurer) EnsureAdditionalFiles(ctx context.Context, gctx gcontext.GardenContext, new, old *[]extensionsv1alpha1.File) error { - cluster, err := gctx.GetCluster(ctx) - if err != nil { - return err - } - - controlPlaneConfig, err := helper.ControlPlaneConfigFromClusterShootSpec(cluster) - if err != nil { - return err - } - - networkAccessType := metalapi.NetworkAccessBaseline - if controlPlaneConfig.NetworkAccessType != nil { - networkAccessType = *controlPlaneConfig.NetworkAccessType - } - - if networkAccessType == metalapi.NetworkAccessBaseline { - return nil - } - - infra := &extensionsv1alpha1.Infrastructure{} - if err := e.client.Get(ctx, kutil.Key(cluster.ObjectMeta.Name, cluster.Shoot.Name), infra); err != nil { - logger.Error(err, "could not read Infrastructure for cluster", "cluster name", cluster.ObjectMeta.Name) - return err - } - - infraConf, err := helper.InfrastructureConfigFromInfrastructure(infra) - if err != nil { - return err - } - - cloudProfileConfig, err := helper.CloudProfileConfigFromCluster(cluster) - if err != nil { - return err - } - - _, partition, err := helper.FindMetalControlPlane(cloudProfileConfig, infraConf.PartitionID) - if err != nil { - return err - } - - if partition.NetworkIsolation == nil { - return nil - } - - if networkAccessType != metalapi.NetworkAccessBaseline { - dnsFiles := additionalDNSConfFiles(partition.NetworkIsolation.DNSServers) - for _, f := range dnsFiles { - *new = extensionswebhook.EnsureFileWithPath(*new, f) - } - - ntpFiles := additionalNTPConfFiles(partition.NetworkIsolation.NTPServers) - for _, f := range ntpFiles { - *new = extensionswebhook.EnsureFileWithPath(*new, f) - } - - containerdFiles := additionalContainterdConfigFiles(partition.NetworkIsolation.RegistryMirrors) - for _, f := range containerdFiles { - *new = extensionswebhook.EnsureFileWithPath(*new, f) - } - } - - return nil -} - -func additionalDNSConfFiles(dnsServers []string) []extensionsv1alpha1.File { - resolveDNS := strings.Join(dnsServers, " ") - systemdResolvedConfd := fmt.Sprintf(`# Generated by gardener-extension-provider-metal - -[Resolve] -DNS=%s -Domain=~. - -`, resolveDNS) - resolvConf := "# Generated by gardener-extension-provider-metal\n" - for _, ip := range dnsServers { - resolvConf += fmt.Sprintf("nameserver %s\n", ip) - } - - return []extensionsv1alpha1.File{ - { - Path: "/etc/systemd/resolved.conf.d/dns.conf", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.B64FileCodecID), - Data: base64.StdEncoding.EncodeToString([]byte(systemdResolvedConfd)), - }, - }, - }, - { - Path: "/etc/resolv.conf", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.B64FileCodecID), - Data: base64.StdEncoding.EncodeToString([]byte(resolvConf)), - }, - }, - }, - } -} - -func additionalNTPConfFiles(ntpServers []string) []extensionsv1alpha1.File { - ntps := strings.Join(ntpServers, " ") - renderedContent := fmt.Sprintf(`# Generated by gardener-extension-provider-metal - -[Time] -NTP=%s -`, ntps) - - return []extensionsv1alpha1.File{ - { - Path: "/etc/systemd/timesyncd.conf", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.B64FileCodecID), - Data: base64.StdEncoding.EncodeToString([]byte(renderedContent)), - }, - }, - }, - } -} - -func additionalContainterdConfigFiles(mirrors []metalapi.RegistryMirror) []extensionsv1alpha1.File { - if len(mirrors) == 0 { - return nil - } - // TODO: other parties might also want to write to the containerd config.toml. - // For this case we might want to unmarshal any existing new file to add and patch it with our changes. - renderedContent := `# Generated by gardener-extension-provider-metal -imports = ["/etc/containerd/conf.d/*.toml"] -version = 2 - -[plugins."io.containerd.grpc.v1.cri".registry] - [plugins."io.containerd.grpc.v1.cri".registry.mirrors] -` - for _, m := range mirrors { - for _, of := range m.MirrorOf { - renderedContent += fmt.Sprintf(` [plugins."io.containerd.grpc.v1.cri".registry.mirrors.%q] - endpoint = [%q] -`, of, m.Endpoint) - } - } - - return []extensionsv1alpha1.File{ - { - Path: "/etc/containerd/config.toml", - Content: extensionsv1alpha1.FileContent{ - Inline: &extensionsv1alpha1.FileContentInline{ - Encoding: string(extensionsv1alpha1.B64FileCodecID), - Data: base64.StdEncoding.EncodeToString([]byte(renderedContent)), - }, - }, - }, - } -} - // ImageVector is exposed for testing. var ImageVector = imagevector.ImageVector() diff --git a/pkg/webhook/controlplane/ensurer_test.go b/pkg/webhook/controlplane/ensurer_test.go deleted file mode 100644 index eb99ef92f..000000000 --- a/pkg/webhook/controlplane/ensurer_test.go +++ /dev/null @@ -1,83 +0,0 @@ -package controlplane - -import ( - "encoding/base64" - "testing" - - "github.com/google/go-cmp/cmp" - metalapi "github.com/metal-stack/gardener-extension-provider-metal/pkg/apis/metal" - "github.com/stretchr/testify/require" -) - -func TestAdditionalContainerdConfigFiles(t *testing.T) { - tests := []struct { - name string - endpoint string - mirrors []metalapi.RegistryMirror - want []struct { - path string - content string - } - }{ - { - "network access forbidden overrides", - "https://r.metal-stack.dev", - []metalapi.RegistryMirror{ - {Name: "lighbits", Endpoint: "https://r.metal-stack.dev", MirrorOf: []string{"docker.lightbitslabs.com"}}, - {Name: "quay", Endpoint: "https://r.metal-stack.dev", MirrorOf: []string{"quay.io"}}, - {Name: "eu.gcr.io", Endpoint: "https://r.metal-stack.dev", MirrorOf: []string{"eu.gcr.io"}}, - {Name: "ghcr.io", Endpoint: "https://r.metal-stack.dev", MirrorOf: []string{"ghcr.io"}}, - {Name: "k8s", Endpoint: "https://r.metal-stack.dev", MirrorOf: []string{"registry.k8s.io"}}, - {Name: "metal-stack", Endpoint: "https://r.metal-stack.dev", MirrorOf: []string{"r.metal-stack.io"}}, - }, - []struct { - path string - content string - }{ - { - - "/etc/containerd/config.toml", - `# Generated by gardener-extension-provider-metal -imports = ["/etc/containerd/conf.d/*.toml"] -version = 2 - -[plugins."io.containerd.grpc.v1.cri".registry] - [plugins."io.containerd.grpc.v1.cri".registry.mirrors] - [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.lightbitslabs.com"] - endpoint = ["https://r.metal-stack.dev"] - [plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"] - endpoint = ["https://r.metal-stack.dev"] - [plugins."io.containerd.grpc.v1.cri".registry.mirrors."eu.gcr.io"] - endpoint = ["https://r.metal-stack.dev"] - [plugins."io.containerd.grpc.v1.cri".registry.mirrors."ghcr.io"] - endpoint = ["https://r.metal-stack.dev"] - [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"] - endpoint = ["https://r.metal-stack.dev"] - [plugins."io.containerd.grpc.v1.cri".registry.mirrors."r.metal-stack.io"] - endpoint = ["https://r.metal-stack.dev"] -`}, - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := additionalContainterdConfigFiles(tt.mirrors) - if len(got) != len(tt.want) { - t.Errorf("different amount of files generated, want %d, got %d", len(tt.want), len(got)) - } - for i, w := range tt.want { - g := got[i] - if diff := cmp.Diff(w.path, g.Path); diff != "" { - t.Errorf("path diff (+got -want):\n %s", diff) - } - gotData, err := base64.StdEncoding.DecodeString(g.Content.Inline.Data) - require.NoError(t, err) - gotContent := string(gotData) - if diff := cmp.Diff(w.content, gotContent); diff != "" { - t.Errorf("diff (+got -want):\n %s", diff) - } - } - }) - } -} diff --git a/pkg/webhook/shoot/mutator.go b/pkg/webhook/shoot/mutator.go index e014388c0..51b28dd33 100644 --- a/pkg/webhook/shoot/mutator.go +++ b/pkg/webhook/shoot/mutator.go @@ -13,10 +13,10 @@ import ( extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1" resourcesv1alpha1 "github.com/gardener/gardener/pkg/apis/resources/v1alpha1" "github.com/gardener/gardener/pkg/component/extensions/operatingsystemconfig/downloader" + "github.com/metal-stack/gardener-extension-provider-metal/pkg/apis/metal/helper" kutil "github.com/gardener/gardener/pkg/utils/kubernetes" - "github.com/metal-stack/gardener-extension-provider-metal/pkg/apis/metal/helper" metalv1alpha1 "github.com/metal-stack/gardener-extension-provider-metal/pkg/apis/metal/v1alpha1" extensionscontroller "github.com/gardener/gardener/extensions/pkg/controller"