From 1186581f3b0a4d876b51030169e9685e5832d1de Mon Sep 17 00:00:00 2001 From: Alex Jones Date: Sun, 23 Apr 2023 17:38:07 +0100 Subject: [PATCH] feat: first Signed-off-by: Alex Jones --- .dockerignore | 4 + .gitignore | 27 + Dockerfile | 33 + LICENSE | 6 + Makefile | 157 +++++ PROJECT | 28 + README.md | 108 +++ api/v1alpha1/groupversion_info.go | 36 + api/v1alpha1/k8sgpt_types.go | 70 ++ api/v1alpha1/result_types.go | 73 ++ api/v1alpha1/zz_generated.deepcopy.go | 262 +++++++ config/crd/bases/core.k8sgpt.ai_k8sgpts.yaml | 63 ++ config/crd/bases/core.k8sgpt.ai_results.yaml | 78 +++ config/crd/kustomization.yaml | 24 + config/crd/kustomizeconfig.yaml | 19 + .../crd/patches/cainjection_in_k8sgpts.yaml | 7 + .../crd/patches/cainjection_in_results.yaml | 7 + config/crd/patches/webhook_in_k8sgpts.yaml | 16 + config/crd/patches/webhook_in_results.yaml | 16 + config/default/kustomization.yaml | 72 ++ config/default/manager_auth_proxy_patch.yaml | 55 ++ config/default/manager_config_patch.yaml | 10 + config/manager/kustomization.yaml | 2 + config/manager/manager.yaml | 102 +++ config/prometheus/kustomization.yaml | 2 + config/prometheus/monitor.yaml | 26 + .../rbac/auth_proxy_client_clusterrole.yaml | 16 + config/rbac/auth_proxy_role.yaml | 24 + config/rbac/auth_proxy_role_binding.yaml | 19 + config/rbac/auth_proxy_service.yaml | 21 + config/rbac/k8sgpt_editor_role.yaml | 31 + config/rbac/k8sgpt_viewer_role.yaml | 27 + config/rbac/kustomization.yaml | 18 + config/rbac/leader_election_role.yaml | 44 ++ config/rbac/leader_election_role_binding.yaml | 19 + config/rbac/result_editor_role.yaml | 31 + config/rbac/result_viewer_role.yaml | 27 + config/rbac/role.yaml | 45 ++ config/rbac/role_binding.yaml | 19 + config/rbac/service_account.yaml | 12 + config/samples/core_v1alpha1_k8sgpt.yaml | 21 + controllers/k8sgpt_controller.go | 180 +++++ controllers/suite_test.go | 77 ++ go.mod | 79 +++ go.sum | 662 ++++++++++++++++++ hack/boilerplate.go.txt | 15 + images/1.png | Bin 0 -> 101878 bytes images/banner-black.png | Bin 0 -> 106525 bytes images/banner-white.png | Bin 0 -> 106506 bytes main.go | 116 +++ pkg/client/client.go | 67 ++ pkg/common/types.go | 22 + pkg/resources/k8sgpt.go | 286 ++++++++ pkg/utils/utils.go | 10 + 54 files changed, 3191 insertions(+) create mode 100644 .dockerignore create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 PROJECT create mode 100644 README.md create mode 100644 api/v1alpha1/groupversion_info.go create mode 100644 api/v1alpha1/k8sgpt_types.go create mode 100644 api/v1alpha1/result_types.go create mode 100644 api/v1alpha1/zz_generated.deepcopy.go create mode 100644 config/crd/bases/core.k8sgpt.ai_k8sgpts.yaml create mode 100644 config/crd/bases/core.k8sgpt.ai_results.yaml create mode 100644 config/crd/kustomization.yaml create mode 100644 config/crd/kustomizeconfig.yaml create mode 100644 config/crd/patches/cainjection_in_k8sgpts.yaml create mode 100644 config/crd/patches/cainjection_in_results.yaml create mode 100644 config/crd/patches/webhook_in_k8sgpts.yaml create mode 100644 config/crd/patches/webhook_in_results.yaml create mode 100644 config/default/kustomization.yaml create mode 100644 config/default/manager_auth_proxy_patch.yaml create mode 100644 config/default/manager_config_patch.yaml create mode 100644 config/manager/kustomization.yaml create mode 100644 config/manager/manager.yaml create mode 100644 config/prometheus/kustomization.yaml create mode 100644 config/prometheus/monitor.yaml create mode 100644 config/rbac/auth_proxy_client_clusterrole.yaml create mode 100644 config/rbac/auth_proxy_role.yaml create mode 100644 config/rbac/auth_proxy_role_binding.yaml create mode 100644 config/rbac/auth_proxy_service.yaml create mode 100644 config/rbac/k8sgpt_editor_role.yaml create mode 100644 config/rbac/k8sgpt_viewer_role.yaml create mode 100644 config/rbac/kustomization.yaml create mode 100644 config/rbac/leader_election_role.yaml create mode 100644 config/rbac/leader_election_role_binding.yaml create mode 100644 config/rbac/result_editor_role.yaml create mode 100644 config/rbac/result_viewer_role.yaml create mode 100644 config/rbac/role.yaml create mode 100644 config/rbac/role_binding.yaml create mode 100644 config/rbac/service_account.yaml create mode 100644 config/samples/core_v1alpha1_k8sgpt.yaml create mode 100644 controllers/k8sgpt_controller.go create mode 100644 controllers/suite_test.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 hack/boilerplate.go.txt create mode 100644 images/1.png create mode 100644 images/banner-black.png create mode 100644 images/banner-white.png create mode 100644 main.go create mode 100644 pkg/client/client.go create mode 100644 pkg/common/types.go create mode 100644 pkg/resources/k8sgpt.go create mode 100644 pkg/utils/utils.go diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..0f046820 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,4 @@ +# More info: https://docs.docker.com/engine/reference/builder/#dockerignore-file +# Ignore build and test binaries. +bin/ +testbin/ diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..40b1504b --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +k8sgpt-operator +# Binaries for programs and plugins +.vscode +*.exe +*.exe~ +*.dll +*.so +*.dylib +bin +testbin/* +Dockerfile.cross + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Kubernetes Generated files - skip generated files, except for vendored files + +!vendor/**/zz_generated.* + +# editor and IDE paraphernalia +.idea +*.swp +*.swo +*~ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..8f9cca18 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +# Build the manager binary +FROM golang:1.19 as builder +ARG TARGETOS +ARG TARGETARCH + +WORKDIR /workspace +# Copy the Go Modules manifests +COPY go.mod go.mod +COPY go.sum go.sum +# cache deps before building and copying source so that we don't need to re-download as much +# and so that source changes don't invalidate our downloaded layer +RUN go mod download + +# Copy the go source +COPY main.go main.go +COPY api/ api/ +COPY controllers/ controllers/ + +# Build +# the GOARCH has not a default value to allow the binary be built according to the host where the command +# was called. For example, if we call make docker-build in a local env which has the Apple Silicon M1 SO +# the docker BUILDPLATFORM arg will be linux/arm64 when for Apple x86 it will be linux/amd64. Therefore, +# by leaving it empty we can ensure that the container and binary shipped on it will have the same platform. +RUN CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -a -o manager main.go + +# Use distroless as minimal base image to package the manager binary +# Refer to https://github.com/GoogleContainerTools/distroless for more details +FROM gcr.io/distroless/static:nonroot +WORKDIR / +COPY --from=builder /workspace/manager . +USER 65532:65532 + +ENTRYPOINT ["/manager"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..01ae0757 --- /dev/null +++ b/LICENSE @@ -0,0 +1,6 @@ +Copyright 2023 K8sGPT Contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..ae7e8648 --- /dev/null +++ b/Makefile @@ -0,0 +1,157 @@ + +# Image URL to use all building/pushing image targets +IMG ?= ghcr.io/k8sgpt-ai/k8sgpt:latest +# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. +ENVTEST_K8S_VERSION = 1.26.0 + +# Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) +ifeq (,$(shell go env GOBIN)) +GOBIN=$(shell go env GOPATH)/bin +else +GOBIN=$(shell go env GOBIN) +endif + +# Setting SHELL to bash allows bash commands to be executed by recipes. +# Options are set to exit when a recipe line exits non-zero or a piped command fails. +SHELL = /usr/bin/env bash -o pipefail +.SHELLFLAGS = -ec + +.PHONY: all +all: build + +##@ General + +# The help target prints out all targets with their descriptions organized +# beneath their categories. The categories are represented by '##@' and the +# target descriptions by '##'. The awk commands is responsible for reading the +# entire set of makefiles included in this invocation, looking for lines of the +# file as xyz: ## something, and then pretty-format the target and help. Then, +# if there's a line with ##@ something, that gets pretty-printed as a category. +# More info on the usage of ANSI control characters for terminal formatting: +# https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters +# More info on the awk command: +# http://linuxcommand.org/lc3_adv_awk.php + +.PHONY: help +help: ## Display this help. + @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) + +##@ Development + +.PHONY: manifests +manifests: controller-gen ## Generate WebhookConfiguration, ClusterRole and CustomResourceDefinition objects. + $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths="./..." output:crd:artifacts:config=config/crd/bases + +.PHONY: generate +generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations. + $(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..." + +.PHONY: fmt +fmt: ## Run go fmt against code. + go fmt ./... + +.PHONY: vet +vet: ## Run go vet against code. + go vet ./... + +.PHONY: test +test: manifests generate fmt vet envtest ## Run tests. + KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test ./... -coverprofile cover.out + +##@ Build + +.PHONY: build +build: manifests generate fmt vet ## Build manager binary. + go build -o bin/manager main.go + +.PHONY: run +run: manifests generate fmt vet ## Run a controller from your host. + go run ./main.go + +# If you wish built the manager image targeting other platforms you can use the --platform flag. +# (i.e. docker build --platform linux/arm64 ). However, you must enable docker buildKit for it. +# More info: https://docs.docker.com/develop/develop-images/build_enhancements/ +.PHONY: docker-build +docker-build: test ## Build docker image with the manager. + docker build -t ${IMG} . + +.PHONY: docker-push +docker-push: ## Push docker image with the manager. + docker push ${IMG} + +# PLATFORMS defines the target platforms for the manager image be build to provide support to multiple +# architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to: +# - able to use docker buildx . More info: https://docs.docker.com/build/buildx/ +# - have enable BuildKit, More info: https://docs.docker.com/develop/develop-images/build_enhancements/ +# - be able to push the image for your registry (i.e. if you do not inform a valid value via IMG=> then the export will fail) +# To properly provided solutions that supports more than one platform you should use this option. +PLATFORMS ?= linux/arm64,linux/amd64,linux/s390x,linux/ppc64le +.PHONY: docker-buildx +docker-buildx: test ## Build and push docker image for the manager for cross-platform support + # copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile + sed -e '1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t' -e ' 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/' Dockerfile > Dockerfile.cross + - docker buildx create --name project-v3-builder + docker buildx use project-v3-builder + - docker buildx build --push --platform=$(PLATFORMS) --tag ${IMG} -f Dockerfile.cross . + - docker buildx rm project-v3-builder + rm Dockerfile.cross + +##@ Deployment + +ifndef ignore-not-found + ignore-not-found = false +endif + +.PHONY: install +install: manifests kustomize ## Install CRDs into the K8s cluster specified in ~/.kube/config. + $(KUSTOMIZE) build config/crd | kubectl apply -f - + +.PHONY: uninstall +uninstall: manifests kustomize ## Uninstall CRDs from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. + $(KUSTOMIZE) build config/crd | kubectl delete --ignore-not-found=$(ignore-not-found) -f - + +.PHONY: deploy +deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config. + cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG} + $(KUSTOMIZE) build config/default | kubectl apply -f - + +.PHONY: undeploy +undeploy: ## Undeploy controller from the K8s cluster specified in ~/.kube/config. Call with ignore-not-found=true to ignore resource not found errors during deletion. + $(KUSTOMIZE) build config/default | kubectl delete --ignore-not-found=$(ignore-not-found) -f - + +##@ Build Dependencies + +## Location to install dependencies to +LOCALBIN ?= $(shell pwd)/bin +$(LOCALBIN): + mkdir -p $(LOCALBIN) + +## Tool Binaries +KUSTOMIZE ?= $(LOCALBIN)/kustomize +CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen +ENVTEST ?= $(LOCALBIN)/setup-envtest + +## Tool Versions +KUSTOMIZE_VERSION ?= v3.8.7 +CONTROLLER_TOOLS_VERSION ?= v0.11.1 + +KUSTOMIZE_INSTALL_SCRIPT ?= "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" +.PHONY: kustomize +kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading. +$(KUSTOMIZE): $(LOCALBIN) + @if test -x $(LOCALBIN)/kustomize && ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then \ + echo "$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing."; \ + rm -rf $(LOCALBIN)/kustomize; \ + fi + test -s $(LOCALBIN)/kustomize || { curl -Ss $(KUSTOMIZE_INSTALL_SCRIPT) | bash -s -- $(subst v,,$(KUSTOMIZE_VERSION)) $(LOCALBIN); } + +.PHONY: controller-gen +controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten. +$(CONTROLLER_GEN): $(LOCALBIN) + test -s $(LOCALBIN)/controller-gen && $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \ + GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION) + +.PHONY: envtest +envtest: $(ENVTEST) ## Download envtest-setup locally if necessary. +$(ENVTEST): $(LOCALBIN) + test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest diff --git a/PROJECT b/PROJECT new file mode 100644 index 00000000..5fef9578 --- /dev/null +++ b/PROJECT @@ -0,0 +1,28 @@ +# Code generated by tool. DO NOT EDIT. +# This file is used to track the info used to scaffold your project +# and allow the plugins properly work. +# More info: https://book.kubebuilder.io/reference/project-config.html +domain: k8sgpt.ai +layout: +- go.kubebuilder.io/v3 +projectName: k8sgpt-operator +repo: github.com/k8sgpt-ai/k8sgpt-operator +resources: +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: k8sgpt.ai + group: core + kind: K8sGPT + path: github.com/k8sgpt-ai/k8sgpt-operator/api/v1alpha1 + version: v1alpha1 +- api: + crdVersion: v1 + namespaced: true + domain: k8sgpt.ai + group: core + kind: Result + path: github.com/k8sgpt-ai/k8sgpt-operator/api/v1alpha1 + version: v1alpha1 +version: "3" diff --git a/README.md b/README.md new file mode 100644 index 00000000..33df2136 --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ + + + Text changing depending on mode. Light: 'So light!' Dark: 'So dark!' + +
+
+ +This Operator is designed to enable K8sGPT within a Kubernetes cluster. +It will allow you to create a custom resource that defines the behaviour and scope of a managed K8sGPT workload. Analysis and outputs will also be configurable to enable integration into existing workflows. + + +## Architecture + + + +## Run the example +1. Install custom resources: + +```sh +make install +``` + +2. Build and push your image to the location specified by `IMG`: + +```sh +make docker-build docker-push IMG=/k8sgpt-operator:tag +``` + +3. Deploy the controller to the cluster with the image specified by `IMG`: + +```sh +make deploy IMG=/k8sgpt-operator:tag +``` + +4. Create secret: +```sh +kubectl create secret generic k8sgpt-sample-secret --from-literal=openai-api-key=$OPENAI_TOKEN -n default +``` + +5. Apply the K8sGPT configuration object: +```sh +kubectl apply -f config/samples/core_v1alpha1_k8sgpt.yaml +``` +### Uninstall CRDs +To delete the CRDs from the cluster: + +```sh +make uninstall +``` + +### Undeploy controller +UnDeploy the controller from the cluster: + +```sh +make undeploy +``` + +## Contributing +// TODO(user): Add detailed information on how you would like others to contribute to this project + +### How it works +This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/). + +It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/), +which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster. + +### Attach from local +1. Install the CRDs into the cluster: + +```sh +make install +``` + +2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running): + +```sh +make run +``` + +**NOTE:** You can also run this in one step by running: `make install run` + +### Modifying the API definitions +If you are editing the API definitions, generate the manifests such as CRs or CRDs using: + +```sh +make manifests +``` + +**NOTE:** Run `make --help` for more information on all potential `make` targets + +More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) + +## License + +Copyright 2023 K8sGPT Contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + diff --git a/api/v1alpha1/groupversion_info.go b/api/v1alpha1/groupversion_info.go new file mode 100644 index 00000000..553eeddb --- /dev/null +++ b/api/v1alpha1/groupversion_info.go @@ -0,0 +1,36 @@ +/* +Copyright 2023 K8sGPT Contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Package v1alpha1 contains API Schema definitions for the core v1alpha1 API group +// +kubebuilder:object:generate=true +// +groupName=core.k8sgpt.ai +package v1alpha1 + +import ( + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/scheme" +) + +var ( + // GroupVersion is group version used to register these objects + GroupVersion = schema.GroupVersion{Group: "core.k8sgpt.ai", Version: "v1alpha1"} + + // SchemeBuilder is used to add go types to the GroupVersionKind scheme + SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} + + // AddToScheme adds the types in this group-version to the given scheme. + AddToScheme = SchemeBuilder.AddToScheme +) diff --git a/api/v1alpha1/k8sgpt_types.go b/api/v1alpha1/k8sgpt_types.go new file mode 100644 index 00000000..75d688fd --- /dev/null +++ b/api/v1alpha1/k8sgpt_types.go @@ -0,0 +1,70 @@ +/* +Copyright 2023 K8sGPT Contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +type SecretRef struct { + Name string `json:"name,omitempty"` + Key string `json:"key,omitempty"` +} + +// K8sGPTSpec defines the desired state of K8sGPT +type K8sGPTSpec struct { + Backend string `json:"backend,omitempty"` + Model string `json:"model,omitempty"` + Secret SecretRef `json:"secret,omitempty"` + Namespace string `json:"namespace,omitempty"` + Version string `json:"version,omitempty"` + EnableAI bool `json:"enableAI,omitempty"` +} + +// K8sGPTStatus defines the observed state of K8sGPT +type K8sGPTStatus struct { + // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster + // Important: Run "make" to regenerate code after modifying this file +} + +//+kubebuilder:object:root=true +//+kubebuilder:subresource:status + +// K8sGPT is the Schema for the k8sgpts API +type K8sGPT struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec K8sGPTSpec `json:"spec,omitempty"` + Status K8sGPTStatus `json:"status,omitempty"` +} + +//+kubebuilder:object:root=true + +// K8sGPTList contains a list of K8sGPT +type K8sGPTList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []K8sGPT `json:"items"` +} + +func init() { + SchemeBuilder.Register(&K8sGPT{}, &K8sGPTList{}) +} diff --git a/api/v1alpha1/result_types.go b/api/v1alpha1/result_types.go new file mode 100644 index 00000000..8d17a526 --- /dev/null +++ b/api/v1alpha1/result_types.go @@ -0,0 +1,73 @@ +/* +Copyright 2023 K8sGPT Contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type Failure struct { + Text string `json:"text,omitempty"` + Sensitive []Sensitive `json:"sensitive,omitempty"` +} + +type Sensitive struct { + Unmasked string `json:"unmasked,omitempty"` + Masked string `json:"masked,omitempty"` +} + +// ResultSpec defines the desired state of Result +type ResultSpec struct { + // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster + // Important: Run "make" to regenerate code after modifying this file + Kind string `json:"kind"` + Name string `json:"name"` + Error []Failure `json:"error"` + Details string `json:"details"` + ParentObject string `json:"parentObject"` +} + +// ResultStatus defines the observed state of Result +type ResultStatus struct { + // INSERT ADDITIONAL STATUS FIELD - define observed state of cluster + // Important: Run "make" to regenerate code after modifying this file +} + +//+kubebuilder:object:root=true +//+kubebuilder:subresource:status + +// Result is the Schema for the results API +type Result struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec ResultSpec `json:"spec,omitempty"` + Status ResultStatus `json:"status,omitempty"` +} + +//+kubebuilder:object:root=true + +// ResultList contains a list of Result +type ResultList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Result `json:"items"` +} + +func init() { + SchemeBuilder.Register(&Result{}, &ResultList{}) +} diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 00000000..dbab8065 --- /dev/null +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,262 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright 2023 K8sGPT Contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Failure) DeepCopyInto(out *Failure) { + *out = *in + if in.Sensitive != nil { + in, out := &in.Sensitive, &out.Sensitive + *out = make([]Sensitive, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Failure. +func (in *Failure) DeepCopy() *Failure { + if in == nil { + return nil + } + out := new(Failure) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *K8sGPT) DeepCopyInto(out *K8sGPT) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + out.Spec = in.Spec + out.Status = in.Status +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new K8sGPT. +func (in *K8sGPT) DeepCopy() *K8sGPT { + if in == nil { + return nil + } + out := new(K8sGPT) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *K8sGPT) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *K8sGPTList) DeepCopyInto(out *K8sGPTList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]K8sGPT, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new K8sGPTList. +func (in *K8sGPTList) DeepCopy() *K8sGPTList { + if in == nil { + return nil + } + out := new(K8sGPTList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *K8sGPTList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *K8sGPTSpec) DeepCopyInto(out *K8sGPTSpec) { + *out = *in + out.Secret = in.Secret +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new K8sGPTSpec. +func (in *K8sGPTSpec) DeepCopy() *K8sGPTSpec { + if in == nil { + return nil + } + out := new(K8sGPTSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *K8sGPTStatus) DeepCopyInto(out *K8sGPTStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new K8sGPTStatus. +func (in *K8sGPTStatus) DeepCopy() *K8sGPTStatus { + if in == nil { + return nil + } + out := new(K8sGPTStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Result) DeepCopyInto(out *Result) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + out.Status = in.Status +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Result. +func (in *Result) DeepCopy() *Result { + if in == nil { + return nil + } + out := new(Result) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Result) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResultList) DeepCopyInto(out *ResultList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Result, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResultList. +func (in *ResultList) DeepCopy() *ResultList { + if in == nil { + return nil + } + out := new(ResultList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ResultList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResultSpec) DeepCopyInto(out *ResultSpec) { + *out = *in + if in.Error != nil { + in, out := &in.Error, &out.Error + *out = make([]Failure, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResultSpec. +func (in *ResultSpec) DeepCopy() *ResultSpec { + if in == nil { + return nil + } + out := new(ResultSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResultStatus) DeepCopyInto(out *ResultStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResultStatus. +func (in *ResultStatus) DeepCopy() *ResultStatus { + if in == nil { + return nil + } + out := new(ResultStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SecretRef) DeepCopyInto(out *SecretRef) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretRef. +func (in *SecretRef) DeepCopy() *SecretRef { + if in == nil { + return nil + } + out := new(SecretRef) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Sensitive) DeepCopyInto(out *Sensitive) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Sensitive. +func (in *Sensitive) DeepCopy() *Sensitive { + if in == nil { + return nil + } + out := new(Sensitive) + in.DeepCopyInto(out) + return out +} diff --git a/config/crd/bases/core.k8sgpt.ai_k8sgpts.yaml b/config/crd/bases/core.k8sgpt.ai_k8sgpts.yaml new file mode 100644 index 00000000..8cac2c6d --- /dev/null +++ b/config/crd/bases/core.k8sgpt.ai_k8sgpts.yaml @@ -0,0 +1,63 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + creationTimestamp: null + name: k8sgpts.core.k8sgpt.ai +spec: + group: core.k8sgpt.ai + names: + kind: K8sGPT + listKind: K8sGPTList + plural: k8sgpts + singular: k8sgpt + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: K8sGPT is the Schema for the k8sgpts API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: K8sGPTSpec defines the desired state of K8sGPT + properties: + backend: + type: string + enableAI: + type: boolean + model: + type: string + namespace: + type: string + secret: + properties: + key: + type: string + name: + type: string + type: object + version: + type: string + type: object + status: + description: K8sGPTStatus defines the observed state of K8sGPT + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/config/crd/bases/core.k8sgpt.ai_results.yaml b/config/crd/bases/core.k8sgpt.ai_results.yaml new file mode 100644 index 00000000..4fc6d008 --- /dev/null +++ b/config/crd/bases/core.k8sgpt.ai_results.yaml @@ -0,0 +1,78 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.1 + creationTimestamp: null + name: results.core.k8sgpt.ai +spec: + group: core.k8sgpt.ai + names: + kind: Result + listKind: ResultList + plural: results + singular: result + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Result is the Schema for the results API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: ResultSpec defines the desired state of Result + properties: + details: + type: string + error: + items: + properties: + sensitive: + items: + properties: + masked: + type: string + unmasked: + type: string + type: object + type: array + text: + type: string + type: object + type: array + kind: + description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster + Important: Run "make" to regenerate code after modifying this file' + type: string + name: + type: string + parentObject: + type: string + required: + - details + - error + - kind + - name + - parentObject + type: object + status: + description: ResultStatus defines the observed state of Result + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml new file mode 100644 index 00000000..acb0216a --- /dev/null +++ b/config/crd/kustomization.yaml @@ -0,0 +1,24 @@ +# This kustomization.yaml is not intended to be run by itself, +# since it depends on service name and namespace that are out of this kustomize package. +# It should be run by config/default +resources: +- bases/core.k8sgpt.ai_k8sgpts.yaml +- bases/core.k8sgpt.ai_results.yaml +#+kubebuilder:scaffold:crdkustomizeresource + +patchesStrategicMerge: +# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix. +# patches here are for enabling the conversion webhook for each CRD +#- patches/webhook_in_k8sgpts.yaml +#- patches/webhook_in_results.yaml +#+kubebuilder:scaffold:crdkustomizewebhookpatch + +# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix. +# patches here are for enabling the CA injection for each CRD +#- patches/cainjection_in_k8sgpts.yaml +#- patches/cainjection_in_results.yaml +#+kubebuilder:scaffold:crdkustomizecainjectionpatch + +# the following config is for teaching kustomize how to do kustomization for CRDs. +configurations: +- kustomizeconfig.yaml diff --git a/config/crd/kustomizeconfig.yaml b/config/crd/kustomizeconfig.yaml new file mode 100644 index 00000000..ec5c150a --- /dev/null +++ b/config/crd/kustomizeconfig.yaml @@ -0,0 +1,19 @@ +# This file is for teaching kustomize how to substitute name and namespace reference in CRD +nameReference: +- kind: Service + version: v1 + fieldSpecs: + - kind: CustomResourceDefinition + version: v1 + group: apiextensions.k8s.io + path: spec/conversion/webhook/clientConfig/service/name + +namespace: +- kind: CustomResourceDefinition + version: v1 + group: apiextensions.k8s.io + path: spec/conversion/webhook/clientConfig/service/namespace + create: false + +varReference: +- path: metadata/annotations diff --git a/config/crd/patches/cainjection_in_k8sgpts.yaml b/config/crd/patches/cainjection_in_k8sgpts.yaml new file mode 100644 index 00000000..d04bd479 --- /dev/null +++ b/config/crd/patches/cainjection_in_k8sgpts.yaml @@ -0,0 +1,7 @@ +# The following patch adds a directive for certmanager to inject CA into the CRD +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) + name: k8sgpts.core.k8sgpt.ai diff --git a/config/crd/patches/cainjection_in_results.yaml b/config/crd/patches/cainjection_in_results.yaml new file mode 100644 index 00000000..ddd2d993 --- /dev/null +++ b/config/crd/patches/cainjection_in_results.yaml @@ -0,0 +1,7 @@ +# The following patch adds a directive for certmanager to inject CA into the CRD +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) + name: results.core.k8sgpt.ai diff --git a/config/crd/patches/webhook_in_k8sgpts.yaml b/config/crd/patches/webhook_in_k8sgpts.yaml new file mode 100644 index 00000000..01d8e1c5 --- /dev/null +++ b/config/crd/patches/webhook_in_k8sgpts.yaml @@ -0,0 +1,16 @@ +# The following patch enables a conversion webhook for the CRD +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: k8sgpts.core.k8sgpt.ai +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + service: + namespace: system + name: webhook-service + path: /convert + conversionReviewVersions: + - v1 diff --git a/config/crd/patches/webhook_in_results.yaml b/config/crd/patches/webhook_in_results.yaml new file mode 100644 index 00000000..6f6f6664 --- /dev/null +++ b/config/crd/patches/webhook_in_results.yaml @@ -0,0 +1,16 @@ +# The following patch enables a conversion webhook for the CRD +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: results.core.k8sgpt.ai +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + service: + namespace: system + name: webhook-service + path: /convert + conversionReviewVersions: + - v1 diff --git a/config/default/kustomization.yaml b/config/default/kustomization.yaml new file mode 100644 index 00000000..0bcf4bde --- /dev/null +++ b/config/default/kustomization.yaml @@ -0,0 +1,72 @@ +# Adds namespace to all resources. +namespace: k8sgpt-operator-system + +# Value of this field is prepended to the +# names of all resources, e.g. a deployment named +# "wordpress" becomes "alices-wordpress". +# Note that it should also match with the prefix (text before '-') of the namespace +# field above. +namePrefix: k8sgpt-operator- + +# Labels to add to all resources and selectors. +#commonLabels: +# someName: someValue + +bases: +- ../crd +- ../rbac +- ../manager +# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in +# crd/kustomization.yaml +#- ../webhook +# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required. +#- ../certmanager +# [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'. +#- ../prometheus + +patchesStrategicMerge: +# Protect the /metrics endpoint by putting it behind auth. +# If you want your controller-manager to expose the /metrics +# endpoint w/o any authn/z, please comment the following line. +- manager_auth_proxy_patch.yaml + + + +# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in +# crd/kustomization.yaml +#- manager_webhook_patch.yaml + +# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. +# Uncomment 'CERTMANAGER' sections in crd/kustomization.yaml to enable the CA injection in the admission webhooks. +# 'CERTMANAGER' needs to be enabled to use ca injection +#- webhookcainjection_patch.yaml + +# the following config is for teaching kustomize how to do var substitution +vars: +# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER' prefix. +#- name: CERTIFICATE_NAMESPACE # namespace of the certificate CR +# objref: +# kind: Certificate +# group: cert-manager.io +# version: v1 +# name: serving-cert # this name should match the one in certificate.yaml +# fieldref: +# fieldpath: metadata.namespace +#- name: CERTIFICATE_NAME +# objref: +# kind: Certificate +# group: cert-manager.io +# version: v1 +# name: serving-cert # this name should match the one in certificate.yaml +#- name: SERVICE_NAMESPACE # namespace of the service +# objref: +# kind: Service +# version: v1 +# name: webhook-service +# fieldref: +# fieldpath: metadata.namespace +#- name: SERVICE_NAME +# objref: +# kind: Service +# version: v1 +# name: webhook-service diff --git a/config/default/manager_auth_proxy_patch.yaml b/config/default/manager_auth_proxy_patch.yaml new file mode 100644 index 00000000..b7512661 --- /dev/null +++ b/config/default/manager_auth_proxy_patch.yaml @@ -0,0 +1,55 @@ +# This patch inject a sidecar container which is a HTTP proxy for the +# controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews. +apiVersion: apps/v1 +kind: Deployment +metadata: + name: controller-manager + namespace: system +spec: + template: + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/arch + operator: In + values: + - amd64 + - arm64 + - ppc64le + - s390x + - key: kubernetes.io/os + operator: In + values: + - linux + containers: + - name: kube-rbac-proxy + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - "ALL" + image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 + args: + - "--secure-listen-address=0.0.0.0:8443" + - "--upstream=http://127.0.0.1:8080/" + - "--logtostderr=true" + - "--v=0" + ports: + - containerPort: 8443 + protocol: TCP + name: https + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi + - name: manager + args: + - "--health-probe-bind-address=:8081" + - "--metrics-bind-address=127.0.0.1:8080" + - "--leader-elect" diff --git a/config/default/manager_config_patch.yaml b/config/default/manager_config_patch.yaml new file mode 100644 index 00000000..f6f58916 --- /dev/null +++ b/config/default/manager_config_patch.yaml @@ -0,0 +1,10 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: controller-manager + namespace: system +spec: + template: + spec: + containers: + - name: manager diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml new file mode 100644 index 00000000..5c5f0b84 --- /dev/null +++ b/config/manager/kustomization.yaml @@ -0,0 +1,2 @@ +resources: +- manager.yaml diff --git a/config/manager/manager.yaml b/config/manager/manager.yaml new file mode 100644 index 00000000..dceaf31f --- /dev/null +++ b/config/manager/manager.yaml @@ -0,0 +1,102 @@ +apiVersion: v1 +kind: Namespace +metadata: + labels: + control-plane: controller-manager + app.kubernetes.io/name: namespace + app.kubernetes.io/instance: system + app.kubernetes.io/component: manager + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: system +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: controller-manager + namespace: system + labels: + control-plane: controller-manager + app.kubernetes.io/name: deployment + app.kubernetes.io/instance: controller-manager + app.kubernetes.io/component: manager + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize +spec: + selector: + matchLabels: + control-plane: controller-manager + replicas: 1 + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + spec: + # TODO(user): Uncomment the following code to configure the nodeAffinity expression + # according to the platforms which are supported by your solution. + # It is considered best practice to support multiple architectures. You can + # build your manager image using the makefile target docker-buildx. + # affinity: + # nodeAffinity: + # requiredDuringSchedulingIgnoredDuringExecution: + # nodeSelectorTerms: + # - matchExpressions: + # - key: kubernetes.io/arch + # operator: In + # values: + # - amd64 + # - arm64 + # - ppc64le + # - s390x + # - key: kubernetes.io/os + # operator: In + # values: + # - linux + securityContext: + runAsNonRoot: true + # TODO(user): For common cases that do not require escalating privileges + # it is recommended to ensure that all your Pods/Containers are restrictive. + # More info: https://kubernetes.io/docs/concepts/security/pod-security-standards/#restricted + # Please uncomment the following code if your project does NOT have to work on old Kubernetes + # versions < 1.19 or on vendors versions which do NOT support this field by default (i.e. Openshift < 4.11 ). + # seccompProfile: + # type: RuntimeDefault + containers: + - command: + - /manager + args: + - --leader-elect + image: controller:latest + name: manager + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - "ALL" + livenessProbe: + httpGet: + path: /healthz + port: 8081 + initialDelaySeconds: 15 + periodSeconds: 20 + readinessProbe: + httpGet: + path: /readyz + port: 8081 + initialDelaySeconds: 5 + periodSeconds: 10 + # TODO(user): Configure the resources accordingly based on the project requirements. + # More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 10m + memory: 64Mi + serviceAccountName: controller-manager + terminationGracePeriodSeconds: 10 diff --git a/config/prometheus/kustomization.yaml b/config/prometheus/kustomization.yaml new file mode 100644 index 00000000..ed137168 --- /dev/null +++ b/config/prometheus/kustomization.yaml @@ -0,0 +1,2 @@ +resources: +- monitor.yaml diff --git a/config/prometheus/monitor.yaml b/config/prometheus/monitor.yaml new file mode 100644 index 00000000..871a178a --- /dev/null +++ b/config/prometheus/monitor.yaml @@ -0,0 +1,26 @@ + +# Prometheus Monitor Service (Metrics) +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + labels: + control-plane: controller-manager + app.kubernetes.io/name: servicemonitor + app.kubernetes.io/instance: controller-manager-metrics-monitor + app.kubernetes.io/component: metrics + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: controller-manager-metrics-monitor + namespace: system +spec: + endpoints: + - path: /metrics + port: https + scheme: https + bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token + tlsConfig: + insecureSkipVerify: true + selector: + matchLabels: + control-plane: controller-manager diff --git a/config/rbac/auth_proxy_client_clusterrole.yaml b/config/rbac/auth_proxy_client_clusterrole.yaml new file mode 100644 index 00000000..eae6b739 --- /dev/null +++ b/config/rbac/auth_proxy_client_clusterrole.yaml @@ -0,0 +1,16 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: metrics-reader + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: metrics-reader +rules: +- nonResourceURLs: + - "/metrics" + verbs: + - get diff --git a/config/rbac/auth_proxy_role.yaml b/config/rbac/auth_proxy_role.yaml new file mode 100644 index 00000000..4bc1a6a5 --- /dev/null +++ b/config/rbac/auth_proxy_role.yaml @@ -0,0 +1,24 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: proxy-role + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: proxy-role +rules: +- apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create +- apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create diff --git a/config/rbac/auth_proxy_role_binding.yaml b/config/rbac/auth_proxy_role_binding.yaml new file mode 100644 index 00000000..04e9d911 --- /dev/null +++ b/config/rbac/auth_proxy_role_binding.yaml @@ -0,0 +1,19 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app.kubernetes.io/name: clusterrolebinding + app.kubernetes.io/instance: proxy-rolebinding + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: proxy-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: proxy-role +subjects: +- kind: ServiceAccount + name: controller-manager + namespace: system diff --git a/config/rbac/auth_proxy_service.yaml b/config/rbac/auth_proxy_service.yaml new file mode 100644 index 00000000..7c3e410b --- /dev/null +++ b/config/rbac/auth_proxy_service.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + control-plane: controller-manager + app.kubernetes.io/name: service + app.kubernetes.io/instance: controller-manager-metrics-service + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: controller-manager-metrics-service + namespace: system +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + control-plane: controller-manager diff --git a/config/rbac/k8sgpt_editor_role.yaml b/config/rbac/k8sgpt_editor_role.yaml new file mode 100644 index 00000000..c601d986 --- /dev/null +++ b/config/rbac/k8sgpt_editor_role.yaml @@ -0,0 +1,31 @@ +# permissions for end users to edit k8sgpts. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: k8sgpt-editor-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: k8sgpt-editor-role +rules: +- apiGroups: + - core.k8sgpt.ai + resources: + - k8sgpts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - core.k8sgpt.ai + resources: + - k8sgpts/status + verbs: + - get diff --git a/config/rbac/k8sgpt_viewer_role.yaml b/config/rbac/k8sgpt_viewer_role.yaml new file mode 100644 index 00000000..3ec4a7f7 --- /dev/null +++ b/config/rbac/k8sgpt_viewer_role.yaml @@ -0,0 +1,27 @@ +# permissions for end users to view k8sgpts. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: k8sgpt-viewer-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: k8sgpt-viewer-role +rules: +- apiGroups: + - core.k8sgpt.ai + resources: + - k8sgpts + verbs: + - get + - list + - watch +- apiGroups: + - core.k8sgpt.ai + resources: + - k8sgpts/status + verbs: + - get diff --git a/config/rbac/kustomization.yaml b/config/rbac/kustomization.yaml new file mode 100644 index 00000000..731832a6 --- /dev/null +++ b/config/rbac/kustomization.yaml @@ -0,0 +1,18 @@ +resources: +# All RBAC will be applied under this service account in +# the deployment namespace. You may comment out this resource +# if your manager will use a service account that exists at +# runtime. Be sure to update RoleBinding and ClusterRoleBinding +# subjects if changing service account names. +- service_account.yaml +- role.yaml +- role_binding.yaml +- leader_election_role.yaml +- leader_election_role_binding.yaml +# Comment the following 4 lines if you want to disable +# the auth proxy (https://github.com/brancz/kube-rbac-proxy) +# which protects your /metrics endpoint. +- auth_proxy_service.yaml +- auth_proxy_role.yaml +- auth_proxy_role_binding.yaml +- auth_proxy_client_clusterrole.yaml diff --git a/config/rbac/leader_election_role.yaml b/config/rbac/leader_election_role.yaml new file mode 100644 index 00000000..5278fd75 --- /dev/null +++ b/config/rbac/leader_election_role.yaml @@ -0,0 +1,44 @@ +# permissions to do leader election. +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + labels: + app.kubernetes.io/name: role + app.kubernetes.io/instance: leader-election-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: leader-election-role +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete +- apiGroups: + - "" + resources: + - events + verbs: + - create + - patch diff --git a/config/rbac/leader_election_role_binding.yaml b/config/rbac/leader_election_role_binding.yaml new file mode 100644 index 00000000..8555983b --- /dev/null +++ b/config/rbac/leader_election_role_binding.yaml @@ -0,0 +1,19 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + app.kubernetes.io/name: rolebinding + app.kubernetes.io/instance: leader-election-rolebinding + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: leader-election-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: leader-election-role +subjects: +- kind: ServiceAccount + name: controller-manager + namespace: system diff --git a/config/rbac/result_editor_role.yaml b/config/rbac/result_editor_role.yaml new file mode 100644 index 00000000..f9e4a550 --- /dev/null +++ b/config/rbac/result_editor_role.yaml @@ -0,0 +1,31 @@ +# permissions for end users to edit results. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: result-editor-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: result-editor-role +rules: +- apiGroups: + - core.k8sgpt.ai + resources: + - results + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - core.k8sgpt.ai + resources: + - results/status + verbs: + - get diff --git a/config/rbac/result_viewer_role.yaml b/config/rbac/result_viewer_role.yaml new file mode 100644 index 00000000..a9b8d967 --- /dev/null +++ b/config/rbac/result_viewer_role.yaml @@ -0,0 +1,27 @@ +# permissions for end users to view results. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: result-viewer-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: result-viewer-role +rules: +- apiGroups: + - core.k8sgpt.ai + resources: + - results + verbs: + - get + - list + - watch +- apiGroups: + - core.k8sgpt.ai + resources: + - results/status + verbs: + - get diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml new file mode 100644 index 00000000..fde3f0a2 --- /dev/null +++ b/config/rbac/role.yaml @@ -0,0 +1,45 @@ +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + name: manager-role +rules: +- apiGroups: + - core.k8sgpt.ai + resources: + - k8sgpts + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - core.k8sgpt.ai + resources: + - k8sgpts/finalizers + verbs: + - update +- apiGroups: + - core.k8sgpt.ai + resources: + - k8sgpts/status + verbs: + - get + - patch + - update +- apiGroups: + - core.k8sgpt.ai + resources: + - results + verbs: + - create + - delete + - get + - list + - patch + - update + - watch diff --git a/config/rbac/role_binding.yaml b/config/rbac/role_binding.yaml new file mode 100644 index 00000000..f2199daf --- /dev/null +++ b/config/rbac/role_binding.yaml @@ -0,0 +1,19 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app.kubernetes.io/name: clusterrolebinding + app.kubernetes.io/instance: manager-rolebinding + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: manager-rolebinding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: manager-role +subjects: +- kind: ServiceAccount + name: controller-manager + namespace: system diff --git a/config/rbac/service_account.yaml b/config/rbac/service_account.yaml new file mode 100644 index 00000000..44342a0e --- /dev/null +++ b/config/rbac/service_account.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/name: serviceaccount + app.kubernetes.io/instance: controller-manager + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: k8sgpt-operator + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + name: controller-manager + namespace: system diff --git a/config/samples/core_v1alpha1_k8sgpt.yaml b/config/samples/core_v1alpha1_k8sgpt.yaml new file mode 100644 index 00000000..255bcb3d --- /dev/null +++ b/config/samples/core_v1alpha1_k8sgpt.yaml @@ -0,0 +1,21 @@ +apiVersion: core.k8sgpt.ai/v1alpha1 +kind: K8sGPT +metadata: + labels: + app.kubernetes.io/name: k8sgpt + app.kubernetes.io/instance: k8sgpt-sample + app.kubernetes.io/part-of: k8sgpt-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: k8sgpt-operator + name: k8sgpt-sample +spec: + namespace: default + model: gpt-3.5-turbo + backend: openai + version: v0.2.4 + enableAI: true + secret: + name: k8sgpt-sample-secret + key: openai-api-key + + # TODO(user): Add fields here diff --git a/controllers/k8sgpt_controller.go b/controllers/k8sgpt_controller.go new file mode 100644 index 00000000..46fbc05a --- /dev/null +++ b/controllers/k8sgpt_controller.go @@ -0,0 +1,180 @@ +/* +Copyright 2023 The K8sGPT Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package controllers + +import ( + "context" + "fmt" + "strings" + "time" + + corev1alpha1 "github.com/k8sgpt-ai/k8sgpt-operator/api/v1alpha1" + k8sgptclient "github.com/k8sgpt-ai/k8sgpt-operator/pkg/client" + "github.com/k8sgpt-ai/k8sgpt-operator/pkg/resources" + "github.com/k8sgpt-ai/k8sgpt-operator/pkg/utils" + v1 "k8s.io/api/apps/v1" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + "sigs.k8s.io/controller-runtime/pkg/log" +) + +const ( + FinalizerName = "k8sgpt.ai/finalizer" + ReconcileErrorInterval = 10 * time.Second + ReconcileSuccessInterval = 30 * time.Second +) + +// K8sGPTReconciler reconciles a K8sGPT object +type K8sGPTReconciler struct { + client.Client + Scheme *runtime.Scheme + K8sGPTClient *k8sgptclient.Client +} + +//+kubebuilder:rbac:groups=core.k8sgpt.ai,resources=k8sgpts,verbs=get;list;watch;create;update;patch;delete +//+kubebuilder:rbac:groups=core.k8sgpt.ai,resources=k8sgpts/status,verbs=get;update;patch +//+kubebuilder:rbac:groups=core.k8sgpt.ai,resources=k8sgpts/finalizers,verbs=update +//+kubebuilder:rbac:groups=core.k8sgpt.ai,resources=results,verbs=get;list;watch;create;update;patch;delete + +// Reconcile is part of the main kubernetes reconciliation loop which aims to +// move the current state of the cluster closer to the desired state. +// TODO(user): Modify the Reconcile function to compare the state specified by +// the K8sGPT object against the actual cluster state, and then +// perform operations to make the cluster state reflect the state specified by +// the user. +// +// For more details, check Reconcile and its Result here: +// - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.14.1/pkg/reconcile +func (r *K8sGPTReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { + _ = log.FromContext(ctx) + + // Look up the instance for this reconcile request + k8sgptConfig := &corev1alpha1.K8sGPT{} + err := r.Get(ctx, req.NamespacedName, k8sgptConfig) + if err != nil { + // Error reading the object - requeue the request. + return ctrl.Result{}, client.IgnoreNotFound(err) + } + + // Add a finaliser if there isn't one + if k8sgptConfig.ObjectMeta.DeletionTimestamp.IsZero() { + // The object is not being deleted, so if it does not have our finalizer, + // then lets add the finalizer and update the object. This is equivalent + // registering our finalizer. + if !utils.ContainsString(k8sgptConfig.GetFinalizers(), FinalizerName) { + controllerutil.AddFinalizer(k8sgptConfig, FinalizerName) + if err := r.Update(ctx, k8sgptConfig); err != nil { + return r.finishReconcile(err, false) + } + } + } else { + // The object is being deleted + if utils.ContainsString(k8sgptConfig.GetFinalizers(), FinalizerName) { + + // Delete any external resources associated with the instance + err := resources.Sync(ctx, r.Client, *k8sgptConfig, resources.Destroy) + if err != nil { + return r.finishReconcile(err, false) + } + controllerutil.RemoveFinalizer(k8sgptConfig, FinalizerName) + if err := r.Update(ctx, k8sgptConfig); err != nil { + return r.finishReconcile(err, false) + } + } + // Stop reconciliation as the item is being deleted + return r.finishReconcile(nil, false) + } + + // Check and see if the instance is new or has a K8sGPT deployment in flight + deployment := v1.Deployment{} + err = r.Get(ctx, client.ObjectKey{Namespace: k8sgptConfig.Namespace, + Name: "k8sgpt-deployment"}, &deployment) + if err != nil { + + err = resources.Sync(ctx, r.Client, *k8sgptConfig, resources.Create) + if err != nil { + return r.finishReconcile(err, false) + } + } + + // If the deployment is active, we will query it directly for analysis data + if deployment.Status.ReadyReplicas > 0 { + // Get the K8sGPT client + response, err := r.K8sGPTClient.ProcessAnalysis(deployment, k8sgptConfig) + if err != nil { + return r.finishReconcile(err, false) + } + + // Create results from the analysis data + for _, resultSpec := range response.Results { + + name := strings.ReplaceAll(resultSpec.Name, "-", "") + name = strings.ReplaceAll(name, "/", "") + result := corev1alpha1.Result{ + Spec: resultSpec, + ObjectMeta: metav1.ObjectMeta{ + Name: name, + Namespace: k8sgptConfig.Namespace, + }, + } + err = r.Create(ctx, &result) + if err != nil { + // if the result already exists, we will update it + if errors.IsAlreadyExists(err) { + + result.ResourceVersion = k8sgptConfig.GetResourceVersion() + + err = r.Update(ctx, &result) + if err != nil { + return r.finishReconcile(err, false) + } + } else { + return r.finishReconcile(err, false) + } + } + + } + } + + return r.finishReconcile(nil, false) +} + +// SetupWithManager sets up the controller with the Manager. +func (r *K8sGPTReconciler) SetupWithManager(mgr ctrl.Manager) error { + return ctrl.NewControllerManagedBy(mgr). + For(&corev1alpha1.K8sGPT{}). + Complete(r) +} + +func (r *K8sGPTReconciler) finishReconcile(err error, requeueImmediate bool) (ctrl.Result, error) { + if err != nil { + interval := ReconcileErrorInterval + if requeueImmediate { + interval = 0 + } + fmt.Printf("Finished Reconciling K8sGPT with error: %s\n", err.Error()) + return ctrl.Result{Requeue: true, RequeueAfter: interval}, err + } + interval := ReconcileSuccessInterval + if requeueImmediate { + interval = 0 + } + fmt.Println("Finished Reconciling K8sGPT") + return ctrl.Result{Requeue: true, RequeueAfter: interval}, nil +} diff --git a/controllers/suite_test.go b/controllers/suite_test.go new file mode 100644 index 00000000..619a9b39 --- /dev/null +++ b/controllers/suite_test.go @@ -0,0 +1,77 @@ +/* +Copyright 2023 The K8sGPT Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package controllers + +import ( + "path/filepath" + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "k8s.io/client-go/kubernetes/scheme" + "k8s.io/client-go/rest" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/envtest" + logf "sigs.k8s.io/controller-runtime/pkg/log" + "sigs.k8s.io/controller-runtime/pkg/log/zap" + + corev1alpha1 "github.com/k8sgpt-ai/k8sgpt-operator/api/v1alpha1" + //+kubebuilder:scaffold:imports +) + +// These tests use Ginkgo (BDD-style Go testing framework). Refer to +// http://onsi.github.io/ginkgo/ to learn more about Ginkgo. + +var cfg *rest.Config +var k8sClient client.Client +var testEnv *envtest.Environment + +func TestAPIs(t *testing.T) { + RegisterFailHandler(Fail) + + RunSpecs(t, "Controller Suite") +} + +var _ = BeforeSuite(func() { + logf.SetLogger(zap.New(zap.WriteTo(GinkgoWriter), zap.UseDevMode(true))) + + By("bootstrapping test environment") + testEnv = &envtest.Environment{ + CRDDirectoryPaths: []string{filepath.Join("..", "config", "crd", "bases")}, + ErrorIfCRDPathMissing: true, + } + + var err error + // cfg is defined in this file globally. + cfg, err = testEnv.Start() + Expect(err).NotTo(HaveOccurred()) + Expect(cfg).NotTo(BeNil()) + + err = corev1alpha1.AddToScheme(scheme.Scheme) + 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()) + +}) + +var _ = AfterSuite(func() { + By("tearing down the test environment") + err := testEnv.Stop() + Expect(err).NotTo(HaveOccurred()) +}) diff --git a/go.mod b/go.mod new file mode 100644 index 00000000..ddd8c70e --- /dev/null +++ b/go.mod @@ -0,0 +1,79 @@ +module github.com/k8sgpt-ai/k8sgpt-operator + +go 1.19 + +require ( + github.com/onsi/ginkgo/v2 v2.9.2 + github.com/onsi/gomega v1.27.5 + k8s.io/api v0.26.3 + k8s.io/apimachinery v0.26.3 + k8s.io/client-go v0.26.3 + sigs.k8s.io/controller-runtime v0.14.5 +) + +require ( + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/google/pprof v0.0.0-20220608213341-c488b8fa1db3 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/stretchr/testify v1.8.2 // indirect + golang.org/x/tools v0.7.0 // indirect +) + +require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/emicklei/go-restful/v3 v3.10.2 // indirect + github.com/evanphx/json-patch v5.6.0+incompatible // indirect + github.com/evanphx/json-patch/v5 v5.6.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/zapr v1.2.3 // indirect + github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.3 // indirect + github.com/google/gnostic v0.6.9 // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/gofuzz v1.2.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/imdario/mergo v0.3.15 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/mailru/easyjson v0.7.7 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.37.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + go.uber.org/atomic v1.10.0 // indirect + go.uber.org/multierr v1.10.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/net v0.8.0 // indirect + golang.org/x/oauth2 v0.6.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/term v0.7.0 // indirect + golang.org/x/text v0.9.0 // indirect + golang.org/x/time v0.3.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/protobuf v1.30.0 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/apiextensions-apiserver v0.26.3 // indirect + k8s.io/component-base v0.26.3 // indirect + k8s.io/klog/v2 v2.90.1 // indirect + k8s.io/kube-openapi v0.0.0-20230327201221-f5883ff37f0c // indirect + k8s.io/utils v0.0.0-20230313181309-38a27ef9d749 // indirect + sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000..a9058edc --- /dev/null +++ b/go.sum @@ -0,0 +1,662 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/emicklei/go-restful/v3 v3.10.2 h1:hIovbnmBTLjHXkqEBUz3HGpXZdM7ZrE9fJIZIqlJLqE= +github.com/emicklei/go-restful/v3 v3.10.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= +github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= +github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= +github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= +github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A= +github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= +github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= +github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20220608213341-c488b8fa1db3 h1:mpL/HvfIgIejhVwAfxBQkwEjlhP5o0O9RAeTAjpwzxc= +github.com/google/pprof v0.0.0-20220608213341-c488b8fa1db3/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/gomega v1.27.5 h1:T/X6I0RNFw/kTqgfkZPcQ5KU6vCnWNBGdtrIx2dpGeQ= +github.com/onsi/gomega v1.27.5/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= +gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU= +k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE= +k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE= +k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ= +k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k= +k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= +k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s= +k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ= +k8s.io/component-base v0.26.3 h1:oC0WMK/ggcbGDTkdcqefI4wIZRYdK3JySx9/HADpV0g= +k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E= +k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= +k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20230327201221-f5883ff37f0c h1:EFfsozyzZ/pggw5qNx7ftTVZdp7WZl+3ih89GEjYEK8= +k8s.io/kube-openapi v0.0.0-20230327201221-f5883ff37f0c/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg= +k8s.io/utils v0.0.0-20230313181309-38a27ef9d749 h1:xMMXJlJbsU8w3V5N2FLDQ8YgU8s1EoULdbQBcAeNJkY= +k8s.io/utils v0.0.0-20230313181309-38a27ef9d749/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/controller-runtime v0.14.5 h1:6xaWFqzT5KuAQ9ufgUaj1G/+C4Y1GRkhrxl+BJ9i+5s= +sigs.k8s.io/controller-runtime v0.14.5/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/hack/boilerplate.go.txt b/hack/boilerplate.go.txt new file mode 100644 index 00000000..1d6d206c --- /dev/null +++ b/hack/boilerplate.go.txt @@ -0,0 +1,15 @@ +/* +Copyright 2023 K8sGPT Contributors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ \ No newline at end of file diff --git a/images/1.png b/images/1.png new file mode 100644 index 0000000000000000000000000000000000000000..ddfcb8e9f6e3303ddb7d0e13943bf77dc6737113 GIT binary patch literal 101878 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�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 literal 0 HcmV?d00001 diff --git a/main.go b/main.go new file mode 100644 index 00000000..7755c7f1 --- /dev/null +++ b/main.go @@ -0,0 +1,116 @@ +/* +Copyright 2023 The K8sGPT Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "flag" + "os" + + // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.) + // to ensure that exec-entrypoint and run can make use of them. + _ "k8s.io/client-go/plugin/pkg/client/auth" + + corev1alpha1 "github.com/k8sgpt-ai/k8sgpt-operator/api/v1alpha1" + "github.com/k8sgpt-ai/k8sgpt-operator/controllers" + k8sgptClient "github.com/k8sgpt-ai/k8sgpt-operator/pkg/client" + "k8s.io/apimachinery/pkg/runtime" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + clientgoscheme "k8s.io/client-go/kubernetes/scheme" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/healthz" + "sigs.k8s.io/controller-runtime/pkg/log/zap" + //+kubebuilder:scaffold:imports +) + +var ( + scheme = runtime.NewScheme() + setupLog = ctrl.Log.WithName("setup") +) + +func init() { + utilruntime.Must(clientgoscheme.AddToScheme(scheme)) + + utilruntime.Must(corev1alpha1.AddToScheme(scheme)) + //+kubebuilder:scaffold:scheme +} + +func main() { + var metricsAddr string + var enableLeaderElection bool + var probeAddr string + flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.") + flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.") + flag.BoolVar(&enableLeaderElection, "leader-elect", false, + "Enable leader election for controller manager. "+ + "Enabling this will ensure there is only one active controller manager.") + opts := zap.Options{ + Development: true, + } + opts.BindFlags(flag.CommandLine) + flag.Parse() + + ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts))) + + mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ + Scheme: scheme, + MetricsBindAddress: metricsAddr, + Port: 9443, + HealthProbeBindAddress: probeAddr, + LeaderElection: enableLeaderElection, + LeaderElectionID: "ea9c19f7.k8sgpt.ai", + // LeaderElectionReleaseOnCancel defines if the leader should step down voluntarily + // when the Manager ends. This requires the binary to immediately end when the + // Manager is stopped, otherwise, this setting is unsafe. Setting this significantly + // speeds up voluntary leader transitions as the new leader don't have to wait + // LeaseDuration time first. + // + // In the default scaffold provided, the program ends immediately after + // the manager stops, so would be fine to enable this option. However, + // if you are doing or is intended to do any operation such as perform cleanups + // after the manager stops then its usage might be unsafe. + // LeaderElectionReleaseOnCancel: true, + }) + if err != nil { + setupLog.Error(err, "unable to start manager") + os.Exit(1) + } + + // New K8sGPT in cluster Client + k8sgptClient := k8sgptClient.NewClient() + + if err = (&controllers.K8sGPTReconciler{ + Client: mgr.GetClient(), + Scheme: mgr.GetScheme(), + K8sGPTClient: k8sgptClient, + }).SetupWithManager(mgr); err != nil { + setupLog.Error(err, "unable to create controller", "controller", "K8sGPT") + os.Exit(1) + } + //+kubebuilder:scaffold:builder + + if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil { + setupLog.Error(err, "unable to set up health check") + os.Exit(1) + } + if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil { + setupLog.Error(err, "unable to set up ready check") + os.Exit(1) + } + + setupLog.Info("starting manager") + if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil { + setupLog.Error(err, "problem running manager") + os.Exit(1) + } +} diff --git a/pkg/client/client.go b/pkg/client/client.go new file mode 100644 index 00000000..6767cf66 --- /dev/null +++ b/pkg/client/client.go @@ -0,0 +1,67 @@ +/* +Copyright 2023 The K8sGPT Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package client + +import ( + "encoding/json" + "fmt" + "net/http" + "os" + "time" + + "github.com/k8sgpt-ai/k8sgpt-operator/api/v1alpha1" + "github.com/k8sgpt-ai/k8sgpt-operator/pkg/common" + v1 "k8s.io/api/apps/v1" +) + +// This is the client for communicating with the K8sGPT in cluster deployment +type Client struct { + httpClient *http.Client +} + +func NewClient() *Client { + return &Client{ + httpClient: &http.Client{Timeout: 120 * time.Second}, + } +} + +func (c *Client) ProcessAnalysis(deployment v1.Deployment, config *v1alpha1.K8sGPT) (*common.K8sGPTReponse, error) { + + // Construct the request + // .:8080/analyze + var url string + if os.Getenv("LOCAL_MODE") != "" { + url = "http://localhost:8080/analyze" + } else { + url = fmt.Sprintf("http://%s.%s:8080/analyze", deployment.Name, deployment.Namespace) + } + + if config.Spec.EnableAI { + url = url + "?explain=true" + } + + r, err := c.httpClient.Get(url) + if err != nil { + return nil, err + } + defer r.Body.Close() + + var target common.K8sGPTReponse + + err = json.NewDecoder(r.Body).Decode(&target) + if err != nil { + return nil, err + } + return &target, nil +} diff --git a/pkg/common/types.go b/pkg/common/types.go new file mode 100644 index 00000000..3add3889 --- /dev/null +++ b/pkg/common/types.go @@ -0,0 +1,22 @@ +/* +Copyright 2023 The K8sGPT Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package common + +import "github.com/k8sgpt-ai/k8sgpt-operator/api/v1alpha1" + +type K8sGPTReponse struct { + Status string `json:"status"` + Problems int `json:"problems"` + Results []v1alpha1.ResultSpec `json:"results"` +} diff --git a/pkg/resources/k8sgpt.go b/pkg/resources/k8sgpt.go new file mode 100644 index 00000000..9ac6fbd9 --- /dev/null +++ b/pkg/resources/k8sgpt.go @@ -0,0 +1,286 @@ +/* +Copyright 2023 The K8sGPT Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +package resources + +import ( + "context" + + "github.com/k8sgpt-ai/k8sgpt-operator/api/v1alpha1" + appsv1 "k8s.io/api/apps/v1" + v1 "k8s.io/api/core/v1" + r1 "k8s.io/api/rbac/v1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/api/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "sigs.k8s.io/controller-runtime/pkg/client" +) + +// enum create or destroy +type CreateOrDestroy int + +const ( + Create CreateOrDestroy = iota + Destroy + DeploymentName = "k8sgpt-deployment" +) + +// Create service for K8sGPT +func GetService(config v1alpha1.K8sGPT) (*v1.Service, error) { + + // Create service + service := v1.Service{ + ObjectMeta: metav1.ObjectMeta{ + Name: "k8sgpt", + Namespace: config.Spec.Namespace, + }, + Spec: v1.ServiceSpec{ + Selector: map[string]string{ + "app": DeploymentName, + }, + Ports: []v1.ServicePort{ + { + Port: 8080, + }, + }, + }, + } + + return &service, nil +} + +// Create Service Account for K8sGPT and bind it to K8sGPT role +func GetServiceAccount(config v1alpha1.K8sGPT) (*v1.ServiceAccount, error) { + + // Create service account + serviceAccount := v1.ServiceAccount{ + ObjectMeta: metav1.ObjectMeta{ + Name: "k8sgpt", + Namespace: config.Spec.Namespace, + }, + } + + return &serviceAccount, nil +} + +// Create cluster role binding for K8sGPT +func GetClusterRoleBinding(config v1alpha1.K8sGPT) (*r1.ClusterRoleBinding, error) { + + // Create cluster role binding + clusterRoleBinding := r1.ClusterRoleBinding{ + ObjectMeta: metav1.ObjectMeta{ + Name: "k8sgpt", + OwnerReferences: []metav1.OwnerReference{ + { + Kind: config.Kind, + Name: config.Name, + UID: config.UID, + APIVersion: config.APIVersion, + }, + }, + }, + Subjects: []r1.Subject{ + { + Kind: "ServiceAccount", + Name: "k8sgpt", + Namespace: config.Spec.Namespace, + }, + }, + RoleRef: r1.RoleRef{ + Kind: "ClusterRole", + Name: "k8sgpt", + APIGroup: "rbac.authorization.k8s.io", + }, + } + + return &clusterRoleBinding, nil +} + +// Create ClusterRole for K8sGPT with cluster read all +func GetClusterRole(config v1alpha1.K8sGPT) (*r1.ClusterRole, error) { + + // Create cluster role + clusterRole := r1.ClusterRole{ + ObjectMeta: metav1.ObjectMeta{ + Name: "k8sgpt", + OwnerReferences: []metav1.OwnerReference{ + { + Kind: config.Kind, + Name: config.Name, + UID: config.UID, + APIVersion: config.APIVersion, + }, + }, + }, + Rules: []r1.PolicyRule{ + { + APIGroups: []string{"*"}, + Resources: []string{"*"}, + Verbs: []string{"*"}, + }, + }, + } + + return &clusterRole, nil +} + +// Create deployment with the latest K8sGPT image +func GetDeployment(config v1alpha1.K8sGPT) (*appsv1.Deployment, error) { + + // Create deployment + replicas := int32(1) + deployment := appsv1.Deployment{ + ObjectMeta: metav1.ObjectMeta{ + Name: DeploymentName, + Namespace: config.Spec.Namespace, + OwnerReferences: []metav1.OwnerReference{ + { + Kind: config.Kind, + Name: config.Name, + UID: config.UID, + APIVersion: config.APIVersion, + }, + }, + }, + Spec: appsv1.DeploymentSpec{ + Replicas: &replicas, + Selector: &metav1.LabelSelector{ + MatchLabels: map[string]string{ + "app": DeploymentName, + }, + }, + Template: v1.PodTemplateSpec{ + ObjectMeta: metav1.ObjectMeta{ + Labels: map[string]string{ + "app": DeploymentName, + }, + }, + Spec: v1.PodSpec{ + ServiceAccountName: "k8sgpt", + Containers: []v1.Container{ + { + Name: "k8sgpt", + Image: "ghcr.io/k8sgpt-ai/k8sgpt:" + config.Spec.Version, + Args: []string{ + "serve", + }, + Env: []v1.EnvVar{ + { + Name: "K8SGPT_PASSWORD", + ValueFrom: &v1.EnvVarSource{ + SecretKeyRef: &v1.SecretKeySelector{ + LocalObjectReference: v1.LocalObjectReference{ + Name: config.Spec.Secret.Name, + }, + Key: config.Spec.Secret.Key, + }, + }, + }, + { + Name: "K8SGPT_MODEL", + Value: config.Spec.Model, + }, + { + Name: "K8SGPT_BACKEND", + Value: config.Spec.Backend, + }, + }, + Ports: []v1.ContainerPort{ + { + ContainerPort: 8080, + }, + }, + Resources: v1.ResourceRequirements{ + Limits: v1.ResourceList{ + v1.ResourceCPU: resource.MustParse("1"), + v1.ResourceMemory: resource.MustParse("512Mi"), + }, + Requests: v1.ResourceList{ + v1.ResourceCPU: resource.MustParse("0.2"), + v1.ResourceMemory: resource.MustParse("156Mi"), + }, + }, + }, + }, + }, + }, + }, + } + return &deployment, nil +} + +func Sync(ctx context.Context, c client.Client, + config v1alpha1.K8sGPT, i CreateOrDestroy) error { + + var objs []client.Object + + svc, err := GetService(config) + if err != nil { + return err + } + + objs = append(objs, svc) + + svcAcc, err := GetServiceAccount(config) + if err != nil { + return err + } + + objs = append(objs, svcAcc) + + clusterRole, err := GetClusterRole(config) + if err != nil { + return err + } + + objs = append(objs, clusterRole) + + clusterRoleBinding, err := GetClusterRoleBinding(config) + if err != nil { + return err + } + + objs = append(objs, clusterRoleBinding) + + deployment, err := GetDeployment(config) + if err != nil { + return err + } + + objs = append(objs, deployment) + + // for each object, create or destroy + for _, obj := range objs { + switch i { + case Create: + err := c.Create(ctx, obj) + if err != nil { + // If the object already exists, ignore the error + if !errors.IsAlreadyExists(err) { + return err + } + } + case Destroy: + err := c.Delete(ctx, obj) + if err != nil { + // if the object is not found, ignore the error + if !errors.IsNotFound(err) { + return err + } + } + } + } + + return nil +} diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go new file mode 100644 index 00000000..4df73311 --- /dev/null +++ b/pkg/utils/utils.go @@ -0,0 +1,10 @@ +package utils + +func ContainsString(slice []string, s string) bool { + for _, item := range slice { + if item == s { + return true + } + } + return false +}