mirror of
https://github.com/arangodb/kube-arangodb.git
synced 2024-12-14 11:57:37 +00:00
Merge branch 'master' into master
This commit is contained in:
commit
91f4e40236
781 changed files with 28162 additions and 8752 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -10,4 +10,5 @@ deps/
|
|||
**/*.enterprise.go
|
||||
**/enterprise/**
|
||||
enterprise.mk
|
||||
local/
|
||||
local/
|
||||
tools/codegen/boilerplate.go.txt
|
50
.golangci.yaml
Normal file
50
.golangci.yaml
Normal file
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
|
||||
run:
|
||||
issues-exit-code: 3
|
||||
timeout: 30m
|
||||
skip-dirs:
|
||||
- vendor
|
||||
- .gobuild
|
||||
- deps
|
||||
- tools
|
||||
|
||||
linters:
|
||||
disable-all: true
|
||||
enable:
|
||||
- deadcode
|
||||
- gosimple
|
||||
- govet
|
||||
- ineffassign
|
||||
- staticcheck
|
||||
- structcheck
|
||||
- typecheck
|
||||
- unconvert
|
||||
- unparam
|
||||
- unused
|
||||
- varcheck
|
||||
- importas
|
||||
- gci
|
||||
|
||||
linters-settings:
|
||||
importas:
|
||||
no-unaliased: true
|
||||
alias:
|
||||
- pkg: k8s.io/api/core/v1
|
||||
alias: core
|
||||
- pkg: k8s.io/apimachinery/pkg/apis/meta/v1
|
||||
alias: meta
|
||||
- pkg: k8s.io/client-go/kubernetes/typed/core/v1
|
||||
alias: typedCore
|
||||
- pkg: k8s.io/api/apps/v1
|
||||
alias: apps
|
||||
- pkg: k8s.io/api/batch/v1
|
||||
alias: batch
|
||||
- pkg: k8s.io/api/storage/v1
|
||||
alias: storage
|
||||
gci:
|
||||
sections:
|
||||
- standard
|
||||
- default
|
||||
- prefix(github.com/arangodb)
|
||||
- prefix(github.com/arangodb/kube-arangodb)
|
65
CHANGELOG.md
65
CHANGELOG.md
|
@ -1,6 +1,71 @@
|
|||
# Change Log
|
||||
|
||||
## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
|
||||
- (Feature) Add ArangoDeployment ServerGroupStatus
|
||||
- (Feature) (EE) Ordered Member IDs
|
||||
- (Refactor) Deprecate ForeachServerGroup, ForeachServerInGroups and ForServerGroup functions and refactor code accordingly
|
||||
- (Bugfix) Memory leaks due to incorrect time.After function usage
|
||||
- (Feature) Add startup probe for coordinators
|
||||
- (Feature) Use only connections for healthy members
|
||||
- (Feature) Set condition to shrink agent volume size
|
||||
- (Bugfix) Check serving servers
|
||||
- (Documentation) Add docs on setting timezone for containers
|
||||
- (Bugfix) Ensure that client cache is initialized before using it
|
||||
- (Feature) (DBServer Maintenance) Agency adjustments
|
||||
- (Logging) Internal client trace
|
||||
- (QA) Member maintenance feature
|
||||
- (Feature) Extract Pod Details
|
||||
- (Feature) Add Timezone management
|
||||
- (Bugfix) Always recreate DBServers if they have a leader on it.
|
||||
- (Feature) Immutable spec
|
||||
|
||||
## [1.2.15](https://github.com/arangodb/kube-arangodb/tree/1.2.15) (2022-07-20)
|
||||
- (Bugfix) Ensure pod names not too long
|
||||
- (Refactor) Use cached member's clients
|
||||
- (Feature) Move PVC resize action to high-priority plan
|
||||
- (Feature) Remove forgotten ArangoDB jobs during restart
|
||||
- (Feature) Add support for managed services
|
||||
- (Feature) Recreation member in the high plan
|
||||
- (Feature) Add 'crd install' subcommand
|
||||
- (Bugfix) Fix `internal` metrics mode
|
||||
- (Bugfix) Create agency dump if auth is disabled
|
||||
- (Bugfix) Prevent deployment removal in case of invalid K8S API response
|
||||
|
||||
## [1.2.14](https://github.com/arangodb/kube-arangodb/tree/1.2.14) (2022-07-14)
|
||||
- (Feature) Add ArangoSync TLS based rotation
|
||||
- (Bugfix) Fix labels propagation
|
||||
- (Feature) Add `ArangoDeployment` CRD auto-installer
|
||||
- (Feature) Add `ArangoMember` CRD auto-installer
|
||||
- (Feature) Add `ArangoBackup` CRD auto-installer
|
||||
- (Feature) Add `ArangoBackupPolicy` CRD auto-installer
|
||||
- (Feature) Add `ArangoJob` CRD auto-installer
|
||||
- (Feature) Add RestartPolicyAlways to ArangoDeployment in order to restart ArangoDB on failure
|
||||
- (Feature) Set a leader in active fail-over mode
|
||||
- (Feature) Use policy/v1 instead policy/v1beta1
|
||||
- (Feature) OPS CLI with Arango Task
|
||||
- (Bugfix) Allow ArangoBackup Creation during Upload state
|
||||
- (Hotfix) Fix `ArangoDeployment` SubResource in CRD auto-installer
|
||||
- (Bugfix) Fix Operator Logger NPE
|
||||
- (Bugfix) Fix License RAW value discovery
|
||||
- (Refactor) Optimize go.mod entries
|
||||
- (Feature) Add `ArangoLocalStorage` CRD auto-installer
|
||||
- (Feature) Add `ArangoDeploymentReplication` CRD auto-installer
|
||||
- (Bugfix) Allow missing `token` key in License secret
|
||||
- (Feature) Unify agency access
|
||||
- (Feature) Change DBServer Cleanup Logic
|
||||
- (Feature) Set Logger format
|
||||
- (Bugfix) Ensure Wait actions to be present after AddMember
|
||||
- (Documentation) Refactor metrics (Part 1)
|
||||
- (Bugfix) Extend Agency HealthCheck for replace
|
||||
- (Bugfix) Allow to remove resources (CPU & Memory) on the managed pods
|
||||
- (Bugfix) Add DistributeShardsLike support
|
||||
- (Feature) Member restarts metric
|
||||
- (Bugfix) Infinite loop fix in ArangoD AsyncClient
|
||||
- (Bugfix) Add Panic Handler
|
||||
- (Bugfix) Unify yaml packages
|
||||
- (Feature) Add new GRPC and HTTP API
|
||||
|
||||
## [1.2.13](https://github.com/arangodb/kube-arangodb/tree/1.2.13) (2022-06-07)
|
||||
- (Bugfix) Fix arangosync members state inspection
|
||||
- (Feature) (ACS) Improve Reconciliation Loop
|
||||
- (Bugfix) Allow missing Monitoring CRD
|
||||
|
|
|
@ -15,5 +15,6 @@ ADD ./LICENSE /licenses/LICENSE
|
|||
ARG RELEASE_MODE=community
|
||||
ARG TARGETARCH
|
||||
ADD bin/${RELEASE_MODE}/linux/${TARGETARCH}/arangodb_operator /usr/bin/arangodb_operator
|
||||
ADD bin/${RELEASE_MODE}/linux/${TARGETARCH}/arangodb_operator_ops /usr/bin/arangodb_operator_ops
|
||||
|
||||
ENTRYPOINT [ "/usr/bin/arangodb_operator" ]
|
||||
|
|
|
@ -25,6 +25,7 @@ RUN apk add --no-cache libc6-compat
|
|||
|
||||
ADD ./LICENSE /licenses/LICENSE
|
||||
ADD bin/${RELEASE_MODE}/linux/${TARGETARCH}/arangodb_operator /usr/bin/arangodb_operator
|
||||
ADD bin/${RELEASE_MODE}/linux/${TARGETARCH}/arangodb_operator_ops /usr/bin/arangodb_operator_ops
|
||||
|
||||
COPY --from=builder /go/bin/dlv /usr/bin/dlv
|
||||
|
||||
|
|
70
Makefile
70
Makefile
|
@ -89,6 +89,14 @@ else
|
|||
COMPILE_DEBUG_FLAGS :=
|
||||
endif
|
||||
|
||||
PROTOC_VERSION := 21.1
|
||||
ifeq ($(shell uname),Darwin)
|
||||
PROTOC_ARCHIVE_SUFFIX := osx-universal_binary
|
||||
else
|
||||
PROTOC_ARCHIVE_SUFFIX := linux-x86_64
|
||||
endif
|
||||
PROTOC_URL := https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-${PROTOC_ARCHIVE_SUFFIX}.zip
|
||||
|
||||
ifeq ($(MANIFESTSUFFIX),-)
|
||||
# Release setting
|
||||
MANIFESTSUFFIX :=
|
||||
|
@ -146,12 +154,18 @@ BIN := $(BINDIR)/$(BINNAME)
|
|||
VBIN_LINUX_AMD64 := $(BINDIR)/$(RELEASE_MODE)/linux/amd64/$(BINNAME)
|
||||
VBIN_LINUX_ARM64 := $(BINDIR)/$(RELEASE_MODE)/linux/arm64/$(BINNAME)
|
||||
|
||||
BIN_OPS_NAME := $(PROJECT)_ops
|
||||
BIN_OPS := $(BINDIR)/$(BIN_OPS_NAME)
|
||||
VBIN_OPS_LINUX_AMD64 := $(BINDIR)/$(RELEASE_MODE)/linux/amd64/$(BIN_OPS_NAME)
|
||||
VBIN_OPS_LINUX_ARM64 := $(BINDIR)/$(RELEASE_MODE)/linux/arm64/$(BIN_OPS_NAME)
|
||||
|
||||
ifdef VERBOSE
|
||||
TESTVERBOSEOPTIONS := -v
|
||||
endif
|
||||
|
||||
EXCLUDE_DIRS := vendor .gobuild deps tools
|
||||
SOURCES_QUERY := find ./ -type f -name '*.go' $(foreach EXCLUDE_DIR,$(EXCLUDE_DIRS), ! -path "*/$(EXCLUDE_DIR)/*")
|
||||
EXCLUDE_DIRS := vendor .gobuild deps tools pkg/generated/clientset pkg/generated/informers pkg/generated/listers
|
||||
EXCLUDE_FILES := *generated.deepcopy.go
|
||||
SOURCES_QUERY := find ./ -type f -name '*.go' ! -name '*.pb.go' $(foreach EXCLUDE_DIR,$(EXCLUDE_DIRS), ! -path "*/$(EXCLUDE_DIR)/*") $(foreach EXCLUDE_FILE,$(EXCLUDE_FILES), ! -path "*/$(EXCLUDE_FILE)")
|
||||
SOURCES := $(shell $(SOURCES_QUERY))
|
||||
DASHBOARDSOURCES := $(shell find $(DASHBOARDDIR)/src -name '*.js') $(DASHBOARDDIR)/package.json
|
||||
LINT_EXCLUDES:=
|
||||
|
@ -161,6 +175,7 @@ else
|
|||
LINT_EXCLUDES+=.*\.enterprise\.go$$
|
||||
endif
|
||||
|
||||
PROTOSOURCES := $(shell find ./ -type f -name '*.proto' $(foreach EXCLUDE_DIR,$(EXCLUDE_DIRS), ! -path "*/$(EXCLUDE_DIR)/*") | sort)
|
||||
|
||||
.DEFAULT_GOAL := all
|
||||
.PHONY: all
|
||||
|
@ -177,24 +192,21 @@ allall: all
|
|||
# Tip: Run `eval $(minikube docker-env)` before calling make if you're developing on minikube.
|
||||
#
|
||||
|
||||
GOLANGCI_ENABLED=deadcode gosimple govet ineffassign staticcheck structcheck typecheck unconvert unparam unused varcheck
|
||||
#GOLANGCI_ENABLED=gocyclo goconst golint maligned errcheck interfacer megacheck
|
||||
#GOLANGCI_ENABLED+=dupl - disable dupl check
|
||||
|
||||
.PHONY: license-verify
|
||||
license-verify:
|
||||
@echo ">> Verify license of files"
|
||||
@$(GOPATH)/bin/addlicense -f "./tools/codegen/boilerplate.go.txt" -check $(SOURCES)
|
||||
@$(GOPATH)/bin/addlicense -f "./tools/codegen/license-header.txt" -check $(SOURCES) $(PROTOSOURCES)
|
||||
|
||||
.PHONY: fmt
|
||||
fmt:
|
||||
@echo ">> Ensuring style of files"
|
||||
@$(GOPATH)/bin/goimports -w $(SOURCES)
|
||||
@$(GOPATH)/bin/gci write -s "standard" -s "default" -s "prefix(github.com/arangodb)" -s "prefix(github.com/arangodb/kube-arangodb)" $(SOURCES)
|
||||
|
||||
.PHONY: license
|
||||
license:
|
||||
@echo ">> Ensuring license of files"
|
||||
@$(GOPATH)/bin/addlicense -f "./tools/codegen/boilerplate.go.txt" $(SOURCES)
|
||||
@$(GOPATH)/bin/addlicense -f "./tools/codegen/license-header.txt" $(SOURCES) $(PROTOSOURCES)
|
||||
|
||||
.PHONY: fmt-verify
|
||||
fmt-verify: license-verify
|
||||
|
@ -203,11 +215,11 @@ fmt-verify: license-verify
|
|||
|
||||
.PHONY: linter
|
||||
linter:
|
||||
$(GOPATH)/bin/golangci-lint run --build-tags "$(RELEASE_MODE)" --no-config --issues-exit-code=1 --deadline=30m --exclude-use-default=false \
|
||||
--disable-all $(foreach EXCLUDE_DIR,$(EXCLUDE_DIRS),--skip-dirs $(EXCLUDE_DIR)) \
|
||||
$(foreach MODE,$(GOLANGCI_ENABLED),--enable $(MODE)) \
|
||||
$(foreach LINT_EXCLUDE,$(LINT_EXCLUDES),--exclude '$(LINT_EXCLUDE)') \
|
||||
./...
|
||||
$(GOPATH)/bin/golangci-lint run --build-tags "$(RELEASE_MODE)" $(foreach LINT_EXCLUDE,$(LINT_EXCLUDES),--exclude '$(LINT_EXCLUDE)') ./...
|
||||
|
||||
.PHONY: linter-fix
|
||||
linter-fix:
|
||||
$(GOPATH)/bin/golangci-lint run --fix --build-tags "$(RELEASE_MODE)" $(foreach LINT_EXCLUDE,$(LINT_EXCLUDES),--exclude '$(LINT_EXCLUDE)') ./...
|
||||
|
||||
.PHONY: build
|
||||
build: docker manifests
|
||||
|
@ -218,7 +230,7 @@ endif
|
|||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -Rf $(BIN) $(BINDIR) $(DASHBOARDDIR)/build $(DASHBOARDDIR)/node_modules $(VBIN_LINUX_AMD64) $(VBIN_LINUX_ARM64)
|
||||
rm -Rf $(BIN) $(BINDIR) $(DASHBOARDDIR)/build $(DASHBOARDDIR)/node_modules $(VBIN_LINUX_AMD64) $(VBIN_LINUX_ARM64) $(VBIN_OPS_LINUX_AMD64) $(VBIN_OPS_LINUX_ARM64)
|
||||
|
||||
.PHONY: check-vars
|
||||
check-vars:
|
||||
|
@ -240,6 +252,7 @@ update-generated:
|
|||
@rm -fr $(ORGDIR)
|
||||
@mkdir -p $(ORGDIR)
|
||||
@ln -s -f $(SCRIPTDIR) $(ORGDIR)/kube-arangodb
|
||||
@sed -e 's/^/\/\/ /' -e 's/ *$$//' $(ROOTDIR)/tools/codegen/license-header.txt > $(ROOTDIR)/tools/codegen/boilerplate.go.txt
|
||||
GOPATH=$(GOBUILDDIR) $(VENDORDIR)/k8s.io/code-generator/generate-groups.sh \
|
||||
"all" \
|
||||
"github.com/arangodb/kube-arangodb/pkg/generated" \
|
||||
|
@ -276,14 +289,17 @@ bin-all: $(BIN) $(VBIN_LINUX_AMD64) $(VBIN_LINUX_ARM64)
|
|||
|
||||
$(VBIN_LINUX_AMD64): $(SOURCES) dashboard/assets.go VERSION
|
||||
@mkdir -p $(BINDIR)/$(RELEASE_MODE)/linux/amd64
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${GOBUILDARGS} --tags "$(RELEASE_MODE)" $(COMPILE_DEBUG_FLAGS) -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN_LINUX_AMD64) ./
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${GOBUILDARGS} --tags "$(RELEASE_MODE)" $(COMPILE_DEBUG_FLAGS) -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN_LINUX_AMD64) ./cmd/main
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${GOBUILDARGS} --tags "$(RELEASE_MODE)" $(COMPILE_DEBUG_FLAGS) -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN_OPS_LINUX_AMD64) ./cmd/main-ops
|
||||
|
||||
$(VBIN_LINUX_ARM64): $(SOURCES) dashboard/assets.go VERSION
|
||||
@mkdir -p $(BINDIR)/$(RELEASE_MODE)/linux/arm64
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${GOBUILDARGS} --tags "$(RELEASE_MODE)" $(COMPILE_DEBUG_FLAGS) -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN_LINUX_ARM64) ./
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${GOBUILDARGS} --tags "$(RELEASE_MODE)" $(COMPILE_DEBUG_FLAGS) -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN_LINUX_ARM64) ./cmd/main
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build ${GOBUILDARGS} --tags "$(RELEASE_MODE)" $(COMPILE_DEBUG_FLAGS) -installsuffix netgo -ldflags "-X $(REPOPATH)/pkg/version.version=$(VERSION) -X $(REPOPATH)/pkg/version.buildDate=$(BUILDTIME) -X $(REPOPATH)/pkg/version.build=$(COMMIT)" -o $(VBIN_OPS_LINUX_ARM64) ./cmd/main-ops
|
||||
|
||||
$(BIN): $(VBIN_LINUX_AMD64)
|
||||
@cp "$(VBIN_LINUX_AMD64)" "$(BIN)"
|
||||
@cp "$(VBIN_OPS_LINUX_AMD64)" "$(BIN_OPS)"
|
||||
|
||||
.PHONY: docker
|
||||
docker: check-vars $(VBIN_LINUX_AMD64) $(VBIN_LINUX_ARM64)
|
||||
|
@ -449,13 +465,22 @@ init: tools update-generated $(BIN) vendor
|
|||
.PHONY: tools
|
||||
tools: update-vendor
|
||||
@echo ">> Fetching golangci-lint linter"
|
||||
@GOBIN=$(GOPATH)/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.42.1
|
||||
@GOBIN=$(GOPATH)/bin go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.46.2
|
||||
@echo ">> Fetching goimports"
|
||||
@GOBIN=$(GOPATH)/bin go install golang.org/x/tools/cmd/goimports@0bb7e5c47b1a31f85d4f173edc878a8e049764a5
|
||||
@echo ">> Fetching license check"
|
||||
@GOBIN=$(GOPATH)/bin go install github.com/google/addlicense@6d92264d717064f28b32464f0f9693a5b4ef0239
|
||||
@echo ">> Fetching GO Assets Builder"
|
||||
@GOBIN=$(GOPATH)/bin go install github.com/jessevdk/go-assets-builder@b8483521738fd2198ecfc378067a4e8a6079f8e5
|
||||
@echo ">> Fetching gci"
|
||||
@GOBIN=$(GOPATH)/bin go install github.com/daixiang0/gci@v0.3.0
|
||||
@echo ">> Downloading protobuf compiler..."
|
||||
@curl -L ${PROTOC_URL} -o $(GOPATH)/protoc.zip
|
||||
@echo ">> Unzipping protobuf compiler..."
|
||||
@unzip -o $(GOPATH)/protoc.zip -d $(GOPATH)/
|
||||
@echo ">> Fetching protoc go plugins..."
|
||||
@GOBIN=$(GOPATH)/bin go install github.com/golang/protobuf/protoc-gen-go@v1.5.2
|
||||
@GOBIN=$(GOPATH)/bin go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
|
||||
|
||||
.PHONY: vendor
|
||||
vendor:
|
||||
|
@ -523,3 +548,14 @@ check-community:
|
|||
|
||||
_check:
|
||||
@$(MAKE) fmt license-verify linter run-unit-tests bin
|
||||
|
||||
generate: generate-internal generate-proto fmt
|
||||
|
||||
generate-internal:
|
||||
ROOT=$(ROOT) go test --count=1 "$(REPOPATH)/internal/..."
|
||||
|
||||
generate-proto:
|
||||
PATH=$(PATH):$(GOBUILDDIR)/bin $(GOBUILDDIR)/bin/protoc -I.:$(GOBUILDDIR)/include/ \
|
||||
--go_out=. --go_opt=paths=source_relative \
|
||||
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
|
||||
$(PROTOSOURCES)
|
65
README.md
65
README.md
|
@ -67,36 +67,23 @@ covers individual newer features separately.
|
|||
|
||||
Feature-wise production readiness table:
|
||||
|
||||
| Feature | Operator Version | ArangoDB Version | ArangoDB Edition | State | Enabled | Flag | Remarks |
|
||||
|-----------------------------------------|------------------|------------------|-----------------------|--------------|---------|--------------------------------------------|--------------------------------------------------------------------------|
|
||||
| Pod Disruption Budgets | 0.3.10 | Any | Community, Enterprise | Alpha | True | N/A | N/A |
|
||||
| Pod Disruption Budgets | 0.3.11 | Any | Community, Enterprise | Production | True | N/A | N/A |
|
||||
| Volume Resizing | 0.3.10 | Any | Community, Enterprise | Alpha | True | N/A | N/A |
|
||||
| Volume Resizing | 0.3.11 | Any | Community, Enterprise | Production | True | N/A | N/A |
|
||||
| Disabling of liveness probes | 0.3.10 | Any | Community, Enterprise | Alpha | True | N/A | N/A |
|
||||
| Disabling of liveness probes | 0.3.11 | Any | Community, Enterprise | Production | True | N/A | N/A |
|
||||
| Volume Claim Templates | 0.3.11 | Any | Community, Enterprise | Alpha | True | N/A | N/A |
|
||||
| Volume Claim Templates | 1.0.0 | Any | Community, Enterprise | Production | True | N/A | N/A |
|
||||
| Prometheus Metrics Exporter | 0.3.11 | Any | Community, Enterprise | Alpha | True | N/A | Prometheus required |
|
||||
| Prometheus Metrics Exporter | 1.0.0 | Any | Community, Enterprise | Production | True | N/A | Prometheus required |
|
||||
| Sidecar Containers | 0.3.11 | Any | Community, Enterprise | Alpha | True | N/A | N/A |
|
||||
| Sidecar Containers | 1.0.0 | Any | Community, Enterprise | Production | True | N/A | N/A |
|
||||
| Operator Single Mode | 1.0.4 | Any | Community, Enterprise | Production | False | --mode.single | Only 1 instance of Operator allowed in namespace when feature is enabled |
|
||||
| TLS SNI Support | 1.0.3 | >= 3.7.0 | Enterprise | Production | True | --deployment.feature.tls-sni | N/A |
|
||||
| TLS Runtime Rotation Support | 1.0.4 | > 3.7.0 | Enterprise | Alpha | False | --deployment.feature.tls-rotation | N/A |
|
||||
| TLS Runtime Rotation Support | 1.1.0 | > 3.7.0 | Enterprise | Production | True | --deployment.feature.tls-rotation | N/A |
|
||||
| JWT Rotation Support | 1.0.4 | > 3.7.0 | Enterprise | Alpha | False | --deployment.feature.jwt-rotation | N/A |
|
||||
| JWT Rotation Support | 1.1.0 | > 3.7.0 | Enterprise | Production | True | --deployment.feature.jwt-rotation | N/A |
|
||||
| Encryption Key Rotation Support | 1.0.4 | > 3.7.0 | Enterprise | Alpha | False | --deployment.feature.encryption-rotation | N/A |
|
||||
| Encryption Key Rotation Support | 1.1.0 | > 3.7.0 | Enterprise | Production | True | --deployment.feature.encryption-rotation | N/A |
|
||||
| Encryption Key Rotation Support | 1.2.0 | > 3.7.0 | Enterprise | NotSupported | False | --deployment.feature.encryption-rotation | N/A |
|
||||
| Version Check | 1.1.4 | >= 3.7.0 | Community, Enterprise | Alpha | False | --deployment.feature.upgrade-version-check | N/A |
|
||||
| Operator Maintenance Management Support | 1.0.7 | >= 3.7.0 | Community, Enterprise | Alpha | False | --deployment.feature.maintenance | N/A |
|
||||
| Operator Maintenance Management Support | 1.2.0 | >= 3.7.0 | Community, Enterprise | Production | True | --deployment.feature.maintenance | N/A |
|
||||
| Operator Internal Metrics Exporter | 1.1.9 | >= 3.7.0 | Community, Enterprise | Alpha | False | --deployment.feature.metrics-exporter | N/A |
|
||||
| Operator Internal Metrics Exporter | 1.2.0 | >= 3.7.0 | Community, Enterprise | Production | True | --deployment.feature.metrics-exporter | N/A |
|
||||
| Operator Internal Metrics Exporter | 1.2.3 | >= 3.7.0 | Community, Enterprise | Production | True | --deployment.feature.metrics-exporter | It is always enabled |
|
||||
| Operator Ephemeral Volumes | 1.2.2 | >= 3.7.0 | Community, Enterprise | Alpha | False | --deployment.feature.ephemeral-volumes | N/A |
|
||||
| Feature | Operator Version | ArangoDB Version | ArangoDB Edition | Introduced | State | Enabled | Flag | Remarks |
|
||||
|-----------------------------------------|------------------|------------------|-----------------------|------------|--------------|---------|--------------------------------------------|--------------------------------------------------------------------------|
|
||||
| Pod Disruption Budgets | 0.3.11 | Any | Community, Enterprise | 0.3.10 | Production | True | N/A | N/A |
|
||||
| Volume Resizing | 0.3.11 | Any | Community, Enterprise | 0.3.10 | Production | True | N/A | N/A |
|
||||
| Disabling of liveness probes | 0.3.11 | Any | Community, Enterprise | 0.3.10 | Production | True | N/A | N/A |
|
||||
| Volume Claim Templates | 1.0.0 | Any | Community, Enterprise | 0.3.10 | Production | True | N/A | N/A |
|
||||
| Prometheus Metrics Exporter | 1.0.0 | Any | Community, Enterprise | 0.3.10 | Production | True | N/A | Prometheus required |
|
||||
| Sidecar Containers | 1.0.0 | Any | Community, Enterprise | 0.3.10 | Production | True | N/A | N/A |
|
||||
| Operator Single Mode | 1.0.4 | Any | Community, Enterprise | 1.0.4 | Production | False | --mode.single | Only 1 instance of Operator allowed in namespace when feature is enabled |
|
||||
| TLS SNI Support | 1.0.3 | >= 3.7.0 | Enterprise | 1.0.3 | Production | True | --deployment.feature.tls-sni | N/A |
|
||||
| TLS Runtime Rotation Support | 1.1.0 | > 3.7.0 | Enterprise | 1.0.4 | Production | True | --deployment.feature.tls-rotation | N/A |
|
||||
| JWT Rotation Support | 1.1.0 | > 3.7.0 | Enterprise | 1.0.3 | Production | True | --deployment.feature.jwt-rotation | N/A |
|
||||
| Encryption Key Rotation Support | 1.2.0 | > 3.7.0 | Enterprise | 1.0.3 | NotSupported | False | --deployment.feature.encryption-rotation | N/A |
|
||||
| Version Check | 1.1.4 | >= 3.6.0 | Community, Enterprise | 1.1.4 | Alpha | False | --deployment.feature.upgrade-version-check | N/A |
|
||||
| Operator Maintenance Management Support | 1.2.0 | >= 3.6.0 | Community, Enterprise | 1.0.7 | Production | True | --deployment.feature.maintenance | N/A |
|
||||
| Operator Internal Metrics Exporter | 1.2.0 | >= 3.6.0 | Community, Enterprise | 1.2.0 | Production | True | --deployment.feature.metrics-exporter | N/A |
|
||||
| Operator Ephemeral Volumes | 1.2.2 | >= 3.7.0 | Community, Enterprise | 1.2.2 | Alpha | False | --deployment.feature.ephemeral-volumes | N/A |
|
||||
|
||||
## Release notes for 0.3.16
|
||||
|
||||
|
@ -114,12 +101,12 @@ for details.
|
|||
## Installation of latest release using Kubectl
|
||||
|
||||
```bash
|
||||
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.12/manifests/arango-crd.yaml
|
||||
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.12/manifests/arango-deployment.yaml
|
||||
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.15/manifests/arango-crd.yaml
|
||||
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.15/manifests/arango-deployment.yaml
|
||||
# To use `ArangoLocalStorage`, also run
|
||||
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.12/manifests/arango-storage.yaml
|
||||
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.15/manifests/arango-storage.yaml
|
||||
# To use `ArangoDeploymentReplication`, also run
|
||||
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.12/manifests/arango-deployment-replication.yaml
|
||||
kubectl apply -f https://raw.githubusercontent.com/arangodb/kube-arangodb/1.2.15/manifests/arango-deployment-replication.yaml
|
||||
```
|
||||
|
||||
This procedure can also be used for upgrades and will not harm any
|
||||
|
@ -151,12 +138,12 @@ upgrades.
|
|||
|
||||
```bash
|
||||
# The following will install the custom resources required by the operators.
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.12/kube-arangodb-crd-1.2.12.tgz
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.15/kube-arangodb-crd-1.2.15.tgz
|
||||
# The following will install the operator for `ArangoDeployment` &
|
||||
# `ArangoDeploymentReplication` resources.
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.12/kube-arangodb-1.2.12.tgz
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.15/kube-arangodb-1.2.15.tgz
|
||||
# To use `ArangoLocalStorage`, set field `operator.features.storage` to true
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.12/kube-arangodb-1.2.12.tgz --set "operator.features.storage=true"
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.15/kube-arangodb-1.2.15.tgz --set "operator.features.storage=true"
|
||||
```
|
||||
|
||||
## Upgrading the operator using Helm
|
||||
|
@ -191,9 +178,9 @@ with `helm install` as normal:
|
|||
```bash
|
||||
# The following will install the operator for `ArangoDeployment` &
|
||||
# `ArangoDeploymentReplication` resources.
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.12/kube-arangodb-1.2.12.tgz
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.15/kube-arangodb-1.2.15.tgz
|
||||
# To use `ArangoLocalStorage`, set field `operator.features.storage` to true
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.12/kube-arangodb-1.2.12.tgz --set "operator.features.storage=true"
|
||||
helm install https://github.com/arangodb/kube-arangodb/releases/download/1.2.15/kube-arangodb-1.2.15.tgz --set "operator.features.storage=true"
|
||||
```
|
||||
|
||||
## Building
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
1.2.13-preview-1+git
|
||||
1.2.15+git
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
|
||||
name: kube-arangodb-crd
|
||||
version: 1.2.12
|
||||
version: 1.2.15
|
||||
|
||||
description: "ArangoDB Kubernetes Custom Resource Definitions"
|
||||
tillerVersion: ">2.7"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
|
||||
name: kube-arangodb-test
|
||||
version: 1.2.12
|
||||
version: 1.2.15
|
||||
|
||||
description: "ArangoDB Kubernetes Test Access"
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
|
||||
name: kube-arangodb
|
||||
version: 1.2.12
|
||||
version: 1.2.15
|
||||
|
||||
description: "ArangoDB Kubernetes Operator"
|
||||
tillerVersion: ">2.7"
|
||||
|
|
|
@ -17,8 +17,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
|
|
@ -19,6 +19,14 @@ spec:
|
|||
port: 8528
|
||||
protocol: TCP
|
||||
targetPort: 8528
|
||||
- name: http-api
|
||||
port: 8628
|
||||
protocol: TCP
|
||||
targetPort: 8628
|
||||
- name: grpc-api
|
||||
port: 8728
|
||||
protocol: TCP
|
||||
targetPort: 8728
|
||||
selector:
|
||||
app.kubernetes.io/name: {{ template "kube-arangodb.name" . }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
|
||||
operator:
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
imagePullPolicy: IfNotPresent
|
||||
imagePullSecrets: []
|
||||
|
||||
|
|
52
cmd/admin.go
52
cmd/admin.go
|
@ -33,19 +33,19 @@ import (
|
|||
"strconv"
|
||||
"syscall"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/globals"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
v1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
core "k8s.io/api/core/v1"
|
||||
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
"github.com/arangodb-helper/go-certificates"
|
||||
"github.com/arangodb/go-driver/jwt"
|
||||
"github.com/arangodb/go-driver/v2/connection"
|
||||
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/globals"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
||||
secretv1 "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/secret/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
|
||||
|
@ -107,31 +107,31 @@ func cmdGetAgencyState(cmd *cobra.Command, _ []string) {
|
|||
ctx := getInterruptionContext()
|
||||
d, certCA, auth, err := getDeploymentAndCredentials(ctx, deploymentName)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("failed to create basic data for the connection")
|
||||
logger.Err(err).Fatal("failed to create basic data for the connection")
|
||||
}
|
||||
|
||||
if d.Spec.GetMode() != api.DeploymentModeCluster {
|
||||
cliLog.Fatal().Msgf("agency state does not work for the \"%s\" deployment \"%s\"", d.Spec.GetMode(),
|
||||
if d.GetAcceptedSpec().GetMode() != api.DeploymentModeCluster {
|
||||
logger.Fatal("agency state does not work for the \"%s\" deployment \"%s\"", d.GetAcceptedSpec().GetMode(),
|
||||
d.GetName())
|
||||
}
|
||||
|
||||
dnsName := k8sutil.CreatePodDNSName(d.GetObjectMeta(), api.ServerGroupAgents.AsRole(), d.Status.Members.Agents[0].ID)
|
||||
endpoint := getArangoEndpoint(d.Spec.IsSecure(), dnsName)
|
||||
endpoint := getArangoEndpoint(d.GetAcceptedSpec().IsSecure(), dnsName)
|
||||
conn := createClient([]string{endpoint}, certCA, auth, connection.ApplicationJSON)
|
||||
leaderID, err := getAgencyLeader(ctx, conn)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("failed to get leader ID")
|
||||
logger.Err(err).Fatal("failed to get leader ID")
|
||||
}
|
||||
|
||||
dnsLeaderName := k8sutil.CreatePodDNSName(d.GetObjectMeta(), api.ServerGroupAgents.AsRole(), leaderID)
|
||||
leaderEndpoint := getArangoEndpoint(d.Spec.IsSecure(), dnsLeaderName)
|
||||
leaderEndpoint := getArangoEndpoint(d.GetAcceptedSpec().IsSecure(), dnsLeaderName)
|
||||
conn = createClient([]string{leaderEndpoint}, certCA, auth, connection.PlainText)
|
||||
body, err := getAgencyState(ctx, conn)
|
||||
if body != nil {
|
||||
defer body.Close()
|
||||
}
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("can not get state of the agency")
|
||||
logger.Err(err).Fatal("can not get state of the agency")
|
||||
}
|
||||
|
||||
// Print and receive parallelly.
|
||||
|
@ -143,22 +143,22 @@ func cmdGetAgencyDump(cmd *cobra.Command, _ []string) {
|
|||
ctx := getInterruptionContext()
|
||||
d, certCA, auth, err := getDeploymentAndCredentials(ctx, deploymentName)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("failed to create basic data for the connection")
|
||||
logger.Err(err).Fatal("failed to create basic data for the connection")
|
||||
}
|
||||
|
||||
if d.Spec.GetMode() != api.DeploymentModeCluster {
|
||||
cliLog.Fatal().Msgf("agency dump does not work for the \"%s\" deployment \"%s\"", d.Spec.GetMode(),
|
||||
if d.GetAcceptedSpec().GetMode() != api.DeploymentModeCluster {
|
||||
logger.Fatal("agency dump does not work for the \"%s\" deployment \"%s\"", d.GetAcceptedSpec().GetMode(),
|
||||
d.GetName())
|
||||
}
|
||||
|
||||
endpoint := getArangoEndpoint(d.Spec.IsSecure(), k8sutil.CreateDatabaseClientServiceDNSName(d.GetObjectMeta()))
|
||||
endpoint := getArangoEndpoint(d.GetAcceptedSpec().IsSecure(), k8sutil.CreateDatabaseClientServiceDNSName(d.GetObjectMeta()))
|
||||
conn := createClient([]string{endpoint}, certCA, auth, connection.ApplicationJSON)
|
||||
body, err := getAgencyDump(ctx, conn)
|
||||
if body != nil {
|
||||
defer body.Close()
|
||||
}
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("can not get dump")
|
||||
logger.Err(err).Fatal("can not get dump")
|
||||
}
|
||||
|
||||
// Print and receive parallelly.
|
||||
|
@ -205,16 +205,18 @@ func getDeploymentAndCredentials(ctx context.Context,
|
|||
}
|
||||
|
||||
var secrets = kubeCli.CoreV1().Secrets(d.GetNamespace())
|
||||
certCA, err = getCACertificate(ctx, secrets, d.Spec.TLS.GetCASecretName())
|
||||
certCA, err = getCACertificate(ctx, secrets, d.GetAcceptedSpec().TLS.GetCASecretName())
|
||||
if err != nil {
|
||||
err = errors.WithMessage(err, "failed to get CA certificate")
|
||||
return
|
||||
}
|
||||
|
||||
auth, err = getJWTTokenFromSecrets(ctx, secrets, d.Spec.Authentication.GetJWTSecretName())
|
||||
if err != nil {
|
||||
err = errors.WithMessage(err, "failed to get JWT token")
|
||||
return
|
||||
if d.GetAcceptedSpec().IsAuthenticated() {
|
||||
auth, err = getJWTTokenFromSecrets(ctx, secrets, d.GetAcceptedSpec().Authentication.GetJWTSecretName())
|
||||
if err != nil {
|
||||
err = errors.WithMessage(err, "failed to get JWT token")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
|
@ -314,16 +316,16 @@ func getCACertificate(ctx context.Context, secrets secretv1.ReadInterface, name
|
|||
ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx)
|
||||
defer cancel()
|
||||
|
||||
s, err := secrets.Get(ctxChild, name, metav1.GetOptions{})
|
||||
s, err := secrets.Get(ctxChild, name, meta.GetOptions{})
|
||||
if err != nil {
|
||||
return nil, errors.WithMessage(err, fmt.Sprintf("failed to get secret \"%s\"", name))
|
||||
}
|
||||
|
||||
if data, ok := s.Data[v1.ServiceAccountRootCAKey]; ok {
|
||||
if data, ok := s.Data[core.ServiceAccountRootCAKey]; ok {
|
||||
return certificates.LoadCertPool(string(data))
|
||||
}
|
||||
|
||||
return nil, errors.New(fmt.Sprintf("the \"%s\" does not exist in the secret \"%s\"", v1.ServiceAccountRootCAKey,
|
||||
return nil, errors.New(fmt.Sprintf("the \"%s\" does not exist in the secret \"%s\"", core.ServiceAccountRootCAKey,
|
||||
name))
|
||||
}
|
||||
|
||||
|
@ -341,7 +343,7 @@ func getDeployment(ctx context.Context, namespace, deplName string) (api.ArangoD
|
|||
ctxChild, cancel := globals.GetGlobalTimeouts().Kubernetes().WithTimeout(ctx)
|
||||
defer cancel()
|
||||
|
||||
deployments, err := extCli.DatabaseV1().ArangoDeployments(namespace).List(ctxChild, metav1.ListOptions{})
|
||||
deployments, err := extCli.DatabaseV1().ArangoDeployments(namespace).List(ctxChild, meta.ListOptions{})
|
||||
if err != nil {
|
||||
if api.IsNotFound(err) {
|
||||
return api.ArangoDeployment{}, errors.WithMessage(err, "there are no deployments")
|
||||
|
|
|
@ -31,57 +31,50 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/globals"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
|
||||
operatorHTTP "github.com/arangodb/kube-arangodb/pkg/util/http"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/operator/scope"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/deployment/features"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
deploymentApi "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
|
||||
utilsError "github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/spf13/cobra"
|
||||
flag "github.com/spf13/pflag"
|
||||
appsv1 "k8s.io/api/apps/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
apps "k8s.io/api/apps/v1"
|
||||
core "k8s.io/api/core/v1"
|
||||
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||
typedCore "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||
"k8s.io/client-go/tools/record"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"k8s.io/klog"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/api"
|
||||
deploymentApi "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/crd"
|
||||
"github.com/arangodb/kube-arangodb/pkg/deployment/features"
|
||||
"github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned/scheme"
|
||||
"github.com/arangodb/kube-arangodb/pkg/logging"
|
||||
"github.com/arangodb/kube-arangodb/pkg/operator"
|
||||
"github.com/arangodb/kube-arangodb/pkg/operator/scope"
|
||||
"github.com/arangodb/kube-arangodb/pkg/server"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||
utilsError "github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/globals"
|
||||
operatorHTTP "github.com/arangodb/kube-arangodb/pkg/util/http"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/probe"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/retry"
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultServerHost = "0.0.0.0"
|
||||
defaultServerPort = 8528
|
||||
defaultAPIHTTPPort = 8628
|
||||
defaultAPIGRPCPort = 8728
|
||||
defaultLogLevel = "debug"
|
||||
defaultAdminSecretName = "arangodb-operator-dashboard"
|
||||
defaultAPIJWTSecretName = "arangodb-operator-api-jwt"
|
||||
defaultAPIJWTKeySecretName = "arangodb-operator-api-jwt-key"
|
||||
defaultAlpineImage = "alpine:3.7"
|
||||
defaultMetricsExporterImage = "arangodb/arangodb-exporter:0.1.6"
|
||||
defaultArangoImage = "arangodb/arangodb:latest"
|
||||
|
@ -94,14 +87,15 @@ const (
|
|||
)
|
||||
|
||||
var (
|
||||
logger = logging.Global().RegisterAndGetLogger("root", logging.Info)
|
||||
eventRecorder = logging.Global().RegisterAndGetLogger("root-event-recorder", logging.Info)
|
||||
|
||||
cmdMain = cobra.Command{
|
||||
Use: "arangodb_operator",
|
||||
Run: executeMain,
|
||||
}
|
||||
|
||||
logLevels []string
|
||||
cliLog = logging.NewRootLogger()
|
||||
logService logging.Service
|
||||
serverOptions struct {
|
||||
host string
|
||||
port int
|
||||
|
@ -109,6 +103,14 @@ var (
|
|||
adminSecretName string // Name of basic authentication secret containing the admin username+password of the dashboard
|
||||
allowAnonymous bool // If set, anonymous access to dashboard is allowed
|
||||
}
|
||||
apiOptions struct {
|
||||
enabled bool
|
||||
httpPort int
|
||||
grpcPort int
|
||||
jwtSecretName string
|
||||
jwtKeySecretName string
|
||||
tlsSecretName string
|
||||
}
|
||||
operatorOptions struct {
|
||||
enableDeployment bool // Run deployment operator
|
||||
enableDeploymentReplication bool // Run deployment-replication operator
|
||||
|
@ -168,13 +170,20 @@ func init() {
|
|||
f.StringVar(&serverOptions.tlsSecretName, "server.tls-secret-name", "", "Name of secret containing tls.crt & tls.key for HTTPS server (if empty, self-signed certificate is used)")
|
||||
f.StringVar(&serverOptions.adminSecretName, "server.admin-secret-name", defaultAdminSecretName, "Name of secret containing username + password for login to the dashboard")
|
||||
f.BoolVar(&serverOptions.allowAnonymous, "server.allow-anonymous-access", false, "Allow anonymous access to the dashboard")
|
||||
f.StringArrayVar(&logLevels, "log.level", []string{defaultLogLevel}, fmt.Sprintf("Set log levels in format <level> or <logger>=<level>. Possible loggers: %s", strings.Join(logging.LoggerNames(), ", ")))
|
||||
f.StringArrayVar(&logLevels, "log.level", []string{defaultLogLevel}, fmt.Sprintf("Set log levels in format <level> or <logger>=<level>. Possible loggers: %s", strings.Join(logging.Global().Names(), ", ")))
|
||||
f.BoolVar(&apiOptions.enabled, "api.enabled", true, "Enable operator HTTP and gRPC API")
|
||||
f.IntVar(&apiOptions.httpPort, "api.http-port", defaultAPIHTTPPort, "HTTP API port to listen on")
|
||||
f.IntVar(&apiOptions.grpcPort, "api.grpc-port", defaultAPIGRPCPort, "gRPC API port to listen on")
|
||||
f.StringVar(&apiOptions.tlsSecretName, "api.tls-secret-name", "", "Name of secret containing tls.crt & tls.key for HTTPS API (if empty, self-signed certificate is used)")
|
||||
f.StringVar(&apiOptions.jwtSecretName, "api.jwt-secret-name", defaultAPIJWTSecretName, "Name of secret which will contain JWT to authenticate API requests.")
|
||||
f.StringVar(&apiOptions.jwtKeySecretName, "api.jwt-key-secret-name", defaultAPIJWTKeySecretName, "Name of secret containing key used to sign JWT. If there is no such secret present, value will be saved here")
|
||||
f.BoolVar(&operatorOptions.enableDeployment, "operator.deployment", false, "Enable to run the ArangoDeployment operator")
|
||||
f.BoolVar(&operatorOptions.enableDeploymentReplication, "operator.deployment-replication", false, "Enable to run the ArangoDeploymentReplication operator")
|
||||
f.BoolVar(&operatorOptions.enableStorage, "operator.storage", false, "Enable to run the ArangoLocalStorage operator")
|
||||
f.BoolVar(&operatorOptions.enableBackup, "operator.backup", false, "Enable to run the ArangoBackup operator")
|
||||
f.BoolVar(&operatorOptions.enableApps, "operator.apps", false, "Enable to run the ArangoApps operator")
|
||||
f.BoolVar(&operatorOptions.enableK2KClusterSync, "operator.k2k-cluster-sync", false, "Enable to run the ListSimple operator")
|
||||
f.MarkDeprecated("operator.k2k-cluster-sync", "Enabled within deployment operator")
|
||||
f.BoolVar(&operatorOptions.versionOnly, "operator.version", false, "Enable only version endpoint in Operator")
|
||||
f.StringVar(&operatorOptions.alpineImage, "operator.alpine-image", UBIImageEnv.GetOrDefault(defaultAlpineImage), "Docker image used for alpine containers")
|
||||
f.MarkDeprecated("operator.alpine-image", "Value is not used anymore")
|
||||
|
@ -190,13 +199,15 @@ func init() {
|
|||
f.DurationVar(&operatorTimeouts.reconciliation, "timeout.reconciliation", globals.DefaultReconciliationTimeout, "The reconciliation timeout to the ArangoDB CR")
|
||||
f.DurationVar(&shutdownOptions.delay, "shutdown.delay", defaultShutdownDelay, "The delay before running shutdown handlers")
|
||||
f.DurationVar(&shutdownOptions.timeout, "shutdown.timeout", defaultShutdownTimeout, "Timeout for shutdown handlers")
|
||||
f.BoolVar(&operatorOptions.scalingIntegrationEnabled, "internal.scaling-integration", true, "Enable Scaling Integration")
|
||||
f.BoolVar(&operatorOptions.scalingIntegrationEnabled, "internal.scaling-integration", false, "Enable Scaling Integration")
|
||||
f.Int64Var(&operatorKubernetesOptions.maxBatchSize, "kubernetes.max-batch-size", globals.DefaultKubernetesRequestBatchSize, "Size of batch during objects read")
|
||||
f.Float32Var(&operatorKubernetesOptions.qps, "kubernetes.qps", kclient.DefaultQPS, "Number of queries per second for k8s API")
|
||||
f.IntVar(&operatorKubernetesOptions.burst, "kubernetes.burst", kclient.DefaultBurst, "Burst for the k8s API")
|
||||
f.BoolVar(&crdOptions.install, "crd.install", true, "Install missing CRD if access is possible")
|
||||
f.IntVar(&operatorBackup.concurrentUploads, "backup-concurrent-uploads", globals.DefaultBackupConcurrentUploads, "Number of concurrent uploads per deployment")
|
||||
features.Init(&cmdMain)
|
||||
if err := features.Init(&cmdMain); err != nil {
|
||||
panic(err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func Execute() int {
|
||||
|
@ -216,9 +227,6 @@ func executeUsage(cmd *cobra.Command, args []string) {
|
|||
|
||||
// Run the operator
|
||||
func executeMain(cmd *cobra.Command, args []string) {
|
||||
// Set global logger
|
||||
log.Logger = logging.NewRootLogger()
|
||||
|
||||
// Get environment
|
||||
namespace := os.Getenv(constants.EnvOperatorPodNamespace)
|
||||
name := os.Getenv(constants.EnvOperatorPodName)
|
||||
|
@ -239,20 +247,23 @@ func executeMain(cmd *cobra.Command, args []string) {
|
|||
|
||||
// Prepare log service
|
||||
var err error
|
||||
if err := logging.InitGlobalLogger(defaultLogLevel, logLevels); err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to initialize log service")
|
||||
|
||||
levels, err := logging.ParseLogLevelsFromArgs(logLevels)
|
||||
if err != nil {
|
||||
logger.Err(err).Fatal("Unable to parse log level")
|
||||
}
|
||||
|
||||
logService = logging.GlobalLogger()
|
||||
logging.Global().ApplyLogLevels(levels)
|
||||
|
||||
logService.ConfigureRootLogger(func(log zerolog.Logger) zerolog.Logger {
|
||||
podNameParts := strings.Split(name, "-")
|
||||
operatorID := podNameParts[len(podNameParts)-1]
|
||||
cliLog = cliLog.With().Str("operator-id", operatorID).Logger()
|
||||
return log.With().Str("operator-id", operatorID).Logger()
|
||||
podNameParts := strings.Split(name, "-")
|
||||
operatorID := podNameParts[len(podNameParts)-1]
|
||||
logging.Global().RegisterWrappers(func(in *zerolog.Event) *zerolog.Event {
|
||||
return in.Str("operator-id", operatorID)
|
||||
})
|
||||
|
||||
klog.SetOutput(logService.MustGetLogger(logging.LoggerNameKLog))
|
||||
kl := logging.Global().RegisterAndGetLogger("klog", logging.Info)
|
||||
|
||||
klog.SetOutput(kl.InfoIO())
|
||||
klog.Info("nice to meet you")
|
||||
klog.Flush()
|
||||
|
||||
|
@ -260,46 +271,46 @@ func executeMain(cmd *cobra.Command, args []string) {
|
|||
if !operatorOptions.enableDeployment && !operatorOptions.enableDeploymentReplication && !operatorOptions.enableStorage &&
|
||||
!operatorOptions.enableBackup && !operatorOptions.enableApps && !operatorOptions.enableK2KClusterSync {
|
||||
if !operatorOptions.versionOnly {
|
||||
cliLog.Fatal().Err(err).Msg("Turn on --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync or any combination of these")
|
||||
logger.Err(err).Fatal("Turn on --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync or any combination of these")
|
||||
}
|
||||
} else if operatorOptions.versionOnly {
|
||||
cliLog.Fatal().Err(err).Msg("Options --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync cannot be enabled together with --operator.version")
|
||||
logger.Err(err).Fatal("Options --operator.deployment, --operator.deployment-replication, --operator.storage, --operator.backup, --operator.apps, --operator.k2k-cluster-sync cannot be enabled together with --operator.version")
|
||||
}
|
||||
|
||||
// Log version
|
||||
cliLog.Info().
|
||||
logger.
|
||||
Str("pod-name", name).
|
||||
Str("pod-namespace", namespace).
|
||||
Msgf("Starting arangodb-operator (%s), version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)
|
||||
Info("Starting arangodb-operator (%s), version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)
|
||||
|
||||
// Check environment
|
||||
if !operatorOptions.versionOnly {
|
||||
if len(namespace) == 0 {
|
||||
cliLog.Fatal().Msgf("%s environment variable missing", constants.EnvOperatorPodNamespace)
|
||||
logger.Fatal("%s environment variable missing", constants.EnvOperatorPodNamespace)
|
||||
}
|
||||
if len(name) == 0 {
|
||||
cliLog.Fatal().Msgf("%s environment variable missing", constants.EnvOperatorPodName)
|
||||
logger.Fatal("%s environment variable missing", constants.EnvOperatorPodName)
|
||||
}
|
||||
if len(ip) == 0 {
|
||||
cliLog.Fatal().Msgf("%s environment variable missing", constants.EnvOperatorPodIP)
|
||||
logger.Fatal("%s environment variable missing", constants.EnvOperatorPodIP)
|
||||
}
|
||||
|
||||
// Get host name
|
||||
id, err := os.Hostname()
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to get hostname")
|
||||
logger.Err(err).Fatal("Failed to get hostname")
|
||||
}
|
||||
|
||||
client, ok := kclient.GetDefaultFactory().Client()
|
||||
if !ok {
|
||||
cliLog.Fatal().Msg("Failed to get client")
|
||||
logger.Fatal("Failed to get client")
|
||||
}
|
||||
|
||||
if crdOptions.install {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
||||
defer cancel()
|
||||
|
||||
crd.EnsureCRD(ctx, logService.MustGetLogger("crd"), client)
|
||||
_ = crd.EnsureCRD(ctx, client, true)
|
||||
}
|
||||
|
||||
secrets := client.Kubernetes().CoreV1().Secrets(namespace)
|
||||
|
@ -307,11 +318,42 @@ func executeMain(cmd *cobra.Command, args []string) {
|
|||
// Create operator
|
||||
cfg, deps, err := newOperatorConfigAndDeps(id+"-"+name, namespace, name)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to create operator config & deps")
|
||||
logger.Err(err).Fatal("Failed to create operator config & deps")
|
||||
}
|
||||
o, err := operator.NewOperator(cfg, deps)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to create operator")
|
||||
logger.Err(err).Fatal("Failed to create operator")
|
||||
}
|
||||
|
||||
if apiOptions.enabled {
|
||||
apiServerCfg := api.ServerConfig{
|
||||
Namespace: namespace,
|
||||
ServerName: name,
|
||||
ServerAltNames: []string{ip},
|
||||
HTTPAddress: net.JoinHostPort("0.0.0.0", strconv.Itoa(apiOptions.httpPort)),
|
||||
GRPCAddress: net.JoinHostPort("0.0.0.0", strconv.Itoa(apiOptions.grpcPort)),
|
||||
TLSSecretName: apiOptions.tlsSecretName,
|
||||
JWTSecretName: apiOptions.jwtSecretName,
|
||||
JWTKeySecretName: apiOptions.jwtKeySecretName,
|
||||
LivelinessProbe: &livenessProbe,
|
||||
ProbeDeployment: api.ReadinessProbeConfig{
|
||||
Enabled: cfg.EnableDeployment,
|
||||
Probe: &deploymentProbe,
|
||||
},
|
||||
ProbeDeploymentReplication: api.ReadinessProbeConfig{
|
||||
Enabled: cfg.EnableDeploymentReplication,
|
||||
Probe: &deploymentReplicationProbe,
|
||||
},
|
||||
ProbeStorage: api.ReadinessProbeConfig{
|
||||
Enabled: cfg.EnableStorage,
|
||||
Probe: &storageProbe,
|
||||
},
|
||||
}
|
||||
apiServer, err := api.NewServer(client.Kubernetes().CoreV1(), apiServerCfg)
|
||||
if err != nil {
|
||||
logger.Err(err).Fatal("Failed to create API server")
|
||||
}
|
||||
go utilsError.LogError(logger, "while running API server", apiServer.Run)
|
||||
}
|
||||
|
||||
listenAddr := net.JoinHostPort(serverOptions.host, strconv.Itoa(serverOptions.port))
|
||||
|
@ -325,7 +367,6 @@ func executeMain(cmd *cobra.Command, args []string) {
|
|||
AdminSecretName: serverOptions.adminSecretName,
|
||||
AllowAnonymous: serverOptions.allowAnonymous,
|
||||
}, server.Dependencies{
|
||||
Log: logService.MustGetLogger(logging.LoggerNameServer),
|
||||
LivenessProbe: &livenessProbe,
|
||||
Deployment: server.OperatorDependency{
|
||||
Enabled: cfg.EnableDeployment,
|
||||
|
@ -355,9 +396,9 @@ func executeMain(cmd *cobra.Command, args []string) {
|
|||
|
||||
Secrets: secrets,
|
||||
}); err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to create HTTP server")
|
||||
logger.Err(err).Fatal("Failed to create HTTP server")
|
||||
} else {
|
||||
go utilsError.LogError(cliLog, "error while starting service", svr.Run)
|
||||
go utilsError.LogError(logger, "error while starting server", svr.Run)
|
||||
}
|
||||
|
||||
// startChaos(context.Background(), cfg.KubeCli, cfg.Namespace, chaosLevel)
|
||||
|
@ -366,7 +407,7 @@ func executeMain(cmd *cobra.Command, args []string) {
|
|||
o.Run()
|
||||
} else {
|
||||
if err := startVersionProcess(); err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to create HTTP server")
|
||||
logger.Err(err).Fatal("Failed to create HTTP server")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -374,7 +415,7 @@ func executeMain(cmd *cobra.Command, args []string) {
|
|||
func startVersionProcess() error {
|
||||
// Just expose version
|
||||
listenAddr := net.JoinHostPort(serverOptions.host, strconv.Itoa(serverOptions.port))
|
||||
cliLog.Info().Str("addr", listenAddr).Msgf("Starting version endpoint")
|
||||
logger.Str("addr", listenAddr).Info("Starting version endpoint")
|
||||
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
r := gin.New()
|
||||
|
@ -407,7 +448,7 @@ func newOperatorConfigAndDeps(id, namespace, name string) (operator.Config, oper
|
|||
return operator.Config{}, operator.Dependencies{}, errors.WithStack(fmt.Errorf("Failed to get my pod's service account: %s", err))
|
||||
}
|
||||
|
||||
eventRecorder := createRecorder(cliLog, client.Kubernetes(), name, namespace)
|
||||
eventRecorder := createRecorder(client.Kubernetes(), name, namespace)
|
||||
|
||||
scope, ok := scope.AsScope(operatorOptions.scope)
|
||||
if !ok {
|
||||
|
@ -435,7 +476,6 @@ func newOperatorConfigAndDeps(id, namespace, name string) (operator.Config, oper
|
|||
ShutdownTimeout: shutdownOptions.timeout,
|
||||
}
|
||||
deps := operator.Dependencies{
|
||||
LogService: logService,
|
||||
Client: client,
|
||||
EventRecorder: eventRecorder,
|
||||
LivenessProbe: &livenessProbe,
|
||||
|
@ -455,12 +495,12 @@ func newOperatorConfigAndDeps(id, namespace, name string) (operator.Config, oper
|
|||
func getMyPodInfo(kubecli kubernetes.Interface, namespace, name string) (string, string, error) {
|
||||
var image, sa string
|
||||
op := func() error {
|
||||
pod, err := kubecli.CoreV1().Pods(namespace).Get(context.Background(), name, metav1.GetOptions{})
|
||||
pod, err := kubecli.CoreV1().Pods(namespace).Get(context.Background(), name, meta.GetOptions{})
|
||||
if err != nil {
|
||||
cliLog.Error().
|
||||
logger.
|
||||
Err(err).
|
||||
Str("name", name).
|
||||
Msg("Failed to get operator pod")
|
||||
Error("Failed to get operator pod")
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
sa = pod.Spec.ServiceAccountName
|
||||
|
@ -479,15 +519,15 @@ func getMyPodInfo(kubecli kubernetes.Interface, namespace, name string) (string,
|
|||
return image, sa, nil
|
||||
}
|
||||
|
||||
func createRecorder(log zerolog.Logger, kubecli kubernetes.Interface, name, namespace string) record.EventRecorder {
|
||||
func createRecorder(kubecli kubernetes.Interface, name, namespace string) record.EventRecorder {
|
||||
eventBroadcaster := record.NewBroadcaster()
|
||||
eventBroadcaster.StartLogging(func(format string, args ...interface{}) {
|
||||
log.Info().Msgf(format, args...)
|
||||
eventRecorder.Info(format, args...)
|
||||
})
|
||||
eventBroadcaster.StartRecordingToSink(&v1core.EventSinkImpl{Interface: v1core.New(kubecli.CoreV1().RESTClient()).Events(namespace)})
|
||||
eventBroadcaster.StartRecordingToSink(&typedCore.EventSinkImpl{Interface: typedCore.New(kubecli.CoreV1().RESTClient()).Events(namespace)})
|
||||
combinedScheme := runtime.NewScheme()
|
||||
scheme.AddToScheme(combinedScheme)
|
||||
v1.AddToScheme(combinedScheme)
|
||||
appsv1.AddToScheme(combinedScheme)
|
||||
return eventBroadcaster.NewRecorder(combinedScheme, v1.EventSource{Component: name})
|
||||
core.AddToScheme(combinedScheme)
|
||||
apps.AddToScheme(combinedScheme)
|
||||
return eventBroadcaster.NewRecorder(combinedScheme, core.EventSource{Component: name})
|
||||
}
|
45
cmd/cmd_ops.go
Normal file
45
cmd/cmd_ops.go
Normal file
|
@ -0,0 +1,45 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
goflag "flag"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
flag "github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
var (
|
||||
cmdOps = cobra.Command{
|
||||
Use: "arangodb_ops",
|
||||
Run: executeUsage,
|
||||
}
|
||||
)
|
||||
|
||||
func ExecuteOps() int {
|
||||
flag.CommandLine.AddGoFlagSet(goflag.CommandLine)
|
||||
|
||||
if err := cmdOps.Execute(); err != nil {
|
||||
return 1
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
67
cmd/crd.go
Normal file
67
cmd/crd.go
Normal file
|
@ -0,0 +1,67 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/crd"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
|
||||
)
|
||||
|
||||
var (
|
||||
cmdCRD = &cobra.Command{
|
||||
Use: "crd",
|
||||
Run: executeUsage,
|
||||
Short: "CRD operations",
|
||||
}
|
||||
cmdCRDInstall = &cobra.Command{
|
||||
Use: "install",
|
||||
Run: cmdCRDInstallRun,
|
||||
Short: "Install and update all required CRDs",
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
cmdMain.AddCommand(cmdCRD)
|
||||
cmdOps.AddCommand(cmdCRD)
|
||||
|
||||
cmdCRD.AddCommand(cmdCRDInstall)
|
||||
}
|
||||
|
||||
func cmdCRDInstallRun(cmd *cobra.Command, args []string) {
|
||||
client, ok := kclient.GetDefaultFactory().Client()
|
||||
if !ok {
|
||||
logger.Fatal("Failed to get client")
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
|
||||
defer cancel()
|
||||
|
||||
err := crd.EnsureCRD(ctx, client, false)
|
||||
if err != nil {
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
|
@ -28,11 +28,11 @@ import (
|
|||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/exporter"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/exporter"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
|
@ -29,19 +29,16 @@ import (
|
|||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/handlers/utils"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/retry"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
meta "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
"github.com/arangodb/kube-arangodb/pkg/handlers/utils"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/retry"
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -92,43 +89,43 @@ func init() {
|
|||
cmdLifecycle.AddCommand(cmdLifecycleCopy)
|
||||
cmdLifecycle.AddCommand(cmdLifecycleProbe)
|
||||
cmdLifecycle.AddCommand(cmdLifecycleWait)
|
||||
cmdLifecycle.AddCommand(cmdLifecycleStartup)
|
||||
|
||||
cmdLifecycleCopy.Flags().StringVar(&lifecycleCopyOptions.TargetDir, "target", "", "Target directory to copy the executable to")
|
||||
}
|
||||
|
||||
// Wait until all finalizers of the current pod have been removed.
|
||||
func cmdLifecyclePreStopRunFinalizer(cmd *cobra.Command, args []string) {
|
||||
|
||||
cliLog.Info().Msgf("Starting arangodb-operator (%s), lifecycle preStop, version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)
|
||||
logger.Info("Starting arangodb-operator (%s), lifecycle preStop, version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)
|
||||
|
||||
// Get environment
|
||||
namespace := os.Getenv(constants.EnvOperatorPodNamespace)
|
||||
if len(namespace) == 0 {
|
||||
cliLog.Fatal().Msgf("%s environment variable missing", constants.EnvOperatorPodNamespace)
|
||||
logger.Fatal("%s environment variable missing", constants.EnvOperatorPodNamespace)
|
||||
}
|
||||
name := os.Getenv(constants.EnvOperatorPodName)
|
||||
if len(name) == 0 {
|
||||
cliLog.Fatal().Msgf("%s environment variable missing", constants.EnvOperatorPodName)
|
||||
logger.Fatal("%s environment variable missing", constants.EnvOperatorPodName)
|
||||
}
|
||||
|
||||
// Create kubernetes client
|
||||
client, ok := kclient.GetDefaultFactory().Client()
|
||||
if !ok {
|
||||
cliLog.Fatal().Msg("Client not initialised")
|
||||
logger.Fatal("Client not initialised")
|
||||
}
|
||||
|
||||
pods := client.Kubernetes().CoreV1().Pods(namespace)
|
||||
recentErrors := 0
|
||||
for {
|
||||
p, err := pods.Get(context.Background(), name, metav1.GetOptions{})
|
||||
p, err := pods.Get(context.Background(), name, meta.GetOptions{})
|
||||
if k8sutil.IsNotFound(err) {
|
||||
cliLog.Warn().Msg("Pod not found")
|
||||
logger.Warn("Pod not found")
|
||||
return
|
||||
} else if err != nil {
|
||||
recentErrors++
|
||||
cliLog.Error().Err(err).Msg("Failed to get pod")
|
||||
logger.Err(err).Error("Failed to get pod")
|
||||
if recentErrors > 20 {
|
||||
cliLog.Fatal().Err(err).Msg("Too many recent errors")
|
||||
logger.Err(err).Fatal("Too many recent errors")
|
||||
return
|
||||
}
|
||||
} else {
|
||||
|
@ -136,10 +133,10 @@ func cmdLifecyclePreStopRunFinalizer(cmd *cobra.Command, args []string) {
|
|||
finalizerCount := len(p.GetFinalizers())
|
||||
if finalizerCount == 0 {
|
||||
// No more finalizers, we're done
|
||||
cliLog.Info().Msg("All finalizers gone, we can stop now")
|
||||
logger.Info("All finalizers gone, we can stop now")
|
||||
return
|
||||
}
|
||||
cliLog.Info().Msgf("Waiting for %d more finalizers to be removed", finalizerCount)
|
||||
logger.Info("Waiting for %d more finalizers to be removed", finalizerCount)
|
||||
}
|
||||
// Wait a bit
|
||||
time.Sleep(time.Second)
|
||||
|
@ -148,17 +145,17 @@ func cmdLifecyclePreStopRunFinalizer(cmd *cobra.Command, args []string) {
|
|||
|
||||
// Copy the executable to a given place.
|
||||
func cmdLifecycleCopyRun(cmd *cobra.Command, args []string) {
|
||||
cliLog.Info().Msgf("Starting arangodb-operator (%s), lifecycle copy, version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)
|
||||
logger.Info("Starting arangodb-operator (%s), lifecycle copy, version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)
|
||||
|
||||
exePath, err := os.Executable()
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to get executable path")
|
||||
logger.Err(err).Fatal("Failed to get executable path")
|
||||
}
|
||||
|
||||
// Open source
|
||||
rd, err := os.Open(exePath)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to open executable file")
|
||||
logger.Err(err).Fatal("Failed to open executable file")
|
||||
}
|
||||
defer rd.Close()
|
||||
|
||||
|
@ -166,20 +163,20 @@ func cmdLifecycleCopyRun(cmd *cobra.Command, args []string) {
|
|||
targetPath := filepath.Join(lifecycleCopyOptions.TargetDir, filepath.Base(exePath))
|
||||
wr, err := os.Create(targetPath)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to create target file")
|
||||
logger.Err(err).Fatal("Failed to create target file")
|
||||
}
|
||||
defer wr.Close()
|
||||
|
||||
if _, err := io.Copy(wr, rd); err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to copy")
|
||||
logger.Err(err).Fatal("Failed to copy")
|
||||
}
|
||||
|
||||
// Set file mode
|
||||
if err := os.Chmod(targetPath, 0755); err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to chmod")
|
||||
logger.Err(err).Fatal("Failed to chmod")
|
||||
}
|
||||
|
||||
cliLog.Info().Msgf("Executable copied to %s", targetPath)
|
||||
logger.Info("Executable copied to %s", targetPath)
|
||||
}
|
||||
|
||||
type cmdLifecyclePreStopRunPort struct {
|
||||
|
@ -193,17 +190,17 @@ func (c *cmdLifecyclePreStopRunPort) run(cmd *cobra.Command, args []string) erro
|
|||
// Get environment
|
||||
namespace := os.Getenv(constants.EnvOperatorPodNamespace)
|
||||
if len(namespace) == 0 {
|
||||
cliLog.Fatal().Msgf("%s environment variable missing", constants.EnvOperatorPodNamespace)
|
||||
logger.Fatal("%s environment variable missing", constants.EnvOperatorPodNamespace)
|
||||
}
|
||||
name := os.Getenv(constants.EnvOperatorPodName)
|
||||
if len(name) == 0 {
|
||||
cliLog.Fatal().Msgf("%s environment variable missing", constants.EnvOperatorPodName)
|
||||
logger.Fatal("%s environment variable missing", constants.EnvOperatorPodName)
|
||||
}
|
||||
|
||||
// Create kubernetes client
|
||||
client, ok := kclient.GetDefaultFactory().Client()
|
||||
if !ok {
|
||||
cliLog.Fatal().Msg("Client not initialised")
|
||||
logger.Fatal("Client not initialised")
|
||||
}
|
||||
|
||||
pods := client.Kubernetes().CoreV1().Pods(namespace)
|
||||
|
@ -219,15 +216,15 @@ func (c *cmdLifecyclePreStopRunPort) run(cmd *cobra.Command, args []string) erro
|
|||
|
||||
conn.Close()
|
||||
|
||||
p, err := pods.Get(context.Background(), name, metav1.GetOptions{})
|
||||
p, err := pods.Get(context.Background(), name, meta.GetOptions{})
|
||||
if k8sutil.IsNotFound(err) {
|
||||
cliLog.Warn().Msg("Pod not found")
|
||||
logger.Warn("Pod not found")
|
||||
return nil
|
||||
} else if err != nil {
|
||||
recentErrors++
|
||||
cliLog.Error().Err(err).Msg("Failed to get pod")
|
||||
logger.Err(err).Error("Failed to get pod")
|
||||
if recentErrors > 20 {
|
||||
cliLog.Fatal().Err(err).Msg("Too many recent errors")
|
||||
logger.Err(err).Fatal("Too many recent errors")
|
||||
return nil
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -28,13 +28,15 @@ import (
|
|||
"os"
|
||||
"path"
|
||||
|
||||
"github.com/arangodb/go-driver/jwt"
|
||||
"github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
"github.com/arangodb/kube-arangodb/pkg/deployment/pod"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/arangodb/go-driver/jwt"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
"github.com/arangodb/kube-arangodb/pkg/deployment/pod"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||
)
|
||||
|
||||
var (
|
||||
|
|
75
cmd/lifecycle_startup.go
Normal file
75
cmd/lifecycle_startup.go
Normal file
|
@ -0,0 +1,75 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/apis/shared"
|
||||
)
|
||||
|
||||
var cmdLifecycleStartup = &cobra.Command{
|
||||
Use: "startup",
|
||||
RunE: cmdLifecycleStartupFunc,
|
||||
Hidden: true,
|
||||
}
|
||||
|
||||
func cmdLifecycleStartupFunc(cmd *cobra.Command, args []string) error {
|
||||
var close bool
|
||||
|
||||
server := &http.Server{
|
||||
Addr: fmt.Sprintf(":%d", shared.ArangoPort),
|
||||
}
|
||||
|
||||
handlers := http.NewServeMux()
|
||||
|
||||
handlers.HandleFunc("/stop", func(writer http.ResponseWriter, request *http.Request) {
|
||||
writer.WriteHeader(http.StatusOK)
|
||||
close = true
|
||||
})
|
||||
|
||||
server.Handler = handlers
|
||||
|
||||
go func() {
|
||||
for {
|
||||
if close {
|
||||
break
|
||||
}
|
||||
time.Sleep(time.Millisecond)
|
||||
}
|
||||
server.Close()
|
||||
}()
|
||||
|
||||
if err := server.ListenAndServe(); err != nil {
|
||||
if errors.Is(err, http.ErrServerClosed) {
|
||||
return nil
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
|
@ -26,11 +26,11 @@ import (
|
|||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
v1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -63,26 +63,26 @@ func cmdLifecycleWaitCheck(cmd *cobra.Command, _ []string) {
|
|||
|
||||
deploymentName, err := cmd.Flags().GetString(ArgDeploymentName)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg(fmt.Sprintf("error parsing argument: %s", ArgDeploymentName))
|
||||
logger.Err(err).Fatal("error parsing argument: %s", ArgDeploymentName)
|
||||
}
|
||||
watchTimeout, err := cmd.Flags().GetDuration(ArgDeploymentWatchTimeout)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg(fmt.Sprintf("error parsing argument: %s", ArgDeploymentWatchTimeout))
|
||||
logger.Err(err).Fatal("error parsing argument: %s", ArgDeploymentWatchTimeout)
|
||||
}
|
||||
|
||||
for {
|
||||
d, err := getDeployment(ctx, os.Getenv(constants.EnvOperatorPodNamespace), deploymentName)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg(fmt.Sprintf("error getting ArangoDeployment: %s", d.Name))
|
||||
logger.Err(err).Fatal(fmt.Sprintf("error getting ArangoDeployment: %s", d.Name))
|
||||
}
|
||||
|
||||
isUpToDate, err := d.IsUpToDate()
|
||||
if err != nil {
|
||||
cliLog.Err(err).Msg(fmt.Sprintf("error checking Status for ArangoDeployment: %s", d.Name))
|
||||
logger.Err(err).Error(fmt.Sprintf("error checking Status for ArangoDeployment: %s", d.Name))
|
||||
}
|
||||
|
||||
if isUpToDate {
|
||||
cliLog.Info().Msg(fmt.Sprintf("ArangoDeployment: %s is %s", d.Name, v1.ConditionTypeUpToDate))
|
||||
logger.Info(fmt.Sprintf("ArangoDeployment: %s is %s", d.Name, v1.ConditionTypeUpToDate))
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -90,10 +90,10 @@ func cmdLifecycleWaitCheck(cmd *cobra.Command, _ []string) {
|
|||
case <-ctx.Done():
|
||||
return
|
||||
case <-time.After(WatchCheckInterval):
|
||||
cliLog.Info().Msg(fmt.Sprintf("ArangoDeployment: %s is not ready yet. Waiting...", d.Name))
|
||||
logger.Info("ArangoDeployment: %s is not ready yet. Waiting...", d.Name)
|
||||
continue
|
||||
case <-time.After(watchTimeout):
|
||||
cliLog.Error().Msg(fmt.Sprintf("ArangoDeployment: %s is not %s yet - operation timed out!", d.Name, v1.ConditionTypeUpToDate))
|
||||
logger.Error("ArangoDeployment: %s is not %s yet - operation timed out!", d.Name, v1.ConditionTypeUpToDate)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
31
cmd/main-ops/main_ops.go
Normal file
31
cmd/main-ops/main_ops.go
Normal file
|
@ -0,0 +1,31 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/cmd"
|
||||
)
|
||||
|
||||
func main() {
|
||||
os.Exit(cmd.ExecuteOps())
|
||||
}
|
486
cmd/reboot.go
486
cmd/reboot.go
|
@ -1,486 +0,0 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
|
||||
deplv1 "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1"
|
||||
acli "github.com/arangodb/kube-arangodb/pkg/generated/clientset/versioned"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/kclient"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/cobra"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/resource"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/fields"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
)
|
||||
|
||||
var (
|
||||
cmdReboot = &cobra.Command{
|
||||
Use: "reboot",
|
||||
Run: cmdRebootRun,
|
||||
Hidden: false,
|
||||
}
|
||||
|
||||
rebootOptions struct {
|
||||
DeploymentName string
|
||||
ImageName string
|
||||
LicenseSecretName string
|
||||
Coordinators int
|
||||
}
|
||||
|
||||
cmdRebootInspect = &cobra.Command{
|
||||
Use: "inspect",
|
||||
Run: cmdRebootInspectRun,
|
||||
Hidden: true,
|
||||
}
|
||||
|
||||
rebootInspectOptions struct {
|
||||
TargetDir string
|
||||
}
|
||||
)
|
||||
|
||||
func init() {
|
||||
cmdMain.AddCommand(cmdReboot)
|
||||
cmdReboot.AddCommand(cmdRebootInspect)
|
||||
cmdReboot.Flags().StringVar(&rebootOptions.DeploymentName, "deployment-name", "rebooted-deployment", "Name of the deployment")
|
||||
cmdReboot.Flags().StringVar(&rebootOptions.ImageName, "image-name", "arangodb/arangodb:latest", "Image used for the deployment")
|
||||
cmdReboot.Flags().StringVar(&rebootOptions.LicenseSecretName, "license-secret-name", "", "Name of secret for license key")
|
||||
cmdReboot.Flags().IntVar(&rebootOptions.Coordinators, "coordinators", 1, "Initial number of coordinators")
|
||||
|
||||
cmdRebootInspect.Flags().StringVar(&rebootInspectOptions.TargetDir, "target-dir", "/data", "Path to mounted database directory")
|
||||
}
|
||||
|
||||
type inspectResult struct {
|
||||
UUID string `json:"uuid,omitempty"`
|
||||
}
|
||||
|
||||
type inspectResponse struct {
|
||||
Error *string `json:"error,omitempty"`
|
||||
Result *inspectResult `json:"result,omitempty"`
|
||||
}
|
||||
|
||||
type VolumeInspectResult struct {
|
||||
UUID string
|
||||
Claim string
|
||||
Error error
|
||||
}
|
||||
|
||||
func runVolumeInspector(ctx context.Context, kube kubernetes.Interface, ns, name, image, storageClassName string) (string, string, error) {
|
||||
|
||||
deletePVC := true
|
||||
claimname := "arangodb-reboot-pvc-" + name
|
||||
pvcspec := corev1.PersistentVolumeClaim{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: claimname,
|
||||
Labels: map[string]string{
|
||||
"app": "arangodb",
|
||||
"rebooted": "yes",
|
||||
},
|
||||
},
|
||||
Spec: corev1.PersistentVolumeClaimSpec{
|
||||
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
|
||||
VolumeName: name,
|
||||
Resources: corev1.ResourceRequirements{
|
||||
Requests: corev1.ResourceList{
|
||||
corev1.ResourceStorage: *resource.NewQuantity(1024*1024*1024, resource.DecimalSI),
|
||||
},
|
||||
},
|
||||
StorageClassName: util.NewString(storageClassName),
|
||||
},
|
||||
}
|
||||
|
||||
_, err := kube.CoreV1().PersistentVolumeClaims(ns).Create(context.Background(), &pvcspec, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
return "", "", errors.Wrap(err, "failed to create pvc")
|
||||
}
|
||||
defer func() {
|
||||
if deletePVC {
|
||||
cliLog.Debug().Str("pvc-name", claimname).Msg("deleting pvc")
|
||||
kube.CoreV1().PersistentVolumeClaims(ns).Delete(context.Background(), claimname, metav1.DeleteOptions{})
|
||||
}
|
||||
}()
|
||||
|
||||
podname := "arangodb-reboot-pod-" + name
|
||||
podspec := corev1.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: podname,
|
||||
},
|
||||
Spec: corev1.PodSpec{
|
||||
RestartPolicy: corev1.RestartPolicyNever,
|
||||
Containers: []corev1.Container{
|
||||
corev1.Container{
|
||||
Name: "inspector",
|
||||
Image: image,
|
||||
ImagePullPolicy: corev1.PullAlways,
|
||||
Command: []string{"arangodb_operator"},
|
||||
Args: []string{"reboot", "inspect"},
|
||||
Env: []corev1.EnvVar{
|
||||
corev1.EnvVar{
|
||||
Name: constants.EnvOperatorPodNamespace,
|
||||
Value: ns,
|
||||
},
|
||||
},
|
||||
VolumeMounts: []corev1.VolumeMount{
|
||||
corev1.VolumeMount{
|
||||
MountPath: "/data",
|
||||
Name: "data",
|
||||
},
|
||||
},
|
||||
Ports: []corev1.ContainerPort{
|
||||
corev1.ContainerPort{
|
||||
ContainerPort: 8080,
|
||||
},
|
||||
},
|
||||
ReadinessProbe: &corev1.Probe{
|
||||
Handler: corev1.Handler{
|
||||
HTTPGet: &corev1.HTTPGetAction{
|
||||
Path: "/info",
|
||||
Port: intstr.FromInt(8080),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Volumes: []corev1.Volume{
|
||||
k8sutil.CreateVolumeWithPersitantVolumeClaim("data", claimname),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
_, err = kube.CoreV1().Pods(ns).Create(context.Background(), &podspec, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
return "", "", errors.Wrap(err, "failed to create pod")
|
||||
}
|
||||
defer kube.CoreV1().Pods(ns).Delete(context.Background(), podname, metav1.DeleteOptions{})
|
||||
|
||||
podwatch, err := kube.CoreV1().Pods(ns).Watch(context.Background(), metav1.ListOptions{FieldSelector: fields.OneTermEqualSelector("metadata.name", podname).String()})
|
||||
if err != nil {
|
||||
return "", "", errors.Wrap(err, "failed to watch for pod")
|
||||
}
|
||||
defer podwatch.Stop()
|
||||
|
||||
// wait until pod is terminated
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
return "", "", ctx.Err()
|
||||
case ev, ok := <-podwatch.ResultChan():
|
||||
if !ok {
|
||||
return "", "", fmt.Errorf("result channel bad")
|
||||
}
|
||||
|
||||
// get the pod
|
||||
pod, ok := ev.Object.(*corev1.Pod)
|
||||
if !ok {
|
||||
return "", "", fmt.Errorf("failed to get pod")
|
||||
}
|
||||
|
||||
switch pod.Status.Phase {
|
||||
case corev1.PodFailed:
|
||||
return "", "", fmt.Errorf("pod failed: %s", pod.Status.Reason)
|
||||
case corev1.PodRunning:
|
||||
podReady := false
|
||||
for _, c := range pod.Status.Conditions {
|
||||
if c.Type == corev1.PodReady && c.Status == corev1.ConditionTrue {
|
||||
podReady = true
|
||||
}
|
||||
}
|
||||
|
||||
if !podReady {
|
||||
continue
|
||||
}
|
||||
|
||||
resp, err := http.Get("http://" + pod.Status.PodIP + ":8080/info")
|
||||
if err != nil {
|
||||
return "", "", errors.Wrap(err, "Failed to get info")
|
||||
}
|
||||
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return "", "", errors.Wrap(err, "failed to read body")
|
||||
}
|
||||
|
||||
var info inspectResponse
|
||||
if err := json.Unmarshal(body, &info); err != nil {
|
||||
return "", "", errors.Wrap(err, "failed to unmarshal response")
|
||||
}
|
||||
|
||||
if info.Error != nil {
|
||||
return "", "", fmt.Errorf("pod returned error: %s", *info.Error)
|
||||
}
|
||||
deletePVC = false
|
||||
|
||||
return info.Result.UUID, claimname, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func doVolumeInspection(ctx context.Context, kube kubernetes.Interface, ns, name, storageClassName string, resultChan chan<- VolumeInspectResult, image string) {
|
||||
// Create Volume Claim
|
||||
// Create Pod mounting this volume
|
||||
// Wait for pod to be completed
|
||||
// Read logs - parse json
|
||||
// Delete pod
|
||||
uuid, claim, err := runVolumeInspector(ctx, kube, ns, name, image, storageClassName)
|
||||
if err != nil {
|
||||
resultChan <- VolumeInspectResult{Error: err}
|
||||
}
|
||||
resultChan <- VolumeInspectResult{UUID: uuid, Claim: claim}
|
||||
}
|
||||
|
||||
func checkVolumeAvailable(kube kubernetes.Interface, vname string) (VolumeInfo, error) {
|
||||
volume, err := kube.CoreV1().PersistentVolumes().Get(context.Background(), vname, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return VolumeInfo{}, errors.Wrapf(err, "failed to GET volume %s", vname)
|
||||
}
|
||||
|
||||
switch volume.Status.Phase {
|
||||
case corev1.VolumeAvailable:
|
||||
break
|
||||
case corev1.VolumeReleased:
|
||||
// we have to remove the claim reference
|
||||
volume.Spec.ClaimRef = nil
|
||||
if _, err := kube.CoreV1().PersistentVolumes().Update(context.Background(), volume, metav1.UpdateOptions{}); err != nil {
|
||||
return VolumeInfo{}, errors.Wrapf(err, "failed to remove claim reference")
|
||||
}
|
||||
default:
|
||||
return VolumeInfo{}, fmt.Errorf("Volume %s phase is %s, expected %s", vname, volume.Status.Phase, corev1.VolumeAvailable)
|
||||
}
|
||||
|
||||
return VolumeInfo{StorageClassName: volume.Spec.StorageClassName}, nil
|
||||
}
|
||||
|
||||
type VolumeInfo struct {
|
||||
StorageClassName string
|
||||
}
|
||||
|
||||
type VolumeListInfo map[string]VolumeInfo
|
||||
|
||||
func preflightChecks(kube kubernetes.Interface, volumes []string) (VolumeListInfo, error) {
|
||||
info := make(VolumeListInfo)
|
||||
// Check if all values are released
|
||||
for _, vname := range volumes {
|
||||
vi, err := checkVolumeAvailable(kube, vname)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "preflight checks failed")
|
||||
}
|
||||
info[vname] = vi
|
||||
}
|
||||
|
||||
return info, nil
|
||||
}
|
||||
|
||||
func getMyImage(kube kubernetes.Interface, ns, name string) (string, error) {
|
||||
pod, err := kube.CoreV1().Pods(ns).Get(context.Background(), name, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return pod.Spec.Containers[0].Image, nil
|
||||
}
|
||||
|
||||
func createArangoDeployment(cli acli.Interface, ns, deplname, arangoimage string, results map[string]VolumeInspectResult) error {
|
||||
|
||||
prmr := make(map[string]VolumeInspectResult)
|
||||
agnt := make(map[string]VolumeInspectResult)
|
||||
|
||||
for vname, info := range results {
|
||||
if strings.HasPrefix(info.UUID, "PRMR") {
|
||||
prmr[vname] = info
|
||||
} else if strings.HasPrefix(info.UUID, "AGNT") {
|
||||
agnt[vname] = info
|
||||
} else {
|
||||
return fmt.Errorf("unknown server type by uuid: %s", info.UUID)
|
||||
}
|
||||
}
|
||||
|
||||
depl := deplv1.ArangoDeployment{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: deplname,
|
||||
},
|
||||
Spec: deplv1.DeploymentSpec{
|
||||
Image: util.NewString(arangoimage),
|
||||
Coordinators: deplv1.ServerGroupSpec{
|
||||
Count: util.NewInt(rebootOptions.Coordinators),
|
||||
},
|
||||
Agents: deplv1.ServerGroupSpec{
|
||||
Count: util.NewInt(len(agnt)),
|
||||
},
|
||||
DBServers: deplv1.ServerGroupSpec{
|
||||
Count: util.NewInt(len(prmr)),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if rebootOptions.LicenseSecretName != "" {
|
||||
depl.Spec.License.SecretName = util.NewString(rebootOptions.LicenseSecretName)
|
||||
}
|
||||
|
||||
for _, info := range agnt {
|
||||
depl.Status.Members.Agents = append(depl.Status.Members.Agents, deplv1.MemberStatus{
|
||||
ID: info.UUID,
|
||||
PersistentVolumeClaimName: info.Claim,
|
||||
PodName: k8sutil.CreatePodName(deplname, deplv1.ServerGroupAgents.AsRole(), info.UUID, "-rbt"),
|
||||
})
|
||||
}
|
||||
|
||||
for _, info := range prmr {
|
||||
depl.Status.Members.DBServers = append(depl.Status.Members.DBServers, deplv1.MemberStatus{
|
||||
ID: info.UUID,
|
||||
PersistentVolumeClaimName: info.Claim,
|
||||
PodName: k8sutil.CreatePodName(deplname, deplv1.ServerGroupDBServers.AsRole(), info.UUID, "-rbt"),
|
||||
})
|
||||
}
|
||||
|
||||
if _, err := cli.DatabaseV1().ArangoDeployments(ns).Create(context.Background(), &depl, metav1.CreateOptions{}); err != nil {
|
||||
return errors.Wrap(err, "failed to create ArangoDeployment")
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func cmdRebootRun(cmd *cobra.Command, args []string) {
|
||||
|
||||
volumes := args
|
||||
namespace := os.Getenv(constants.EnvOperatorPodNamespace)
|
||||
podname := os.Getenv(constants.EnvOperatorPodName)
|
||||
|
||||
// Create kubernetes client
|
||||
client, ok := kclient.GetDefaultFactory().Client()
|
||||
if !ok {
|
||||
cliLog.Fatal().Msg("Failed to get client")
|
||||
}
|
||||
|
||||
kubecli := client.Kubernetes()
|
||||
|
||||
extcli := client.Arango()
|
||||
|
||||
image, err := getMyImage(kubecli, namespace, podname)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("failed to get my image")
|
||||
}
|
||||
|
||||
vinfo, err := preflightChecks(kubecli, volumes)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("preflight checks failed")
|
||||
}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
ctx := context.Background()
|
||||
resultChan := make(chan VolumeInspectResult)
|
||||
received := 0
|
||||
|
||||
for _, volumeName := range volumes {
|
||||
cliLog.Debug().Str("volume", volumeName).Msg("Starting inspection")
|
||||
wg.Add(1)
|
||||
go func(vn string) {
|
||||
defer wg.Done()
|
||||
doVolumeInspection(ctx, kubecli, namespace, vn, vinfo[vn].StorageClassName, resultChan, image)
|
||||
}(volumeName)
|
||||
}
|
||||
|
||||
members := make(map[string]VolumeInspectResult)
|
||||
|
||||
for {
|
||||
if received == len(volumes) {
|
||||
break
|
||||
}
|
||||
|
||||
select {
|
||||
case res := <-resultChan:
|
||||
if res.Error != nil {
|
||||
cliLog.Error().Err(res.Error).Msg("Inspection failed")
|
||||
} else {
|
||||
cliLog.Info().Str("claim", res.Claim).Str("uuid", res.UUID).Msg("Inspection completed")
|
||||
}
|
||||
members[res.UUID] = res
|
||||
received++
|
||||
case <-ctx.Done():
|
||||
panic(ctx.Err())
|
||||
}
|
||||
}
|
||||
|
||||
cliLog.Debug().Msg("results complete - generating ArangoDeployment resource")
|
||||
|
||||
if err := createArangoDeployment(extcli, namespace, rebootOptions.DeploymentName, rebootOptions.ImageName, members); err != nil {
|
||||
cliLog.Error().Err(err).Msg("failed to create deployment")
|
||||
}
|
||||
|
||||
cliLog.Info().Msg("ArangoDeployment created.")
|
||||
|
||||
// Wait for everyone to be completed
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
// inspectDatabaseDirectory inspects the given directory and returns the inspection result or an error
|
||||
func inspectDatabaseDirectory(dirname string) (*inspectResult, error) {
|
||||
// Access the database directory and look for the following files
|
||||
// UUID
|
||||
|
||||
uuidfile := path.Join(dirname, "UUID")
|
||||
uuid, err := ioutil.ReadFile(path.Clean(uuidfile))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &inspectResult{UUID: strings.TrimSpace(string(uuid))}, nil
|
||||
}
|
||||
|
||||
func cmdRebootInspectRun(cmd *cobra.Command, args []string) {
|
||||
|
||||
var response inspectResponse
|
||||
result, err := inspectDatabaseDirectory(rebootInspectOptions.TargetDir)
|
||||
if err != nil {
|
||||
response.Error = util.NewString(err.Error())
|
||||
}
|
||||
|
||||
response.Result = result
|
||||
|
||||
json, err := json.Marshal(&response)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
http.HandleFunc("/info", func(w http.ResponseWriter, req *http.Request) {
|
||||
w.Write(json)
|
||||
})
|
||||
|
||||
if http.ListenAndServe(":8080", nil); err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to listen and serve")
|
||||
}
|
||||
}
|
|
@ -26,14 +26,12 @@ import (
|
|||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/logging"
|
||||
"github.com/arangodb/kube-arangodb/pkg/storage/provisioner"
|
||||
"github.com/arangodb/kube-arangodb/pkg/storage/provisioner/service"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/constants"
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -63,26 +61,21 @@ func init() {
|
|||
// Run the provisioner
|
||||
func cmdStorageProvisionerRun(cmd *cobra.Command, args []string) {
|
||||
var err error
|
||||
if err := logging.InitGlobalLogger(defaultLogLevel, logLevels); err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to initialize log service")
|
||||
}
|
||||
|
||||
logService = logging.GlobalLogger()
|
||||
|
||||
// Log version
|
||||
|
||||
cliLog.Info().Msgf("Starting arangodb local storage provisioner (%s), version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)
|
||||
logger.Info("Starting arangodb local storage provisioner (%s), version %s build %s", version.GetVersionV1().Edition.Title(), version.GetVersionV1().Version, version.GetVersionV1().Build)
|
||||
|
||||
// Get environment
|
||||
nodeName := os.Getenv(constants.EnvOperatorNodeName)
|
||||
if len(nodeName) == 0 {
|
||||
cliLog.Fatal().Msgf("%s environment variable missing", constants.EnvOperatorNodeName)
|
||||
logger.Fatal("%s environment variable missing", constants.EnvOperatorNodeName)
|
||||
}
|
||||
|
||||
config, deps := newProvisionerConfigAndDeps(nodeName)
|
||||
p, err := service.New(config, deps)
|
||||
config := newProvisionerConfigAndDeps(nodeName)
|
||||
p, err := service.New(config)
|
||||
if err != nil {
|
||||
cliLog.Fatal().Err(err).Msg("Failed to create provisioner")
|
||||
logger.Err(err).Fatal("Failed to create provisioner")
|
||||
}
|
||||
|
||||
ctx := context.TODO()
|
||||
|
@ -90,14 +83,11 @@ func cmdStorageProvisionerRun(cmd *cobra.Command, args []string) {
|
|||
}
|
||||
|
||||
// newProvisionerConfigAndDeps creates storage provisioner config & dependencies.
|
||||
func newProvisionerConfigAndDeps(nodeName string) (service.Config, service.Dependencies) {
|
||||
func newProvisionerConfigAndDeps(nodeName string) service.Config {
|
||||
cfg := service.Config{
|
||||
Address: net.JoinHostPort("0.0.0.0", strconv.Itoa(storageProvisioner.port)),
|
||||
NodeName: nodeName,
|
||||
}
|
||||
deps := service.Dependencies{
|
||||
Log: logService.MustGetLogger(logging.LoggerNameProvisioner),
|
||||
}
|
||||
|
||||
return cfg, deps
|
||||
return cfg
|
||||
}
|
||||
|
|
64
cmd/task.go
Normal file
64
cmd/task.go
Normal file
|
@ -0,0 +1,64 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func init() {
|
||||
var deploymentName string
|
||||
|
||||
cmdMain.AddCommand(cmdTask)
|
||||
cmdOps.AddCommand(cmdTask)
|
||||
|
||||
cmdTask.AddCommand(cmdTaskCreate)
|
||||
cmdTaskCreate.Flags().StringVarP(&deploymentName, ArgDeploymentName, "d", "",
|
||||
"Name of ArangoDeployment for which Task will be created - necessary when more than one deployment exist within one namespace")
|
||||
|
||||
cmdTask.AddCommand(cmdTaskState)
|
||||
}
|
||||
|
||||
var cmdTask = &cobra.Command{
|
||||
Use: "task",
|
||||
Run: executeUsage,
|
||||
}
|
||||
|
||||
var cmdTaskCreate = &cobra.Command{
|
||||
Use: "create",
|
||||
Short: "Create task",
|
||||
Run: taskCreate,
|
||||
}
|
||||
|
||||
var cmdTaskState = &cobra.Command{
|
||||
Use: "state",
|
||||
Short: "Get Task state",
|
||||
Long: "It prints the task current state on the stdout",
|
||||
Run: taskState,
|
||||
}
|
||||
|
||||
func taskCreate(cmd *cobra.Command, args []string) {
|
||||
logger.Info("TODO: create task")
|
||||
}
|
||||
|
||||
func taskState(cmd *cobra.Command, args []string) {
|
||||
logger.Info("TODO: check task state")
|
||||
}
|
|
@ -23,8 +23,9 @@ package cmd
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
"github.com/spf13/cobra"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
|
|
@ -4,3 +4,7 @@
|
|||
- [Documentation](https://www.arangodb.com/docs/stable/deployment-kubernetes.html)
|
||||
- [Design documents](./design/README.md)
|
||||
- [Providers](./providers/README.md)
|
||||
|
||||
|
||||
# ArangoDB Kubernetes Operator Generated Documentation
|
||||
- [ArangoDB Operator Metrics & Alerts](./generated/metrics/README.md)
|
|
@ -1,6 +1,6 @@
|
|||
# ArangoDB on bare metal Kubernetes
|
||||
|
||||
A not of warning for lack of a better word upfront: Kubernetes is
|
||||
A note of warning for lack of a better word upfront: Kubernetes is
|
||||
awesome and powerful. As with awesome and powerful things, there is
|
||||
infinite ways of setting up a k8s cluster. With great flexibility
|
||||
comes great complexity. There are infinite ways of hitting barriers.
|
||||
|
|
|
@ -10,4 +10,7 @@
|
|||
- [Upgrading](./upgrading.md)
|
||||
- [Rotating Pods](./rotating.md)
|
||||
- [Maintenance](./maintenance.md)
|
||||
- [Additional configuration](./additional_configuration.md)
|
||||
- [Additional configuration](./additional_configuration.md)
|
||||
- [Topology awareness](./topology_awareness.md)
|
||||
- [Configuring timezone](./configuring_tz.md)
|
||||
- [Operator API](./api.md)
|
||||
|
|
30
docs/design/api.md
Normal file
30
docs/design/api.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
# Operator API
|
||||
|
||||
A running operator exposes HTTP and gRPC API listeners to allow retrieving and setting some configuration values programmatically.
|
||||
Both listeners require a secured connection to be established. It is possible to provide TLS certificate via k8s secret
|
||||
using command line option `--api.tls-secret-name`. If secret name is not provided, operator will use self-signed certificate.
|
||||
|
||||
Some HTTP endpoints require the authorization to work with. All gRPC endpoints require the authorization.
|
||||
The authorization can be accomplished by providing JWT token in 'Authorization' header, e.g. `Authorization: Bearer <token>`
|
||||
The JWT token can be fetched from k8s secret (by default `arangodb-operator-api-jwt`). The token is generated automatically
|
||||
on operator startup using the signing key specified in `arangodb-operator-api-jwt-key` secret. If it is empty or not exists,
|
||||
the signing key will be auto-generated and saved into secret. You can specify other signing key using `--api.jwt-key-secret-name` CLI option.
|
||||
|
||||
## HTTP
|
||||
|
||||
The HTTP API is running at endpoint specified by operator command line options `--api.http-port` (8628 by default).
|
||||
|
||||
The HTTP API exposes endpoints used to get operator health and readiness status, operator version, and prometheus-compatible metrics.
|
||||
|
||||
For now only `/metrics` endpoint require authorization.
|
||||
|
||||
|
||||
## gRPC
|
||||
|
||||
The gRPC API is running at endpoint specified by operator command line options `--api.grpc-port` (8728 by default).
|
||||
|
||||
The gRPC API is exposed to allow programmatic access to some operator features and status.
|
||||
|
||||
gRPC protobuf definitions and go-client can be found at `github.com/kube-arangodb/pkg/api/server` package.
|
||||
|
||||
All gRPC requests require per-RPC metadata set to contain a valid Authorization header.
|
18
docs/design/configuring_tz.md
Normal file
18
docs/design/configuring_tz.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Configuring timezone
|
||||
|
||||
To set timezone for cluster components, mount the required timezone into container
|
||||
by adjusting `spec.<group>` of ArangoDeployment resource:
|
||||
```yaml
|
||||
dbservers:
|
||||
volumeMounts:
|
||||
- mountPath: /etc/localtime
|
||||
name: timezone
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: /usr/share/zoneinfo/Europe/Warsaw
|
||||
type: File
|
||||
name: timezone
|
||||
```
|
||||
|
||||
If `/usr/share/zoneinfo` is not present on your host your probably have to install `tzdata` package.
|
||||
|
|
@ -28,7 +28,7 @@ In default mode metrics provided by ArangoDB `_admin/metrics` (<=3.7) or `_admin
|
|||
|
||||
There are several ways to configure Prometheus to fetch metrics from the ArangoDB Exporter.
|
||||
|
||||
Below you're find a sample Prometheus configuration file that can be used to fetch
|
||||
Below you will find a sample Prometheus configuration file that can be used to fetch
|
||||
metrics from an ArangoDB exporter listening on localhost port 9101 (without TLS).
|
||||
|
||||
```yaml
|
||||
|
|
|
@ -1,12 +1,147 @@
|
|||
# Metrics
|
||||
|
||||
TODO:
|
||||
Operator provides metrics of its operations in a format supported by [Prometheus](https://prometheus.io/).
|
||||
|
||||
- Investigate prometheus annotations wrt metrics
|
||||
- see https://github.com/prometheus/prometheus/blob/master/documentation/examples/prometheus-kubernetes.yml
|
||||
- `prometheus.io/scrape`: Only scrape services that have a value of `true`
|
||||
- `prometheus.io/scheme`: If the metrics endpoint is secured then you will need
|
||||
- `prometheus.io/path`: If the metrics path is not `/metrics` override this.
|
||||
- `prometheus.io/port`: If the metrics are exposed on a different port to the
|
||||
The metrics are exposed through HTTPS on port `8528` under path `/metrics`.
|
||||
|
||||
- Add prometheus compatible `/metrics` endpoint to `arangod`
|
||||
For a full list of available metrics, see [here](./../generated/metrics/README.md).
|
||||
|
||||
#### Contents
|
||||
- [Integration with standard Prometheus installation (no TLS)](#Integration-with-standard-Prometheus-installation-no-TLS)
|
||||
- [Integration with standard Prometheus installation (TLS)](#Integration-with-standard-Prometheus-installation-TLS)
|
||||
- [Integration with Prometheus Operator](#Integration-with-Prometheus-Operator)
|
||||
- [Exposing ArangoDB metrics](#ArangoDB-metrics)
|
||||
|
||||
|
||||
## Integration with standard Prometheus installation (no TLS)
|
||||
|
||||
After creating operator deployment, you must configure Prometheus using a configuration file that instructs it
|
||||
about which targets to scrape.
|
||||
To do so, add a new scrape job to your prometheus.yaml config:
|
||||
```yaml
|
||||
scrape_configs:
|
||||
- job_name: 'arangodb-operator'
|
||||
|
||||
scrape_interval: 10s # scrape every 10 seconds.
|
||||
|
||||
scheme: 'https'
|
||||
tls_config:
|
||||
insecure_skip_verify: true
|
||||
|
||||
static_configs:
|
||||
- targets:
|
||||
- "<operator-endpoint-ip>:8528"
|
||||
```
|
||||
|
||||
## Integration with standard Prometheus installation (TLS)
|
||||
|
||||
By default, the operator uses self-signed certificate for its server API.
|
||||
To use your own certificate, you need to create k8s secret containing certificate and provide secret name to operator.
|
||||
|
||||
Create k8s secret (in same namespace where the operator is running):
|
||||
```shell
|
||||
kubectl create secret tls my-own-certificate --cert ./cert.crt --key ./cert.key
|
||||
```
|
||||
Then edit the operator deployment definition (`kubectl edit deployments.apps`) to use your secret for its server API:
|
||||
```
|
||||
spec:
|
||||
# ...
|
||||
containers:
|
||||
# ...
|
||||
args:
|
||||
- --server.tls-secret-name=my-own-certificate
|
||||
# ...
|
||||
```
|
||||
Wait for operator pods to restart.
|
||||
|
||||
Now update Prometheus config to use your certificate for operator scrape job:
|
||||
```yaml
|
||||
tls_config:
|
||||
# if you are using self-signed certificate, just specify CA certificate:
|
||||
ca_file: /etc/prometheus/rootCA.crt
|
||||
|
||||
# otherwise, specify the generated client certificate and key:
|
||||
cert_file: /etc/prometheus/cert.crt
|
||||
key_file: /etc/prometheus/cert.key
|
||||
```
|
||||
|
||||
## Integration with Prometheus Operator
|
||||
|
||||
Assuming that you have [Prometheus Operator](https://prometheus-operator.dev/) installed in your cluster (`monitoring` namespace),
|
||||
and kube-arangodb installed in `default` namespace, you can easily configure the integration with ArangoDB operator.
|
||||
|
||||
The easiest way to do that is to create new a ServiceMonitor:
|
||||
```yaml
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: ServiceMonitor
|
||||
metadata:
|
||||
name: arango-deployment-operator
|
||||
namespace: monitoring
|
||||
labels:
|
||||
prometheus: kube-prometheus
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
namespaceSelector:
|
||||
matchNames:
|
||||
- default
|
||||
endpoints:
|
||||
- port: server
|
||||
scheme: https
|
||||
tlsConfig:
|
||||
insecureSkipVerify: true
|
||||
```
|
||||
|
||||
You also can see the example of Grafana dashboard at `examples/metrics` folder of this repo.
|
||||
|
||||
|
||||
|
||||
## ArangoDB metrics
|
||||
|
||||
The operator can run sidecar containers for ArangoDB deployments of type `Cluster` which expose metrics in Prometheus format.
|
||||
Edit your `ArangoDeployment` resource, setting `spec.metrics.enabled` to true to enable ArangoDB metrics:
|
||||
```yaml
|
||||
spec:
|
||||
metrics:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
The operator will run a sidecar container for every cluster component.
|
||||
In addition to the sidecar containers the operator will deploy a `Service` to access the exporter ports (from within the k8s cluster),
|
||||
and a resource of type `ServiceMonitor`, provided the corresponding custom resource definition is deployed in the k8s cluster.
|
||||
If you are running Prometheus in the same k8s cluster with the Prometheus operator, this will be the case.
|
||||
The ServiceMonitor will have the following labels set:
|
||||
```yaml
|
||||
app: arangodb
|
||||
arango_deployment: YOUR_DEPLOYMENT_NAME
|
||||
context: metrics
|
||||
metrics: prometheus
|
||||
```
|
||||
This makes it possible to configure your Prometheus deployment to automatically start monitoring on the available Prometheus feeds.
|
||||
To this end, you must configure the `serviceMonitorSelector` in the specs of your Prometheus deployment to match these labels. For example:
|
||||
```yaml
|
||||
serviceMonitorSelector:
|
||||
matchLabels:
|
||||
metrics: prometheus
|
||||
```
|
||||
would automatically select all pods of all ArangoDB cluster deployments which have metrics enabled.
|
||||
|
||||
By default, the sidecar metrics exporters are using TLS for all connections. You can disable the TLS by specifying
|
||||
```yaml
|
||||
spec:
|
||||
metrics:
|
||||
enabled: true
|
||||
tls: false
|
||||
```
|
||||
|
||||
You can fine-tune the monitored metrics by specifying `ArangoDeployment` annotations. Example:
|
||||
```yaml
|
||||
spec:
|
||||
annotations:
|
||||
prometheus.io/scrape: 'true'
|
||||
prometheus.io/port: '9101'
|
||||
prometheus.io/scrape_interval: '5s'
|
||||
```
|
||||
|
||||
See the [list of exposed ArangoDB metrics](https://www.arangodb.com/docs/stable/http/administration-and-monitoring-metrics.html#list-of-exposed-metrics)
|
||||
|
|
198
docs/design/topology_awareness.md
Normal file
198
docs/design/topology_awareness.md
Normal file
|
@ -0,0 +1,198 @@
|
|||
# Topology awareness
|
||||
|
||||
## Table of contents
|
||||
1. [Overview](#1)
|
||||
2. [Requirements](#2)
|
||||
3. [Enable/Disable topology](#3)
|
||||
4. [Check topology](#4)
|
||||
|
||||
## Overview <a name="1"></a>
|
||||
|
||||
Topology awareness is responsible for the even distribution of groups of pods across nodes in the cluster.
|
||||
A distribution should be done by the zone, so thanks to that if one of the zone fails there are other working pods
|
||||
in different zones. For the time being, there are 3 groups of pods that can be distributed evenly
|
||||
(coordinators, agents, DB servers). For each of these groups, the Kube-ArangoDB operator
|
||||
tries to distribute them in different zones in a cluster, so there can not
|
||||
be a situation where many pods of the same group exist in one zone and there are no
|
||||
pods in other zones. It would lead to many issues when a zone with many pods failed.
|
||||
When Kube-ArangoDB operator is going to add a new pod, but all zones already contain a pod of this group,
|
||||
it will choose the zone with the fewest number of pods of this group.
|
||||
|
||||
#### Example
|
||||
Let's say we have two zones (uswest-1, uswest-2) and we would like to distribute ArangoDB cluster
|
||||
with 3 coordinators, 3 agents, and 3 DB servers. First coordinator, agent, and DB server would go to random zone (e.g. uswest-1).
|
||||
Second coordinator must be assigned to the `uswest-2` zone, because the zone `uswest-1` already contains one coordinator.
|
||||
The same happens for the second agent and the second DB server. Third coordinator can be placed randomly
|
||||
because each of the zone contains exactly one coordinator, so after this operation one of the zone should have 2 coordinators
|
||||
and second zone should have 1 coordinator. The same applies to agents and DB servers.
|
||||
|
||||
According to the above example we can see that:
|
||||
- coordinators should not be assigned to the same zone with other coordinators, unless ALL zones contain coordinators.
|
||||
- agents should not be placed in the same zone with other agents, unless ALL zones contain agents.
|
||||
- DB servers should not be placed in the same zone with other DB servers, unless ALL zones contain DB servers.
|
||||
|
||||
## Requirements <a name="2"></a>
|
||||
|
||||
- It does not work in a `Single` mode of a deployment.
|
||||
The `spec.mode` of the Kubernetes resource ArangoDeployment can not be set to `Single`.
|
||||
- Kube-ArangoDB version should be at least 1.2.10 and enterprise version.
|
||||
|
||||
## How to enable/disable topology awareness for the ArangoDeployment <a name="3"></a>
|
||||
|
||||
Enable topology:
|
||||
```yaml
|
||||
spec:
|
||||
topology:
|
||||
enabled: true
|
||||
label: string # A node's label which will be considered as distribution affinity. By default: 'topology.kubernetes.io/zone'
|
||||
zones: int # How many zones will be used to assign pods there. It must be higher than 0.
|
||||
```
|
||||
|
||||
Disable topology:
|
||||
```yaml
|
||||
spec:
|
||||
topology:
|
||||
enable: false
|
||||
```
|
||||
or remove `spec.topology` object.
|
||||
|
||||
## How to check which ArangoDB members are assigned to the topology <a name="4"></a>
|
||||
|
||||
#### Topology aware
|
||||
|
||||
Each member should be topology aware, and it can be checked in list of conditions here `status.members.[agents|coordinators|dbservers].conditions`.
|
||||
Example:
|
||||
```yaml
|
||||
status:
|
||||
...
|
||||
members:
|
||||
agents:
|
||||
- conditions:
|
||||
reason: Topology awareness enabled
|
||||
status: True
|
||||
type: TopologyAware
|
||||
```
|
||||
|
||||
If `status` for the condition's type `TopologyAware` is set to `false` then it is required to replace ArangoDB member.
|
||||
To do so we need to set pod's annotation `deployment.arangodb.com/replace` to `true`, starting from all
|
||||
coordinators which are not assigned to any zone. This situation usually happens when
|
||||
topology was enabled on an existing ArangoDeployment resource.
|
||||
|
||||
#### Member topology
|
||||
Each member's status should have topology, and it can be checked here `status.members.[agents|coordinators|dbservers].topology` and here `status.topology`.
|
||||
Example:
|
||||
```yaml
|
||||
status:
|
||||
...
|
||||
members:
|
||||
agents:
|
||||
- id: AGNT-2shphs7a
|
||||
topology:
|
||||
id: 35a61527-9d2b-49df-8a31-e62417fcd7e6
|
||||
label: eu-central-1c
|
||||
rack: 0
|
||||
...
|
||||
topology:
|
||||
id: 35a61527-9d2b-49df-8a31-e62417fcd7e6
|
||||
label: topology.kubernetes.io/zone
|
||||
size: 3
|
||||
zones:
|
||||
- id: 0
|
||||
labels:
|
||||
- eu-central-1c
|
||||
members:
|
||||
agnt:
|
||||
- AGNT-2shphs7a
|
||||
...
|
||||
- ...
|
||||
...
|
||||
```
|
||||
which means that `AGNT-2shphs7a` is assigned to `eu-central-1c`.
|
||||
|
||||
#### Pod's labels
|
||||
|
||||
A pod which belongs to the member should have two new labels.
|
||||
Example:
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
labels:
|
||||
deployment.arangodb.com/topology: 35a61527-9d2b-49df-8a31-e62417fcd7e6
|
||||
deployment.arangodb.com/zone: "0"
|
||||
```
|
||||
|
||||
#### Pod anti-affinity
|
||||
|
||||
A pod which belongs to the member should have a new pod anti affinity rules.
|
||||
Example:
|
||||
```yaml
|
||||
spec:
|
||||
affinity:
|
||||
podAntiAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
- labelSelector:
|
||||
matchExpressions:
|
||||
- key: deployment.arangodb.com/topology
|
||||
operator: In
|
||||
values:
|
||||
- 35a61527-9d2b-49df-8a31-e62417fcd7e6
|
||||
- ...
|
||||
- key: deployment.arangodb.com/zone
|
||||
operator: In
|
||||
values:
|
||||
- "1"
|
||||
- "2"
|
||||
- ...
|
||||
topologyKey: topology.kubernetes.io/zone
|
||||
- ...
|
||||
```
|
||||
which means that pod can not be assigned to zone `1` and `2`.
|
||||
|
||||
#### Node affinity
|
||||
|
||||
A pod which belongs to the member can have a node affinity rules. If a pod does not have it then it will have pod affinities.
|
||||
Example:
|
||||
```yaml
|
||||
spec:
|
||||
affinity:
|
||||
nodeAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: topology.kubernetes.io/zone
|
||||
operator: In
|
||||
values:
|
||||
- eu-central-1c
|
||||
- ...
|
||||
- matchExpressions:
|
||||
- key: topology.kubernetes.io/zone
|
||||
operator: NotIn
|
||||
values:
|
||||
- eu-central-1a
|
||||
- eu-central-1b
|
||||
- ...
|
||||
```
|
||||
|
||||
#### Pod affinity
|
||||
|
||||
A pod which belongs to the member can have a pod affinity rules. If a pod does not have it then it will have node affinity.
|
||||
Example:
|
||||
```yaml
|
||||
spec:
|
||||
affinity:
|
||||
podAffinity:
|
||||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
- labelSelector:
|
||||
matchExpressions:
|
||||
- key: deployment.arangodb.com/topology
|
||||
operator: In
|
||||
values:
|
||||
- 35a61527-9d2b-49df-8a31-e62417fcd7e6
|
||||
- key: deployment.arangodb.com/zone
|
||||
operator: In
|
||||
values:
|
||||
- "1"
|
||||
- ...
|
||||
topologyKey: topology.kubernetes.io/zone
|
||||
```
|
27
docs/generated/metrics/README.md
Normal file
27
docs/generated/metrics/README.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
# ArangoDB Operator Metrics
|
||||
|
||||
## List
|
||||
|
||||
| Name | Namespace | Group | Type | Description |
|
||||
|:-------------------------------------------------------------------------------------------------------------------------------------:|:-----------------:|:------------:|:-------:|:--------------------------------------------------------------------------------------|
|
||||
| [arangodb_operator_agency_errors](./arangodb_operator_agency_errors.md) | arangodb_operator | agency | Counter | Current count of agency cache fetch errors |
|
||||
| [arangodb_operator_agency_fetches](./arangodb_operator_agency_fetches.md) | arangodb_operator | agency | Counter | Current count of agency cache fetches |
|
||||
| [arangodb_operator_agency_index](./arangodb_operator_agency_index.md) | arangodb_operator | agency | Gauge | Current index of the agency cache |
|
||||
| [arangodb_operator_agency_cache_health_present](./arangodb_operator_agency_cache_health_present.md) | arangodb_operator | agency_cache | Gauge | Determines if local agency cache health is present |
|
||||
| [arangodb_operator_agency_cache_healthy](./arangodb_operator_agency_cache_healthy.md) | arangodb_operator | agency_cache | Gauge | Determines if agency is healthy |
|
||||
| [arangodb_operator_agency_cache_leaders](./arangodb_operator_agency_cache_leaders.md) | arangodb_operator | agency_cache | Gauge | Determines agency leader vote count |
|
||||
| [arangodb_operator_agency_cache_member_commit_offset](./arangodb_operator_agency_cache_member_commit_offset.md) | arangodb_operator | agency_cache | Gauge | Determines agency member commit offset |
|
||||
| [arangodb_operator_agency_cache_member_serving](./arangodb_operator_agency_cache_member_serving.md) | arangodb_operator | agency_cache | Gauge | Determines if agency member is reachable |
|
||||
| [arangodb_operator_agency_cache_present](./arangodb_operator_agency_cache_present.md) | arangodb_operator | agency_cache | Gauge | Determines if local agency cache is present |
|
||||
| [arangodb_operator_agency_cache_serving](./arangodb_operator_agency_cache_serving.md) | arangodb_operator | agency_cache | Gauge | Determines if agency is serving |
|
||||
| [arangodb_operator_engine_panics_recovered](./arangodb_operator_engine_panics_recovered.md) | arangodb_operator | engine | Counter | Number of Panics recovered inside Operator reconciliation loop |
|
||||
| [arangodb_operator_members_unexpected_container_exit_codes](./arangodb_operator_members_unexpected_container_exit_codes.md) | arangodb_operator | members | Counter | Counter of unexpected restarts in pod (Containers/InitContainers/EphemeralContainers) |
|
||||
| [arangodb_operator_rebalancer_enabled](./arangodb_operator_rebalancer_enabled.md) | arangodb_operator | rebalancer | Gauge | Determines if rebalancer is enabled |
|
||||
| [arangodb_operator_rebalancer_moves_current](./arangodb_operator_rebalancer_moves_current.md) | arangodb_operator | rebalancer | Gauge | Define how many moves are currently in progress |
|
||||
| [arangodb_operator_rebalancer_moves_failed](./arangodb_operator_rebalancer_moves_failed.md) | arangodb_operator | rebalancer | Counter | Define how many moves failed |
|
||||
| [arangodb_operator_rebalancer_moves_generated](./arangodb_operator_rebalancer_moves_generated.md) | arangodb_operator | rebalancer | Counter | Define how many moves were generated |
|
||||
| [arangodb_operator_rebalancer_moves_succeeded](./arangodb_operator_rebalancer_moves_succeeded.md) | arangodb_operator | rebalancer | Counter | Define how many moves succeeded |
|
||||
| [arangodb_operator_resources_arangodeployment_accepted](./arangodb_operator_resources_arangodeployment_accepted.md) | arangodb_operator | resources | Gauge | Defines if ArangoDeployment has been accepted |
|
||||
| [arangodb_operator_resources_arangodeployment_immutable_errors](./arangodb_operator_resources_arangodeployment_immutable_errors.md) | arangodb_operator | resources | Counter | Counter for deployment immutable errors |
|
||||
| [arangodb_operator_resources_arangodeployment_uptodate](./arangodb_operator_resources_arangodeployment_uptodate.md) | arangodb_operator | resources | Gauge | Defines if ArangoDeployment is uptodate |
|
||||
| [arangodb_operator_resources_arangodeployment_validation_errors](./arangodb_operator_resources_arangodeployment_validation_errors.md) | arangodb_operator | resources | Counter | Counter for deployment validation errors |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_agency_cache_health_present (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Determines if local agency cache health is present
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_agency_cache_healthy (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Determines if agency is healthy
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,13 @@
|
|||
# arangodb_operator_agency_cache_leaders (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Determines agency leader vote count. Should be always one
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
||||
| agent | Agent ID |
|
|
@ -0,0 +1,13 @@
|
|||
# arangodb_operator_agency_cache_member_commit_offset (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Determines agency member commit offset. Set to -1 if Agent is not reachable
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
||||
| agent | Agent ID |
|
|
@ -0,0 +1,13 @@
|
|||
# arangodb_operator_agency_cache_member_serving (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Determines if agency member is reachable
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
||||
| agent | Agent ID |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_agency_cache_present (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Determines if local agency cache is present
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_agency_cache_serving (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Determines if agency is serving
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
12
docs/generated/metrics/arangodb_operator_agency_errors.md
Normal file
12
docs/generated/metrics/arangodb_operator_agency_errors.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_agency_errors (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Current count of agency cache fetch errors
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
12
docs/generated/metrics/arangodb_operator_agency_fetches.md
Normal file
12
docs/generated/metrics/arangodb_operator_agency_fetches.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_agency_fetches (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Current count of agency cache fetches
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
12
docs/generated/metrics/arangodb_operator_agency_index.md
Normal file
12
docs/generated/metrics/arangodb_operator_agency_index.md
Normal file
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_agency_index (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Current index of the agency cache
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,11 @@
|
|||
# arangodb_operator_engine_panics_recovered (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Number of Panics recovered inside Operator reconciliation loop. Section represents recovery section
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:-------:|:--------------|
|
||||
| section | Panic Section |
|
|
@ -0,0 +1,13 @@
|
|||
# arangodb_operator_kubernetes_events_created (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Counter for created events
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
||||
| eventType | Event Type |
|
|
@ -0,0 +1,16 @@
|
|||
# arangodb_operator_members_unexpected_container_exit_codes (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Counter of unexpected restarts in pod (Containers/InitContainers/EphemeralContainers)
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:--------------:|:-------------------------------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
||||
| member | Member ID |
|
||||
| container | Container Name |
|
||||
| container_type | Container/InitContainer/EphemeralContainer |
|
||||
| code | ExitCode |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_rebalancer_enabled (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Determines if rebalancer is enabled
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_rebalancer_moves_current (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Define how many moves are currently in progress
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_rebalancer_moves_failed (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Define how many moves failed
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_rebalancer_moves_generated (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Define how many moves were generated
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_rebalancer_moves_succeeded (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Define how many moves succeeded
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_resources_arangodeployment_accepted (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Defines if ArangoDeployment has been accepted
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_resources_arangodeployment_immutable_errors (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Counter for deployment immutable errors
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_resources_arangodeployment_uptodate (Gauge)
|
||||
|
||||
## Description
|
||||
|
||||
Defines if ArangoDeployment is uptodate
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -0,0 +1,12 @@
|
|||
# arangodb_operator_resources_arangodeployment_validation_errors (Counter)
|
||||
|
||||
## Description
|
||||
|
||||
Counter for deployment validation errors
|
||||
|
||||
## Labels
|
||||
|
||||
| Label | Description |
|
||||
|:---------:|:---------------------|
|
||||
| namespace | Deployment Namespace |
|
||||
| name | Deployment Name |
|
|
@ -11,7 +11,7 @@ metadata:
|
|||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
app: arango-deployment-operator
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
namespaceSelector:
|
||||
matchNames:
|
||||
- default
|
||||
|
|
|
@ -6,7 +6,7 @@ spec:
|
|||
restartPolicy: Never
|
||||
serviceAccountName: arango-deployment-operator-reboot
|
||||
containers:
|
||||
- image: arangodb/kube-arangodb:1.2.12
|
||||
- image: arangodb/kube-arangodb:1.2.15
|
||||
name: reboot
|
||||
command: ["arangodb_operator", "reboot"]
|
||||
args:
|
||||
|
|
15
go.mod
15
go.mod
|
@ -30,7 +30,6 @@ require (
|
|||
github.com/arangodb/go-upgrade-rules v0.0.0-20180809110947-031b4774ff21
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible
|
||||
github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9
|
||||
github.com/ghodss/yaml v1.0.0
|
||||
github.com/gin-gonic/gin v1.7.2
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible
|
||||
github.com/jessevdk/go-assets v0.0.0-20160921144138-4f4301a06e15
|
||||
|
@ -46,7 +45,11 @@ require (
|
|||
github.com/spf13/cobra v1.2.1
|
||||
github.com/spf13/pflag v1.0.5
|
||||
github.com/stretchr/testify v1.7.0
|
||||
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c
|
||||
google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad // indirect
|
||||
google.golang.org/grpc v1.47.0
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b
|
||||
k8s.io/api v0.21.10
|
||||
k8s.io/apiextensions-apiserver v0.18.3
|
||||
k8s.io/apimachinery v0.21.10
|
||||
|
@ -68,16 +71,13 @@ require (
|
|||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
|
||||
github.com/golang/protobuf v1.5.2 // indirect
|
||||
github.com/google/addlicense v0.0.0-20210428195630-6d92264d7170 // indirect
|
||||
github.com/google/go-cmp v0.5.5 // indirect
|
||||
github.com/google/go-cmp v0.5.6 // indirect
|
||||
github.com/google/gofuzz v1.1.0 // indirect
|
||||
github.com/google/uuid v1.1.2 // indirect
|
||||
github.com/googleapis/gnostic v0.4.1 // indirect
|
||||
github.com/hashicorp/golang-lru v0.5.3 // indirect
|
||||
github.com/imdario/mergo v0.3.5 // indirect
|
||||
github.com/inconshreveable/mousetrap v1.0.0 // indirect
|
||||
github.com/jessevdk/go-assets-builder v0.0.0-20130903091706-b8483521738f // indirect
|
||||
github.com/jessevdk/go-flags v1.5.0 // indirect
|
||||
github.com/json-iterator/go v1.1.11 // indirect
|
||||
github.com/leodido/go-urn v1.2.1 // indirect
|
||||
github.com/mattn/go-isatty v0.0.13 // indirect
|
||||
|
@ -97,14 +97,13 @@ require (
|
|||
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d // indirect
|
||||
golang.org/x/text v0.3.6 // indirect
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
|
||||
google.golang.org/appengine v1.6.7 // indirect
|
||||
google.golang.org/protobuf v1.27.1 // indirect
|
||||
google.golang.org/protobuf v1.28.0
|
||||
gopkg.in/inf.v0 v0.9.1 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
k8s.io/klog/v2 v2.9.0 // indirect
|
||||
k8s.io/kube-openapi v0.0.0-20211110012726-3cc51fd1e909 // indirect
|
||||
k8s.io/utils v0.0.0-20210521133846-da695404a2bc // indirect
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
|
||||
sigs.k8s.io/yaml v1.2.0 // indirect
|
||||
sigs.k8s.io/yaml v1.2.0
|
||||
)
|
||||
|
|
216
go.sum
216
go.sum
|
@ -6,7 +6,6 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK
|
|||
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.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw=
|
||||
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=
|
||||
|
@ -39,39 +38,29 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX
|
|||
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/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
|
||||
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
|
||||
github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
|
||||
github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
|
||||
github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
|
||||
github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
|
||||
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
|
||||
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
|
||||
github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw=
|
||||
github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=
|
||||
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
|
||||
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
|
||||
github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
|
||||
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
|
||||
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/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
|
||||
github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||
github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
|
||||
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
|
||||
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/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
|
||||
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
|
||||
github.com/arangodb-helper/go-certificates v0.0.0-20180821055445-9fca24fc2680 h1:5YCGq0gkf/sCEkDFIsMBPj59GOm5cMibGqDBH2OWWfQ=
|
||||
github.com/arangodb-helper/go-certificates v0.0.0-20180821055445-9fca24fc2680/go.mod h1:xDyzBwyYzcEhsaDXtmxCNM4p5BrtuoVYYsRTuJqmCeg=
|
||||
github.com/arangodb/arangosync-client v0.7.0 h1:3vLOVnMyr5vGlPA0OHxJL9Wyy49JJwN0uBYU1HDk0qk=
|
||||
github.com/arangodb/arangosync-client v0.7.0/go.mod h1:g+JcxH3C63wKaJPnPr9nggYoGbt/bYCWpfcRG0NSodY=
|
||||
github.com/arangodb/go-driver v0.0.0-20210621075908-e7a6fa0cbd18 h1:3J0tqp5eQ8ptGOeeu7vo92RKf24bOA7MFy0z3uPiTWg=
|
||||
github.com/arangodb/go-driver v0.0.0-20210621075908-e7a6fa0cbd18/go.mod h1:3NUekcRLpgheFIGEwcOvxilEW73MV1queNKW58k7sdc=
|
||||
github.com/arangodb/go-driver v1.2.1 h1:HREDHhDmzdIWxHmfkfTESbYUnRjESjPh4WUuXq7FZa8=
|
||||
github.com/arangodb/go-driver v1.2.1/go.mod h1:zdDkJJnCj8DAkfbtIjIXnsTrWIiy6VhP3Vy14p+uQeY=
|
||||
github.com/arangodb/go-driver/v2 v2.0.0-20211021031401-d92dcd5a4c83 h1:PCbi3alUFastUw6InBKGEXqniveJJcQuMYspubJMRS8=
|
||||
|
@ -83,18 +72,17 @@ github.com/arangodb/go-velocypack v0.0.0-20200318135517-5af53c29c67e/go.mod h1:m
|
|||
github.com/arangodb/rebalancer v0.1.1 h1:8MikmxlhywKnw/wiDqctD8FFwBZhAAF1E3mIqh8nzCA=
|
||||
github.com/arangodb/rebalancer v0.1.1/go.mod h1:wLvglmYNuoTUYbLQq/UESIMVkINmSX9eZWC5QB9kNyk=
|
||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
||||
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
|
||||
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/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
|
||||
github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM=
|
||||
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
|
||||
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
|
@ -109,9 +97,13 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
|
|||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
|
||||
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
|
||||
github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
|
||||
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
|
||||
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/go-iptables v0.4.3/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU=
|
||||
github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
|
||||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
|
@ -123,17 +115,15 @@ github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfc
|
|||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/creack/pty v1.1.11/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/dchest/uniuri v0.0.0-20160212164326-8902c56451e9 h1:74lLNRzvsdIlkTgfDSMuaPjBr4cf6k7pwQQANm/yLKU=
|
||||
github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
|
||||
github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
|
||||
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
|
||||
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
|
||||
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
||||
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
|
@ -146,21 +136,19 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
|
|||
github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po=
|
||||
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.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
|
||||
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQobrkAqrL+WFZwQses=
|
||||
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
|
||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||
github.com/gin-gonic/gin v1.7.2 h1:Tg03T9yM2xa8j6I3Z3oqLaQRSmKvxPd6g/2HJ6zICFA=
|
||||
github.com/gin-gonic/gin v1.7.2/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
|
||||
github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
|
||||
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
|
||||
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=
|
||||
|
@ -169,53 +157,17 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2
|
|||
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-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
|
||||
github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY=
|
||||
github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
||||
github.com/go-logr/logr v0.4.0 h1:K7/B1jt6fIBQVd4Owv2MqGQClcgf0R266+7C/QjRcLc=
|
||||
github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU=
|
||||
github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
|
||||
github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
|
||||
github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
|
||||
github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk=
|
||||
github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU=
|
||||
github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
|
||||
github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
|
||||
github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94=
|
||||
github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
|
||||
github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
|
||||
github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
|
||||
github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
|
||||
github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
|
||||
github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
|
||||
github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
|
||||
github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
|
||||
github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
|
||||
github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
|
||||
github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
|
||||
github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
|
||||
github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
|
||||
github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs=
|
||||
github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk=
|
||||
github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA=
|
||||
github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64=
|
||||
github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4=
|
||||
github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
|
||||
github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
|
||||
github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
|
||||
github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY=
|
||||
github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
|
||||
github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
|
||||
github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
|
||||
github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY=
|
||||
github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU=
|
||||
github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
|
||||
github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
|
||||
github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
|
||||
github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk=
|
||||
github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
||||
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
|
||||
github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
|
||||
github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA=
|
||||
github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4=
|
||||
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
|
||||
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
|
||||
github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q=
|
||||
|
@ -229,19 +181,15 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me
|
|||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
|
||||
github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
|
||||
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
||||
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY=
|
||||
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
|
||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
|
||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
|
@ -271,9 +219,6 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS
|
|||
github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM=
|
||||
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
||||
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
|
||||
github.com/google/addlicense v0.0.0-20200817051935-6f4cd4aacc89/go.mod h1:EMjYTRimagHs1FwlIqKyX3wAM0u3rA+McvlIIWmSamA=
|
||||
github.com/google/addlicense v0.0.0-20210428195630-6d92264d7170 h1:jLUa4MO3autxlRJmC4KubeE5QGIb5JqW9oEaqYTb/fA=
|
||||
github.com/google/addlicense v0.0.0-20210428195630-6d92264d7170/go.mod h1:EMjYTRimagHs1FwlIqKyX3wAM0u3rA+McvlIIWmSamA=
|
||||
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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
|
@ -286,8 +231,9 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|||
github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.3/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 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g=
|
||||
github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
|
@ -307,7 +253,6 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe
|
|||
github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
|
||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
|
||||
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
|
@ -317,7 +262,7 @@ github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyyc
|
|||
github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
|
||||
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||
|
@ -357,10 +302,6 @@ github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NH
|
|||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/jessevdk/go-assets v0.0.0-20160921144138-4f4301a06e15 h1:cW/amwGEJK5MSKntPXRjX4dxs/nGxGT8gXKIsKFmHGc=
|
||||
github.com/jessevdk/go-assets v0.0.0-20160921144138-4f4301a06e15/go.mod h1:Fdm/oWRW+CH8PRbLntksCNtmcCBximKPkVQYvmMl80k=
|
||||
github.com/jessevdk/go-assets-builder v0.0.0-20130903091706-b8483521738f h1:K2zqtTU3T3ZX/vVeFtJ1OoxEm+gsLhu3zQ34tKgOAyk=
|
||||
github.com/jessevdk/go-assets-builder v0.0.0-20130903091706-b8483521738f/go.mod h1:GjkD6wGIxVEccQ4pa27Ebe00zAi1EEpAcL6rL0ADvwU=
|
||||
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
|
||||
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
|
||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
|
@ -375,30 +316,24 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
|
|||
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
|
||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
||||
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
|
||||
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
|
||||
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/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||
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 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
|
||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
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/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
|
||||
github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
|
||||
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
|
||||
github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls=
|
||||
github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
||||
github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
|
||||
github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
|
||||
|
@ -422,7 +357,8 @@ github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0Qu
|
|||
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo=
|
||||
github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c=
|
||||
github.com/moby/term v0.0.0-20201216013528-df9cb8a40635/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc=
|
||||
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=
|
||||
|
@ -433,6 +369,8 @@ github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8m
|
|||
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/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
|
||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
|
||||
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
|
@ -446,7 +384,6 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J
|
|||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||
github.com/pavel-v-chernykh/keystore-go v2.1.0+incompatible h1:Jd6xfriVlJ6hWPvYOE0Ni0QWcNTLRehfGPFxr3eSL80=
|
||||
github.com/pavel-v-chernykh/keystore-go v2.1.0+incompatible/go.mod h1:xlUlxe/2ItGlQyMTstqeDv9r3U4obH7xYd26TbDQutY=
|
||||
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
|
||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
||||
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
|
||||
|
@ -481,7 +418,6 @@ github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB8
|
|||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8=
|
||||
github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4=
|
||||
github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
|
||||
|
@ -497,11 +433,10 @@ github.com/rs/zerolog v1.19.0/go.mod h1:IzD0RJ65iWH0w97OQQebJEvTZYvsCUm9WVLWBQrJ
|
|||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
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/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
||||
|
@ -512,8 +447,7 @@ github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z
|
|||
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
|
||||
github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8=
|
||||
github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
|
||||
github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI=
|
||||
github.com/spf13/cobra v1.2.1 h1:+KmjbUw1hriSNMF55oPrkZcb27aECyrj8V2ytv7kWDw=
|
||||
github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk=
|
||||
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
|
||||
|
@ -523,7 +457,7 @@ github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
|
|||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
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/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
|
||||
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
|
||||
github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns=
|
||||
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=
|
||||
|
@ -532,7 +466,6 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH
|
|||
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
|
||||
github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/ugorji/go v0.0.0-20181209151446-772ced7fd4c2 h1:c3hsfAKt9dRzwckD9YqrACtMWPmjXSf+eocCfhoYdU8=
|
||||
|
@ -541,25 +474,19 @@ github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLY
|
|||
github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ=
|
||||
github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw=
|
||||
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
|
||||
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
||||
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=
|
||||
github.com/yuin/goldmark v1.3.3/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||
go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
|
||||
go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
|
||||
go.etcd.io/etcd v0.5.0-alpha.5.0.20200819165624-17cef6e3e9d5/go.mod h1:skWido08r9w6Lq/w70DO5XYIKMu4QFu1+4VsqLQuJy8=
|
||||
go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg=
|
||||
go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
|
||||
go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ=
|
||||
go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
|
||||
go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
|
||||
go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
|
||||
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=
|
||||
|
@ -567,6 +494,7 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
|||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
||||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
|
@ -577,15 +505,14 @@ go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
|
|||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/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-20190320223903-b7391e95e576/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-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
|
||||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
|
@ -620,14 +547,13 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB
|
|||
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/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
|
||||
golang.org/x/mod v0.4.2/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-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/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-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
@ -635,11 +561,9 @@ golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73r
|
|||
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-20190320064053-1272bf9dcd53/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
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=
|
||||
|
@ -668,14 +592,12 @@ golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v
|
|||
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0=
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20211209124913-491a49abca63 h1:iocB37TsdFuN6IBRZ+ry36wrkoV51/tl5vOWqkcPGvY=
|
||||
golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
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 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=
|
||||
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-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
|
||||
|
@ -696,8 +618,9 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ
|
|||
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/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f h1:Ax0t5p6N38Ga0dThY21weqDEyz2oklo4IvDkpigvkD8=
|
||||
golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
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=
|
||||
|
@ -707,7 +630,6 @@ golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5h
|
|||
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-20190321052220-f7bb7a8bee54/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=
|
||||
|
@ -719,6 +641,7 @@ golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/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=
|
||||
|
@ -737,9 +660,9 @@ golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
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-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
|
@ -750,11 +673,13 @@ golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
|
||||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d h1:SZxvLBoTP5yHO3Frd4z4vrF+DBX9vMVanchswa69toE=
|
||||
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
|
@ -770,16 +695,12 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|||
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
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 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba h1:O8mE0/t419eoIwhTFpKVkHiTs/Igowgfkj25AcZrtiE=
|
||||
golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/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-20190125232054-d66bd3c5d5a6/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=
|
||||
|
@ -790,7 +711,6 @@ golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBn
|
|||
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-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20190617190820-da514acc4774/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-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||
|
@ -818,14 +738,13 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs
|
|||
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-20200505023115-26f46d2f7ef8/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-20200616133436-c1934b75d054/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-20200818005847-188abfa75333/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||
golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
|
||||
golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
|
@ -834,8 +753,6 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f
|
|||
golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
|
||||
golang.org/x/tools v0.1.1-0.20210504181558-0bb7e5c47b1a h1:xiJ7cj6CCsHjXZvlwLWEB1qwiw7jA7iWBzOLnkHM52c=
|
||||
golang.org/x/tools v0.1.1-0.20210504181558-0bb7e5c47b1a/go.mod h1:sH/Eidr0EddymY8HZSakBo32zU3fG5ovDq874hJLjVg=
|
||||
golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||
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=
|
||||
|
@ -868,7 +785,6 @@ google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9Ywl
|
|||
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 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
|
||||
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=
|
||||
|
@ -905,6 +821,7 @@ google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6D
|
|||
google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
|
@ -914,9 +831,10 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D
|
|||
google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
|
||||
google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
|
||||
google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0=
|
||||
google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad h1:kqrS+lhvaMHCxul6sKQvKJ8nAAhlVItmZV822hYFH/U=
|
||||
google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
|
||||
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.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||
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=
|
||||
|
@ -935,6 +853,8 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG
|
|||
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||
google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
|
||||
google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
|
||||
google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8=
|
||||
google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
|
||||
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=
|
||||
|
@ -947,19 +867,22 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj
|
|||
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 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
|
||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
|
||||
google.golang.org/protobuf v1.28.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 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
|
||||
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
|
||||
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
|
||||
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
||||
|
@ -975,9 +898,10 @@ 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.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
|
||||
gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
|
||||
gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
|
||||
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=
|
||||
|
@ -985,47 +909,33 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
|
|||
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.19.8 h1:U50vBUCb5kc2J483mnITLKfdyoITaC7PnaOJwT7oRRM=
|
||||
k8s.io/api v0.19.8/go.mod h1:9TMGoKoidvicOK0LSqj+Mj98pugQycbViPKyZHqutBc=
|
||||
k8s.io/api v0.21.10 h1:WKcYyNBZNMrE9yejBs0Lx70jGsOW8uUwkiA4ioxkz1Q=
|
||||
k8s.io/api v0.21.10/go.mod h1:5kqv2pCXwcrOvV12WhVAtLZUKaM0kyrZ6nHObw8SojA=
|
||||
k8s.io/apiextensions-apiserver v0.19.8 h1:3Vb4N/QUoUmD5l+qB/N4rS1q+miNBOyFGf2U1iNuas0=
|
||||
k8s.io/apiextensions-apiserver v0.19.8/go.mod h1:NX3bMN7hJgtV2ViTgEySaZElHdrqyF9vw8EpkQTmqD0=
|
||||
k8s.io/apiextensions-apiserver v0.21.10 h1:61ymf3Yw6dadgfUbWCEVud5j6l9rme8ocy6jJbuFK04=
|
||||
k8s.io/apiextensions-apiserver v0.21.10/go.mod h1:Uu9eBo+d489/K5pauF1oLaVxQzgvdng6aIb2LRlT/w8=
|
||||
k8s.io/apimachinery v0.19.8 h1:MaehcNcx8brsgvMsqspcI0bi22E1np/DACnjf2mhJ5A=
|
||||
k8s.io/apimachinery v0.19.8/go.mod h1:6sRbGRAVY5DOCuZwB5XkqguBqpqLU6q/kOaOdk29z6Q=
|
||||
k8s.io/apimachinery v0.21.10 h1:mOStSZoCrsxnAMIm5UtCNn6P328cJAhtzJToQYFsylc=
|
||||
k8s.io/apimachinery v0.21.10/go.mod h1:USs+ifLG6ZUgHGA/9lGxjdHzCB3hUO3fG1VBOwi0IHo=
|
||||
k8s.io/apiserver v0.19.8/go.mod h1:+OJE9rJCT99Qr9DYITQDCKDLxFLVi5zA8nI9KqjGshk=
|
||||
k8s.io/client-go v0.19.8 h1:rcb2BrXb1HUBiBCoP3m/9Q2VZIMWhZUAmH49EmAyRUA=
|
||||
k8s.io/client-go v0.19.8/go.mod h1:5Op2bSbK+COBz8mwH62rrRgqhA9wOcORkWZ03+GL0Ow=
|
||||
k8s.io/apiserver v0.21.10/go.mod h1:dMEmFJ//OIDnnWmjcpVq+XkKQubRY1rAm5as7MwbIWQ=
|
||||
k8s.io/client-go v0.21.10 h1:/AKJEgLpQDWvZbq7cq2vEx0bpqpAlOOHitOrctSV8bI=
|
||||
k8s.io/client-go v0.21.10/go.mod h1:nAGhVCjwhbDP2whk65n3STSCn24H/VGp1pKSk9UszU8=
|
||||
k8s.io/component-base v0.19.8/go.mod h1:cvHAT4oGxKsfcnnm0hMp3JkEMxAt5s6le943V796FXM=
|
||||
k8s.io/component-base v0.21.10/go.mod h1:zO/BjKH/RR6DoZEQAws7m+Q81pYZ+f5vDfujDqvWdlA=
|
||||
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||
k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
|
||||
k8s.io/gengo v0.0.0-20201214224949-b6c5ce23f027/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
|
||||
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
||||
k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
|
||||
k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
|
||||
k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A=
|
||||
k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y=
|
||||
k8s.io/klog/v2 v2.9.0 h1:D7HV+n1V57XeZ0m6tdRkfknthUaM06VFbWldOFh8kzM=
|
||||
k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec=
|
||||
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6 h1:+WnxoVtG8TMiudHBSEtrVL1egv36TkkJm+bA8AxicmQ=
|
||||
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o=
|
||||
k8s.io/kube-openapi v0.0.0-20211110012726-3cc51fd1e909 h1:s77MRc/+/eQjsF89MB12JssAlsoi9mnNoaacRqibeAU=
|
||||
k8s.io/kube-openapi v0.0.0-20211110012726-3cc51fd1e909/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE=
|
||||
k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg=
|
||||
k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
k8s.io/utils v0.0.0-20210521133846-da695404a2bc h1:dx6VGe+PnOW/kD/2UV4aUSsRfJGd7+lcqgJ6Xg0HwUs=
|
||||
k8s.io/utils v0.0.0-20210521133846-da695404a2bc/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
|
||||
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/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.27/go.mod h1:tq2nT0Kx7W+/f2JVE+zxYtUhdjuELJkVpNz+x/QN5R4=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y=
|
||||
sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
|
||||
sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
|
||||
|
|
76
internal/md/column.go
Normal file
76
internal/md/column.go
Normal file
|
@ -0,0 +1,76 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package md
|
||||
|
||||
import "k8s.io/apimachinery/pkg/util/uuid"
|
||||
|
||||
type ColumnAlign int
|
||||
|
||||
const (
|
||||
ColumnRightAlign ColumnAlign = iota
|
||||
ColumnCenterAlign
|
||||
ColumnLeftAlign
|
||||
)
|
||||
|
||||
type Columns []Column
|
||||
|
||||
func (c Columns) Get(id string) (Column, bool) {
|
||||
for _, z := range c {
|
||||
if z.ID() == id {
|
||||
return z, true
|
||||
}
|
||||
}
|
||||
|
||||
return nil, false
|
||||
}
|
||||
|
||||
type Column interface {
|
||||
Name() string
|
||||
Align() ColumnAlign
|
||||
|
||||
ID() string
|
||||
}
|
||||
|
||||
func NewColumn(name string, align ColumnAlign) Column {
|
||||
return column{
|
||||
name: name,
|
||||
id: string(uuid.NewUUID()),
|
||||
align: align,
|
||||
}
|
||||
}
|
||||
|
||||
type column struct {
|
||||
name string
|
||||
id string
|
||||
align ColumnAlign
|
||||
}
|
||||
|
||||
func (c column) ID() string {
|
||||
return c.id
|
||||
}
|
||||
|
||||
func (c column) Name() string {
|
||||
return c.name
|
||||
}
|
||||
|
||||
func (c column) Align() ColumnAlign {
|
||||
return c.align
|
||||
}
|
|
@ -17,3 +17,5 @@
|
|||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package md
|
145
internal/md/table.go
Normal file
145
internal/md/table.go
Normal file
|
@ -0,0 +1,145 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package md
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
)
|
||||
|
||||
func NewTable(columns ...Column) Table {
|
||||
return &table{
|
||||
columns: columns,
|
||||
}
|
||||
}
|
||||
|
||||
type Table interface {
|
||||
Render() string
|
||||
|
||||
AddRow(in map[Column]string) error
|
||||
}
|
||||
|
||||
type table struct {
|
||||
lock sync.Mutex
|
||||
|
||||
columns Columns
|
||||
rows []map[string]string
|
||||
}
|
||||
|
||||
func (t *table) AddRow(in map[Column]string) error {
|
||||
t.lock.Lock()
|
||||
defer t.lock.Unlock()
|
||||
|
||||
r := map[string]string{}
|
||||
|
||||
for k, v := range in {
|
||||
if _, ok := t.columns.Get(k.ID()); !ok {
|
||||
return errors.Newf("Column not found")
|
||||
}
|
||||
|
||||
r[k.ID()] = v
|
||||
}
|
||||
|
||||
t.rows = append(t.rows, r)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *table) fillString(base, filler string, align ColumnAlign, size int) string {
|
||||
for len(base) < size {
|
||||
switch align {
|
||||
case ColumnLeftAlign:
|
||||
base += filler
|
||||
case ColumnRightAlign:
|
||||
base = filler + base
|
||||
case ColumnCenterAlign:
|
||||
base += filler
|
||||
if len(base) < size {
|
||||
base = filler + base
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return base
|
||||
}
|
||||
|
||||
func (t *table) Render() string {
|
||||
t.lock.Lock()
|
||||
defer t.lock.Unlock()
|
||||
|
||||
ks := map[string]int{}
|
||||
|
||||
for _, c := range t.columns {
|
||||
ks[c.ID()] = len(c.Name())
|
||||
}
|
||||
|
||||
for _, r := range t.rows {
|
||||
for _, c := range t.columns {
|
||||
if q := len(r[c.ID()]); q > ks[c.ID()] {
|
||||
ks[c.ID()] = q
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buff := ""
|
||||
|
||||
buff += "|"
|
||||
|
||||
for _, c := range t.columns {
|
||||
buff += " "
|
||||
buff += t.fillString(c.Name(), " ", c.Align(), ks[c.ID()])
|
||||
buff += " |"
|
||||
}
|
||||
buff += "\n|"
|
||||
|
||||
for _, c := range t.columns {
|
||||
switch c.Align() {
|
||||
case ColumnLeftAlign, ColumnCenterAlign:
|
||||
buff += ":"
|
||||
default:
|
||||
buff += "-"
|
||||
}
|
||||
|
||||
buff += t.fillString("", "-", ColumnLeftAlign, ks[c.ID()])
|
||||
switch c.Align() {
|
||||
case ColumnRightAlign, ColumnCenterAlign:
|
||||
buff += ":"
|
||||
default:
|
||||
buff += "-"
|
||||
}
|
||||
buff += "|"
|
||||
}
|
||||
buff += "\n"
|
||||
|
||||
for _, r := range t.rows {
|
||||
buff += "|"
|
||||
|
||||
for _, c := range t.columns {
|
||||
buff += " "
|
||||
buff += t.fillString(r[c.ID()], " ", c.Align(), ks[c.ID()])
|
||||
buff += " |"
|
||||
}
|
||||
buff += "\n"
|
||||
}
|
||||
|
||||
return buff
|
||||
}
|
393
internal/metrics.go
Normal file
393
internal/metrics.go
Normal file
|
@ -0,0 +1,393 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package internal
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
"html/template"
|
||||
"os"
|
||||
"path"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/internal/md"
|
||||
)
|
||||
|
||||
//go:embed metrics.go.tmpl
|
||||
var metricsGoTemplate []byte
|
||||
|
||||
//go:embed metrics.item.go.tmpl
|
||||
var metricsItemGoTemplate []byte
|
||||
|
||||
//go:embed metrics.tmpl
|
||||
var metricsTemplate []byte
|
||||
|
||||
//go:embed metrics.item.tmpl
|
||||
var metricItemTemplate []byte
|
||||
|
||||
//go:embed metrics.yaml
|
||||
var metricsData []byte
|
||||
|
||||
type MetricsDoc struct {
|
||||
Destination string `json:"destination" yaml:"destination"`
|
||||
Documentation string `json:"documentation" yaml:"documentation"`
|
||||
|
||||
Namespaces Namespaces `json:"namespaces" yaml:"namespaces"`
|
||||
}
|
||||
|
||||
type Namespaces map[string]Groups
|
||||
|
||||
func (n Namespaces) Keys() []string {
|
||||
r := make([]string, 0, len(n))
|
||||
|
||||
for k := range n {
|
||||
r = append(r, k)
|
||||
}
|
||||
|
||||
sort.Strings(r)
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
type Groups map[string]Metrics
|
||||
|
||||
func (n Groups) Keys() []string {
|
||||
r := make([]string, 0, len(n))
|
||||
|
||||
for k := range n {
|
||||
r = append(r, k)
|
||||
}
|
||||
|
||||
sort.Strings(r)
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
type Metrics map[string]Metric
|
||||
|
||||
func (n Metrics) Keys() []string {
|
||||
r := make([]string, 0, len(n))
|
||||
|
||||
for k := range n {
|
||||
r = append(r, k)
|
||||
}
|
||||
|
||||
sort.Strings(r)
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
type Metric struct {
|
||||
Description string `json:"description" yaml:"description"`
|
||||
Type string `json:"type" yaml:"type"`
|
||||
ShortDescription string `json:"shortDescription" yaml:"shortDescription"`
|
||||
|
||||
Labels []Label `json:"labels" yaml:"labels"`
|
||||
AlertingRules []Alerting `json:"alertingRules" yaml:"alertingRules"`
|
||||
}
|
||||
|
||||
type Alerting struct {
|
||||
Priority string `json:"priority" yaml:"priority"`
|
||||
Query string `json:"query" yaml:"query"`
|
||||
Description string `json:"description" yaml:"description"`
|
||||
}
|
||||
|
||||
type Label struct {
|
||||
Key string `json:"key" yaml:"key"`
|
||||
Description string `json:"description" yaml:"description"`
|
||||
Type *string `json:"type" yaml:"type"`
|
||||
}
|
||||
|
||||
func GenerateMetricsDocumentation(root string, in MetricsDoc) error {
|
||||
docsRoot := path.Join(root, in.Documentation)
|
||||
goFilesRoot := path.Join(root, in.Destination)
|
||||
|
||||
if _, err := os.Stat(docsRoot); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
if err := os.MkdirAll(docsRoot, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if _, err := os.Stat(goFilesRoot); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
if err := os.MkdirAll(goFilesRoot, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if err := generateMetricsREADME(docsRoot, in); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := generateMetricsGO(goFilesRoot, in); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateMetricFile(root, name string, m Metric) error {
|
||||
key := md.NewColumn("Label", md.ColumnCenterAlign)
|
||||
description := md.NewColumn("Description", md.ColumnLeftAlign)
|
||||
priority := md.NewColumn("Priority", md.ColumnCenterAlign)
|
||||
query := md.NewColumn("Query", md.ColumnCenterAlign)
|
||||
t := md.NewTable(
|
||||
key,
|
||||
description,
|
||||
)
|
||||
|
||||
for _, l := range m.Labels {
|
||||
if err := t.AddRow(map[md.Column]string{
|
||||
key: l.Key,
|
||||
description: l.Description,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
ta := md.NewTable(
|
||||
priority,
|
||||
query,
|
||||
description,
|
||||
)
|
||||
|
||||
for _, l := range m.AlertingRules {
|
||||
if err := ta.AddRow(map[md.Column]string{
|
||||
priority: l.Priority,
|
||||
query: l.Query,
|
||||
description: l.Description,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
q, err := template.New("metrics").Parse(string(metricItemTemplate))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
out, err := os.OpenFile(path.Join(root, fmt.Sprintf("%s.md", name)), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := q.Execute(out, map[string]interface{}{
|
||||
"name": name,
|
||||
"type": m.Type,
|
||||
"description": m.Description,
|
||||
"labels_table": t.Render(),
|
||||
"labels": len(m.Labels) > 0,
|
||||
"alerting_table": ta.Render(),
|
||||
"alerting": len(m.AlertingRules) > 0,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := out.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateMetricsREADME(root string, in MetricsDoc) error {
|
||||
name := md.NewColumn("Name", md.ColumnCenterAlign)
|
||||
ns := md.NewColumn("Namespace", md.ColumnCenterAlign)
|
||||
group := md.NewColumn("Group", md.ColumnCenterAlign)
|
||||
typeCol := md.NewColumn("Type", md.ColumnCenterAlign)
|
||||
description := md.NewColumn("Description", md.ColumnLeftAlign)
|
||||
t := md.NewTable(
|
||||
name,
|
||||
ns,
|
||||
group,
|
||||
typeCol,
|
||||
description,
|
||||
)
|
||||
|
||||
for _, namespace := range in.Namespaces.Keys() {
|
||||
for _, g := range in.Namespaces[namespace].Keys() {
|
||||
for _, metric := range in.Namespaces[namespace][g].Keys() {
|
||||
mname := fmt.Sprintf("%s_%s_%s", namespace, g, metric)
|
||||
rname := fmt.Sprintf("[%s](./%s.md)", mname, mname)
|
||||
|
||||
details := in.Namespaces[namespace][g][metric]
|
||||
|
||||
if err := t.AddRow(map[md.Column]string{
|
||||
name: rname,
|
||||
ns: namespace,
|
||||
group: g,
|
||||
description: details.ShortDescription,
|
||||
typeCol: details.Type,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := generateMetricFile(root, mname, details); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table := t.Render()
|
||||
|
||||
q, err := template.New("metrics").Parse(string(metricsTemplate))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
out, err := os.OpenFile(path.Join(root, "README.md"), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := q.Execute(out, map[string]interface{}{
|
||||
"table": table,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := out.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func generateLabels(labels []Label) string {
|
||||
if len(labels) == 0 {
|
||||
return "nil"
|
||||
}
|
||||
|
||||
parts := make([]string, len(labels))
|
||||
|
||||
for id := range labels {
|
||||
parts[id] = fmt.Sprintf("`%s`", labels[id].Key)
|
||||
}
|
||||
|
||||
return fmt.Sprintf("[]string{%s}", strings.Join(parts, ", "))
|
||||
}
|
||||
|
||||
func generateMetricsGO(root string, in MetricsDoc) error {
|
||||
i, err := template.New("metrics").Parse(string(metricsItemGoTemplate))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, namespace := range in.Namespaces.Keys() {
|
||||
for _, g := range in.Namespaces[namespace].Keys() {
|
||||
for _, metric := range in.Namespaces[namespace][g].Keys() {
|
||||
details := in.Namespaces[namespace][g][metric]
|
||||
|
||||
mname := fmt.Sprintf("%s_%s_%s", namespace, g, metric)
|
||||
|
||||
out, err := os.OpenFile(path.Join(root, fmt.Sprintf("%s.go", mname)), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
parts := strings.Split(mname, "_")
|
||||
tparts := strings.Split(strings.Title(strings.Join(parts, " ")), " ")
|
||||
|
||||
fnameParts := make([]string, len(parts))
|
||||
for id := range parts {
|
||||
if id == 0 {
|
||||
fnameParts[id] = parts[id]
|
||||
} else {
|
||||
fnameParts[id] = tparts[id]
|
||||
}
|
||||
}
|
||||
|
||||
var keys []string
|
||||
var params []string
|
||||
|
||||
params = append(params, "value float64")
|
||||
keys = append(keys, "value")
|
||||
|
||||
for _, label := range details.Labels {
|
||||
v := strings.Split(strings.ToLower(label.Key), "_")
|
||||
for id := range v {
|
||||
if id == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
v[id] = strings.Title(v[id])
|
||||
}
|
||||
|
||||
k := strings.Join(v, "")
|
||||
|
||||
keys = append(keys, k)
|
||||
|
||||
if t := label.Type; t != nil {
|
||||
params = append(params, fmt.Sprintf("%s %s", k, *t))
|
||||
} else {
|
||||
params = append(params, fmt.Sprintf("%s string", k))
|
||||
}
|
||||
}
|
||||
|
||||
if err := i.Execute(out, map[string]interface{}{
|
||||
"name": mname,
|
||||
"fname": strings.Join(fnameParts, ""),
|
||||
"ename": strings.Join(tparts, ""),
|
||||
"shortDescription": details.ShortDescription,
|
||||
"labels": generateLabels(details.Labels),
|
||||
"type": details.Type,
|
||||
"fparams": strings.Join(params, ", "),
|
||||
"fkeys": strings.Join(keys, ", "),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := out.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out, err := os.OpenFile(path.Join(root, "metrics.go"), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
q, err := template.New("metrics").Parse(string(metricsGoTemplate))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := q.Execute(out, nil); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := out.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
49
internal/metrics.go.tmpl
Normal file
49
internal/metrics.go.tmpl
Normal file
|
@ -0,0 +1,49 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package metric_descriptions
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/metrics"
|
||||
)
|
||||
|
||||
var (
|
||||
descriptions []metrics.Description
|
||||
descriptionsLock sync.Mutex
|
||||
)
|
||||
|
||||
func registerDescription( d ... metrics.Description) {
|
||||
if len(d) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
descriptionsLock.Lock()
|
||||
defer descriptionsLock.Unlock()
|
||||
|
||||
descriptions = append(descriptions, d...)
|
||||
}
|
||||
|
||||
func Descriptions (c metrics.PushDescription) {
|
||||
descriptionsLock.Lock()
|
||||
defer descriptionsLock.Unlock()
|
||||
|
||||
c.Push(descriptions...)
|
||||
}
|
39
internal/metrics.item.go.tmpl
Normal file
39
internal/metrics.item.go.tmpl
Normal file
|
@ -0,0 +1,39 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package metric_descriptions
|
||||
|
||||
import "github.com/arangodb/kube-arangodb/pkg/util/metrics"
|
||||
|
||||
var (
|
||||
{{ .fname }} = metrics.NewDescription("{{ .name }}", "{{ .shortDescription }}", {{ .labels }}, nil)
|
||||
)
|
||||
|
||||
func init() {
|
||||
registerDescription({{ .fname }})
|
||||
}
|
||||
|
||||
func {{ .ename }}() metrics.Description {
|
||||
return {{ .fname }}
|
||||
}
|
||||
|
||||
func {{ .ename }}{{ .type }}({{ .fparams }}) metrics.Metric {
|
||||
return {{ .ename }}().Gauge({{ .fkeys }})
|
||||
}
|
19
internal/metrics.item.tmpl
Normal file
19
internal/metrics.item.tmpl
Normal file
|
@ -0,0 +1,19 @@
|
|||
# {{ .name }} ({{ .type }})
|
||||
|
||||
## Description
|
||||
|
||||
{{ .description }}
|
||||
|
||||
{{ if .labels -}}
|
||||
## Labels
|
||||
|
||||
{{ .labels_table }}
|
||||
|
||||
{{- end -}}
|
||||
{{- if .alerting }}
|
||||
|
||||
## Alerting
|
||||
|
||||
{{ .alerting_table }}
|
||||
|
||||
{{- end -}}
|
5
internal/metrics.tmpl
Normal file
5
internal/metrics.tmpl
Normal file
|
@ -0,0 +1,5 @@
|
|||
# ArangoDB Operator Metrics
|
||||
|
||||
## List
|
||||
|
||||
{{ .table }}
|
215
internal/metrics.yaml
Normal file
215
internal/metrics.yaml
Normal file
|
@ -0,0 +1,215 @@
|
|||
---
|
||||
|
||||
documentation: docs/generated/metrics
|
||||
destination: pkg/generated/metric_descriptions
|
||||
|
||||
namespaces:
|
||||
arangodb_operator:
|
||||
agency_cache:
|
||||
present:
|
||||
shortDescription: "Determines if local agency cache is present"
|
||||
description: "Determines if local agency cache is present"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
health_present:
|
||||
shortDescription: "Determines if local agency cache health is present"
|
||||
description: "Determines if local agency cache health is present"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
serving:
|
||||
shortDescription: "Determines if agency is serving"
|
||||
description: "Determines if agency is serving"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
healthy:
|
||||
shortDescription: "Determines if agency is healthy"
|
||||
description: "Determines if agency is healthy"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
member_serving:
|
||||
shortDescription: "Determines if agency member is reachable"
|
||||
description: "Determines if agency member is reachable"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
- key: agent
|
||||
description: "Agent ID"
|
||||
member_commit_offset:
|
||||
shortDescription: "Determines agency member commit offset"
|
||||
description: "Determines agency member commit offset. Set to -1 if Agent is not reachable"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
- key: agent
|
||||
description: "Agent ID"
|
||||
leaders:
|
||||
shortDescription: "Determines agency leader vote count"
|
||||
description: "Determines agency leader vote count. Should be always one"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
- key: agent
|
||||
description: "Agent ID"
|
||||
agency:
|
||||
index:
|
||||
shortDescription: "Current index of the agency cache"
|
||||
description: "Current index of the agency cache"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
fetches:
|
||||
shortDescription: "Current count of agency cache fetches"
|
||||
description: "Current count of agency cache fetches"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
errors:
|
||||
shortDescription: "Current count of agency cache fetch errors"
|
||||
description: "Current count of agency cache fetch errors"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
rebalancer:
|
||||
enabled:
|
||||
shortDescription: "Determines if rebalancer is enabled"
|
||||
description: "Determines if rebalancer is enabled"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
moves_generated:
|
||||
shortDescription: "Define how many moves were generated"
|
||||
description: "Define how many moves were generated"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
moves_succeeded:
|
||||
shortDescription: "Define how many moves succeeded"
|
||||
description: "Define how many moves succeeded"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
moves_failed:
|
||||
shortDescription: "Define how many moves failed"
|
||||
description: "Define how many moves failed"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
moves_current:
|
||||
shortDescription: "Define how many moves are currently in progress"
|
||||
description: "Define how many moves are currently in progress"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
resources:
|
||||
arangodeployment_validation_errors:
|
||||
shortDescription: "Counter for deployment validation errors"
|
||||
description: "Counter for deployment validation errors"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
arangodeployment_immutable_errors:
|
||||
shortDescription: "Counter for deployment immutable errors"
|
||||
description: "Counter for deployment immutable errors"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
arangodeployment_accepted:
|
||||
shortDescription: "Defines if ArangoDeployment has been accepted"
|
||||
description: "Defines if ArangoDeployment has been accepted"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
arangodeployment_uptodate:
|
||||
shortDescription: "Defines if ArangoDeployment is uptodate"
|
||||
description: "Defines if ArangoDeployment is uptodate"
|
||||
type: "Gauge"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
members:
|
||||
unexpected_container_exit_codes:
|
||||
shortDescription: "Counter of unexpected restarts in pod (Containers/InitContainers/EphemeralContainers)"
|
||||
description: "Counter of unexpected restarts in pod (Containers/InitContainers/EphemeralContainers)"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: namespace
|
||||
description: "Deployment Namespace"
|
||||
- key: name
|
||||
description: "Deployment Name"
|
||||
- key: member
|
||||
description: "Member ID"
|
||||
- key: container
|
||||
description: "Container Name"
|
||||
- key: container_type
|
||||
description: "Container/InitContainer/EphemeralContainer"
|
||||
- key: code
|
||||
description: "ExitCode"
|
||||
engine:
|
||||
panics_recovered:
|
||||
shortDescription: "Number of Panics recovered inside Operator reconciliation loop"
|
||||
description: "Number of Panics recovered inside Operator reconciliation loop. Section represents recovery section"
|
||||
type: "Counter"
|
||||
labels:
|
||||
- key: section
|
||||
description: "Panic Section"
|
||||
|
40
internal/metrics_test.go
Normal file
40
internal/metrics_test.go
Normal file
|
@ -0,0 +1,40 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package internal
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
func Test_GenerateMetricsDocumentation(t *testing.T) {
|
||||
root := os.Getenv("ROOT")
|
||||
require.NotEmpty(t, root)
|
||||
|
||||
var m MetricsDoc
|
||||
|
||||
require.NoError(t, yaml.Unmarshal(metricsData, &m))
|
||||
|
||||
require.NoError(t, GenerateMetricsDocumentation(root, m))
|
||||
}
|
207
internal/timezones.go
Normal file
207
internal/timezones.go
Normal file
|
@ -0,0 +1,207 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package internal
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
"text/template"
|
||||
"time"
|
||||
)
|
||||
|
||||
//go:embed timezones.go.tmpl
|
||||
var timezonesGoTemplate []byte
|
||||
|
||||
type Timezone struct {
|
||||
Name string
|
||||
Offset int64
|
||||
Zone string
|
||||
Parent string
|
||||
}
|
||||
|
||||
type TimezoneData struct {
|
||||
Name string
|
||||
Data string
|
||||
}
|
||||
|
||||
func RenderTimezones(root string) error {
|
||||
rootPath := path.Join(root, "pkg", "generated", "timezones")
|
||||
|
||||
if _, err := os.Stat(rootPath); err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
if err := os.MkdirAll(rootPath, 0755); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
out, err := os.OpenFile(path.Join(rootPath, "timezones.go"), os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
i, err := template.New("timezones").Parse(string(timezonesGoTemplate))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
tzs, data := ListTimezones()
|
||||
|
||||
if err := i.Execute(out, map[string]interface{}{
|
||||
"timezones": tzs,
|
||||
"timezoneDatas": data,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := out.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func ListTimezones() ([]Timezone, []TimezoneData) {
|
||||
var zoneDirs = []string{
|
||||
// Update path according to your OS
|
||||
"/usr/share/zoneinfo/",
|
||||
"/usr/share/lib/zoneinfo/",
|
||||
"/usr/lib/locale/TZ/",
|
||||
}
|
||||
|
||||
zones := map[string]time.Time{}
|
||||
datas := map[string]string{}
|
||||
dataMaps := map[string]string{}
|
||||
|
||||
now := time.Now()
|
||||
|
||||
var tzs []Timezone
|
||||
|
||||
for _, zoneDir := range zoneDirs {
|
||||
files, err := ioutil.ReadDir(zoneDir)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, file := range files {
|
||||
fn := file.Name()
|
||||
if !file.IsDir() {
|
||||
loc, err := time.LoadLocation(fn)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if file.Mode()&os.ModeSymlink != os.ModeSymlink {
|
||||
data, err := ioutil.ReadFile(path.Join(zoneDir, fn))
|
||||
if err == nil {
|
||||
datas[fn] = base64.StdEncoding.EncodeToString(data)
|
||||
dataMaps[fn] = fn
|
||||
}
|
||||
} else {
|
||||
target, err := os.Readlink(path.Join(zoneDir, fn))
|
||||
if err == nil {
|
||||
real, err := filepath.Abs(path.Join(zoneDir, target))
|
||||
if err == nil {
|
||||
dataMaps[fn] = strings.TrimLeft(real, zoneDir)
|
||||
}
|
||||
}
|
||||
}
|
||||
zones[fn] = now.In(loc)
|
||||
} else {
|
||||
if fn[0] != strings.ToUpper(fn)[0] {
|
||||
continue
|
||||
}
|
||||
|
||||
if fn[1:] != strings.ToLower(fn)[1:] {
|
||||
continue
|
||||
}
|
||||
|
||||
subFiles, err := ioutil.ReadDir(path.Join(zoneDir, fn))
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, subFile := range subFiles {
|
||||
zn := fmt.Sprintf("%s/%s", fn, subFile.Name())
|
||||
loc, err := time.LoadLocation(zn)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if subFile.Mode()&os.ModeSymlink != os.ModeSymlink {
|
||||
data, err := ioutil.ReadFile(path.Join(zoneDir, zn))
|
||||
if err == nil {
|
||||
datas[zn] = base64.StdEncoding.EncodeToString(data)
|
||||
dataMaps[zn] = zn
|
||||
}
|
||||
} else {
|
||||
target, err := os.Readlink(path.Join(zoneDir, zn))
|
||||
if err == nil {
|
||||
real, err := filepath.Abs(path.Join(zoneDir, fn, target))
|
||||
if err == nil {
|
||||
dataMaps[zn] = strings.TrimLeft(real, zoneDir)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
zones[zn] = now.In(loc)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var tzData []TimezoneData
|
||||
|
||||
for tz, data := range datas {
|
||||
tzData = append(tzData, TimezoneData{
|
||||
Name: tz,
|
||||
Data: data,
|
||||
})
|
||||
}
|
||||
|
||||
for tz, t := range zones {
|
||||
q, o := t.Zone()
|
||||
tzs = append(tzs, Timezone{
|
||||
Name: tz,
|
||||
Offset: (int64(o) * int64(time.Second)) / int64(time.Minute),
|
||||
Zone: q,
|
||||
Parent: dataMaps[tz],
|
||||
})
|
||||
}
|
||||
|
||||
sort.Slice(tzs, func(i, j int) bool {
|
||||
return tzs[i].Name < tzs[j].Name
|
||||
})
|
||||
|
||||
sort.Slice(tzData, func(i, j int) bool {
|
||||
return tzData[i].Name < tzData[j].Name
|
||||
})
|
||||
|
||||
return tzs, tzData
|
||||
}
|
71
internal/timezones.go.tmpl
Normal file
71
internal/timezones.go.tmpl
Normal file
|
@ -0,0 +1,71 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package timezones
|
||||
|
||||
import (
|
||||
"time"
|
||||
"encoding/base64"
|
||||
)
|
||||
|
||||
type Timezone struct {
|
||||
Name string
|
||||
Offset time.Duration
|
||||
Zone string
|
||||
|
||||
Parent string
|
||||
}
|
||||
|
||||
func (t Timezone) GetData() ([]byte, bool) {
|
||||
if d, ok := timezonesData[t.Parent]; ok {
|
||||
if d, err := base64.StdEncoding.DecodeString(d); err == nil {
|
||||
return d, true
|
||||
}
|
||||
}
|
||||
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func GetZoneTimezone(zone string) (string, bool) {
|
||||
for tz, v := range timezones {
|
||||
if v.Zone == zone {
|
||||
return tz, true
|
||||
}
|
||||
}
|
||||
|
||||
return "", false
|
||||
}
|
||||
|
||||
func GetTimezone(timezone string) (Timezone, bool) {
|
||||
v, ok := timezones[timezone]
|
||||
return v, ok
|
||||
}
|
||||
|
||||
var timezonesData = map[string]string{
|
||||
{{- range .timezoneDatas }}
|
||||
"{{ .Name }}": "{{ .Data }}",
|
||||
{{- end }}
|
||||
}
|
||||
|
||||
var timezones = map[string]Timezone{
|
||||
{{- range .timezones }}
|
||||
"{{ .Name }}": { Name: "{{ .Name }}", Offset: {{ .Offset }} * time.Minute, Zone: "{{ .Zone }}", Parent: "{{ .Parent }}" },
|
||||
{{- end }}
|
||||
}
|
34
internal/timezones_test.go
Normal file
34
internal/timezones_test.go
Normal file
|
@ -0,0 +1,34 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package internal
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func Test_GenerateTimezones(t *testing.T) {
|
||||
root := os.Getenv("ROOT")
|
||||
require.NotEmpty(t, root)
|
||||
require.NoError(t, RenderTimezones(root))
|
||||
}
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -21,7 +21,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -33,7 +33,7 @@ metadata:
|
|||
name: arangolocalstorages.storage.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -63,7 +63,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-apps
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -79,7 +79,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-backup
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -95,7 +95,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -104,8 +104,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/deployment-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -114,7 +121,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-deployment
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -133,7 +140,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-deployment-replication
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -152,7 +159,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-k2kclustersync
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -169,7 +176,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-storage
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -197,7 +204,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-apps
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -217,7 +224,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-backup
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -237,7 +244,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -257,7 +264,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-deployment
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -277,7 +284,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-deployment-replication
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -297,7 +304,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-k2kclustersync
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -318,7 +325,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-storage
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -339,7 +346,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -373,7 +380,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -390,7 +397,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -422,7 +429,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -439,7 +446,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -477,7 +484,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -503,7 +510,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -533,7 +540,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -559,7 +566,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -581,7 +588,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -602,7 +609,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -623,7 +630,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -644,7 +651,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -665,7 +672,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -686,7 +693,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -708,7 +715,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -729,7 +736,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -756,7 +763,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -775,7 +782,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -786,7 +793,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -814,7 +821,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
- --operator.deployment
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -21,7 +21,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -33,7 +33,7 @@ metadata:
|
|||
name: arango-apps-operator-rbac-apps
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -49,7 +49,7 @@ metadata:
|
|||
name: arango-apps-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -58,8 +58,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/apps-operator/cluster-role-binding.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -68,7 +75,7 @@ metadata:
|
|||
name: arango-apps-operator-rbac-apps
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -88,7 +95,7 @@ metadata:
|
|||
name: arango-apps-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -109,7 +116,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -143,7 +150,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -160,7 +167,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -182,7 +189,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -203,7 +210,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -230,7 +237,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -249,7 +256,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -260,7 +267,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -288,7 +295,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arango-backup-operator-rbac-backup
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -35,7 +35,7 @@ metadata:
|
|||
name: arango-backup-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -44,8 +44,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/backup-operator/cluster-role-binding.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -54,7 +61,7 @@ metadata:
|
|||
name: arango-backup-operator-rbac-backup
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -74,7 +81,7 @@ metadata:
|
|||
name: arango-backup-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -95,7 +102,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -127,7 +134,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -148,7 +155,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -175,7 +182,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -194,7 +201,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -205,7 +212,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -233,7 +240,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ metadata:
|
|||
name: arangobackuppolicies.backup.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -77,7 +77,7 @@ metadata:
|
|||
name: arangobackups.backup.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -189,7 +189,7 @@ metadata:
|
|||
name: arangodeploymentreplications.replication.database.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -236,7 +236,7 @@ metadata:
|
|||
name: arangodeployments.database.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -283,7 +283,7 @@ metadata:
|
|||
name: arangojobs.apps.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -321,7 +321,7 @@ metadata:
|
|||
name: arangoclustersynchronizations.database.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -363,7 +363,7 @@ metadata:
|
|||
name: arangomembers.database.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arango-deployment-replication-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -28,8 +28,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/deployment-replications-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -38,7 +45,7 @@ metadata:
|
|||
name: arango-deployment-replication-operator-rbac-deployment-replication
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -57,7 +64,7 @@ metadata:
|
|||
name: arango-deployment-replication-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -77,7 +84,7 @@ metadata:
|
|||
name: arango-deployment-replication-operator-rbac-deployment-replication
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -98,7 +105,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -124,7 +131,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -145,7 +152,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -172,7 +179,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -191,7 +198,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -202,7 +209,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -230,7 +237,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
- --operator.deployment-replication
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arango-deployment-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -28,8 +28,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/deployment-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -38,7 +45,7 @@ metadata:
|
|||
name: arango-deployment-operator-rbac-deployment
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -57,7 +64,7 @@ metadata:
|
|||
name: arango-deployment-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -77,7 +84,7 @@ metadata:
|
|||
name: arango-deployment-operator-rbac-deployment
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -98,7 +105,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -115,7 +122,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -153,7 +160,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -174,7 +181,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -195,7 +202,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -222,7 +229,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -241,7 +248,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -252,7 +259,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -280,7 +287,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
- --operator.deployment
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arango-k2kclustersync-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -28,8 +28,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/k2k-cluster-sync-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -38,7 +45,7 @@ metadata:
|
|||
name: arango-k2kclustersync-operator-rbac-k2kclustersync
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -55,7 +62,7 @@ metadata:
|
|||
name: arango-k2kclustersync-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -75,7 +82,7 @@ metadata:
|
|||
name: arango-k2kclustersync-operator-rbac-k2kclustersync
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -97,7 +104,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -127,7 +134,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -149,7 +156,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -176,7 +183,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -195,7 +202,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -206,7 +213,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -234,7 +241,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arangolocalstorages.storage.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -49,7 +49,7 @@ metadata:
|
|||
name: arango-storage-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -58,8 +58,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/storage-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -68,7 +75,7 @@ metadata:
|
|||
name: arango-storage-operator-rbac-storage
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -96,7 +103,7 @@ metadata:
|
|||
name: arango-storage-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -116,7 +123,7 @@ metadata:
|
|||
name: arango-storage-operator-rbac-storage
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -137,7 +144,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -163,7 +170,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -184,7 +191,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -211,7 +218,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -230,7 +237,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -241,7 +248,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -269,7 +276,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
- --operator.storage
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-test
|
||||
helm.sh/chart: kube-arangodb-test-1.2.12
|
||||
helm.sh/chart: kube-arangodb-test-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: test
|
||||
release: test
|
||||
|
@ -20,7 +20,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-test
|
||||
helm.sh/chart: kube-arangodb-test-1.2.12
|
||||
helm.sh/chart: kube-arangodb-test-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: test
|
||||
release: test
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -21,7 +21,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -33,7 +33,7 @@ metadata:
|
|||
name: arangolocalstorages.storage.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -63,7 +63,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-apps
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -79,7 +79,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-backup
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -95,7 +95,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -104,8 +104,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/deployment-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -114,7 +121,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-deployment
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -133,7 +140,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-deployment-replication
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -152,7 +159,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-k2kclustersync
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -169,7 +176,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-storage
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -197,7 +204,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-apps
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -217,7 +224,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-backup
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -237,7 +244,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -257,7 +264,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-deployment
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -277,7 +284,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-deployment-replication
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -297,7 +304,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-k2kclustersync
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -318,7 +325,7 @@ metadata:
|
|||
name: arango-all-operator-rbac-storage
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -339,7 +346,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -373,7 +380,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -390,7 +397,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -422,7 +429,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -439,7 +446,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -477,7 +484,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -503,7 +510,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -533,7 +540,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -559,7 +566,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -581,7 +588,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -602,7 +609,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -623,7 +630,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -644,7 +651,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -665,7 +672,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -686,7 +693,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -708,7 +715,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -729,7 +736,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -756,7 +763,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -775,7 +782,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: all
|
||||
release: all
|
||||
|
@ -786,7 +793,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -814,7 +821,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
- --operator.deployment
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -21,7 +21,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -33,7 +33,7 @@ metadata:
|
|||
name: arango-apps-operator-rbac-apps
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -49,7 +49,7 @@ metadata:
|
|||
name: arango-apps-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -58,8 +58,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/apps-operator/cluster-role-binding.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -68,7 +75,7 @@ metadata:
|
|||
name: arango-apps-operator-rbac-apps
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -88,7 +95,7 @@ metadata:
|
|||
name: arango-apps-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -109,7 +116,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -143,7 +150,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -160,7 +167,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -182,7 +189,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -203,7 +210,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -230,7 +237,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -249,7 +256,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: apps
|
||||
release: apps
|
||||
|
@ -260,7 +267,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -288,7 +295,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arango-k2kclustersync-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -28,8 +28,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/k2k-cluster-sync-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -38,7 +45,7 @@ metadata:
|
|||
name: arango-k2kclustersync-operator-rbac-k2kclustersync
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -55,7 +62,7 @@ metadata:
|
|||
name: arango-k2kclustersync-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -75,7 +82,7 @@ metadata:
|
|||
name: arango-k2kclustersync-operator-rbac-k2kclustersync
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -97,7 +104,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -127,7 +134,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -149,7 +156,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -176,7 +183,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -195,7 +202,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: k2kclustersync
|
||||
release: k2kclustersync
|
||||
|
@ -206,7 +213,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -234,7 +241,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arango-backup-operator-rbac-backup
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -35,7 +35,7 @@ metadata:
|
|||
name: arango-backup-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -44,8 +44,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/backup-operator/cluster-role-binding.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -54,7 +61,7 @@ metadata:
|
|||
name: arango-backup-operator-rbac-backup
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -74,7 +81,7 @@ metadata:
|
|||
name: arango-backup-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -95,7 +102,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -127,7 +134,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -148,7 +155,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -175,7 +182,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -194,7 +201,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: backup
|
||||
release: backup
|
||||
|
@ -205,7 +212,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -233,7 +240,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ metadata:
|
|||
name: arangobackuppolicies.backup.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -77,7 +77,7 @@ metadata:
|
|||
name: arangobackups.backup.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -189,7 +189,7 @@ metadata:
|
|||
name: arangodeploymentreplications.replication.database.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -236,7 +236,7 @@ metadata:
|
|||
name: arangodeployments.database.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -283,7 +283,7 @@ metadata:
|
|||
name: arangojobs.apps.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -321,7 +321,7 @@ metadata:
|
|||
name: arangoclustersynchronizations.database.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
@ -363,7 +363,7 @@ metadata:
|
|||
name: arangomembers.database.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-crd
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.12
|
||||
helm.sh/chart: kube-arangodb-crd-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: crd
|
||||
release: crd
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arango-deployment-replication-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -28,8 +28,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/deployment-replications-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -38,7 +45,7 @@ metadata:
|
|||
name: arango-deployment-replication-operator-rbac-deployment-replication
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -57,7 +64,7 @@ metadata:
|
|||
name: arango-deployment-replication-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -77,7 +84,7 @@ metadata:
|
|||
name: arango-deployment-replication-operator-rbac-deployment-replication
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -98,7 +105,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -124,7 +131,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -145,7 +152,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -172,7 +179,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -191,7 +198,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment-replication
|
||||
release: deployment-replication
|
||||
|
@ -202,7 +209,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -230,7 +237,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
- --operator.deployment-replication
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arango-deployment-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -28,8 +28,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/deployment-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -38,7 +45,7 @@ metadata:
|
|||
name: arango-deployment-operator-rbac-deployment
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -57,7 +64,7 @@ metadata:
|
|||
name: arango-deployment-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -77,7 +84,7 @@ metadata:
|
|||
name: arango-deployment-operator-rbac-deployment
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -98,7 +105,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -115,7 +122,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -153,7 +160,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -174,7 +181,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -195,7 +202,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -222,7 +229,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -241,7 +248,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: deployment
|
||||
release: deployment
|
||||
|
@ -252,7 +259,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -280,7 +287,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
- --operator.deployment
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -19,7 +19,7 @@ metadata:
|
|||
name: arangolocalstorages.storage.arangodb.com
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -49,7 +49,7 @@ metadata:
|
|||
name: arango-storage-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -58,8 +58,15 @@ rules:
|
|||
resources: ["customresourcedefinitions"]
|
||||
verbs: ["get", "list", "watch", "update", "delete"]
|
||||
resourceNames:
|
||||
- "arangodeployments.database.arangodb.com"
|
||||
- "arangoclustersynchronizations.database.arangodb.com"
|
||||
- "arangomembers.database.arangodb.com"
|
||||
- "arangotasks.database.arangodb.com"
|
||||
- "arangodeploymentreplications.replication.database.arangodb.com"
|
||||
- "arangobackups.backup.arangodb.com"
|
||||
- "arangobackuppolicies.backup.arangodb.com"
|
||||
- "arangojobs.apps.arangodb.com"
|
||||
- "arangolocalstorages.storage.arangodb.com"
|
||||
---
|
||||
# Source: kube-arangodb/templates/storage-operator/cluster-role.yaml
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
|
@ -68,7 +75,7 @@ metadata:
|
|||
name: arango-storage-operator-rbac-storage
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -96,7 +103,7 @@ metadata:
|
|||
name: arango-storage-operator-rbac-crd
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -116,7 +123,7 @@ metadata:
|
|||
name: arango-storage-operator-rbac-storage
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -137,7 +144,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -163,7 +170,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -184,7 +191,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -211,7 +218,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -230,7 +237,7 @@ spec:
|
|||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb
|
||||
helm.sh/chart: kube-arangodb-1.2.12
|
||||
helm.sh/chart: kube-arangodb-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: storage
|
||||
release: storage
|
||||
|
@ -241,7 +248,7 @@ spec:
|
|||
requiredDuringSchedulingIgnoredDuringExecution:
|
||||
nodeSelectorTerms:
|
||||
- matchExpressions:
|
||||
- key: beta.kubernetes.io/arch
|
||||
- key: kubernetes.io/arch
|
||||
operator: In
|
||||
values:
|
||||
- "amd64"
|
||||
|
@ -269,7 +276,7 @@ spec:
|
|||
containers:
|
||||
- name: operator
|
||||
imagePullPolicy: Always
|
||||
image: arangodb/kube-arangodb:1.2.12
|
||||
image: arangodb/kube-arangodb:1.2.15
|
||||
args:
|
||||
- --scope=legacy
|
||||
- --operator.storage
|
||||
|
|
|
@ -7,7 +7,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-test
|
||||
helm.sh/chart: kube-arangodb-test-1.2.12
|
||||
helm.sh/chart: kube-arangodb-test-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: test
|
||||
release: test
|
||||
|
@ -20,7 +20,7 @@ metadata:
|
|||
namespace: default
|
||||
labels:
|
||||
app.kubernetes.io/name: kube-arangodb-test
|
||||
helm.sh/chart: kube-arangodb-test-1.2.12
|
||||
helm.sh/chart: kube-arangodb-test-1.2.15
|
||||
app.kubernetes.io/managed-by: Tiller
|
||||
app.kubernetes.io/instance: test
|
||||
release: test
|
||||
|
|
130
pkg/api/api.go
Normal file
130
pkg/api/api.go
Normal file
|
@ -0,0 +1,130 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
"net"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"golang.org/x/sync/errgroup"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/credentials"
|
||||
typedCore "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||
|
||||
pb "github.com/arangodb/kube-arangodb/pkg/api/server"
|
||||
"github.com/arangodb/kube-arangodb/pkg/logging"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/probe"
|
||||
)
|
||||
|
||||
var apiLogger = logging.Global().RegisterAndGetLogger("api-server", logging.Info)
|
||||
|
||||
type Server struct {
|
||||
httpServer *http.Server
|
||||
grpcServer *grpc.Server
|
||||
grpcAddress string
|
||||
|
||||
pb.UnimplementedOperatorServer
|
||||
}
|
||||
|
||||
type ReadinessProbeConfig struct {
|
||||
Enabled bool
|
||||
Probe *probe.ReadyProbe
|
||||
}
|
||||
|
||||
// ServerConfig settings for the Server
|
||||
type ServerConfig struct {
|
||||
Namespace string
|
||||
ServerName string
|
||||
ServerAltNames []string
|
||||
HTTPAddress string
|
||||
GRPCAddress string
|
||||
TLSSecretName string
|
||||
JWTSecretName string
|
||||
JWTKeySecretName string
|
||||
LivelinessProbe *probe.LivenessProbe
|
||||
ProbeDeployment ReadinessProbeConfig
|
||||
ProbeDeploymentReplication ReadinessProbeConfig
|
||||
ProbeStorage ReadinessProbeConfig
|
||||
}
|
||||
|
||||
// NewServer creates and configure a new Server
|
||||
func NewServer(cli typedCore.CoreV1Interface, cfg ServerConfig) (*Server, error) {
|
||||
jwtSigningKey, err := ensureJWT(cli, cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
tlsConfig, err := prepareTLSConfig(cli, cfg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
auth := &authorization{jwtSigningKey: jwtSigningKey}
|
||||
|
||||
s := &Server{
|
||||
httpServer: &http.Server{
|
||||
Addr: cfg.HTTPAddress,
|
||||
ReadTimeout: time.Second * 30,
|
||||
ReadHeaderTimeout: time.Second * 15,
|
||||
WriteTimeout: time.Second * 30,
|
||||
TLSConfig: tlsConfig,
|
||||
},
|
||||
grpcServer: grpc.NewServer(
|
||||
grpc.UnaryInterceptor(auth.ensureGRPCAuth),
|
||||
grpc.Creds(credentials.NewTLS(tlsConfig)),
|
||||
),
|
||||
grpcAddress: cfg.GRPCAddress,
|
||||
}
|
||||
handler, err := buildHTTPHandler(cfg, auth)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s.httpServer.Handler = handler
|
||||
|
||||
pb.RegisterOperatorServer(s.grpcServer, s)
|
||||
return s, nil
|
||||
}
|
||||
|
||||
func (s *Server) Run() error {
|
||||
g := errgroup.Group{}
|
||||
g.Go(func() error {
|
||||
apiLogger.Info("Serving HTTP API on %s", s.httpServer.Addr)
|
||||
if err := s.httpServer.ListenAndServeTLS("", ""); err != nil && err != http.ErrServerClosed {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
g.Go(func() error {
|
||||
apiLogger.Info("Serving GRPC API on %s", s.grpcAddress)
|
||||
ln, err := net.Listen("tcp", s.grpcAddress)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer ln.Close()
|
||||
|
||||
if err := s.grpcServer.Serve(ln); err != nil && err != grpc.ErrServerStopped {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
return g.Wait()
|
||||
}
|
82
pkg/api/auth.go
Normal file
82
pkg/api/auth.go
Normal file
|
@ -0,0 +1,82 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
jg "github.com/golang-jwt/jwt"
|
||||
"google.golang.org/grpc"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/metadata"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
type authorization struct {
|
||||
jwtSigningKey string
|
||||
}
|
||||
|
||||
func (a *authorization) isValid(token string) bool {
|
||||
t, err := jg.Parse(token, func(_ *jg.Token) (interface{}, error) {
|
||||
return []byte(a.jwtSigningKey), nil
|
||||
})
|
||||
if err != nil {
|
||||
apiLogger.Err(err).Info("invalid JWT: %s", token)
|
||||
return false
|
||||
}
|
||||
return t.Valid
|
||||
}
|
||||
|
||||
// ensureHTTPAuth ensure a valid token exists within HTTP request header
|
||||
func (a *authorization) ensureHTTPAuth(c *gin.Context) {
|
||||
h := c.Request.Header.Values("Authorization")
|
||||
bearerToken := extractBearerToken(h)
|
||||
if !a.isValid(bearerToken) {
|
||||
c.AbortWithStatus(http.StatusUnauthorized)
|
||||
}
|
||||
}
|
||||
|
||||
// ensureGRPCAuth ensures a valid token exists within a GRPC request's metadata
|
||||
func (a *authorization) ensureGRPCAuth(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
|
||||
md, ok := metadata.FromIncomingContext(ctx)
|
||||
if !ok {
|
||||
return nil, status.Errorf(codes.InvalidArgument, "missing metadata")
|
||||
}
|
||||
|
||||
// The keys within metadata.MD are normalized to lowercase.
|
||||
// See: https://godoc.org/google.golang.org/grpc/metadata#New
|
||||
bearerToken := extractBearerToken(md["authorization"])
|
||||
if !a.isValid(bearerToken) {
|
||||
return nil, status.Errorf(codes.Unauthenticated, "invalid token")
|
||||
}
|
||||
// Continue execution of handler after ensuring a valid token.
|
||||
return handler(ctx, req)
|
||||
}
|
||||
|
||||
func extractBearerToken(authorization []string) string {
|
||||
if len(authorization) < 1 {
|
||||
return ""
|
||||
}
|
||||
return strings.TrimPrefix(authorization[0], "Bearer ")
|
||||
}
|
39
pkg/api/grpc.go
Normal file
39
pkg/api/grpc.go
Normal file
|
@ -0,0 +1,39 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
pb "github.com/arangodb/kube-arangodb/pkg/api/server"
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
)
|
||||
|
||||
func (s *Server) GetVersion(ctx context.Context, _ *pb.Empty) (*pb.Version, error) {
|
||||
v := version.GetVersionV1()
|
||||
return &pb.Version{
|
||||
Version: string(v.Version),
|
||||
Build: v.Build,
|
||||
Edition: string(v.Edition),
|
||||
GoVersion: v.GoVersion,
|
||||
BuildDate: v.BuildDate,
|
||||
}, nil
|
||||
}
|
79
pkg/api/http.go
Normal file
79
pkg/api/http.go
Normal file
|
@ -0,0 +1,79 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
prometheus "github.com/prometheus/client_golang/prometheus/promhttp"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
operatorHTTP "github.com/arangodb/kube-arangodb/pkg/util/http"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/probe"
|
||||
"github.com/arangodb/kube-arangodb/pkg/version"
|
||||
)
|
||||
|
||||
func buildHTTPHandler(cfg ServerConfig, auth *authorization) (http.Handler, error) {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
r := gin.New()
|
||||
r.Use(gin.Recovery())
|
||||
|
||||
versionV1Responder, err := operatorHTTP.NewSimpleJSONResponse(version.GetVersionV1())
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
r.GET("/_api/version", gin.WrapF(versionV1Responder.ServeHTTP))
|
||||
r.GET("/api/v1/version", gin.WrapF(versionV1Responder.ServeHTTP))
|
||||
r.GET("/health", gin.WrapF(cfg.LivelinessProbe.LivenessHandler))
|
||||
|
||||
var readyProbes []*probe.ReadyProbe
|
||||
if cfg.ProbeDeployment.Enabled {
|
||||
r.GET("/ready/deployment", gin.WrapF(cfg.ProbeDeployment.Probe.ReadyHandler))
|
||||
readyProbes = append(readyProbes, cfg.ProbeDeployment.Probe)
|
||||
}
|
||||
if cfg.ProbeDeploymentReplication.Enabled {
|
||||
r.GET("/ready/deployment-replication", gin.WrapF(cfg.ProbeDeploymentReplication.Probe.ReadyHandler))
|
||||
readyProbes = append(readyProbes, cfg.ProbeDeploymentReplication.Probe)
|
||||
}
|
||||
if cfg.ProbeStorage.Enabled {
|
||||
r.GET("/ready/storage", gin.WrapF(cfg.ProbeStorage.Probe.ReadyHandler))
|
||||
readyProbes = append(readyProbes, cfg.ProbeStorage.Probe)
|
||||
}
|
||||
r.GET("/ready", gin.WrapF(handleGetReady(readyProbes...)))
|
||||
|
||||
r.GET("/metrics", auth.ensureHTTPAuth, gin.WrapH(prometheus.Handler()))
|
||||
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func handleGetReady(probes ...*probe.ReadyProbe) func(w http.ResponseWriter, r *http.Request) {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
for _, probe := range probes {
|
||||
if !probe.IsReady() {
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
w.WriteHeader(http.StatusOK)
|
||||
}
|
||||
}
|
95
pkg/api/jwt.go
Normal file
95
pkg/api/jwt.go
Normal file
|
@ -0,0 +1,95 @@
|
|||
//
|
||||
// DISCLAIMER
|
||||
//
|
||||
// Copyright 2016-2022 ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
// Copyright holder is ArangoDB GmbH, Cologne, Germany
|
||||
//
|
||||
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/rand"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
jg "github.com/golang-jwt/jwt"
|
||||
typedCore "k8s.io/client-go/kubernetes/typed/core/v1"
|
||||
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/errors"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/globals"
|
||||
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
|
||||
secret "github.com/arangodb/kube-arangodb/pkg/util/k8sutil/inspector/secret/v1"
|
||||
)
|
||||
|
||||
// ensureJWT ensure that JWT signing key exists or creates a new one.
|
||||
// It also saves new token into secret if it is not present.
|
||||
// Returns JWT signing key.
|
||||
func ensureJWT(cli typedCore.CoreV1Interface, cfg ServerConfig) (string, error) {
|
||||
secrets := cli.Secrets(cfg.Namespace)
|
||||
|
||||
signingKey, err := k8sutil.GetTokenSecret(context.Background(), secrets, cfg.JWTKeySecretName)
|
||||
if err != nil && k8sutil.IsNotFound(err) || signingKey == "" {
|
||||
signingKey, err = createSigningKey(secrets, cfg.JWTKeySecretName)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
} else if err != nil {
|
||||
return "", errors.WithStack(err)
|
||||
}
|
||||
|
||||
_, err = k8sutil.GetTokenSecret(context.Background(), secrets, cfg.JWTSecretName)
|
||||
if err != nil && k8sutil.IsNotFound(err) {
|
||||
err = generateAndSaveJWT(secrets, cfg)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
} else if err != nil {
|
||||
return "", errors.WithStack(err)
|
||||
}
|
||||
return signingKey, nil
|
||||
}
|
||||
|
||||
// generateAndSaveJWT tries to generate new JWT using signing key retrieved from secret.
|
||||
// If it is not present, it creates a new key.
|
||||
// The resulting JWT is stored in secrets.
|
||||
func generateAndSaveJWT(secrets secret.Interface, cfg ServerConfig) error {
|
||||
claims := jg.MapClaims{
|
||||
"iss": fmt.Sprintf("kube-arangodb/%s", cfg.ServerName),
|
||||
"iat": time.Now().Unix(),
|
||||
}
|
||||
err := k8sutil.CreateJWTFromSecret(context.Background(), secrets, secrets, cfg.JWTSecretName, cfg.JWTKeySecretName, claims, nil)
|
||||
if err != nil {
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func createSigningKey(secrets secret.ModInterface, keySecretName string) (string, error) {
|
||||
signingKey := make([]byte, 32)
|
||||
_, err := rand.Read(signingKey)
|
||||
if err != nil {
|
||||
return "", errors.WithStack(err)
|
||||
}
|
||||
|
||||
err = globals.GetGlobalTimeouts().Kubernetes().RunWithTimeout(context.Background(), func(ctxChild context.Context) error {
|
||||
return k8sutil.CreateTokenSecret(ctxChild, secrets, keySecretName, string(signingKey), nil)
|
||||
})
|
||||
if err != nil {
|
||||
return "", errors.WithStack(err)
|
||||
}
|
||||
return string(signingKey), nil
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue