Kubernetes Operator that creates Service Endpoints from Secrets
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

attempt to upgrade the operator sdk

+403 -281
+7
.golangci.yml
··· 22 22 - dupl 23 23 - errcheck 24 24 - exportloopref 25 + - ginkgolinter 25 26 - goconst 26 27 - gocyclo 27 28 - gofmt ··· 33 34 - misspell 34 35 - nakedret 35 36 - prealloc 37 + - revive 36 38 - staticcheck 37 39 - typecheck 38 40 - unconvert 39 41 - unparam 40 42 - unused 43 + 44 + linters-settings: 45 + revive: 46 + rules: 47 + - name: comment-spacings
+1 -1
Dockerfile
··· 1 1 # Build the manager binary 2 - FROM golang:1.21 AS builder 2 + FROM golang:1.22 AS builder 3 3 ARG TARGETOS 4 4 ARG TARGETARCH 5 5
+22 -20
Makefile
··· 48 48 49 49 # Set the Operator SDK version to use. By default, what is installed on the system is used. 50 50 # This is useful for CI or a project to utilize a specific version of the operator-sdk toolkit. 51 - OPERATOR_SDK_VERSION ?= v1.37.0 51 + OPERATOR_SDK_VERSION ?= v1.39.2 52 52 # Image URL to use all building/pushing image targets 53 53 IMG ?= controller:latest 54 54 # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. 55 - ENVTEST_K8S_VERSION = 1.29.0 55 + ENVTEST_K8S_VERSION = 1.31.0 56 56 57 57 # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) 58 58 ifeq (,$(shell go env GOBIN)) ··· 65 65 # Be aware that the target commands are only tested with Docker which is 66 66 # scaffolded by default. However, you might want to replace it to use other 67 67 # tools. (i.e. podman) 68 - CONTAINER_TOOL ?= podman 68 + CONTAINER_TOOL ?= docker 69 69 70 70 # Setting SHELL to bash allows bash commands to be executed by recipes. 71 71 # Options are set to exit when a recipe line exits non-zero or a piped command fails. ··· 120 120 go test ./test/e2e/ -v -ginkgo.v 121 121 122 122 .PHONY: lint 123 - lint: golangci-lint ## Run golangci-lint linter & yamllint 123 + lint: golangci-lint ## Run golangci-lint linter 124 124 $(GOLANGCI_LINT) run 125 125 126 126 .PHONY: lint-fix ··· 159 159 docker-buildx: ## Build and push docker image for the manager for cross-platform support 160 160 # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile 161 161 sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross 162 - - $(CONTAINER_TOOL) buildx create --name project-v3-builder 163 - $(CONTAINER_TOOL) buildx use project-v3-builder 162 + - $(CONTAINER_TOOL) buildx create --name secret-service-operator-builder 163 + $(CONTAINER_TOOL) buildx use secret-service-operator-builder 164 164 - $(CONTAINER_TOOL) buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross . 165 - - $(CONTAINER_TOOL) buildx rm project-v3-builder 165 + - $(CONTAINER_TOOL) buildx rm secret-service-operator-builder 166 166 rm Dockerfile.cross 167 167 168 168 .PHONY: build-installer ··· 203 203 204 204 ## Tool Binaries 205 205 KUBECTL ?= kubectl 206 - KUSTOMIZE ?= $(LOCALBIN)/kustomize-$(KUSTOMIZE_VERSION) 207 - CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen-$(CONTROLLER_TOOLS_VERSION) 208 - ENVTEST ?= $(LOCALBIN)/setup-envtest-$(ENVTEST_VERSION) 209 - GOLANGCI_LINT = $(LOCALBIN)/golangci-lint-$(GOLANGCI_LINT_VERSION) 206 + KUSTOMIZE ?= $(LOCALBIN)/kustomize 207 + CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen 208 + ENVTEST ?= $(LOCALBIN)/setup-envtest 209 + GOLANGCI_LINT = $(LOCALBIN)/golangci-lint 210 210 211 211 ## Tool Versions 212 - KUSTOMIZE_VERSION ?= v5.3.0 213 - CONTROLLER_TOOLS_VERSION ?= v0.14.0 214 - ENVTEST_VERSION ?= release-0.17 215 - GOLANGCI_LINT_VERSION ?= v1.57.2 212 + KUSTOMIZE_VERSION ?= v5.4.3 213 + CONTROLLER_TOOLS_VERSION ?= v0.16.1 214 + ENVTEST_VERSION ?= release-0.19 215 + GOLANGCI_LINT_VERSION ?= v1.59.1 216 216 217 217 .PHONY: kustomize 218 218 kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. ··· 232 232 .PHONY: golangci-lint 233 233 golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary. 234 234 $(GOLANGCI_LINT): $(LOCALBIN) 235 - $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,${GOLANGCI_LINT_VERSION}) 235 + $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION)) 236 236 237 237 # go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist 238 - # $1 - target path with name of binary (ideally with version) 238 + # $1 - target path with name of binary 239 239 # $2 - package url which can be installed 240 240 # $3 - specific version of package 241 241 define go-install-tool 242 - @[ -f $(1) ] || { \ 242 + @[ -f "$(1)-$(3)" ] || { \ 243 243 set -e; \ 244 244 package=$(2)@$(3) ;\ 245 245 echo "Downloading $${package}" ;\ 246 + rm -f $(1) || true ;\ 246 247 GOBIN=$(LOCALBIN) go install $${package} ;\ 247 - mv "$$(echo "$(1)" | sed "s/-$(3)$$//")" $(1) ;\ 248 - } 248 + mv $(1) $(1)-$(3) ;\ 249 + } ;\ 250 + ln -sf $(1)-$(3) $(1) 249 251 endef 250 252 251 253 .PHONY: operator-sdk
+7 -3
README.md
··· 10 10 ## Getting Started 11 11 12 12 ### Prerequisites 13 - - go version v1.21.0+ 13 + - go version v1.22.0+ 14 14 - docker version 17.03+. 15 15 - kubectl version v1.11.3+. 16 16 - Access to a Kubernetes v1.11.3+ cluster. ··· 19 19 **Build and push your image to the location specified by `IMG`:** 20 20 21 21 ```sh 22 - make docker-build IMG=<some-registry>/secret-service-operator:tag 22 + make docker-build docker-push IMG=<some-registry>/secret-service-operator:tag 23 23 ``` 24 + 25 + **NOTE:** This image ought to be published in the personal registry you specified. 26 + And it is required to have access to pull the image from the working environment. 27 + Make sure you have the proper permission to the registry if the above commands don’t work. 24 28 25 29 **Install the CRDs into the cluster:** 26 30 ··· 97 101 98 102 ## License 99 103 100 - Copyright 2024. 104 + Copyright 2025. 101 105 102 106 Licensed under the Apache License, Version 2.0 (the "License"); 103 107 you may not use this file except in compliance with the License.
+1 -1
api/v1/groupversion_info.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License.
+4 -4
api/v1/secretservice_types.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License. ··· 37 37 // Important: Run "make" to regenerate code after modifying this file 38 38 } 39 39 40 - //+kubebuilder:object:root=true 41 - //+kubebuilder:subresource:status 40 + // +kubebuilder:object:root=true 41 + // +kubebuilder:subresource:status 42 42 43 43 // SecretService is the Schema for the secretservices API 44 44 type SecretService struct { ··· 49 49 Status SecretServiceStatus `json:"status,omitempty"` 50 50 } 51 51 52 - //+kubebuilder:object:root=true 52 + // +kubebuilder:object:root=true 53 53 54 54 // SecretServiceList contains a list of SecretService 55 55 type SecretServiceList struct {
+1 -1
api/v1/zz_generated.deepcopy.go
··· 1 1 //go:build !ignore_autogenerated 2 2 3 3 /* 4 - Copyright 2024. 4 + Copyright 2025. 5 5 6 6 Licensed under the Apache License, Version 2.0 (the "License"); 7 7 you may not use this file except in compliance with the License.
+2 -2
charts/secret-service-operator/Chart.yaml
··· 16 16 # This is the chart version. This version number should be incremented each time you make changes 17 17 # to the chart and its templates, including the app version. 18 18 # Versions are expected to follow Semantic Versioning (https://semver.org/) 19 - version: 0.1.7 19 + version: 0.2.0 20 20 21 21 # This is the version number of the application being deployed. This version number should be 22 22 # incremented each time you make changes to the application. Versions are not expected to 23 23 # follow Semantic Versioning. They should reflect the version the application is using. 24 24 # It is recommended to use it with quotes. 25 - appVersion: "0.1.7" 25 + appVersion: "0.2.0" 26 26 27 27 maintainers: 28 28 - name: evanjarrett
+36 -14
cmd/main.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License. ··· 31 31 ctrl "sigs.k8s.io/controller-runtime" 32 32 "sigs.k8s.io/controller-runtime/pkg/healthz" 33 33 "sigs.k8s.io/controller-runtime/pkg/log/zap" 34 + "sigs.k8s.io/controller-runtime/pkg/metrics/filters" 34 35 metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" 35 36 "sigs.k8s.io/controller-runtime/pkg/webhook" 36 37 37 38 appsv1 "github.com/evanjarrett/secret-service-operator/api/v1" 38 39 "github.com/evanjarrett/secret-service-operator/internal/controller" 39 - //+kubebuilder:scaffold:imports 40 + // +kubebuilder:scaffold:imports 40 41 ) 41 42 42 43 var ( ··· 48 49 utilruntime.Must(clientgoscheme.AddToScheme(scheme)) 49 50 50 51 utilruntime.Must(appsv1.AddToScheme(scheme)) 51 - //+kubebuilder:scaffold:scheme 52 + // +kubebuilder:scaffold:scheme 52 53 } 53 54 54 55 func main() { ··· 57 58 var probeAddr string 58 59 var secureMetrics bool 59 60 var enableHTTP2 bool 60 - flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.") 61 + var tlsOpts []func(*tls.Config) 62 + flag.StringVar(&metricsAddr, "metrics-bind-address", "0", "The address the metrics endpoint binds to. "+ 63 + "Use :8443 for HTTPS or :8080 for HTTP, or leave as 0 to disable the metrics service.") 61 64 flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.") 62 65 flag.BoolVar(&enableLeaderElection, "leader-elect", false, 63 66 "Enable leader election for controller manager. "+ 64 67 "Enabling this will ensure there is only one active controller manager.") 65 - flag.BoolVar(&secureMetrics, "metrics-secure", false, 66 - "If set the metrics endpoint is served securely") 68 + flag.BoolVar(&secureMetrics, "metrics-secure", true, 69 + "If set, the metrics endpoint is served securely via HTTPS. Use --metrics-secure=false to use HTTP instead.") 67 70 flag.BoolVar(&enableHTTP2, "enable-http2", false, 68 71 "If set, HTTP/2 will be enabled for the metrics and webhook servers") 69 72 opts := zap.Options{ ··· 85 88 c.NextProtos = []string{"http/1.1"} 86 89 } 87 90 88 - tlsOpts := []func(*tls.Config){} 89 91 if !enableHTTP2 { 90 92 tlsOpts = append(tlsOpts, disableHTTP2) 91 93 } ··· 94 96 TLSOpts: tlsOpts, 95 97 }) 96 98 99 + // Metrics endpoint is enabled in 'config/default/kustomization.yaml'. The Metrics options configure the server. 100 + // More info: 101 + // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.19.0/pkg/metrics/server 102 + // - https://book.kubebuilder.io/reference/metrics.html 103 + metricsServerOptions := metricsserver.Options{ 104 + BindAddress: metricsAddr, 105 + SecureServing: secureMetrics, 106 + // TODO(user): TLSOpts is used to allow configuring the TLS config used for the server. If certificates are 107 + // not provided, self-signed certificates will be generated by default. This option is not recommended for 108 + // production environments as self-signed certificates do not offer the same level of trust and security 109 + // as certificates issued by a trusted Certificate Authority (CA). The primary risk is potentially allowing 110 + // unauthorized access to sensitive metrics data. Consider replacing with CertDir, CertName, and KeyName 111 + // to provide certificates, ensuring the server communicates using trusted and secure certificates. 112 + TLSOpts: tlsOpts, 113 + } 114 + 115 + if secureMetrics { 116 + // FilterProvider is used to protect the metrics endpoint with authn/authz. 117 + // These configurations ensure that only authorized users and service accounts 118 + // can access the metrics endpoint. The RBAC are configured in 'config/rbac/kustomization.yaml'. More info: 119 + // https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.19.0/pkg/metrics/filters#WithAuthenticationAndAuthorization 120 + metricsServerOptions.FilterProvider = filters.WithAuthenticationAndAuthorization 121 + } 122 + 97 123 mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ 98 - Scheme: scheme, 99 - Metrics: metricsserver.Options{ 100 - BindAddress: metricsAddr, 101 - SecureServing: secureMetrics, 102 - TLSOpts: tlsOpts, 103 - }, 124 + Scheme: scheme, 125 + Metrics: metricsServerOptions, 104 126 WebhookServer: webhookServer, 105 127 HealthProbeBindAddress: probeAddr, 106 128 LeaderElection: enableLeaderElection, ··· 129 151 setupLog.Error(err, "unable to create controller", "controller", "SecretService") 130 152 os.Exit(1) 131 153 } 132 - //+kubebuilder:scaffold:builder 154 + // +kubebuilder:scaffold:builder 133 155 134 156 if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil { 135 157 setupLog.Error(err, "unable to set up health check")
+1 -1
config/crd/bases/apps.j5t.io_secretservices.yaml
··· 3 3 kind: CustomResourceDefinition 4 4 metadata: 5 5 annotations: 6 - controller-gen.kubebuilder.io/version: v0.14.0 6 + controller-gen.kubebuilder.io/version: v0.16.1 7 7 name: secretservices.apps.j5t.io 8 8 spec: 9 9 group: apps.j5t.io
+4 -3
config/crd/kustomization.yaml
··· 2 2 # since it depends on service name and namespace that are out of this kustomize package. 3 3 # It should be run by config/default 4 4 resources: 5 + - bases/apps.j5t.io.j5t.io_secretservices.yaml 5 6 - bases/apps.j5t.io_secretservices.yaml 6 - #+kubebuilder:scaffold:crdkustomizeresource 7 + # +kubebuilder:scaffold:crdkustomizeresource 7 8 8 9 patches: 9 10 # [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix. 10 11 # patches here are for enabling the conversion webhook for each CRD 11 - #+kubebuilder:scaffold:crdkustomizewebhookpatch 12 + # +kubebuilder:scaffold:crdkustomizewebhookpatch 12 13 13 14 # [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix. 14 15 # patches here are for enabling the CA injection for each CRD 15 16 #- path: patches/cainjection_in_secretservices.yaml 16 - #+kubebuilder:scaffold:crdkustomizecainjectionpatch 17 + # +kubebuilder:scaffold:crdkustomizecainjectionpatch 17 18 18 19 # [WEBHOOK] To enable webhook, uncomment the following section 19 20 # the following config is for teaching kustomize how to do kustomization for CRDs.
+13 -4
config/default/kustomization.yaml
··· 25 25 #- ../certmanager 26 26 # [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'. 27 27 #- ../prometheus 28 + # [METRICS] Expose the controller manager metrics service. 29 + - metrics_service.yaml 30 + # [NETWORK POLICY] Protect the /metrics endpoint and Webhook Server with NetworkPolicy. 31 + # Only Pod(s) running a namespace labeled with 'metrics: enabled' will be able to gather the metrics. 32 + # Only CR(s) which requires webhooks and are applied on namespaces labeled with 'webhooks: enabled' will 33 + # be able to communicate with the Webhook Server. 34 + #- ../network-policy 28 35 36 + # Uncomment the patches line if you enable Metrics, and/or are using webhooks and cert-manager 29 37 patches: 30 - # Protect the /metrics endpoint by putting it behind auth. 31 - # If you want your controller-manager to expose the /metrics 32 - # endpoint w/o any authn/z, please comment the following line. 33 - - path: manager_auth_proxy_patch.yaml 38 + # [METRICS] The following patch will enable the metrics endpoint using HTTPS and the port :8443. 39 + # More info: https://book.kubebuilder.io/reference/metrics 40 + - path: manager_metrics_patch.yaml 41 + target: 42 + kind: Deployment 34 43 35 44 # [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in 36 45 # crd/kustomization.yaml
-39
config/default/manager_auth_proxy_patch.yaml
··· 1 - # This patch inject a sidecar container which is a HTTP proxy for the 2 - # controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews. 3 - apiVersion: apps/v1 4 - kind: Deployment 5 - metadata: 6 - name: controller-manager 7 - namespace: system 8 - spec: 9 - template: 10 - spec: 11 - containers: 12 - - name: kube-rbac-proxy 13 - securityContext: 14 - allowPrivilegeEscalation: false 15 - capabilities: 16 - drop: 17 - - "ALL" 18 - image: gcr.io/kubebuilder/kube-rbac-proxy:v0.16.0 19 - args: 20 - - "--secure-listen-address=0.0.0.0:8443" 21 - - "--upstream=http://127.0.0.1:8080/" 22 - - "--logtostderr=true" 23 - - "--v=0" 24 - ports: 25 - - containerPort: 8443 26 - protocol: TCP 27 - name: https 28 - resources: 29 - limits: 30 - cpu: 500m 31 - memory: 128Mi 32 - requests: 33 - cpu: 5m 34 - memory: 64Mi 35 - - name: manager 36 - args: 37 - - "--health-probe-bind-address=:8081" 38 - - "--metrics-bind-address=127.0.0.1:8080" 39 - - "--leader-elect"
-10
config/default/manager_config_patch.yaml
··· 1 - apiVersion: apps/v1 2 - kind: Deployment 3 - metadata: 4 - name: controller-manager 5 - namespace: system 6 - spec: 7 - template: 8 - spec: 9 - containers: 10 - - name: manager
+4
config/default/manager_metrics_patch.yaml
··· 1 + # This patch adds the args to allow exposing the metrics endpoint using HTTPS 2 + - op: add 3 + path: /spec/template/spec/containers/0/args/0 4 + value: --metrics-bind-address=:8443
+2 -1
config/manager/manager.yaml
··· 61 61 - command: 62 62 - /manager 63 63 args: 64 - - --leader-elect 64 + - --leader-elect 65 + - --health-probe-bind-address=:8081 65 66 image: controller:latest 66 67 name: manager 67 68 securityContext:
+1 -1
config/manifests/kustomization.yaml
··· 9 9 # [WEBHOOK] To enable webhooks, uncomment all the sections with [WEBHOOK] prefix. 10 10 # Do NOT uncomment sections with prefix [CERTMANAGER], as OLM does not support cert-manager. 11 11 # These patches remove the unnecessary "cert" volume and its manager container volumeMount. 12 - #patchesJson6902: 12 + #patches: 13 13 #- target: 14 14 # group: apps 15 15 # version: v1
+26
config/network-policy/allow-metrics-traffic.yaml
··· 1 + # This NetworkPolicy allows ingress traffic 2 + # with Pods running on namespaces labeled with 'metrics: enabled'. Only Pods on those 3 + # namespaces are able to gathering data from the metrics endpoint. 4 + apiVersion: networking.k8s.io/v1 5 + kind: NetworkPolicy 6 + metadata: 7 + labels: 8 + app.kubernetes.io/name: secret-service-operator 9 + app.kubernetes.io/managed-by: kustomize 10 + name: allow-metrics-traffic 11 + namespace: system 12 + spec: 13 + podSelector: 14 + matchLabels: 15 + control-plane: controller-manager 16 + policyTypes: 17 + - Ingress 18 + ingress: 19 + # This allows ingress traffic from any namespace with the label metrics: enabled 20 + - from: 21 + - namespaceSelector: 22 + matchLabels: 23 + metrics: enabled # Only from namespaces with this label 24 + ports: 25 + - port: 8443 26 + protocol: TCP
+2
config/network-policy/kustomization.yaml
··· 1 + resources: 2 + - allow-metrics-traffic.yaml
+10 -1
config/prometheus/monitor.yaml
··· 11 11 spec: 12 12 endpoints: 13 13 - path: /metrics 14 - port: https 14 + port: https # Ensure this is the name of the port that exposes HTTPS metrics 15 15 scheme: https 16 16 bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token 17 17 tlsConfig: 18 + # TODO(user): The option insecureSkipVerify: true is not recommended for production since it disables 19 + # certificate verification. This poses a significant security risk by making the system vulnerable to 20 + # man-in-the-middle attacks, where an attacker could intercept and manipulate the communication between 21 + # Prometheus and the monitored services. This could lead to unauthorized access to sensitive metrics data, 22 + # compromising the integrity and confidentiality of the information. 23 + # Please use the following options for secure configurations: 24 + # caFile: /etc/metrics-certs/ca.crt 25 + # certFile: /etc/metrics-certs/tls.crt 26 + # keyFile: /etc/metrics-certs/tls.key 18 27 insecureSkipVerify: true 19 28 selector: 20 29 matchLabels:
-12
config/rbac/auth_proxy_client_clusterrole.yaml
··· 1 - apiVersion: rbac.authorization.k8s.io/v1 2 - kind: ClusterRole 3 - metadata: 4 - labels: 5 - app.kubernetes.io/name: secret-service-operator 6 - app.kubernetes.io/managed-by: kustomize 7 - name: metrics-reader 8 - rules: 9 - - nonResourceURLs: 10 - - "/metrics" 11 - verbs: 12 - - get
+1 -4
config/rbac/auth_proxy_role.yaml config/rbac/metrics_auth_role.yaml
··· 1 1 apiVersion: rbac.authorization.k8s.io/v1 2 2 kind: ClusterRole 3 3 metadata: 4 - labels: 5 - app.kubernetes.io/name: secret-service-operator 6 - app.kubernetes.io/managed-by: kustomize 7 - name: proxy-role 4 + name: metrics-auth-role 8 5 rules: 9 6 - apiGroups: 10 7 - authentication.k8s.io
-15
config/rbac/auth_proxy_role_binding.yaml
··· 1 - apiVersion: rbac.authorization.k8s.io/v1 2 - kind: ClusterRoleBinding 3 - metadata: 4 - labels: 5 - app.kubernetes.io/name: secret-service-operator 6 - app.kubernetes.io/managed-by: kustomize 7 - name: proxy-rolebinding 8 - roleRef: 9 - apiGroup: rbac.authorization.k8s.io 10 - kind: ClusterRole 11 - name: proxy-role 12 - subjects: 13 - - kind: ServiceAccount 14 - name: controller-manager 15 - namespace: system
+1 -1
config/rbac/auth_proxy_service.yaml config/default/metrics_service.yaml
··· 12 12 - name: https 13 13 port: 8443 14 14 protocol: TCP 15 - targetPort: https 15 + targetPort: 8443 16 16 selector: 17 17 control-plane: controller-manager
+10 -7
config/rbac/kustomization.yaml
··· 9 9 - role_binding.yaml 10 10 - leader_election_role.yaml 11 11 - leader_election_role_binding.yaml 12 - # Comment the following 4 lines if you want to disable 13 - # the auth proxy (https://github.com/brancz/kube-rbac-proxy) 14 - # which protects your /metrics endpoint. 15 - - auth_proxy_service.yaml 16 - - auth_proxy_role.yaml 17 - - auth_proxy_role_binding.yaml 18 - - auth_proxy_client_clusterrole.yaml 12 + # The following RBAC configurations are used to protect 13 + # the metrics endpoint with authn/authz. These configurations 14 + # ensure that only authorized users and service accounts 15 + # can access the metrics endpoint. Comment the following 16 + # permissions if you want to disable this protection. 17 + # More info: https://book.kubebuilder.io/reference/metrics.html 18 + - metrics_auth_role.yaml 19 + - metrics_auth_role_binding.yaml 20 + - metrics_reader_role.yaml 19 21 # For each CRD, "Editor" and "Viewer" roles are scaffolded by 20 22 # default, aiding admins in cluster management. Those roles are 21 23 # not used by the Project itself. You can comment the following lines 22 24 # if you do not want those helpers be installed with your Project. 23 25 - secretservice_editor_role.yaml 24 26 - secretservice_viewer_role.yaml 27 +
+12
config/rbac/metrics_auth_role_binding.yaml
··· 1 + apiVersion: rbac.authorization.k8s.io/v1 2 + kind: ClusterRoleBinding 3 + metadata: 4 + name: metrics-auth-rolebinding 5 + roleRef: 6 + apiGroup: rbac.authorization.k8s.io 7 + kind: ClusterRole 8 + name: metrics-auth-role 9 + subjects: 10 + - kind: ServiceAccount 11 + name: controller-manager 12 + namespace: system
+9
config/rbac/metrics_reader_role.yaml
··· 1 + apiVersion: rbac.authorization.k8s.io/v1 2 + kind: ClusterRole 3 + metadata: 4 + name: metrics-reader 5 + rules: 6 + - nonResourceURLs: 7 + - "/metrics" 8 + verbs: 9 + - get
+2 -2
config/rbac/secretservice_editor_role.yaml
··· 8 8 name: secretservice-editor-role 9 9 rules: 10 10 - apiGroups: 11 - - apps.j5t.io 11 + - apps.j5t.io.j5t.io 12 12 resources: 13 13 - secretservices 14 14 verbs: ··· 20 20 - update 21 21 - watch 22 22 - apiGroups: 23 - - apps.j5t.io 23 + - apps.j5t.io.j5t.io 24 24 resources: 25 25 - secretservices/status 26 26 verbs:
+2 -2
config/rbac/secretservice_viewer_role.yaml
··· 8 8 name: secretservice-viewer-role 9 9 rules: 10 10 - apiGroups: 11 - - apps.j5t.io 11 + - apps.j5t.io.j5t.io 12 12 resources: 13 13 - secretservices 14 14 verbs: ··· 16 16 - list 17 17 - watch 18 18 - apiGroups: 19 - - apps.j5t.io 19 + - apps.j5t.io.j5t.io 20 20 resources: 21 21 - secretservices/status 22 22 verbs:
+3 -2
config/samples/apps_v1_secretservice.yaml
··· 3 3 metadata: 4 4 labels: 5 5 app.kubernetes.io/name: secret-service-operator 6 - name: endpoint-secretservice 6 + app.kubernetes.io/managed-by: kustomize 7 + name: secretservice-sample 7 8 spec: 8 - secretName: endpoint-secret 9 + # TODO(user): Add fields here
+1 -1
config/samples/kustomization.yaml
··· 1 1 ## Append samples of your project ## 2 2 resources: 3 3 - apps_v1_secretservice.yaml 4 - #+kubebuilder:scaffold:manifestskustomizesamples 4 + # +kubebuilder:scaffold:manifestskustomizesamples
+6 -4
config/scorecard/kustomization.yaml
··· 1 1 resources: 2 2 - bases/config.yaml 3 - patchesJson6902: 3 + apiVersion: kustomize.config.k8s.io/v1beta1 4 + kind: Kustomization 5 + patches: 4 6 - path: patches/basic.config.yaml 5 7 target: 6 8 group: scorecard.operatorframework.io 7 - version: v1alpha3 8 9 kind: Configuration 9 10 name: config 11 + version: v1alpha3 10 12 - path: patches/olm.config.yaml 11 13 target: 12 14 group: scorecard.operatorframework.io 13 - version: v1alpha3 14 15 kind: Configuration 15 16 name: config 16 - #+kubebuilder:scaffold:patchesJson6902 17 + version: v1alpha3 18 + # +kubebuilder:scaffold:patches
+1 -1
config/scorecard/patches/basic.config.yaml
··· 4 4 entrypoint: 5 5 - scorecard-test 6 6 - basic-check-spec 7 - image: quay.io/operator-framework/scorecard-test:v1.37.0 7 + image: quay.io/operator-framework/scorecard-test:v1.39.2 8 8 labels: 9 9 suite: basic 10 10 test: basic-check-spec-test
+5 -5
config/scorecard/patches/olm.config.yaml
··· 4 4 entrypoint: 5 5 - scorecard-test 6 6 - olm-bundle-validation 7 - image: quay.io/operator-framework/scorecard-test:v1.37.0 7 + image: quay.io/operator-framework/scorecard-test:v1.39.2 8 8 labels: 9 9 suite: olm 10 10 test: olm-bundle-validation-test ··· 14 14 entrypoint: 15 15 - scorecard-test 16 16 - olm-crds-have-validation 17 - image: quay.io/operator-framework/scorecard-test:v1.37.0 17 + image: quay.io/operator-framework/scorecard-test:v1.39.2 18 18 labels: 19 19 suite: olm 20 20 test: olm-crds-have-validation-test ··· 24 24 entrypoint: 25 25 - scorecard-test 26 26 - olm-crds-have-resources 27 - image: quay.io/operator-framework/scorecard-test:v1.37.0 27 + image: quay.io/operator-framework/scorecard-test:v1.39.2 28 28 labels: 29 29 suite: olm 30 30 test: olm-crds-have-resources-test ··· 34 34 entrypoint: 35 35 - scorecard-test 36 36 - olm-spec-descriptors 37 - image: quay.io/operator-framework/scorecard-test:v1.37.0 37 + image: quay.io/operator-framework/scorecard-test:v1.39.2 38 38 labels: 39 39 suite: olm 40 40 test: olm-spec-descriptors-test ··· 44 44 entrypoint: 45 45 - scorecard-test 46 46 - olm-status-descriptors 47 - image: quay.io/operator-framework/scorecard-test:v1.37.0 47 + image: quay.io/operator-framework/scorecard-test:v1.39.2 48 48 labels: 49 49 suite: olm 50 50 test: olm-status-descriptors-test
+56 -31
go.mod
··· 1 1 module github.com/evanjarrett/secret-service-operator 2 2 3 - go 1.21.0 3 + go 1.22.0 4 4 5 5 require ( 6 6 github.com/onsi/ginkgo/v2 v2.19.0 7 7 github.com/onsi/gomega v1.33.1 8 - k8s.io/api v0.29.4 9 - k8s.io/apimachinery v0.29.4 10 - k8s.io/client-go v0.29.4 11 - sigs.k8s.io/controller-runtime v0.17.3 8 + k8s.io/apimachinery v0.31.0 9 + k8s.io/client-go v0.31.0 10 + sigs.k8s.io/controller-runtime v0.19.0 12 11 ) 13 12 14 13 require ( 14 + github.com/antlr4-go/antlr/v4 v4.13.0 // indirect 15 + github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect 15 16 github.com/beorn7/perks v1.0.1 // indirect 16 - github.com/cespare/xxhash/v2 v2.2.0 // indirect 17 - github.com/davecgh/go-spew v1.1.1 // indirect 17 + github.com/blang/semver/v4 v4.0.0 // indirect 18 + github.com/cenkalti/backoff/v4 v4.3.0 // indirect 19 + github.com/cespare/xxhash/v2 v2.3.0 // indirect 20 + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect 18 21 github.com/emicklei/go-restful/v3 v3.11.0 // indirect 19 - github.com/evanphx/json-patch/v5 v5.8.0 // indirect 22 + github.com/evanphx/json-patch/v5 v5.9.0 // indirect 23 + github.com/felixge/httpsnoop v1.0.4 // indirect 20 24 github.com/fsnotify/fsnotify v1.7.0 // indirect 21 - github.com/go-logr/logr v1.4.1 // indirect 25 + github.com/fxamacker/cbor/v2 v2.7.0 // indirect 26 + github.com/go-logr/logr v1.4.2 // indirect 27 + github.com/go-logr/stdr v1.2.2 // indirect 22 28 github.com/go-logr/zapr v1.3.0 // indirect 23 29 github.com/go-openapi/jsonpointer v0.19.6 // indirect 24 30 github.com/go-openapi/jsonreference v0.20.2 // indirect 25 - github.com/go-openapi/swag v0.22.3 // indirect 31 + github.com/go-openapi/swag v0.22.4 // indirect 26 32 github.com/go-task/slim-sprig/v3 v3.0.0 // indirect 27 33 github.com/gogo/protobuf v1.3.2 // indirect 28 34 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect 29 35 github.com/golang/protobuf v1.5.4 // indirect 36 + github.com/google/cel-go v0.20.1 // indirect 30 37 github.com/google/gnostic-models v0.6.8 // indirect 31 38 github.com/google/go-cmp v0.6.0 // indirect 32 39 github.com/google/gofuzz v1.2.0 // indirect 33 - github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect 34 - github.com/google/uuid v1.3.0 // indirect 40 + github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af // indirect 41 + github.com/google/uuid v1.6.0 // indirect 42 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect 35 43 github.com/imdario/mergo v0.3.6 // indirect 44 + github.com/inconshreveable/mousetrap v1.1.0 // indirect 36 45 github.com/josharian/intern v1.0.0 // indirect 37 46 github.com/json-iterator/go v1.1.12 // indirect 38 47 github.com/mailru/easyjson v0.7.7 // indirect 39 - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect 40 48 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect 41 49 github.com/modern-go/reflect2 v1.0.2 // indirect 42 50 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect 43 51 github.com/pkg/errors v0.9.1 // indirect 44 - github.com/prometheus/client_golang v1.18.0 // indirect 45 - github.com/prometheus/client_model v0.5.0 // indirect 46 - github.com/prometheus/common v0.45.0 // indirect 47 - github.com/prometheus/procfs v0.12.0 // indirect 52 + github.com/prometheus/client_golang v1.19.1 // indirect 53 + github.com/prometheus/client_model v0.6.1 // indirect 54 + github.com/prometheus/common v0.55.0 // indirect 55 + github.com/prometheus/procfs v0.15.1 // indirect 56 + github.com/spf13/cobra v1.8.1 // indirect 48 57 github.com/spf13/pflag v1.0.5 // indirect 58 + github.com/stoewer/go-strcase v1.2.0 // indirect 59 + github.com/x448/float16 v0.8.4 // indirect 60 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect 61 + go.opentelemetry.io/otel v1.28.0 // indirect 62 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect 63 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 // indirect 64 + go.opentelemetry.io/otel/metric v1.28.0 // indirect 65 + go.opentelemetry.io/otel/sdk v1.28.0 // indirect 66 + go.opentelemetry.io/otel/trace v1.28.0 // indirect 67 + go.opentelemetry.io/proto/otlp v1.3.1 // indirect 49 68 go.uber.org/multierr v1.11.0 // indirect 50 69 go.uber.org/zap v1.26.0 // indirect 51 - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect 52 - golang.org/x/net v0.25.0 // indirect 53 - golang.org/x/oauth2 v0.12.0 // indirect 54 - golang.org/x/sys v0.20.0 // indirect 55 - golang.org/x/term v0.20.0 // indirect 56 - golang.org/x/text v0.15.0 // indirect 70 + golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc // indirect 71 + golang.org/x/net v0.26.0 // indirect 72 + golang.org/x/oauth2 v0.21.0 // indirect 73 + golang.org/x/sync v0.7.0 // indirect 74 + golang.org/x/sys v0.21.0 // indirect 75 + golang.org/x/term v0.21.0 // indirect 76 + golang.org/x/text v0.16.0 // indirect 57 77 golang.org/x/time v0.3.0 // indirect 58 - golang.org/x/tools v0.21.0 // indirect 78 + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect 59 79 gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect 60 - google.golang.org/appengine v1.6.7 // indirect 61 - google.golang.org/protobuf v1.33.0 // indirect 80 + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect 81 + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect 82 + google.golang.org/grpc v1.65.0 // indirect 83 + google.golang.org/protobuf v1.34.2 // indirect 62 84 gopkg.in/inf.v0 v0.9.1 // indirect 63 85 gopkg.in/yaml.v2 v2.4.0 // indirect 64 86 gopkg.in/yaml.v3 v3.0.1 // indirect 65 - k8s.io/apiextensions-apiserver v0.29.2 // indirect 66 - k8s.io/component-base v0.29.2 // indirect 67 - k8s.io/klog/v2 v2.110.1 // indirect 68 - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect 69 - k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect 87 + k8s.io/api v0.31.0 // indirect 88 + k8s.io/apiextensions-apiserver v0.31.0 // indirect 89 + k8s.io/apiserver v0.31.0 // indirect 90 + k8s.io/component-base v0.31.0 // indirect 91 + k8s.io/klog/v2 v2.130.1 // indirect 92 + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect 93 + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect 94 + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 // indirect 70 95 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect 71 96 sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect 72 97 sigs.k8s.io/yaml v1.4.0 // indirect
+125 -69
go.sum
··· 1 + github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= 2 + github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= 3 + github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= 4 + github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= 1 5 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= 2 6 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= 3 - github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= 4 - github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 7 + github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= 8 + github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= 9 + github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= 10 + github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= 11 + github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= 12 + github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 13 + github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= 5 14 github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 6 15 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 7 - github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 8 16 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 17 + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= 18 + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 9 19 github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= 10 20 github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= 11 - github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= 12 - github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= 13 - github.com/evanphx/json-patch/v5 v5.8.0 h1:lRj6N9Nci7MvzrXuX6HFzU8XjmhPiXPlsKEy1u0KQro= 14 - github.com/evanphx/json-patch/v5 v5.8.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= 21 + github.com/evanphx/json-patch v0.5.2 h1:xVCHIVMUu1wtM/VkR9jVZ45N3FhZfYMMYGorLCR8P3k= 22 + github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= 23 + github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg= 24 + github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= 25 + github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= 26 + github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= 15 27 github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= 16 28 github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= 17 - github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= 18 - github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= 19 - github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= 29 + github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= 30 + github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= 31 + github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= 32 + github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= 33 + github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= 34 + github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= 35 + github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= 20 36 github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= 21 37 github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= 22 38 github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= 23 39 github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= 24 40 github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= 25 41 github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= 26 - github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= 27 42 github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= 43 + github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= 44 + github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= 28 45 github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= 29 46 github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= 30 47 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= 31 48 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= 32 49 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= 33 50 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= 34 - github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= 35 51 github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= 36 52 github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= 53 + github.com/google/cel-go v0.20.1 h1:nDx9r8S3L4pE61eDdt8igGj8rf5kjYR3ILxWIpWNi84= 54 + github.com/google/cel-go v0.20.1/go.mod h1:kWcIzTsPX0zmQ+H3TirHstLLf9ep5QTsZBN9u4dOYLg= 37 55 github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= 38 56 github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= 39 57 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= ··· 42 60 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 43 61 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= 44 62 github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= 45 - github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= 46 - github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= 47 - github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= 48 - github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 63 + github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2Rrd27c3VGxi6a/6HNq8QmHRKM= 64 + github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= 65 + github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= 66 + github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 67 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= 68 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= 49 69 github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28= 50 70 github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= 71 + github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= 72 + github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= 51 73 github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= 52 74 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= 53 75 github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= ··· 63 85 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 64 86 github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= 65 87 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= 66 - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= 67 - github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= 68 88 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= 69 89 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= 70 90 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= ··· 78 98 github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= 79 99 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 80 100 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 81 - github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 82 101 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 83 - github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= 84 - github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA= 85 - github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= 86 - github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= 87 - github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= 88 - github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= 89 - github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= 90 - github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= 91 - github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= 92 - github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= 102 + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= 103 + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 104 + github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= 105 + github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= 106 + github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= 107 + github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= 108 + github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= 109 + github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= 110 + github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= 111 + github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= 112 + github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= 113 + github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= 114 + github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= 115 + github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= 116 + github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= 93 117 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= 94 118 github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= 119 + github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= 120 + github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= 95 121 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 96 122 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 97 123 github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= 98 124 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 125 + github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= 99 126 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 100 127 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 101 128 github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= 102 - github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= 103 - github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 129 + github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= 130 + github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= 131 + github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= 132 + github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= 104 133 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 105 134 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 135 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= 136 + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= 137 + go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= 138 + go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= 139 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= 140 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= 141 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 h1:qFffATk0X+HD+f1Z8lswGiOQYKHRlzfmdJm0wEaVrFA= 142 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0/go.mod h1:MOiCmryaYtc+V0Ei+Tx9o5S1ZjA7kzLucuVuyzBZloQ= 143 + go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= 144 + go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= 145 + go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= 146 + go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= 147 + go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= 148 + go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= 149 + go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= 150 + go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= 106 151 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= 107 152 go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= 108 153 go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= ··· 112 157 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 113 158 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= 114 159 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 115 - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= 116 - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= 160 + golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc h1:mCRnTeVUjcrhlRmO0VK8a6k6Rrf6TF9htwo2pJVSjIU= 161 + golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= 117 162 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 118 163 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= 119 164 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 120 - golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= 121 165 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 122 166 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 123 167 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= 124 - golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= 125 - golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= 126 - golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= 127 - golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= 168 + golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= 169 + golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= 170 + golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= 171 + golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 128 172 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 129 173 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 130 174 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 175 + golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= 176 + golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 131 177 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 132 178 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 133 179 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 134 - golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= 135 - golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 136 - golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= 137 - golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= 180 + golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= 181 + golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 182 + golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= 183 + golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= 138 184 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 139 - golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= 140 185 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 141 - golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= 142 - golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 186 + golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= 187 + golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= 143 188 golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= 144 189 golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 145 190 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 146 191 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 147 192 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 148 193 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= 149 - golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= 150 - golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= 194 + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= 195 + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= 151 196 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 152 197 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 153 198 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 154 199 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 155 200 gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= 156 201 gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= 157 - google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= 158 - google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= 159 - google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= 160 - google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 202 + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= 203 + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= 204 + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= 205 + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= 206 + google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= 207 + google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= 208 + google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= 209 + google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= 161 210 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 162 211 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= 163 212 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= 213 + gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= 214 + gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= 164 215 gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= 165 216 gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= 217 + gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 166 218 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 167 219 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 168 220 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 169 221 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 170 222 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 171 223 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 172 - k8s.io/api v0.29.4 h1:WEnF/XdxuCxdG3ayHNRR8yH3cI1B/llkWBma6bq4R3w= 173 - k8s.io/api v0.29.4/go.mod h1:DetSv0t4FBTcEpfA84NJV3g9a7+rSzlUHk5ADAYHUv0= 174 - k8s.io/apiextensions-apiserver v0.29.2 h1:UK3xB5lOWSnhaCk0RFZ0LUacPZz9RY4wi/yt2Iu+btg= 175 - k8s.io/apiextensions-apiserver v0.29.2/go.mod h1:aLfYjpA5p3OwtqNXQFkhJ56TB+spV8Gc4wfMhUA3/b8= 176 - k8s.io/apimachinery v0.29.4 h1:RaFdJiDmuKs/8cm1M6Dh1Kvyh59YQFDcFuFTSmXes6Q= 177 - k8s.io/apimachinery v0.29.4/go.mod h1:i3FJVwhvSp/6n8Fl4K97PJEP8C+MM+aoDq4+ZJBf70Y= 178 - k8s.io/client-go v0.29.4 h1:79ytIedxVfyXV8rpH3jCBW0u+un0fxHDwX5F9K8dPR8= 179 - k8s.io/client-go v0.29.4/go.mod h1:kC1thZQ4zQWYwldsfI088BbK6RkxK+aF5ebV8y9Q4tk= 180 - k8s.io/component-base v0.29.2 h1:lpiLyuvPA9yV1aQwGLENYyK7n/8t6l3nn3zAtFTJYe8= 181 - k8s.io/component-base v0.29.2/go.mod h1:BfB3SLrefbZXiBfbM+2H1dlat21Uewg/5qtKOl8degM= 182 - k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= 183 - k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= 184 - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= 185 - k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= 186 - k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= 187 - k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 188 - sigs.k8s.io/controller-runtime v0.17.3 h1:65QmN7r3FWgTxDMz9fvGnO1kbf2nu+acg9p2R9oYYYk= 189 - sigs.k8s.io/controller-runtime v0.17.3/go.mod h1:N0jpP5Lo7lMTF9aL56Z/B2oWBJjey6StQM0jRbKQXtY= 224 + k8s.io/api v0.31.0 h1:b9LiSjR2ym/SzTOlfMHm1tr7/21aD7fSkqgD/CVJBCo= 225 + k8s.io/api v0.31.0/go.mod h1:0YiFF+JfFxMM6+1hQei8FY8M7s1Mth+z/q7eF1aJkTE= 226 + k8s.io/apiextensions-apiserver v0.31.0 h1:fZgCVhGwsclj3qCw1buVXCV6khjRzKC5eCFt24kyLSk= 227 + k8s.io/apiextensions-apiserver v0.31.0/go.mod h1:b9aMDEYaEe5sdK+1T0KU78ApR/5ZVp4i56VacZYEHxk= 228 + k8s.io/apimachinery v0.31.0 h1:m9jOiSr3FoSSL5WO9bjm1n6B9KROYYgNZOb4tyZ1lBc= 229 + k8s.io/apimachinery v0.31.0/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= 230 + k8s.io/apiserver v0.31.0 h1:p+2dgJjy+bk+B1Csz+mc2wl5gHwvNkC9QJV+w55LVrY= 231 + k8s.io/apiserver v0.31.0/go.mod h1:KI9ox5Yu902iBnnyMmy7ajonhKnkeZYJhTZ/YI+WEMk= 232 + k8s.io/client-go v0.31.0 h1:QqEJzNjbN2Yv1H79SsS+SWnXkBgVu4Pj3CJQgbx0gI8= 233 + k8s.io/client-go v0.31.0/go.mod h1:Y9wvC76g4fLjmU0BA+rV+h2cncoadjvjjkkIGoTLcGU= 234 + k8s.io/component-base v0.31.0 h1:/KIzGM5EvPNQcYgwq5NwoQBaOlVFrghoVGr8lG6vNRs= 235 + k8s.io/component-base v0.31.0/go.mod h1:TYVuzI1QmN4L5ItVdMSXKvH7/DtvIuas5/mm8YT3rTo= 236 + k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= 237 + k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= 238 + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= 239 + k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= 240 + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= 241 + k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= 242 + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 h1:2770sDpzrjjsAtVhSeUFseziht227YAWYHLGNM8QPwY= 243 + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= 244 + sigs.k8s.io/controller-runtime v0.19.0 h1:nWVM7aq+Il2ABxwiCizrVDSlmDcshi9llbaFbC0ji/Q= 245 + sigs.k8s.io/controller-runtime v0.19.0/go.mod h1:iRmWllt8IlaLjvTTDLhRBXIEtkCK6hwVBJJsYS9Ajf4= 190 246 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= 191 247 sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= 192 248 sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
+1 -1
hack/boilerplate.go.txt
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License.
+5 -5
internal/controller/secretservice_controller.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License. ··· 43 43 Scheme *runtime.Scheme 44 44 } 45 45 46 - //+kubebuilder:rbac:groups=apps.j5t.io,resources=secretservices,verbs=get;list;watch;create;update;patch;delete 47 - //+kubebuilder:rbac:groups=apps.j5t.io,resources=secretservices/status,verbs=get;update;patch 48 - //+kubebuilder:rbac:groups=apps.j5t.io,resources=secretservices/finalizers,verbs=update 46 + // +kubebuilder:rbac:groups=apps.j5t.io,resources=secretservices,verbs=get;list;watch;create;update;patch;delete 47 + // +kubebuilder:rbac:groups=apps.j5t.io,resources=secretservices/status,verbs=get;update;patch 48 + // +kubebuilder:rbac:groups=apps.j5t.io,resources=secretservices/finalizers,verbs=update 49 49 50 50 // Reconcile is part of the main kubernetes reconciliation loop which aims to 51 51 // move the current state of the cluster closer to the desired state. ··· 55 55 // the user. 56 56 // 57 57 // For more details, check Reconcile and its Result here: 58 - // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.17.3/pkg/reconcile 58 + // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.19.0/pkg/reconcile 59 59 func (r *SecretServiceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { 60 60 logger := log.FromContext(ctx) 61 61
+1 -1
internal/controller/secretservice_controller_test.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License.
+10 -4
internal/controller/suite_test.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License. ··· 17 17 package controller 18 18 19 19 import ( 20 + "context" 20 21 "fmt" 21 22 "path/filepath" 22 23 "runtime" ··· 33 34 "sigs.k8s.io/controller-runtime/pkg/log/zap" 34 35 35 36 appsv1 "github.com/evanjarrett/secret-service-operator/api/v1" 36 - //+kubebuilder:scaffold:imports 37 + // +kubebuilder:scaffold:imports 37 38 ) 38 39 39 40 // These tests use Ginkgo (BDD-style Go testing framework). Refer to ··· 42 43 var cfg *rest.Config 43 44 var k8sClient client.Client 44 45 var testEnv *envtest.Environment 46 + var ctx context.Context 47 + var cancel context.CancelFunc 45 48 46 49 func TestControllers(t *testing.T) { 47 50 RegisterFailHandler(Fail) ··· 52 55 var _ = BeforeSuite(func() { 53 56 logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) 54 57 58 + ctx, cancel = context.WithCancel(context.TODO()) 59 + 55 60 By("bootstrapping test environment") 56 61 testEnv = &envtest.Environment{ 57 62 CRDDirectoryPaths: []string{filepath.Join("..", "..", "config", "crd", "bases")}, ··· 63 68 // Note that you must have the required binaries setup under the bin directory to perform 64 69 // the tests directly. When we run make test it will be setup and used automatically. 65 70 BinaryAssetsDirectory: filepath.Join("..", "..", "bin", "k8s", 66 - fmt.Sprintf("1.29.0-%s-%s", runtime.GOOS, runtime.GOARCH)), 71 + fmt.Sprintf("1.31.0-%s-%s", runtime.GOOS, runtime.GOARCH)), 67 72 } 68 73 69 74 var err error ··· 75 80 err = appsv1.AddToScheme(scheme.Scheme) 76 81 Expect(err).NotTo(HaveOccurred()) 77 82 78 - //+kubebuilder:scaffold:scheme 83 + // +kubebuilder:scaffold:scheme 79 84 80 85 k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme}) 81 86 Expect(err).NotTo(HaveOccurred()) ··· 85 90 86 91 var _ = AfterSuite(func() { 87 92 By("tearing down the test environment") 93 + cancel() 88 94 err := testEnv.Stop() 89 95 Expect(err).NotTo(HaveOccurred()) 90 96 })
+2 -2
test/e2e/e2e_suite_test.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License. ··· 27 27 // Run e2e tests using the Ginkgo runner. 28 28 func TestE2E(t *testing.T) { 29 29 RegisterFailHandler(Fail) 30 - fmt.Fprintf(GinkgoWriter, "Starting secret-service-operator suite\n") 30 + _, _ = fmt.Fprintf(GinkgoWriter, "Starting secret-service-operator suite\n") 31 31 RunSpecs(t, "e2e suite") 32 32 }
+1 -1
test/e2e/e2e_test.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License.
+5 -5
test/utils/utils.go
··· 1 1 /* 2 - Copyright 2024. 2 + Copyright 2025. 3 3 4 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 5 you may not use this file except in compliance with the License. ··· 35 35 ) 36 36 37 37 func warnError(err error) { 38 - fmt.Fprintf(GinkgoWriter, "warning: %v\n", err) 38 + _, _ = fmt.Fprintf(GinkgoWriter, "warning: %v\n", err) 39 39 } 40 40 41 41 // InstallPrometheusOperator installs the prometheus Operator to be used to export the enabled metrics. ··· 52 52 cmd.Dir = dir 53 53 54 54 if err := os.Chdir(cmd.Dir); err != nil { 55 - fmt.Fprintf(GinkgoWriter, "chdir dir: %s\n", err) 55 + _, _ = fmt.Fprintf(GinkgoWriter, "chdir dir: %s\n", err) 56 56 } 57 57 58 58 cmd.Env = append(os.Environ(), "GO111MODULE=on") 59 59 command := strings.Join(cmd.Args, " ") 60 - fmt.Fprintf(GinkgoWriter, "running: %s\n", command) 60 + _, _ = fmt.Fprintf(GinkgoWriter, "running: %s\n", command) 61 61 output, err := cmd.CombinedOutput() 62 62 if err != nil { 63 63 return output, fmt.Errorf("%s failed with error: (%v) %s", command, err, string(output)) ··· 103 103 return err 104 104 } 105 105 106 - // LoadImageToKindCluster loads a local docker image to the kind cluster 106 + // LoadImageToKindClusterWithName loads a local docker image to the kind cluster 107 107 func LoadImageToKindClusterWithName(name string) error { 108 108 cluster := "kind" 109 109 if v, ok := os.LookupEnv("KIND_CLUSTER"); ok {