From 8273d7c7b431ca4ea2ffd310074440b7ebe8ec0b Mon Sep 17 00:00:00 2001 From: Dario Tranchitella Date: Sat, 27 Aug 2022 11:17:36 +0200 Subject: [PATCH] chore(golangci-lint): updating to v1.49.0 --- .github/workflows/ci.yaml | 2 +- .golangci.yml | 4 +++ api/v1alpha1/groupversion_info.go | 5 +-- controllers/resources.go | 32 +++++++++---------- controllers/storage.go | 2 +- controllers/tenantcontrolplane_controller.go | 2 +- e2e/suite_test.go | 1 - e2e/tenant_control_plane_ready_test.go | 1 - e2e/utils_test.go | 4 +-- e2e/worker_kubeadm_join_test.go | 4 +-- e2e/worker_tcp_change_port_test.go | 3 +- internal/builders/controlplane/deployment.go | 5 ++- internal/config/config.go | 1 + internal/crypto/crypto.go | 14 ++++---- internal/kubeadm/addon.go | 5 +++ internal/kubeadm/certificates.go | 5 ++- internal/kubeadm/kubeconfig.go | 7 ++-- .../api_server_kubelet_client_certificate.go | 1 + internal/resources/k8s_deployment_resource.go | 6 ++-- internal/resources/konnectivity/agent.go | 6 ++-- .../cluster_role_binding_resource.go | 4 +-- .../konnectivity/deployment_resource.go | 26 ++++----------- .../egress_selector_configuration_resource.go | 2 +- .../konnectivity/service_account_resource.go | 6 ++-- .../konnectivity/service_resource.go | 2 +- internal/resources/kubeconfig.go | 1 + internal/utilities/args.go | 2 +- .../utilities/create_or_update_conflict.go | 7 ++-- internal/utilities/tenant_client.go | 1 - internal/utilities/utilities.go | 1 - 30 files changed, 81 insertions(+), 81 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 410af80..03f7129 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -18,7 +18,7 @@ jobs: - name: Run golangci-lint uses: golangci/golangci-lint-action@v2.3.0 with: - version: v1.45.2 + version: v1.49.0 only-new-issues: false args: --timeout 5m --config .golangci.yml diff: diff --git a/.golangci.yml b/.golangci.yml index 4ae47a9..1ca9c19 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -27,6 +27,10 @@ linters: - exhaustivestruct - wsl - exhaustive + - nosprintfhostport + - nonamedreturns + - interfacebloat + - exhaustruct - lll - gosec - gomoddirectives diff --git a/api/v1alpha1/groupversion_info.go b/api/v1alpha1/groupversion_info.go index a20981d..5fcb860 100644 --- a/api/v1alpha1/groupversion_info.go +++ b/api/v1alpha1/groupversion_info.go @@ -2,8 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 // Package v1alpha1 contains API Schema definitions for the kamaji v1alpha1 API group -//+kubebuilder:object:generate=true -//+groupName=kamaji.clastix.io +// +kubebuilder:object:generate=true +// +groupName=kamaji.clastix.io +//nolint package v1alpha1 import ( diff --git a/controllers/resources.go b/controllers/resources.go index 37b97a9..55763fe 100644 --- a/controllers/resources.go +++ b/controllers/resources.go @@ -45,27 +45,27 @@ func GetResources(config GroupResourceBuilderConfiguration) []resources.Resource // GetDeletableResources returns a list of resources that have to be deleted when tenant control planes are deleted // Currently there is only a default approach // TODO: the idea of this function is to become a factory to return the group of deleteable resources according to the given configuration. -func GetDeletableResources(config GroupDeleteableResourceBuilderConfiguration, dataStore kamajiv1alpha1.DataStore) []resources.DeleteableResource { - return getDefaultDeleteableResources(config, dataStore) +func GetDeletableResources(config GroupDeleteableResourceBuilderConfiguration) []resources.DeleteableResource { + return getDefaultDeleteableResources(config) } func getDefaultResources(config GroupResourceBuilderConfiguration) []resources.Resource { - resources := append(getUpgradeResources(config.client, config.tenantControlPlane), getKubernetesServiceResources(config.client, config.tenantControlPlane)...) + resources := append(getUpgradeResources(config.client), getKubernetesServiceResources(config.client)...) resources = append(resources, getKubeadmConfigResources(config.client, getTmpDirectory(config.tcpReconcilerConfig.TmpBaseDirectory, config.tenantControlPlane), config.DataStore)...) resources = append(resources, getKubernetesCertificatesResources(config.client, config.log, config.tcpReconcilerConfig, config.tenantControlPlane)...) resources = append(resources, getKubeconfigResources(config.client, config.log, config.tcpReconcilerConfig, config.tenantControlPlane)...) resources = append(resources, getKubernetesStorageResources(config.client, config.Connection, config.DataStore)...) - resources = append(resources, getInternalKonnectivityResources(config.client, config.log, config.tcpReconcilerConfig, config.tenantControlPlane)...) + resources = append(resources, getInternalKonnectivityResources(config.client, config.log)...) resources = append(resources, getKubernetesDeploymentResources(config.client, config.tcpReconcilerConfig, config.DataStore)...) - resources = append(resources, getKubernetesIngressResources(config.client, config.tenantControlPlane)...) - resources = append(resources, getKubeadmPhaseResources(config.client, config.log, config.tenantControlPlane)...) - resources = append(resources, getKubeadmAddonResources(config.client, config.log, config.tenantControlPlane)...) - resources = append(resources, getExternalKonnectivityResources(config.client, config.log, config.tcpReconcilerConfig, config.tenantControlPlane)...) + resources = append(resources, getKubernetesIngressResources(config.client)...) + resources = append(resources, getKubeadmPhaseResources(config.client, config.log)...) + resources = append(resources, getKubeadmAddonResources(config.client, config.log)...) + resources = append(resources, getExternalKonnectivityResources(config.client)...) return resources } -func getDefaultDeleteableResources(config GroupDeleteableResourceBuilderConfiguration, dataStore kamajiv1alpha1.DataStore) []resources.DeleteableResource { +func getDefaultDeleteableResources(config GroupDeleteableResourceBuilderConfiguration) []resources.DeleteableResource { return []resources.DeleteableResource{ &ds.Setup{ Client: config.client, @@ -74,7 +74,7 @@ func getDefaultDeleteableResources(config GroupDeleteableResourceBuilderConfigur } } -func getUpgradeResources(c client.Client, tenantControlPlane kamajiv1alpha1.TenantControlPlane) []resources.Resource { +func getUpgradeResources(c client.Client) []resources.Resource { return []resources.Resource{ &resources.KubernetesUpgrade{ Client: c, @@ -82,7 +82,7 @@ func getUpgradeResources(c client.Client, tenantControlPlane kamajiv1alpha1.Tena } } -func getKubernetesServiceResources(c client.Client, tenantControlPlane kamajiv1alpha1.TenantControlPlane) []resources.Resource { +func getKubernetesServiceResources(c client.Client) []resources.Resource { return []resources.Resource{ &resources.KubernetesServiceResource{ Client: c, @@ -199,7 +199,7 @@ func getKubernetesDeploymentResources(c client.Client, tcpReconcilerConfig Tenan } } -func getKubernetesIngressResources(c client.Client, tenantControlPlane kamajiv1alpha1.TenantControlPlane) []resources.Resource { +func getKubernetesIngressResources(c client.Client) []resources.Resource { return []resources.Resource{ &resources.KubernetesIngressResource{ Client: c, @@ -207,7 +207,7 @@ func getKubernetesIngressResources(c client.Client, tenantControlPlane kamajiv1a } } -func getKubeadmPhaseResources(c client.Client, log logr.Logger, tenantControlPlane kamajiv1alpha1.TenantControlPlane) []resources.Resource { +func getKubeadmPhaseResources(c client.Client, log logr.Logger) []resources.Resource { return []resources.Resource{ &resources.KubeadmPhase{ Name: "upload-config-kubeadm", @@ -230,7 +230,7 @@ func getKubeadmPhaseResources(c client.Client, log logr.Logger, tenantControlPla } } -func getKubeadmAddonResources(c client.Client, log logr.Logger, tenantControlPlane kamajiv1alpha1.TenantControlPlane) []resources.Resource { +func getKubeadmAddonResources(c client.Client, log logr.Logger) []resources.Resource { return []resources.Resource{ &resources.KubeadmAddonResource{ Name: "coredns", @@ -247,7 +247,7 @@ func getKubeadmAddonResources(c client.Client, log logr.Logger, tenantControlPla } } -func getExternalKonnectivityResources(c client.Client, log logr.Logger, tcpReconcilerConfig TenantControlPlaneReconcilerConfig, tenantControlPlane kamajiv1alpha1.TenantControlPlane) []resources.Resource { +func getExternalKonnectivityResources(c client.Client) []resources.Resource { return []resources.Resource{ &konnectivity.ServiceAccountResource{ Client: c, @@ -272,7 +272,7 @@ func getExternalKonnectivityResources(c client.Client, log logr.Logger, tcpRecon } } -func getInternalKonnectivityResources(c client.Client, log logr.Logger, tcpReconcilerConfig TenantControlPlaneReconcilerConfig, tenantControlPlane kamajiv1alpha1.TenantControlPlane) []resources.Resource { +func getInternalKonnectivityResources(c client.Client, log logr.Logger) []resources.Resource { return []resources.Resource{ &konnectivity.EgressSelectorConfigurationResource{ Client: c, diff --git a/controllers/storage.go b/controllers/storage.go index b2794f2..21f946b 100644 --- a/controllers/storage.go +++ b/controllers/storage.go @@ -94,7 +94,7 @@ func (r *TenantControlPlaneReconciler) getStorageConnection(ctx context.Context, return datastore.NewMySQLConnection(cc) case kamajiv1alpha1.KinePostgreSQLDriver: cc.TLSConfig.ServerName = cc.Endpoints[0].Host - + //nolint:contextcheck return datastore.NewPostgreSQLConnection(cc) case kamajiv1alpha1.EtcdDriver: return datastore.NewETCDConnection(cc) diff --git a/controllers/tenantcontrolplane_controller.go b/controllers/tenantcontrolplane_controller.go index 4c87935..a1d910f 100644 --- a/controllers/tenantcontrolplane_controller.go +++ b/controllers/tenantcontrolplane_controller.go @@ -96,7 +96,7 @@ func (r *TenantControlPlaneReconciler) Reconcile(ctx context.Context, req ctrl.R tenantControlPlane: *tenantControlPlane, connection: dsConnection, } - registeredDeletableResources := GetDeletableResources(groupDeleteableResourceBuilderConfiguration, ds) + registeredDeletableResources := GetDeletableResources(groupDeleteableResourceBuilderConfiguration) for _, resource := range registeredDeletableResources { if err = resources.HandleDeletion(ctx, resource, tenantControlPlane); err != nil { diff --git a/e2e/suite_test.go b/e2e/suite_test.go index 3ef52e5..1433295 100644 --- a/e2e/suite_test.go +++ b/e2e/suite_test.go @@ -55,7 +55,6 @@ var _ = BeforeSuite(func() { Expect(err).NotTo(HaveOccurred()) //+kubebuilder:scaffold:scheme - k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) Expect(err).NotTo(HaveOccurred()) Expect(k8sClient).NotTo(BeNil()) diff --git a/e2e/tenant_control_plane_ready_test.go b/e2e/tenant_control_plane_ready_test.go index 7858627..d6dc7fb 100644 --- a/e2e/tenant_control_plane_ready_test.go +++ b/e2e/tenant_control_plane_ready_test.go @@ -18,7 +18,6 @@ import ( var _ = Describe("Deploy a TenantControlPlane resource", func() { // Fill TenantControlPlane object tcp := kamajiv1alpha1.TenantControlPlane{ - TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: "tcp-clusterip", Namespace: "default", diff --git a/e2e/utils_test.go b/e2e/utils_test.go index 77c045f..9787b30 100644 --- a/e2e/utils_test.go +++ b/e2e/utils_test.go @@ -7,7 +7,7 @@ import ( "bytes" "context" "fmt" - "io/ioutil" + "io" "os/exec" . "github.com/onsi/ginkgo" @@ -96,7 +96,7 @@ func PrintKamajiLogs() { defer podLogs.Close() - podBytes, err := ioutil.ReadAll(podLogs) + podBytes, err := io.ReadAll(podLogs) Expect(err).ToNot(HaveOccurred()) _, _ = fmt.Fprintln(GinkgoWriter, "DEBUG: retrieving Kamaji Pod logs") diff --git a/e2e/worker_kubeadm_join_test.go b/e2e/worker_kubeadm_join_test.go index 0a62408..98182fa 100644 --- a/e2e/worker_kubeadm_join_test.go +++ b/e2e/worker_kubeadm_join_test.go @@ -7,7 +7,6 @@ import ( "bytes" "context" "fmt" - "io/ioutil" "os" "strings" "time" @@ -37,7 +36,6 @@ var _ = Describe("starting a kind worker with kubeadm", func() { JustBeforeEach(func() { tcp = kamajiv1alpha1.TenantControlPlane{ - TypeMeta: metav1.TypeMeta{}, ObjectMeta: metav1.ObjectMeta{ Name: "worker-nodes-join", Namespace: "default", @@ -84,7 +82,7 @@ var _ = Describe("starting a kind worker with kubeadm", func() { }) Expect(err).ToNot(HaveOccurred()) - kubeconfigFile, err = ioutil.TempFile("", "kamaji") + kubeconfigFile, err = os.CreateTemp("", "kamaji") Expect(err).ToNot(HaveOccurred()) }) diff --git a/e2e/worker_tcp_change_port_test.go b/e2e/worker_tcp_change_port_test.go index 5ff7313..6754207 100644 --- a/e2e/worker_tcp_change_port_test.go +++ b/e2e/worker_tcp_change_port_test.go @@ -6,7 +6,6 @@ package e2e import ( "context" "fmt" - "io/ioutil" "os" "time" @@ -66,7 +65,7 @@ var _ = Describe("validating kubeconfig", func() { var err error - kubeconfigFile, err = ioutil.TempFile("", "kamaji") + kubeconfigFile, err = os.CreateTemp("", "kamaji") Expect(err).ToNot(HaveOccurred()) }) diff --git a/internal/builders/controlplane/deployment.go b/internal/builders/controlplane/deployment.go index ea52c40..d7cdfee 100644 --- a/internal/builders/controlplane/deployment.go +++ b/internal/builders/controlplane/deployment.go @@ -262,7 +262,7 @@ func (d *Deployment) BuildScheduler(podSpec *corev1.PodSpec, tenantControlPlane args["--authorization-kubeconfig"] = kubeconfig args["--bind-address"] = "0.0.0.0" args["--kubeconfig"] = kubeconfig - args["--leader-elect"] = "true" // nolint:goconst + args["--leader-elect"] = "true" //nolint:goconst podSpec.Containers[schedulerIndex].Name = "kube-scheduler" podSpec.Containers[schedulerIndex].Image = fmt.Sprintf("k8s.gcr.io/kube-scheduler:%s", tenantControlPlane.Spec.Kubernetes.Version) @@ -289,6 +289,7 @@ func (d *Deployment) BuildScheduler(podSpec *corev1.PodSpec, tenantControlPlane SuccessThreshold: 1, FailureThreshold: 3, } + podSpec.Containers[schedulerIndex].StartupProbe = &corev1.Probe{ ProbeHandler: corev1.ProbeHandler{ HTTPGet: &corev1.HTTPGetAction{ @@ -383,6 +384,7 @@ func (d *Deployment) buildControllerManager(podSpec *corev1.PodSpec, tenantContr MountPath: "/usr/local/share/ca-certificates", }, } + podSpec.Containers[controllerManagerIndex].LivenessProbe = &corev1.Probe{ ProbeHandler: corev1.ProbeHandler{ HTTPGet: &corev1.HTTPGetAction{ @@ -397,6 +399,7 @@ func (d *Deployment) buildControllerManager(podSpec *corev1.PodSpec, tenantContr SuccessThreshold: 1, FailureThreshold: 3, } + podSpec.Containers[controllerManagerIndex].StartupProbe = &corev1.Probe{ ProbeHandler: corev1.ProbeHandler{ HTTPGet: &corev1.HTTPGetAction{ diff --git a/internal/config/config.go b/internal/config/config.go index ca41839..122f10f 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -41,6 +41,7 @@ func InitConfig() (*viper.Viper, error) { flag.String("datastore", defaultDataStore, "The default DataStore that should be used by Kamaji to setup the required storage") // Setup zap configuration + opts := zap.Options{ Development: true, } diff --git a/internal/crypto/crypto.go b/internal/crypto/crypto.go index dff53cf..1320f48 100644 --- a/internal/crypto/crypto.go +++ b/internal/crypto/crypto.go @@ -60,7 +60,7 @@ func GetPublickKey(pubKey []byte) (*rsa.PublicKey, error) { return nil, err } - return pub.(*rsa.PublicKey), nil // nolint:forcetypeassert + return pub.(*rsa.PublicKey), nil //nolint:forcetypeassert } func GenerateCertificateKeyPairBytes(template *x509.Certificate, bitSize int, caCert *x509.Certificate, caKey *rsa.PrivateKey) (*bytes.Buffer, *bytes.Buffer, error) { @@ -76,16 +76,18 @@ func GenerateCertificateKeyPairBytes(template *x509.Certificate, bitSize int, ca certPEM := &bytes.Buffer{} if err := pem.Encode(certPEM, &pem.Block{ - Type: "CERTIFICATE", - Bytes: certBytes, + Type: "CERTIFICATE", + Headers: nil, + Bytes: certBytes, }); err != nil { return nil, nil, err } certPrivKeyPEM := &bytes.Buffer{} if err := pem.Encode(certPrivKeyPEM, &pem.Block{ - Type: "RSA PRIVATE KEY", - Bytes: x509.MarshalPKCS1PrivateKey(certPrivKey), + Type: "RSA PRIVATE KEY", + Headers: nil, + Bytes: x509.MarshalPKCS1PrivateKey(certPrivKey), }); err != nil { return nil, nil, err } @@ -132,7 +134,7 @@ func checkCertificateValidity(cert x509.Certificate) bool { } func checkCertificateKeyPair(cert x509.Certificate, privKey rsa.PrivateKey) bool { - return checkPublicKeys(*cert.PublicKey.(*rsa.PublicKey), privKey.PublicKey) // nolint:forcetypeassert + return checkPublicKeys(*cert.PublicKey.(*rsa.PublicKey), privKey.PublicKey) //nolint:forcetypeassert } func checkPublicKeys(a rsa.PublicKey, b rsa.PublicKey) bool { diff --git a/internal/kubeadm/addon.go b/internal/kubeadm/addon.go index 6209146..94a9951 100644 --- a/internal/kubeadm/addon.go +++ b/internal/kubeadm/addon.go @@ -80,6 +80,7 @@ func removeCoreDNSDeployment(ctx context.Context, client kubernetes.Interface) e func removeCoreDNSConfigMap(ctx context.Context, client kubernetes.Interface) error { name, _ := getCoreDNSConfigMapName(ctx) + opts := metav1.DeleteOptions{} return client.CoreV1().ConfigMaps(kubeSystemNamespace).Delete(ctx, name, opts) @@ -152,6 +153,7 @@ func RemoveKubeProxy(ctx context.Context, client kubernetes.Interface) error { func removeKubeProxyDaemonSet(ctx context.Context, client kubernetes.Interface) error { name, _ := getKubeProxyDaemonSetName(ctx) + opts := metav1.DeleteOptions{} return client.AppsV1().DaemonSets(kubeSystemNamespace).Delete(ctx, name, opts) @@ -159,6 +161,7 @@ func removeKubeProxyDaemonSet(ctx context.Context, client kubernetes.Interface) func removeKubeProxyConfigMap(ctx context.Context, client kubernetes.Interface) error { name, _ := getKubeProxyConfigMapName(ctx) + opts := metav1.DeleteOptions{} return client.CoreV1().ConfigMaps(kubeSystemNamespace).Delete(ctx, name, opts) @@ -167,6 +170,7 @@ func removeKubeProxyConfigMap(ctx context.Context, client kubernetes.Interface) func removeKubeProxyRBAC(ctx context.Context, client kubernetes.Interface) error { // TODO: Currently, kube-proxy is installed using kubeadm phases, therefore, name is the same. name, _ := getKubeProxyRBACName(ctx) + opts := metav1.DeleteOptions{} var result error @@ -361,6 +365,7 @@ func createKubeProxyAddon(client kubernetes.Interface) error { func getKubeproxyConfigmapContent(config *Configuration) ([]byte, error) { zeroDuration := metav1.Duration{Duration: 0} oneSecondDuration := metav1.Duration{Duration: time.Second} + kubeProxyConfiguration := kubeproxyconfig.KubeProxyConfiguration{ TypeMeta: metav1.TypeMeta{ Kind: "KubeProxyConfiguration", diff --git a/internal/kubeadm/certificates.go b/internal/kubeadm/certificates.go index c38a557..f7bbf40 100644 --- a/internal/kubeadm/certificates.go +++ b/internal/kubeadm/certificates.go @@ -7,7 +7,6 @@ import ( "crypto" "crypto/x509" "fmt" - "io/ioutil" "os" "path/filepath" @@ -147,7 +146,7 @@ func readCertificateFiles(name string, directory string, extensions ...string) ( for _, extension := range extensions { fileName := fmt.Sprintf("%s.%s", name, extension) path := filepath.Join(directory, fileName) - content, err := ioutil.ReadFile(path) + content, err := os.ReadFile(path) if err != nil { return nil, err } @@ -160,6 +159,6 @@ func readCertificateFiles(name string, directory string, extensions ...string) ( func deleteCertificateDirectory(certificateDirectory string) { if err := os.RemoveAll(certificateDirectory); err != nil { // TODO(prometherion): we should log rather than printing to stdout - fmt.Printf("Error removing %s: %s", certificateDirectory, err.Error()) // nolint:forbidigo + fmt.Printf("Error removing %s: %s", certificateDirectory, err.Error()) //nolint:forbidigo } } diff --git a/internal/kubeadm/kubeconfig.go b/internal/kubeadm/kubeconfig.go index 8d7fe81..ef4ab2d 100644 --- a/internal/kubeadm/kubeconfig.go +++ b/internal/kubeadm/kubeconfig.go @@ -4,7 +4,6 @@ package kubeadm import ( - "io/ioutil" "os" "path" "path/filepath" @@ -19,12 +18,12 @@ func buildCertificateDirectoryWithCA(ca CertificatePrivateKeyPair, directory str } certPath := path.Join(directory, kubeadmconstants.CACertName) - if err := ioutil.WriteFile(certPath, ca.Certificate, os.FileMode(0o600)); err != nil { + if err := os.WriteFile(certPath, ca.Certificate, os.FileMode(0o600)); err != nil { return err } keyPath := path.Join(directory, kubeadmconstants.CAKeyName) - if err := ioutil.WriteFile(keyPath, ca.PrivateKey, os.FileMode(0o600)); err != nil { + if err := os.WriteFile(keyPath, ca.PrivateKey, os.FileMode(0o600)); err != nil { return err } @@ -44,7 +43,7 @@ func CreateKubeconfig(kubeconfigName string, ca CertificatePrivateKeyPair, confi path := filepath.Join(config.InitConfiguration.CertificatesDir, kubeconfigName) - return ioutil.ReadFile(path) + return os.ReadFile(path) } func IsKubeconfigValid(kubeconfigBytes []byte) bool { diff --git a/internal/resources/api_server_kubelet_client_certificate.go b/internal/resources/api_server_kubelet_client_certificate.go index 9e0e9ab..a72f044 100644 --- a/internal/resources/api_server_kubelet_client_certificate.go +++ b/internal/resources/api_server_kubelet_client_certificate.go @@ -100,6 +100,7 @@ func (r *APIServerKubeletClientCertificate) mutate(ctx context.Context, tenantCo } namespacedName := k8stypes.NamespacedName{Namespace: tenantControlPlane.GetNamespace(), Name: tenantControlPlane.Status.Certificates.CA.SecretName} + secretCA := &corev1.Secret{} if err = r.Client.Get(ctx, namespacedName, secretCA); err != nil { return err diff --git a/internal/resources/k8s_deployment_resource.go b/internal/resources/k8s_deployment_resource.go index 0bd3fcb..b60537c 100644 --- a/internal/resources/k8s_deployment_resource.go +++ b/internal/resources/k8s_deployment_resource.go @@ -112,10 +112,10 @@ func (r *KubernetesDeploymentResource) UpdateTenantControlPlaneStatus(_ context. } func (r *KubernetesDeploymentResource) deploymentTemplateLabels(ctx context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) (labels map[string]string) { - hash := func(ctx context.Context, namespace, secretName string) (hash string) { - hash, _ = utilities.SecretHashValue(ctx, r.Client, namespace, secretName) + hash := func(ctx context.Context, namespace, secretName string) string { + h, _ := utilities.SecretHashValue(ctx, r.Client, namespace, secretName) - return + return h } labels = map[string]string{ diff --git a/internal/resources/konnectivity/agent.go b/internal/resources/konnectivity/agent.go index 5ae5981..c9f2305 100644 --- a/internal/resources/konnectivity/agent.go +++ b/internal/resources/konnectivity/agent.go @@ -70,7 +70,7 @@ func (r *Agent) Define(ctx context.Context, tenantControlPlane *kamajiv1alpha1.T } func (r *Agent) CreateOrUpdate(ctx context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) (controllerutil.OperationResult, error) { - return controllerutil.CreateOrUpdate(ctx, r.tenantClient, r.resource, r.mutate(ctx, tenantControlPlane)) + return controllerutil.CreateOrUpdate(ctx, r.tenantClient, r.resource, r.mutate(tenantControlPlane)) } func (r *Agent) GetName() string { @@ -96,8 +96,8 @@ func (r *Agent) UpdateTenantControlPlaneStatus(ctx context.Context, tenantContro return nil } -func (r *Agent) mutate(ctx context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) controllerutil.MutateFn { - return func() (err error) { +func (r *Agent) mutate(tenantControlPlane *kamajiv1alpha1.TenantControlPlane) controllerutil.MutateFn { + return func() error { address, _, err := tenantControlPlane.AssignedControlPlaneAddress() if err != nil { return err diff --git a/internal/resources/konnectivity/cluster_role_binding_resource.go b/internal/resources/konnectivity/cluster_role_binding_resource.go index da6fa33..7da6432 100644 --- a/internal/resources/konnectivity/cluster_role_binding_resource.go +++ b/internal/resources/konnectivity/cluster_role_binding_resource.go @@ -62,7 +62,7 @@ func (r *ClusterRoleBindingResource) Define(ctx context.Context, tenantControlPl } func (r *ClusterRoleBindingResource) CreateOrUpdate(ctx context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) (controllerutil.OperationResult, error) { - return controllerutil.CreateOrUpdate(ctx, r.tenantClient, r.resource, r.mutate(ctx, tenantControlPlane)) + return controllerutil.CreateOrUpdate(ctx, r.tenantClient, r.resource, r.mutate()) } func (r *ClusterRoleBindingResource) GetName() string { @@ -86,7 +86,7 @@ func (r *ClusterRoleBindingResource) UpdateTenantControlPlaneStatus(ctx context. return nil } -func (r *ClusterRoleBindingResource) mutate(ctx context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) controllerutil.MutateFn { +func (r *ClusterRoleBindingResource) mutate() controllerutil.MutateFn { return func() error { r.resource.SetLabels(utilities.MergeMaps( utilities.KamajiLabels(), diff --git a/internal/resources/konnectivity/deployment_resource.go b/internal/resources/konnectivity/deployment_resource.go index c52db06..8bc7b99 100644 --- a/internal/resources/konnectivity/deployment_resource.go +++ b/internal/resources/konnectivity/deployment_resource.go @@ -38,10 +38,6 @@ type KubernetesDeploymentResource struct { Name string } -func (r *KubernetesDeploymentResource) isStatusEqual(tenantControlPlane *kamajiv1alpha1.TenantControlPlane) bool { - return r.resource.Status.String() == tenantControlPlane.Status.Kubernetes.Deployment.DeploymentStatus.String() -} - func (r *KubernetesDeploymentResource) ShouldStatusBeUpdated(context.Context, *kamajiv1alpha1.TenantControlPlane) bool { return false } @@ -107,7 +103,7 @@ func (r *KubernetesDeploymentResource) Define(ctx context.Context, tenantControl return nil } -func (r *KubernetesDeploymentResource) syncContainer(tenantControlPlane *kamajiv1alpha1.TenantControlPlane) error { +func (r *KubernetesDeploymentResource) syncContainer(tenantControlPlane *kamajiv1alpha1.TenantControlPlane) { found, index := utilities.HasNamedContainer(r.resource.Spec.Template.Spec.Containers, konnectivityServerName) if !found { r.resource.Spec.Template.Spec.Containers = append(r.resource.Spec.Template.Spec.Containers, corev1.Container{}) @@ -192,8 +188,6 @@ func (r *KubernetesDeploymentResource) syncContainer(tenantControlPlane *kamajiv if resources := tenantControlPlane.Spec.Addons.Konnectivity.Resources; resources != nil { r.resource.Spec.Template.Spec.Containers[index].Resources = *resources } - - return nil } func (r *KubernetesDeploymentResource) mutate(_ context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) controllerutil.MutateFn { @@ -208,15 +202,13 @@ func (r *KubernetesDeploymentResource) mutate(_ context.Context, tenantControlPl return fmt.Errorf("the Deployment resource is not ready to be mangled for Konnectivity server enrichment") } - if err = r.syncContainer(tenantControlPlane); err != nil { - return errors.Wrap(err, "cannot sync konnectivity-server container") - } + r.syncContainer(tenantControlPlane) + if err = r.patchKubeAPIServerContainer(); err != nil { return errors.Wrap(err, "cannot sync patch kube-apiserver container") } - if err = r.syncVolumes(tenantControlPlane); err != nil { - return errors.Wrap(err, "cannot patch required konnectivity volumes") - } + + r.syncVolumes(tenantControlPlane) return nil } @@ -245,9 +237,7 @@ func (r *KubernetesDeploymentResource) patchKubeAPIServerContainer() error { // Adding the egress selector config file flag args := utilities.ArgsFromSliceToMap(r.resource.Spec.Template.Spec.Containers[index].Args) - if utilities.ArgsAddFlagValue(args, "--egress-selector-config-file", konnectivityEgressSelectorConfigurationPath) { - // LOG - } + utilities.ArgsAddFlagValue(args, "--egress-selector-config-file", konnectivityEgressSelectorConfigurationPath) r.resource.Spec.Template.Spec.Containers[index].Args = utilities.ArgsFromMapToSlice(args) @@ -274,7 +264,7 @@ func (r *KubernetesDeploymentResource) patchKubeAPIServerContainer() error { return nil } -func (r *KubernetesDeploymentResource) syncVolumes(tenantControlPlane *kamajiv1alpha1.TenantControlPlane) error { +func (r *KubernetesDeploymentResource) syncVolumes(tenantControlPlane *kamajiv1alpha1.TenantControlPlane) { found, index := false, 0 // Defining volumes for the UDS socket found, index = utilities.HasNamedVolume(r.resource.Spec.Template.Spec.Volumes, konnectivityUDSVolume) @@ -319,6 +309,4 @@ func (r *KubernetesDeploymentResource) syncVolumes(tenantControlPlane *kamajiv1a DefaultMode: pointer.Int32Ptr(420), }, } - - return nil } diff --git a/internal/resources/konnectivity/egress_selector_configuration_resource.go b/internal/resources/konnectivity/egress_selector_configuration_resource.go index 5a2e9fd..3ce1717 100644 --- a/internal/resources/konnectivity/egress_selector_configuration_resource.go +++ b/internal/resources/konnectivity/egress_selector_configuration_resource.go @@ -77,7 +77,7 @@ func (r *EgressSelectorConfigurationResource) UpdateTenantControlPlaneStatus(ctx return nil } -func (r *EgressSelectorConfigurationResource) mutate(ctx context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) func() error { +func (r *EgressSelectorConfigurationResource) mutate(_ context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) func() error { return func() error { r.resource.SetLabels(utilities.MergeMaps(r.resource.GetLabels(), utilities.KamajiLabels())) diff --git a/internal/resources/konnectivity/service_account_resource.go b/internal/resources/konnectivity/service_account_resource.go index b222a89..50c6974 100644 --- a/internal/resources/konnectivity/service_account_resource.go +++ b/internal/resources/konnectivity/service_account_resource.go @@ -61,8 +61,8 @@ func (r *ServiceAccountResource) Define(ctx context.Context, tenantControlPlane return nil } -func (r *ServiceAccountResource) CreateOrUpdate(ctx context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) (controllerutil.OperationResult, error) { - return controllerutil.CreateOrUpdate(ctx, r.tenantClient, r.resource, r.mutate(ctx, tenantControlPlane)) +func (r *ServiceAccountResource) CreateOrUpdate(ctx context.Context, _ *kamajiv1alpha1.TenantControlPlane) (controllerutil.OperationResult, error) { + return controllerutil.CreateOrUpdate(ctx, r.tenantClient, r.resource, r.mutate()) } func (r *ServiceAccountResource) GetName() string { @@ -87,7 +87,7 @@ func (r *ServiceAccountResource) UpdateTenantControlPlaneStatus(ctx context.Cont return nil } -func (r *ServiceAccountResource) mutate(ctx context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) controllerutil.MutateFn { +func (r *ServiceAccountResource) mutate() controllerutil.MutateFn { return func() error { r.resource.SetLabels(utilities.MergeMaps( utilities.KamajiLabels(), diff --git a/internal/resources/konnectivity/service_resource.go b/internal/resources/konnectivity/service_resource.go index fe154be..8f784ac 100644 --- a/internal/resources/konnectivity/service_resource.go +++ b/internal/resources/konnectivity/service_resource.go @@ -125,7 +125,7 @@ func (r *ServiceResource) CreateOrUpdate(ctx context.Context, tenantControlPlane } func (r *ServiceResource) mutate(_ context.Context, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) func() error { - return func() (err error) { + return func() error { switch len(r.resource.Spec.Ports) { case 0: return fmt.Errorf("current state of the Service is not ready to be mangled for Konnectivity") diff --git a/internal/resources/kubeconfig.go b/internal/resources/kubeconfig.go index caece96..590de8a 100644 --- a/internal/resources/kubeconfig.go +++ b/internal/resources/kubeconfig.go @@ -146,6 +146,7 @@ func (r *KubeconfigResource) mutate(ctx context.Context, tenantControlPlane *kam kubeconfig, err := kubeadm.CreateKubeconfig( r.KubeConfigFileName, + kubeadm.CertificatePrivateKeyPair{ Certificate: apiServerCertificatesSecret.Data[kubeadmconstants.CACertName], PrivateKey: apiServerCertificatesSecret.Data[kubeadmconstants.CAKeyName], diff --git a/internal/utilities/args.go b/internal/utilities/args.go index e5e7db3..02f434d 100644 --- a/internal/utilities/args.go +++ b/internal/utilities/args.go @@ -63,5 +63,5 @@ func ArgsAddFlagValue(args map[string]string, flag, value string) bool { args[flag] = value - return ok == false + return !ok } diff --git a/internal/utilities/create_or_update_conflict.go b/internal/utilities/create_or_update_conflict.go index 3550b65..0a884b6 100644 --- a/internal/utilities/create_or_update_conflict.go +++ b/internal/utilities/create_or_update_conflict.go @@ -6,6 +6,7 @@ package utilities import ( "context" + "k8s.io/apimachinery/pkg/api/errors" k8stypes "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/util/retry" "sigs.k8s.io/controller-runtime/pkg/client" @@ -17,8 +18,10 @@ import ( // without enqueuing back the request in order to get the latest changes of the resource. func CreateOrUpdateWithConflict(ctx context.Context, client client.Client, resource client.Object, f controllerutil.MutateFn) (res controllerutil.OperationResult, err error) { err = retry.RetryOnConflict(retry.DefaultRetry, func() (scopeErr error) { - if scopeErr = client.Get(ctx, k8stypes.NamespacedName{Namespace: resource.GetNamespace(), Name: resource.GetName()}, resource); err != nil { - return err + if scopeErr = client.Get(ctx, k8stypes.NamespacedName{Namespace: resource.GetNamespace(), Name: resource.GetName()}, resource); scopeErr != nil { + if !errors.IsNotFound(scopeErr) { + return scopeErr + } } res, scopeErr = controllerutil.CreateOrUpdate(ctx, client, resource, f) diff --git a/internal/utilities/tenant_client.go b/internal/utilities/tenant_client.go index 6829981..cac7c6e 100644 --- a/internal/utilities/tenant_client.go +++ b/internal/utilities/tenant_client.go @@ -43,7 +43,6 @@ func GetTenantRESTClient(ctx context.Context, client client.Client, tenantContro func GetKubeconfigSecret(ctx context.Context, client client.Client, tenantControlPlane *kamajiv1alpha1.TenantControlPlane) (*corev1.Secret, error) { secret := &corev1.Secret{} - if err := client.Get(ctx, k8stypes.NamespacedName{Namespace: tenantControlPlane.GetNamespace(), Name: tenantControlPlane.Status.KubeConfig.Admin.SecretName}, secret); err != nil { return nil, err } diff --git a/internal/utilities/utilities.go b/internal/utilities/utilities.go index 50eefdc..2a22b0a 100644 --- a/internal/utilities/utilities.go +++ b/internal/utilities/utilities.go @@ -99,7 +99,6 @@ func GenerateUUIDString() string { // SecretHashValue function returns the md5 value for the secret of the given name and namespace. func SecretHashValue(ctx context.Context, client client.Client, namespace, name string) (string, error) { secret := &corev1.Secret{} - if err := client.Get(ctx, types.NamespacedName{Namespace: namespace, Name: name}, secret); err != nil { return "", errors.Wrap(err, "cannot retrieve *corev1.Secret for resource version retrieval") }