diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 500ad4acd..29d244ddb 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,6 +1,6 @@ --- name: Bug Report -about: Create a report to help us improve Maesh +about: Create a report to help us improve Traefik Mesh. --- @@ -29,7 +29,7 @@ HOW TO WRITE A GOOD BUG REPORT? -### Output of controller log: (_What version of Maesh are you using?_) +### Output of controller log: (_What version of Traefik Mesh are you using?_) diff --git a/.gitignore b/.gitignore index 704127d96..08f45f98b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,11 +9,10 @@ *.log *.exe cover.out -maesh -!maesh/ +traefik-mesh /dist/ .vscode vendor pages/ -maesh-gh-pages* +mesh-gh-pages* *.zip diff --git a/.goreleaser.yml b/.goreleaser.yml index 237e4dc3d..8b8c06a3c 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,16 +1,16 @@ -project_name: maesh +project_name: traefik-mesh builds: - - binary: maesh + - binary: traefik-mesh - main: ./cmd/maesh/maesh.go + main: ./cmd/mesh/mesh.go env: - CGO_ENABLED=0 ldflags: - -s -w - - -X github.com/containous/maesh/pkg/version.Version={{.Version}} - - -X github.com/containous/maesh/pkg/version.Commit={{.Commit}} - - -X github.com/containous/maesh/pkg/version.Date={{.Date}} + - -X github.com/traefik/mesh/pkg/version.Version={{.Version}} + - -X github.com/traefik/mesh/pkg/version.Commit={{.Commit}} + - -X github.com/traefik/mesh/pkg/version.Date={{.Date}} goos: - linux - freebsd @@ -30,7 +30,7 @@ builds: goarch: arm64 archives: - - id: maesh + - id: traefik-mesh name_template: '{{ .ProjectName }}_v{{ .Version }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}' format: tar.gz files: diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml index a9e076133..b7cdcb51f 100644 --- a/.semaphore/semaphore.yml +++ b/.semaphore/semaphore.yml @@ -1,5 +1,5 @@ version: v1.0 -name: Maesh Pipeline +name: Traefik Mesh Pipeline agent: machine: @@ -33,9 +33,9 @@ blocks: - name: Build and check commands: - make check build - - cache store maesh-dist-$SEMAPHORE_GIT_BRANCH-$SEMAPHORE_WORKFLOW_ID dist - - docker save containous/maesh:latest > maesh-img.tar - - cache store maesh-img-$SEMAPHORE_GIT_BRANCH-$SEMAPHORE_WORKFLOW_ID maesh-img.tar + - cache store traefik-mesh-dist-$SEMAPHORE_GIT_BRANCH-$SEMAPHORE_WORKFLOW_ID dist + - docker save traefik/mesh:latest > traefik-mesh-img.tar + - cache store traefik-mesh-img-$SEMAPHORE_GIT_BRANCH-$SEMAPHORE_WORKFLOW_ID traefik-mesh-img.tar - name: Unit Tests skip: @@ -62,9 +62,9 @@ blocks: - sudo semgo go1.15 - checkout - cache restore - - cache restore maesh-dist-$SEMAPHORE_GIT_BRANCH-$SEMAPHORE_WORKFLOW_ID - - cache restore maesh-img-$SEMAPHORE_GIT_BRANCH-$SEMAPHORE_WORKFLOW_ID - - docker load < maesh-img.tar + - cache restore traefik-mesh-dist-$SEMAPHORE_GIT_BRANCH-$SEMAPHORE_WORKFLOW_ID + - cache restore traefik-mesh-img-$SEMAPHORE_GIT_BRANCH-$SEMAPHORE_WORKFLOW_ID + - docker load < traefik-mesh-img.tar jobs: - name: ACL Enabled Suite commands: diff --git a/.travis.yml b/.travis.yml index 1bf08be54..7a88890a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,10 +47,10 @@ before_deploy: if ! [ "$BEFORE_DEPLOY_RUN" ]; then export BEFORE_DEPLOY_RUN=1; echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin; - curl -sfL https://raw.githubusercontent.com/containous/structor/master/godownloader.sh | bash -s -- -b "${GOPATH}/bin" ${STRUCTOR_VERSION}; + curl -sfL https://raw.githubusercontent.com/traefik/structor/master/godownloader.sh | bash -s -- -b "${GOPATH}/bin" ${STRUCTOR_VERSION}; curl -sSfL https://raw.githubusercontent.com/traefik/mixtus/master/godownloader.sh | sh -s -- -b "${GOPATH}/bin" ${MIXTUS_VERSION}; - structor -o containous -r maesh --dockerfile-url="https://raw.githubusercontent.com/containous/maesh/master/docs/docs.Dockerfile" --menu.js-url="https://raw.githubusercontent.com/containous/structor/master/traefik-menu.js.gotmpl" --rqts-url="https://raw.githubusercontent.com/containous/structor/master/requirements-override.txt" --force-edit-url --exp-branch=master --debug; - mixtus --dst-doc-path="./mesh" --dst-owner=traefik --dst-repo-name=doc --git-user-email="30906710+traefiker@users.noreply.github.com" --git-user-name=traefiker --src-doc-path="./site" --src-owner=containous --src-repo-name=maesh; + structor -o traefik -r mesh --dockerfile-url="https://raw.githubusercontent.com/traefik/mesh/master/docs/docs.Dockerfile" --menu.js-url="https://raw.githubusercontent.com/traefik/structor/master/traefik-menu.js.gotmpl" --rqts-url="https://raw.githubusercontent.com/traefik/structor/master/requirements-override.txt" --force-edit-url --exp-branch=master --debug; + mixtus --dst-doc-path="./mesh" --dst-owner=traefik --dst-repo-name=doc --git-user-email="30906710+traefiker@users.noreply.github.com" --git-user-name=traefiker --src-doc-path="./site" --src-owner=traefik --src-repo-name=mesh; fi # Copy helm packages - cp -r pages/charts/. site/charts @@ -94,5 +94,5 @@ deploy: skip_cleanup: true keep_history: true on: - repo: containous/maesh + repo: traefik/mesh all_branches: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3eefacf8b..75417bc12 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,35 +1,33 @@ # Contributing -Maesh is an open source project, and your feedback and contributions -are needed and always welcome. +Traefik Mesh is an open source project, and your feedback and contributions are needed and always welcome. -[Issues] and [Pull Requests] are opened at https://github.com/containous/maesh. +[Issues] and [Pull Requests] are opened at https://github.com/traefik/mesh. -Non trivial changes should be discussed with the project maintainers by -opening a [Feature Request] clearly explaining rationale, background -and possible implementation ideas. Feel free to provide code in such -discussions. +Non trivial changes should be discussed with the project maintainers by opening a [Feature Request] clearly explaining rationale, +background and possible implementation ideas. Feel free to provide code in such discussions. -Once the proposal is approved, a Pull Request can be opened. If you want -to provide early visibility to reviewers, create a [Draft Pull Request]. +Once the proposal is approved, a Pull Request can be opened. If you want to provide early visibility to reviewers, create a [Draft Pull Request]. -[Issues]: https://github.com/containous/maesh/issues -[Pull Requests]: https://github.com/containous/maesh/issues -[Feature Request]: https://github.com/containous/maesh/issues/new?template=feature_request.md +[Issues]: https://github.com/traefik/mesh/issues +[Pull Requests]: https://github.com/traefik/mesh/issues +[Feature Request]: https://github.com/traefik/mesh/issues/new?template=feature_request.md [Draft Pull Request]: https://github.blog/2019-02-14-introducing-draft-pull-requests/ ## Release Process -Maesh follows the [semver](https://semver.org/) scheme when releasing new versions. +Traefik Mesh follows the [semver](https://semver.org/) scheme when releasing new versions. -Therefore, all PR's (except fixing a bug in a specific version) should be made against the `master` branch. If you're attempting to fix a bug in an already released version, please use the correct branch of that release (e.g. `v1.1`). All bug-fixes made to a specific branch will be backported to master, prior to releasing a new (major / minor) version. Patch releases will be made out of the version branch. +Therefore, all PR's (except fixing a bug in a specific version) should be made against the `master` branch. +If you're attempting to fix a bug in an already released version, please use the correct branch of that release (e.g. `v1.1`). +All bug-fixes made to a specific branch will be backported to master, prior to releasing a new (major / minor) version. Patch releases will be made out of the version branch. ### Release steps -In order to release a new version of Maesh, the following steps have to be done: +In order to release a new version of Traefik Mesh, the following steps have to be done: * Create a Prepare release PR updating the chart version and app version to upcoming release -* Prepare a list of release notes for the #maesh +* Prepare a list of release notes for the #traefik-mesh * Merge Prepare release PR * Create and push a tag on the release commit -* Create a new release branch (v1.x) on upstream to allow versioned docs to be built \ No newline at end of file +* Create a new release branch (v1.x) on upstream to allow versioned docs to be built diff --git a/Dockerfile b/Dockerfile index 637b52fcc..235923541 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,3 @@ -# Let's build maesh for linux-amd64 FROM golang:1.15-alpine AS base-image # Package dependencies @@ -16,7 +15,7 @@ RUN apk --no-cache --no-progress add \ && update-ca-certificates \ && rm -rf /var/cache/apk/* -WORKDIR /go/src/github.com/containous/maesh +WORKDIR /go/src/github.com/traefik/mesh # Download goreleaser binary to bin folder in $GOPATH RUN curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | sh @@ -42,6 +41,6 @@ RUN addgroup -g 1000 -S app && \ adduser -u 1000 -S app -G app COPY --from=base-image /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ -COPY --from=maker /go/src/github.com/containous/maesh/dist/maesh /app/ +COPY --from=maker /go/src/github.com/traefik/mesh/dist/traefik-mesh /app/ -ENTRYPOINT ["/app/maesh"] +ENTRYPOINT ["/app/traefik-mesh"] diff --git a/LICENSE b/LICENSE index 59d479ee9..253cb5383 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,8 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2019 Containous SAS + Copyright 2020 Containous SAS + Copyright 2020 Traefik Labs Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/Makefile b/Makefile index 8c346a892..2c0908c65 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,11 @@ -DOCKER_IMAGE_NAME := containous/maesh +DOCKER_IMAGE_NAME := traefik/mesh UNAME := $(shell uname) SRCS = $(shell git ls-files '*.go' | grep -v '^vendor/') -BINARY_NAME = maesh +BINARY_NAME = traefik-mesh DIST_DIR = $(CURDIR)/dist -DIST_DIR_MAESH = $(DIST_DIR)/$(BINARY_NAME) -PROJECT ?= github.com/containous/$(BINARY_NAME) +DIST_DIR_TRAEFIK_MESH = $(DIST_DIR)/$(BINARY_NAME) +PROJECT ?= github.com/traefik/mesh TAG_NAME ?= $(shell git tag -l --contains HEAD) SHA := $(shell git rev-parse --short HEAD) @@ -22,7 +22,7 @@ $(DIST_DIR): mkdir -p $(DIST_DIR) clean: - rm -rf $(CURDIR)/dist/ cover.out $(CURDIR)/pages $(CURDIR)/gh-pages.zip $(CURDIR)/maesh-gh-pages + rm -rf $(CURDIR)/dist/ cover.out $(CURDIR)/pages $(CURDIR)/gh-pages.zip $(CURDIR)/mesh-gh-pages # Static linting of source files. See .golangci.toml for options local-check: $(DIST_DIR) helm-lint @@ -30,11 +30,11 @@ local-check: $(DIST_DIR) helm-lint # Local commands local-build: $(DIST_DIR) - CGO_ENABLED=0 go build -o ${DIST_DIR_MAESH} -ldflags="-s -w \ - -X github.com/containous/$(BINARY_NAME)/pkg/version.Version=$(VERSION) \ - -X github.com/containous/$(BINARY_NAME)/pkg/version.Commit=$(SHA) \ - -X github.com/containous/$(BINARY_NAME)/pkg/version.Date=$(BUILD_DATE)" \ - $(CURDIR)/cmd/$(BINARY_NAME)/*.go + CGO_ENABLED=0 go build -o ${DIST_DIR_TRAEFIK_MESH} -ldflags="-s -w \ + -X github.com/traefik/mesh/pkg/version.Version=$(VERSION) \ + -X github.com/traefik/mesh/pkg/version.Commit=$(SHA) \ + -X github.com/traefik/mesh/pkg/version.Date=$(BUILD_DATE)" \ + $(CURDIR)/cmd/mesh/mesh.go local-test: clean go test -v -cover ./... @@ -105,19 +105,19 @@ helm: @command -v helm >/dev/null 2>&1 || curl -L https://git.io/get_helm.sh | bash -s -- -v v3.0.1 helm-lint: helm - helm lint helm/chart/maesh + helm lint helm/chart/mesh k3d: @command -v k3d >/dev/null 2>&1 || curl -s https://raw.githubusercontent.com/rancher/k3d/v3.0.1/install.sh | TAG=v3.0.1 bash pages: mkdir -p $(CURDIR)/pages - rm -rf $(CURDIR)/gh-pages.zip $(CURDIR)/maesh-gh-pages + rm -rf $(CURDIR)/gh-pages.zip $(CURDIR)/mesh-gh-pages curl -sSLO https://$(PROJECT)/archive/gh-pages.zip unzip $(CURDIR)/gh-pages.zip # We only keep the directory "charts" so documentation may remove files - cp -r $(CURDIR)/maesh-gh-pages/charts $(CURDIR)/pages/ - rm -rf $(CURDIR)/gh-pages.zip $(CURDIR)/maesh-gh-pages + cp -r $(CURDIR)/mesh-gh-pages/charts $(CURDIR)/pages/ + rm -rf $(CURDIR)/gh-pages.zip $(CURDIR)/mesh-gh-pages docs-package: pages make -C $(CURDIR)/docs @@ -125,8 +125,8 @@ docs-package: pages cp $(CURDIR)/docs/CNAME $(CURDIR)/pages/CNAME helm-package: helm-lint pages - helm package --app-version $(TAG_NAME) $(CURDIR)/helm/chart/maesh - cp helm/chart/maesh/README.md index.md + helm package --app-version $(TAG_NAME) $(CURDIR)/helm/chart/mesh + cp helm/chart/mesh/README.md index.md mkdir -p $(CURDIR)/pages/charts mv *.tgz index.md $(CURDIR)/pages/charts/ helm repo index $(CURDIR)/pages/charts/ diff --git a/README.md b/README.md index 9d612ccc9..c2cab4e5d 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,22 @@

-Maesh +Traefik Mesh

-[![Travis CI Build Status](https://travis-ci.com/containous/maesh.svg?branch=master)](https://travis-ci.com/containous/maesh) -[![Semaphore CI Build Status](https://containous.semaphoreci.com/badges/maesh/branches/master.svg?style=shields)](https://containous.semaphoreci.com/projects/maesh) +[![Travis CI Build Status](https://travis-ci.com/traefik/mesh.svg?branch=master)](https://travis-ci.com/traefik/mesh) +[![Semaphore CI Build Status](https://traefik.semaphoreci.com/badges/mesh/branches/master.svg?style=shields)](https://traefik.semaphoreci.com/projects/mesh) [![Docs](https://img.shields.io/badge/docs-current-brightgreen.svg)](https://docs.mae.sh) -[![Go Report Card](https://goreportcard.com/badge/github.com/containous/maesh)](https://goreportcard.com/report/github.com/containous/maesh) -[![Release](https://img.shields.io/github/tag-date/containous/maesh.svg)](https://github.com/containous/maesh/releases) -[![GitHub](https://img.shields.io/github/license/containous/maesh)](https://github.com/containous/maesh/blob/master/LICENSE) +[![Go Report Card](https://goreportcard.com/badge/github.com/traefik/mesh)](https://goreportcard.com/report/github.com/traefik/mesh) +[![Release](https://img.shields.io/github/tag-date/traefik/mesh.svg)](https://github.com/traefik/mesh/releases) +[![GitHub](https://img.shields.io/github/license/traefik/mesh)](https://github.com/traefik/mesh/blob/master/LICENSE) [![Discourse status](https://img.shields.io/discourse/https/community.containo.us/status?label=Community&style=social)](https://community.containo.us/c/maesh) -## Maesh: Simpler Service Mesh +## Traefik Mesh: Simpler Service Mesh -Maesh is a simple, yet full-featured service mesh. +Traefik Mesh is a simple, yet full-featured service mesh. It is container-native and fits as your de-facto service mesh in your Kubernetes cluster. It supports the latest Service Mesh Interface specification [SMI](https://smi-spec.io) that facilitates integration with pre-existing solution. -Moreover, Maesh is opt-in by default, -which means that your existing services are unaffected until you decide to add them to the mesh. +Moreover, Traefik Mesh is opt-in by default, which means that your existing services are unaffected until you decide to add them to the mesh.

SMI @@ -26,15 +25,15 @@ which means that your existing services are unaffected until you decide to add t ## Non-Invasive Service Mesh -Maesh does not use any sidecar container but handles routing through proxy endpoints running on each node. +Traefik Mesh does not use any sidecar container but handles routing through proxy endpoints running on each node. The mesh controller runs in a dedicated pod and handles all the configuration parsing and deployment to the proxy nodes. -Maesh supports multiple configuration options: annotations on user service objects, and SMI objects. -Not using sidecars means that Maesh does not modify your Kubernetes objects, and does not modify your traffic without your knowledge. -Using the Maesh endpoints is all that is required. +Traefik Mesh supports multiple configuration options: annotations on user service objects, and SMI objects. +Not using sidecars means that Traefik Mesh does not modify your Kubernetes objects, and does not modify your traffic without your knowledge. +Using the Traefik Mesh endpoints is all that is required.

-Maesh -Maesh +Traefik Mesh +Traefik Mesh

## Prerequisites @@ -48,9 +47,9 @@ To run this app, you require the following: ## Install (Helm v3 only) ```shell -helm repo add maesh https://containous.github.io/maesh/charts +helm repo add traefik-mesh https://traefik.github.io/mesh/charts helm repo update -helm install maesh maesh/maesh +helm install traefik-mesh traefik-mesh/traefik-mesh ``` You can find the complete documentation at https://docs.mae.sh. diff --git a/cmd/cleanup/cleanup.go b/cmd/cleanup/cleanup.go index fdf102332..78059dd9f 100644 --- a/cmd/cleanup/cleanup.go +++ b/cmd/cleanup/cleanup.go @@ -4,9 +4,9 @@ import ( "context" "fmt" - "github.com/containous/maesh/cmd" - "github.com/containous/maesh/pkg/cleanup" - "github.com/containous/maesh/pkg/k8s" + "github.com/traefik/mesh/cmd" + "github.com/traefik/mesh/pkg/cleanup" + "github.com/traefik/mesh/pkg/k8s" "github.com/traefik/paerser/cli" ) @@ -14,7 +14,7 @@ import ( func NewCmd(cConfig *cmd.CleanupConfiguration, loaders []cli.ResourceLoader) *cli.Command { return &cli.Command{ Name: "cleanup", - Description: `Removes Maesh shadow services from a Kubernetes cluster.`, + Description: `Removes Traefik Mesh shadow services from a Kubernetes cluster.`, Configuration: cConfig, Run: func(_ []string) error { return cleanupCommand(cConfig) @@ -31,7 +31,7 @@ func cleanupCommand(cConfig *cmd.CleanupConfiguration) error { return fmt.Errorf("could not create logger: %w", err) } - logger.Debug("Starting maesh cleanup...") + logger.Debug("Starting cleanup...") logger.Debugf("Using masterURL: %q", cConfig.MasterURL) logger.Debugf("Using kubeconfig: %q", cConfig.KubeConfig) diff --git a/cmd/configuration.go b/cmd/configuration.go index b05a50270..7766b3c96 100644 --- a/cmd/configuration.go +++ b/cmd/configuration.go @@ -4,8 +4,8 @@ import ( "os" ) -// MaeshConfiguration wraps the static configuration and extra parameters. -type MaeshConfiguration struct { +// TraefikMeshConfiguration wraps the static configuration and extra parameters. +type TraefikMeshConfiguration struct { ConfigFile string `description:"Configuration file to use. If specified all other flags are ignored." export:"true"` KubeConfig string `description:"Path to a kubeconfig. Only required if out-of-cluster." export:"true"` MasterURL string `description:"The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster." export:"true"` @@ -15,7 +15,7 @@ type MaeshConfiguration struct { ACL bool `description:"Enable ACL mode." export:"true"` SMI bool `description:"Enable SMI operation, deprecated, use --acl instead." export:"true"` DefaultMode string `description:"Default mode for mesh services." export:"true"` - Namespace string `description:"The namespace that maesh is installed in." export:"true"` + Namespace string `description:"The namespace that Traefik Mesh is installed in." export:"true"` WatchNamespaces []string `description:"Namespaces to watch." export:"true"` IgnoreNamespaces []string `description:"Namespaces to ignore." export:"true"` APIPort int32 `description:"API port for the controller." export:"true"` @@ -25,9 +25,9 @@ type MaeshConfiguration struct { LimitUDPPort int32 `description:"Number of UDP ports allocated." export:"true"` } -// NewMaeshConfiguration creates a MaeshConfiguration with default values. -func NewMaeshConfiguration() *MaeshConfiguration { - return &MaeshConfiguration{ +// NewTraefikMeshConfiguration creates a TraefikMeshConfiguration with default values. +func NewTraefikMeshConfiguration() *TraefikMeshConfiguration { + return &TraefikMeshConfiguration{ ConfigFile: "", KubeConfig: os.Getenv("KUBECONFIG"), LogLevel: "error", @@ -53,7 +53,7 @@ type PrepareConfiguration struct { LogLevel string `description:"The log level." export:"true"` LogFormat string `description:"The log format." export:"true"` Debug bool `description:"Debug mode, deprecated, use --loglevel=debug instead." export:"true"` - Namespace string `description:"The namespace that maesh is installed in." export:"true"` + Namespace string `description:"The namespace that Traefik Mesh is installed in." export:"true"` ClusterDomain string `description:"Your internal K8s cluster domain." export:"true"` SMI bool `description:"Enable SMI operation, deprecated, use --acl instead." export:"true"` ACL bool `description:"Enable ACL mode." export:"true"` @@ -77,7 +77,7 @@ type CleanupConfiguration struct { ConfigFile string `description:"Configuration file to use. If specified all other flags are ignored." export:"true"` KubeConfig string `description:"Path to a kubeconfig. Only required if out-of-cluster." export:"true"` MasterURL string `description:"The address of the Kubernetes API server. Overrides any value in kubeconfig. Only required if out-of-cluster." export:"true"` - Namespace string `description:"The namespace that maesh is installed in." export:"true"` + Namespace string `description:"The namespace that Traefik Mesh is installed in." export:"true"` LogLevel string `description:"The log level." export:"true"` LogFormat string `description:"The log format." export:"true"` } diff --git a/cmd/loaders.go b/cmd/loaders.go index a8747ae7d..f986df8e8 100644 --- a/cmd/loaders.go +++ b/cmd/loaders.go @@ -14,21 +14,39 @@ import ( "github.com/traefik/paerser/parser" ) -const maeshPrefix = "MAESH_" +const ( + meshPrefix = "MESH_" + maeshPrefix = "MAESH_" + traefikMeshPrefix = "TRAEFIK_MESH_" +) -// EnvLoader loads a configuration from all the environment variables prefixed with "MAESH_". +// EnvLoader loads a configuration from all the environment variables. type EnvLoader struct{} -// Load loads the command's configuration from the environment variables. +// Load loads the command's configuration from the environment variables prefixed with "TRAEFIK_MESH_" or "MAESH_". +// The "MAESH_" prefix is deprecated and will be removed in the next major release. +// If "TRAEFIK_MESH_" and "MAESH_" env variables are mixed up an error is returned. +// As it is not possible to have a prefix with multiple "_" everything is normalized to "MESH_" under the hood for the decoding. func (e *EnvLoader) Load(_ []string, cmd *cli.Command) (bool, error) { logger := logrus.StandardLogger() - vars := env.FindPrefixedEnvVars(os.Environ(), maeshPrefix, cmd.Configuration) + traefikMeshVars := findAndNormalizePrefixedEnvVars(traefikMeshPrefix, cmd.Configuration) + maeshVars := findAndNormalizePrefixedEnvVars(maeshPrefix, cmd.Configuration) + + if len(maeshVars) > 0 && len(traefikMeshVars) > 0 { + return false, fmt.Errorf("environment variable prefixed by %q cannot be mixed with variable prefixed by %q", maeshPrefix, traefikMeshPrefix) + } + + vars := traefikMeshVars + if len(maeshVars) > 0 { + vars = maeshVars + } + if len(vars) == 0 { return false, nil } - if err := env.Decode(vars, maeshPrefix, cmd.Configuration); err != nil { + if err := env.Decode(vars, meshPrefix, cmd.Configuration); err != nil { logger.Debug("environment variables", strings.Join(vars, ", ")) return false, fmt.Errorf("failed to decode configuration from environment variables: %w ", err) } @@ -38,6 +56,16 @@ func (e *EnvLoader) Load(_ []string, cmd *cli.Command) (bool, error) { return true, nil } +func findAndNormalizePrefixedEnvVars(prefix string, config interface{}) []string { + vars := env.FindPrefixedEnvVars(os.Environ(), prefix, config) + + for _, v := range vars { + vars = append(vars, strings.Replace(v, prefix, meshPrefix, 1)) + } + + return vars +} + // FileLoader loads a configuration from a file. type FileLoader struct{} @@ -72,9 +100,13 @@ func (f *FileLoader) Load(args []string, cmd *cli.Command) (bool, error) { // loadConfigFiles tries to decode the given configuration file and all default locations for the configuration file. // It stops as soon as decoding one of them is successful. +// The default maesh locations are deprecated and will be removed in a future major release. func loadConfigFiles(configFile string, element interface{}) (string, error) { finder := cli.Finder{ - BasePaths: []string{"/etc/maesh/maesh", "$XDG_CONFIG_HOME/maesh", "$HOME/.config/maesh", "./maesh"}, + BasePaths: []string{ + "/etc/maesh/maesh", "$XDG_CONFIG_HOME/maesh", "$HOME/.config/maesh", "./maesh", + "/etc/traefik-mesh/traefik-mesh", "$XDG_CONFIG_HOME/traefik-mesh", "$HOME/.config/traefik-mesh", "./traefik-mesh", + }, Extensions: []string{"toml", "yaml", "yml"}, } diff --git a/cmd/maesh/maesh.go b/cmd/mesh/mesh.go similarity index 74% rename from cmd/maesh/maesh.go rename to cmd/mesh/mesh.go index 1da6a10d1..68a6d1a47 100644 --- a/cmd/maesh/maesh.go +++ b/cmd/mesh/mesh.go @@ -9,14 +9,14 @@ import ( "sync" "time" - "github.com/containous/maesh/cmd" - "github.com/containous/maesh/cmd/cleanup" - "github.com/containous/maesh/cmd/prepare" - "github.com/containous/maesh/cmd/version" - "github.com/containous/maesh/pkg/api" - "github.com/containous/maesh/pkg/controller" - "github.com/containous/maesh/pkg/k8s" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/cmd" + "github.com/traefik/mesh/cmd/cleanup" + "github.com/traefik/mesh/cmd/prepare" + "github.com/traefik/mesh/cmd/version" + "github.com/traefik/mesh/pkg/api" + "github.com/traefik/mesh/pkg/controller" + "github.com/traefik/mesh/pkg/k8s" "github.com/traefik/paerser/cli" ) @@ -27,37 +27,37 @@ const ( ) func main() { - maeshConfig := cmd.NewMaeshConfiguration() - maeshLoaders := []cli.ResourceLoader{&cmd.FileLoader{}, &cli.FlagLoader{}, &cmd.EnvLoader{}} - - cmdMaesh := &cli.Command{ - Name: "maesh", - Description: `maesh`, - Configuration: maeshConfig, - Resources: maeshLoaders, + traefikMeshConfig := cmd.NewTraefikMeshConfiguration() + traefikMeshLoaders := []cli.ResourceLoader{&cmd.FileLoader{}, &cli.FlagLoader{}, &cmd.EnvLoader{}} + + cmdTraefikMesh := &cli.Command{ + Name: "traefik-mesh", + Description: `traefik-mesh`, + Configuration: traefikMeshConfig, + Resources: traefikMeshLoaders, Run: func(_ []string) error { - return maeshCommand(maeshConfig) + return traefikMeshCommand(traefikMeshConfig) }, } prepareConfig := cmd.NewPrepareConfiguration() - if err := cmdMaesh.AddCommand(prepare.NewCmd(prepareConfig, maeshLoaders)); err != nil { + if err := cmdTraefikMesh.AddCommand(prepare.NewCmd(prepareConfig, traefikMeshLoaders)); err != nil { stdlog.Println(err) os.Exit(1) } cleanupConfig := cmd.NewCleanupConfiguration() - if err := cmdMaesh.AddCommand(cleanup.NewCmd(cleanupConfig, maeshLoaders)); err != nil { + if err := cmdTraefikMesh.AddCommand(cleanup.NewCmd(cleanupConfig, traefikMeshLoaders)); err != nil { stdlog.Println(err) os.Exit(1) } - if err := cmdMaesh.AddCommand(version.NewCmd()); err != nil { + if err := cmdTraefikMesh.AddCommand(version.NewCmd()); err != nil { stdlog.Println(err) os.Exit(1) } - if err := cli.Execute(cmdMaesh); err != nil { + if err := cli.Execute(cmdTraefikMesh); err != nil { stdlog.Println(err) os.Exit(1) } @@ -65,7 +65,7 @@ func main() { os.Exit(0) } -func maeshCommand(config *cmd.MaeshConfiguration) error { +func traefikMeshCommand(config *cmd.TraefikMeshConfiguration) error { ctx := cmd.ContextWithSignal(context.Background()) log, err := cmd.NewLogger(config.LogFormat, config.LogLevel, config.Debug) @@ -73,7 +73,7 @@ func maeshCommand(config *cmd.MaeshConfiguration) error { return fmt.Errorf("could not create logger: %w", err) } - log.Debug("Starting maesh controller...") + log.Debug("Starting controller...") log.Debugf("Using masterURL: %q", config.MasterURL) log.Debugf("Using kubeconfig: %q", config.KubeConfig) diff --git a/cmd/prepare/prepare.go b/cmd/prepare/prepare.go index 57e0df5d6..63ae2d00b 100644 --- a/cmd/prepare/prepare.go +++ b/cmd/prepare/prepare.go @@ -4,9 +4,9 @@ import ( "context" "fmt" - "github.com/containous/maesh/cmd" - "github.com/containous/maesh/pkg/dns" - "github.com/containous/maesh/pkg/k8s" + "github.com/traefik/mesh/cmd" + "github.com/traefik/mesh/pkg/dns" + "github.com/traefik/mesh/pkg/k8s" "github.com/traefik/paerser/cli" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -32,7 +32,7 @@ func prepareCommand(pConfig *cmd.PrepareConfiguration) error { return fmt.Errorf("could not create logger: %w", err) } - log.Debug("Starting maesh prepare...") + log.Debug("Starting prepare...") log.Debugf("Using masterURL: %q", pConfig.MasterURL) log.Debugf("Using kubeconfig: %q", pConfig.KubeConfig) diff --git a/cmd/version/version.go b/cmd/version/version.go index e580a4ed0..8a545b7df 100644 --- a/cmd/version/version.go +++ b/cmd/version/version.go @@ -4,7 +4,7 @@ import ( "fmt" "runtime" - "github.com/containous/maesh/pkg/version" + "github.com/traefik/mesh/pkg/version" "github.com/traefik/paerser/cli" ) @@ -21,7 +21,7 @@ platform : %s/%s func NewCmd() *cli.Command { return &cli.Command{ Name: "version", - Description: `Shows the current Maesh version.`, + Description: `Shows the current Traefik Mesh version.`, Configuration: nil, Run: func(_ []string) error { printVersion() diff --git a/docs/CNAME b/docs/CNAME index fc6d2320d..8b1378917 100644 --- a/docs/CNAME +++ b/docs/CNAME @@ -1 +1 @@ -docs.mae.sh + diff --git a/docs/Makefile b/docs/Makefile index 0c8da3829..72af8fce9 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -1,12 +1,12 @@ ####### -# This Makefile contains all targets related to the documentation +# This Makefile contains all targets related to the documentation. ####### DOCS_VERIFY_SKIP ?= false DOCS_LINT_SKIP ?= false -MAESH_DOCS_BUILD_IMAGE ?= maesh-docs -MAESH_DOCS_CHECK_IMAGE ?= $(MAESH_DOCS_BUILD_IMAGE)-check +TRAEFIK_MESH_DOCS_BUILD_IMAGE ?= traefik-mesh-docs +TRAEFIK_MESH_DOCS_CHECK_IMAGE ?= $(TRAEFIK_MESH_DOCS_BUILD_IMAGE)-check SITE_DIR := $(CURDIR)/site @@ -19,28 +19,28 @@ docs: clean image lint build verify # Writer Mode: build and serve docs on http://localhost:8000 with livereload serve: image - docker run $(DOCKER_RUN_DOC_OPTS) $(MAESH_DOCS_BUILD_IMAGE) mkdocs serve + docker run $(DOCKER_RUN_DOC_OPTS) $(TRAEFIK_MESH_DOCS_BUILD_IMAGE) mkdocs serve # Utilities Targets for each step image: - docker build -t $(MAESH_DOCS_BUILD_IMAGE) -f docs.Dockerfile ./ + docker build -t $(TRAEFIK_MESH_DOCS_BUILD_IMAGE) -f docs.Dockerfile ./ build: image - docker run $(DOCKER_RUN_DOC_OPTS) $(MAESH_DOCS_BUILD_IMAGE) sh -c "mkdocs build \ + docker run $(DOCKER_RUN_DOC_OPTS) $(TRAEFIK_MESH_DOCS_BUILD_IMAGE) sh -c "mkdocs build \ && chown -R $(shell id -u):$(shell id -g) ./site" verify: build @if [ "$(DOCS_VERIFY_SKIP)" != "true" ]; then \ - docker build -t $(MAESH_DOCS_CHECK_IMAGE) -f check.Dockerfile ./; \ - docker run --rm -v $(CURDIR):/app $(MAESH_DOCS_CHECK_IMAGE) /verify.sh; \ + docker build -t $(TRAEFIK_MESH_DOCS_CHECK_IMAGE) -f check.Dockerfile ./; \ + docker run --rm -v $(CURDIR):/app $(TRAEFIK_MESH_DOCS_CHECK_IMAGE) /verify.sh; \ else \ echo "DOCS_VERIFY_SKIP is true: no verification done."; \ fi lint: @if [ "$(DOCS_LINT_SKIP)" != "true" ]; then \ - docker build -t $(MAESH_DOCS_CHECK_IMAGE) -f check.Dockerfile ./ && \ - docker run --rm -v $(CURDIR):/app $(MAESH_DOCS_CHECK_IMAGE) /lint.sh; \ + docker build -t $(TRAEFIK_MESH_DOCS_CHECK_IMAGE) -f check.Dockerfile ./ && \ + docker run --rm -v $(CURDIR):/app $(TRAEFIK_MESH_DOCS_CHECK_IMAGE) /lint.sh; \ else \ echo "DOCS_LINT_SKIP is true: no linting done."; \ fi diff --git a/docs/content/api.md b/docs/content/api.md index 682baf83d..117283526 100644 --- a/docs/content/api.md +++ b/docs/content/api.md @@ -1,7 +1,7 @@ # API -Maesh includes a built-in API that can be used for debugging purposes. -This can be useful when Maesh is not working as intended. +Traefik Mesh includes a built-in API that can be used for debugging purposes. +This can be useful when Traefik Mesh is not working as intended. The API is accessed via the controller pod, and for security reasons is not exposed via service. The API can be accessed by making a `GET` request to `http://:9000` combined with one of the following paths: @@ -14,16 +14,16 @@ This endpoint provides raw json of the current configuration built by the contro ## `/api/status/nodes` -This endpoint provides a json array containing some details about the readiness of the Maesh nodes visible by the controller +This endpoint provides a json array containing some details about the readiness of the Traefik Mesh nodes visible by the controller. This endpoint will still return a 200 if there are no visible nodes. -## `/api/status/node/{maesh-pod-name}/configuration` +## `/api/status/node/{traefik-mesh-pod-name}/configuration` -This endpoint provides raw json of the current configuration on the Maesh node with the pod name given in `{maesh-pod-name}`. +This endpoint provides raw json of the current configuration on the Traefik Mesh node with the pod name given in `{traefik-mesh-pod-name}`. This endpoint provides a 404 response if the pod cannot be found, or other non-200 status codes on other errors. If errors are encountered, the error will be returned in the body, and logged on the controller. ## `/api/status/readiness` -This endpoint returns a 200 response if the controller successfully deployed a configuration to all Maesh nodes, and Maesh -is ready for use. Otherwise, it will return a 500. +This endpoint returns a 200 response if the controller has successfully started. +Otherwise, it will return a 500. diff --git a/docs/content/assets/img/after-maesh-graphic.png b/docs/content/assets/img/after-traefik-mesh-graphic.png similarity index 100% rename from docs/content/assets/img/after-maesh-graphic.png rename to docs/content/assets/img/after-traefik-mesh-graphic.png diff --git a/docs/content/assets/img/after-maesh-graphic.svg b/docs/content/assets/img/after-traefik-mesh-graphic.svg similarity index 100% rename from docs/content/assets/img/after-maesh-graphic.svg rename to docs/content/assets/img/after-traefik-mesh-graphic.svg diff --git a/docs/content/assets/img/before-maesh-graphic.png b/docs/content/assets/img/before-traefik-mesh-graphic.png similarity index 100% rename from docs/content/assets/img/before-maesh-graphic.png rename to docs/content/assets/img/before-traefik-mesh-graphic.png diff --git a/docs/content/assets/img/before-maesh-graphic.svg b/docs/content/assets/img/before-traefik-mesh-graphic.svg similarity index 100% rename from docs/content/assets/img/before-maesh-graphic.svg rename to docs/content/assets/img/before-traefik-mesh-graphic.svg diff --git a/docs/content/assets/img/maesh-logo.svg b/docs/content/assets/img/traefik-mesh-logo.svg similarity index 100% rename from docs/content/assets/img/maesh-logo.svg rename to docs/content/assets/img/traefik-mesh-logo.svg diff --git a/docs/content/assets/img/maesh.logo.horizontal.png b/docs/content/assets/img/traefik-mesh.logo.horizontal.png similarity index 100% rename from docs/content/assets/img/maesh.logo.horizontal.png rename to docs/content/assets/img/traefik-mesh.logo.horizontal.png diff --git a/docs/content/assets/img/maesh.png b/docs/content/assets/img/traefik-mesh.png similarity index 100% rename from docs/content/assets/img/maesh.png rename to docs/content/assets/img/traefik-mesh.png diff --git a/docs/content/compatibility.md b/docs/content/compatibility.md index acaca0b5b..a4a1a39a9 100644 --- a/docs/content/compatibility.md +++ b/docs/content/compatibility.md @@ -1,18 +1,19 @@ # Compatibility -Maesh supports [similiar to Kubernetes](https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-versions) at least the latest 3 minor versions of Kubernetes, therefore currently: +Traefik Mesh supports, [similar to Kubernetes](https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-versions), at least the latest three minor versions of Kubernetes, therefore currently: * 1.17 * 1.18 * 1.19 -General functionality can not be guaranted for versions older than that. However, we expect it to work with Kubernetes down to 1.11 currently. +General functionality cannot be guaranted for versions older than that. However, we expect it to work with Kubernetes down to 1.11 currently. ## Compatibility by Features -Some of Maesh's features are only supported on certain Kubernetes versions. Please see the table below. +Some of Traefik Mesh's features are only supported on certain Kubernetes versions. +Please see the table below. - | Features | K8s 1.17 | K8s 1.18 | K8s 1.19 | - |-----------------------|----------|----------|----------| - | General functionality | ✔ | ✔ | ✔ | - | Service Topology | ✔ | ✔ | ✔ | +| Features | K8s 1.17 | K8s 1.18 | K8s 1.19 | +|-----------------------|----------|----------|----------| +| General functionality | ✔ | ✔ | ✔ | +| Service Topology | ✔ | ✔ | ✔ | diff --git a/docs/content/configuration.md b/docs/content/configuration.md index 8e3c4faa2..b2146d58b 100644 --- a/docs/content/configuration.md +++ b/docs/content/configuration.md @@ -1,6 +1,6 @@ # Configuration -The configuration for Maesh is broken down into two parts: the static configuration, and the dynamic configuration. +The configuration for Traefik Mesh is broken down into two parts: the static configuration, and the dynamic configuration. The static configuration is configured when the service mesh is installed and is configured via the `values.yaml` file in the Helm install. ## Static configuration @@ -15,13 +15,13 @@ The static configuration is configured when the service mesh is installed and is - Tracing can be enabled. - Access-Control List (ACL) mode can be enabled. - This configures Maesh to run in ACL mode, where all traffic is forbidden unless explicitly allowed via an SMI + This configures Traefik Mesh to run in ACL mode, where all traffic is forbidden unless explicitly allowed via an SMI [TrafficTarget](https://github.com/servicemeshinterface/smi-spec/blob/master/apis/traffic-access/v1alpha2/traffic-access.md#traffictarget). Please see the [SMI Specification](https://github.com/servicemeshinterface/smi-spec/blob/master/apis/traffic-access/v1alpha2/traffic-access.md) for more information. ## Dynamic configuration -Dynamic configuration can be provided to Maesh using annotations on Kubernetes services and via SMI objects. +Dynamic configuration can be provided to Traefik Mesh using annotations on Kubernetes services and via SMI objects. | Features | ACL disabled | ACL enabled | |-----------------------|--------------|-------------| @@ -35,14 +35,14 @@ Dynamic configuration can be provided to Maesh using annotations on Kubernetes s ### Kubernetes Service Annotations -Annotations on services give the ability to configure how Maesh interprets them. +Annotations on services give the ability to configure how Traefik Mesh interprets them. #### Traffic type The traffic type can be configured by using the following annotation: ```yaml -maesh.containo.us/traffic-type: "http" +mesh.traefik.io/traffic-type: "http" ``` This annotation can be set to either `http`, `tcp` or `udp` and will specifies the mode for that service operation. @@ -58,32 +58,32 @@ If this annotation is not present, the mesh service will operate in the default The scheme used to define custom scheme for request: ```yaml -maesh.containo.us/scheme: "h2c" +mesh.traefik.io/scheme: "h2c" ``` -This annotation can be set to either `http`, `https` or `h2c` and is available for `maesh.containo.us/traffic-type: "http"`. +This annotation can be set to either `http`, `https` or `h2c` and is available for `mesh.traefik.io/traffic-type: "http"`. ??? Note "Limitations" Please keep in mind, that if you set the scheme to `https` your service needs to expose itself via HTTPS as there is no - mTLS in Maesh. + mTLS in Traefik Mesh. #### Retry Retries can be enabled by using the following annotation: ```yaml -maesh.containo.us/retry-attempts: "2" +mesh.traefik.io/retry-attempts: "2" ``` -This annotation sets the number of retry attempts that Maesh will make if a network error occurs. +This annotation sets the number of retry attempts that Traefik Mesh will make if a network error occurs. Please note that this value is a string, and needs to be quoted. #### Circuit breaker - + Circuit breaker can be enabled by using the following annotation: ```yaml -maesh.containo.us/circuit-breaker-expression: "Expression" +mesh.traefik.io/circuit-breaker-expression: "Expression" ``` This annotation sets the expression for circuit breaking. @@ -97,8 +97,8 @@ All configuration options are available [here](https://docs.traefik.io/v2.0/midd Rate limiting can be enabled by using the following annotations: ```yaml -maesh.containo.us/ratelimit-average: "100" -maesh.containo.us/ratelimit-burst: "200" +mesh.traefik.io/ratelimit-average: "100" +mesh.traefik.io/ratelimit-burst: "200" ``` These annotation sets average and burst requests per second limit for the service. @@ -170,7 +170,7 @@ spec: In this example, we grant access to all pods running with the service account `client` under the namespace `client` to the HTTP route `api` specified by on the group `server-routes` on all pods running with the service account `server` under the namespace `server`. -Any client running with the service account `client` under the `client` namespace accessing `server.server.maesh/api` is allowed to access the `/api` resource. Others will receive 404 answers from the Maesh node. +Any client running with the service account `client` under the `client` namespace accessing `server.server.traefik.mesh/api` is allowed to access the `/api` resource. Others will receive 404 answers from the Traefik Mesh node. More information can be found [in the SMI specification](https://github.com/servicemeshinterface/smi-spec/blob/master/apis/traffic-access/v1alpha2/traffic-access.md). @@ -194,10 +194,10 @@ spec: ``` In this example, we define a traffic split for our server service between two versions of our server, v1 and v2. -`server.server.maesh` directs 80% of the traffic to the server-v1 pods, and 20% of the traffic to the server-v2 pods. +`server.server.traefik.mesh` directs 80% of the traffic to the server-v1 pods, and 20% of the traffic to the server-v2 pods. More information can be found [in the SMI specification](https://github.com/servicemeshinterface/smi-spec/blob/master/apis/traffic-split/v1alpha3/traffic-split.md). #### Traffic Metrics -At the moment, Maesh does not implement the [Traffic Metrics specification](https://github.com/servicemeshinterface/smi-spec/blob/master/apis/traffic-metrics/traffic-metrics-WD.md). +At the moment, Traefik Mesh does not implement the [Traffic Metrics specification](https://github.com/servicemeshinterface/smi-spec/blob/master/apis/traffic-metrics/traffic-metrics-WD.md). diff --git a/docs/content/contributing/building-testing.md b/docs/content/contributing/building-testing.md index bf4a79c7c..fea9cfe36 100644 --- a/docs/content/contributing/building-testing.md +++ b/docs/content/contributing/building-testing.md @@ -1,22 +1,22 @@ # Building and Testing -So you want to build your own Maesh binary from the sources? Let's see how. +So you want to build your own Traefik Mesh binary from the sources? Let's see how. ## Building -To build Maesh from the sources you need either [Docker](https://github.com/docker/docker) and [make](https://www.gnu.org/software/make/manual/make.html), +To build Traefik Mesh from the sources you need either [Docker](https://github.com/docker/docker) and [make](https://www.gnu.org/software/make/manual/make.html), or [Go](https://github.com/golang/go). ### With `Docker` and `make` -Maesh can be built from the sources by using the `make` command. This will create a binary for the Linux platform in -the `dist` directory and a Docker image: +Traefik Mesh can be built from the sources by using the `make` command. +This will create a binary for the Linux platform in the `dist` directory and a Docker image: ```bash $ make #[...] -Successfully tagged containous/maesh:latest -docker run --name=build -t "containous/maesh:latest" version +Successfully tagged traefik/mesh:latest +docker run --name=build -t "traefik/mesh:latest" version version: version : b417901 commit : b417901 @@ -27,7 +27,7 @@ version: #[...] $ ls dist/ -maesh +traefik-mesh ``` !!! Note @@ -40,12 +40,12 @@ Requirements: - `Go` v1.14+ - Environment variable `GO111MODULE=on` -One your Go environment is set up, you can build Maesh from the sources by using the `go build` command. The Go compiler -will build an executable for your platform. +One your Go environment is set up, you can build Traefik Mesh from the sources by using the `go build` command. +The Go compiler will build an executable for your platform. ```bash -$ go build -o dist/maesh cmd/maesh/*.go -$ ./dist/maesh version +$ go build -o dist/traefik-mesh cmd/mesh/mesh.go +$ ./dist/traefik-mesh version version: version : dev commit : I don't remember exactly @@ -63,18 +63,18 @@ Run unit tests by using the `test` target: ```bash $ make test -docker build --tag "containous/maesh:test" --target maker --build-arg="MAKE_TARGET=local-test" /home/user/maesh/ +docker build --tag "traefik/mesh:test" --target maker --build-arg="MAKE_TARGET=local-test" /home/user/traefik-mesh/ #[...] --- PASS: TestBuildConfiguration (0.00s) --- PASS: TestBuildConfiguration/simple_configuration_build_with_HTTP_service (0.20s) PASS coverage: 69.7% of statements -ok github.com/containous/maesh/pkg/providers/smi 1.982s coverage: 69.7% of statements -? github.com/containous/maesh/pkg/signals [no test files] +ok github.com/traefik/mesh/pkg/providers/smi 1.982s coverage: 69.7% of statements +? github.com/traefik/mesh/pkg/signals [no test files] Removing intermediate container 4e887c16ddee ---> 75d44229a46e Successfully built 75d44229a46e -Successfully tagged containous/maesh:test +Successfully tagged traefik/mesh:test ``` Run the integration tests by using the `test-integration` target. For development purposes, you can specify which tests @@ -117,8 +117,8 @@ time="2020-04-09T16:09:16+04:00" level=debug msg="Found trafficsplits for servic --- PASS: TestBuildConfiguration (0.00s) --- PASS: TestBuildConfiguration/simple_configuration_build_with_HTTP_service (0.21s) PASS -ok github.com/containous/maesh/pkg/providers/smi 3.634s -? github.com/containous/maesh/pkg/signals [no test files] +ok github.com/traefik/mesh/pkg/providers/smi 3.634s +? github.com/traefik/mesh/pkg/signals [no test files] ``` Run the integration tests in the `integration` directory by using the `go test ./integration -integration` command: @@ -129,9 +129,9 @@ $ go test -v ./integration -integration -check.f HelmSuite OK: 2 passed --- PASS: Test (161.20s) PASS -ok github.com/containous/maesh/integration 162.695s +ok github.com/traefik/mesh/integration 162.695s ``` !!! Important - Before running the integration tests, build the Maesh Docker image. Check out the [Building](#building) section for - more details. + Before running the integration tests, build the Traefik Mesh Docker image. + Check out the [Building](#building) section for more details. diff --git a/docs/content/contributing/documentation.md b/docs/content/contributing/documentation.md index 94e46895f..9e245a151 100644 --- a/docs/content/contributing/documentation.md +++ b/docs/content/contributing/documentation.md @@ -13,9 +13,9 @@ You can build the documentation and test it locally (with live reloading), using ```bash $ make serve -docker build -t maesh-docs -f docs.Dockerfile ./ +docker build -t traefik-mesh-docs -f docs.Dockerfile ./ # […] -docker run --rm -v /Users/kevinpollet/Documents/Dev/maesh/docs:/mkdocs -p 8000:8000 maesh-docs mkdocs serve +docker run --rm -v /home/user/traefik-mesh/docs:/mkdocs -p 8000:8000 traefik-mesh-docs mkdocs serve # […] INFO - Building documentation... INFO - Cleaning site directory @@ -66,9 +66,9 @@ If you've made changes to the documentation, it's safer to clean it before verif ```bash $ make clean verify -docker build -t maesh-docs -f docs.Dockerfile ./ +docker build -t traefik-mesh-docs -f docs.Dockerfile ./ # […] -docker run --rm -v /Users/kevinpollet/Documents/Dev/maesh/docs:/mkdocs -p 8000:8000 maesh-docs sh -c "mkdocs build && chown -R 501:20 ./site" +docker run --rm -v /home/user/traefik-mesh/docs:/mkdocs -p 8000:8000 traefik-mesh-docs sh -c "mkdocs build && chown -R 501:20 ./site" === Checking HTML content... # […] ``` diff --git a/docs/content/contributing/submitting-issues.md b/docs/content/contributing/submitting-issues.md index dd6bfdb3c..9b53dda20 100644 --- a/docs/content/contributing/submitting-issues.md +++ b/docs/content/contributing/submitting-issues.md @@ -1,13 +1,13 @@ # Submitting Issues -We use the [GitHub issue tracker](https://github.com/containous/maesh/issues) to keep track of Maesh issues. +We use the [GitHub issue tracker](https://github.com/traefik/mesh/issues) to keep track of Traefik Mesh issues. The process of sorting and checking the issues requires a lot of work. To save us some time and get quicker feedback, be sure to follow the guidelines below. !!! Important "Getting Help" - The issue tracker is not a general support forum, but a place to report bugs and asks for new features. For end-user - related support questions, use the [Maesh community forum](https://community.containo.us/c/maesh/15). + The issue tracker is not a general support forum, but a place to report bugs and asks for new features. + For end-user related support questions, use the [Traefik Mesh community forum](https://community.containo.us/c/maesh). ## Issue Title @@ -15,7 +15,7 @@ The title must be short and descriptive. (~60 characters) ## Description -Follow the [issue template](https://github.com/containous/maesh/blob/master/.github/ISSUE_TEMPLATE/) as much as possible. +Follow the [issue template](https://github.com/traefik/mesh/blob/master/.github/ISSUE_TEMPLATE/) as much as possible. Explain in which context you encountered the issue. @@ -28,9 +28,9 @@ what matters, and help them understand the structure of your message (see the [G Remember, when asking for new features, they must be useful to the majority (and not only useful in edge case scenarios, or hack-like setups). -Do your best to explain what you're looking for, and why it would improve Maesh for everyone. +Do your best to explain what you're looking for, and why it would improve Traefik Mesh for everyone. ## International English -Maesh maintainers/users are not all native English speakers, so if you sometimes feel that some messages sound rude, +Traefik Mesh maintainers/users are not all native English speakers, so if you sometimes feel that some messages sound rude, remember that it's probably a language barrier problem from someone willing to help you. diff --git a/docs/content/contributing/submitting-pull-requests.md b/docs/content/contributing/submitting-pull-requests.md index fbad1a89b..fc30f02a3 100644 --- a/docs/content/contributing/submitting-pull-requests.md +++ b/docs/content/contributing/submitting-pull-requests.md @@ -1,6 +1,6 @@ # Submitting Pull Requests -So you've decided to improve Maesh? Thank You! Now the last step is to submit your Pull Request in a way that makes sure +So you've decided to improve Traefik Mesh? Thank You! Now the last step is to submit your Pull Request in a way that makes sure it gets the attention it deserves. Let's go through the classic pitfalls to make sure everything is right. @@ -11,7 +11,7 @@ The title must be short and descriptive. (~60 characters) ## Description -Follow the [pull request template](https://github.com/containous/maesh/blob/master/.github/PULL_REQUEST_TEMPLATE.md) +Follow the [pull request template](https://github.com/traefik/mesh/blob/master/.github/PULL_REQUEST_TEMPLATE.md) as much as possible. Explain the conditions which led you to write this PR: give us context. The context should lead to something, an idea or diff --git a/docs/content/contributing/thank-you.md b/docs/content/contributing/thank-you.md index 4f0441295..fe25ab4d0 100644 --- a/docs/content/contributing/thank-you.md +++ b/docs/content/contributing/thank-you.md @@ -1,6 +1,6 @@ # Thank You! -Maesh is an [open-source project](https://github.com/containous/maesh/), your feedback and contributions are needed and +Traefik Mesh is an [open-source project](https://github.com/traefik/mesh/), your feedback and contributions are needed and always welcome! !!! Question "Where to Go Next?" @@ -10,7 +10,7 @@ always welcome! read the page [Submitting Issues](./submitting-issues.md). - Discover how to make an efficient contribution, read the page [Submitting Pull Requests](./submitting-pull-requests.md). - - Learn how to build and test Maesh, + - Learn how to build and test Traefik Mesh, the page [Building and Testing](./building-testing.md) is for you. - Contribute to the documentation, read the related page [Documentation](./documentation.md). diff --git a/docs/content/examples.md b/docs/content/examples.md index e42d523b4..8016d37c7 100644 --- a/docs/content/examples.md +++ b/docs/content/examples.md @@ -1,9 +1,9 @@ # Examples -Here are some examples on how to easily deploy Maesh on your cluster. +Here are some examples on how to easily deploy Traefik Mesh on your cluster. ??? Note "Prerequisites" - Before following those examples, make sure your cluster follows [the prerequisites for deploying Maesh](quickstart.md#prerequisites). + Before following those examples, make sure your cluster follows [the prerequisites for deploying Traefik Mesh](quickstart.md#prerequisites). ## Simple Example @@ -50,7 +50,7 @@ spec: serviceAccount: whoami-server containers: - name: whoami - image: containous/whoami:v1.4.0 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent --- @@ -72,7 +72,7 @@ spec: serviceAccount: whoami-server containers: - name: whoami-tcp - image: containous/whoamitcp:latest + image: traefik/whoamitcp:latest imagePullPolicy: IfNotPresent --- @@ -174,13 +174,13 @@ my data Received: my data ``` -You can now install Maesh [by following this documentation](install.md) on your cluster. +You can now install Traefik Mesh [by following this documentation](install.md) on your cluster. -Since Maesh is not intrusive, it has to be explicitly given access to services before it can be used. You can ensure that the HTTP endpoint of your service does not pass through Maesh since no `X-Forwarded-For` header should be added. +Since Traefik Mesh is not intrusive, it has to be explicitly given access to services before it can be used. You can ensure that the HTTP endpoint of your service does not pass through Traefik Mesh since no `X-Forwarded-For` header should be added. -Now, in order to configure Maesh for your `whoami` service, you just need to update the `whoami` service specs, in order to add the appropriate annotations. +Now, in order to configure Traefik Mesh for your `whoami` service, you just need to update the `whoami` service specs, in order to add the appropriate annotations. -The HTTP service needs to have `maesh.containo.us/traffic-type: "http"` and the TCP service, `maesh.containo.us/traffic-type: "tcp"`. +The HTTP service needs to have `mesh.traefik.io/traffic-type: "http"` and the TCP service, `mesh.traefik.io/traffic-type: "tcp"`. ```yaml --- @@ -191,10 +191,9 @@ metadata: namespace: whoami labels: app: whoami - # These annotations enable Maesh for this service: annotations: - maesh.containo.us/traffic-type: "http" - maesh.containo.us/retry-attempts: "2" + mesh.traefik.io/traffic-type: "http" + mesh.traefik.io/retry-attempts: "2" spec: type: ClusterIP ports: @@ -211,9 +210,8 @@ metadata: namespace: whoami labels: app: whoami-tcp - # These annotations enable Maesh for this service: annotations: - maesh.containo.us/traffic-type: "tcp" + mesh.traefik.io/traffic-type: "tcp" spec: type: ClusterIP ports: @@ -223,10 +221,10 @@ spec: app: whoami-tcp ``` -You should now be able to access your HTTP and TCP services through the Maesh endpoint: +You should now be able to access your HTTP and TCP services through the Traefik Mesh endpoint: ```bash tab="Command" -kubectl -n whoami exec whoami-client -- curl -s whoami.whoami.maesh +kubectl -n whoami exec whoami-client -- curl -s whoami.whoami.traefik.mesh ``` ```text tab="Expected Output" @@ -235,7 +233,7 @@ IP: 127.0.0.1 IP: 5.6.7.8 RemoteAddr: 1.2.3.4:12345 GET / HTTP/1.1 -Host: whoami.whoami.maesh +Host: whoami.whoami.traefik.mesh User-Agent: curl/7.64.0 Accept: */* X-Forwarded-For: 3.4.5.6 @@ -243,12 +241,12 @@ X-Forwarded-For: 3.4.5.6 ## ACL Example -The [ACL mode](install.md#access-control-list) can be enabled when installing Maesh. Once activated, all traffic is forbidden unless explicitly authorized -using the SMI [TrafficTarget](https://github.com/servicemeshinterface/smi-spec/blob/master/apis/traffic-access/v1alpha2/traffic-access.md#traffictarget) resource. This example will present the configuration required to allow the client -pod to send traffic to the HTTP and TCP services defined in the previous example. +The [ACL mode](install.md#access-control-list) can be enabled when installing Traefik Mesh. +Once activated, all traffic is forbidden unless explicitly authorized using the SMI [TrafficTarget](https://github.com/servicemeshinterface/smi-spec/blob/master/apis/traffic-access/v1alpha2/traffic-access.md#traffictarget) resource. +This example will present the configuration required to allow the client pod to send traffic to the HTTP and TCP services defined in the previous example. -Each `TrafficTarget` defines that a set of source `ServiceAccount` is capable of sending traffic to a destination `ServiceAccount`. To authorize the `whoami-client` pod to send traffic to `whoami.whoami.maesh`, we need to -explicitly allow it to hit the pods exposed by the `whoami` service. +Each `TrafficTarget` defines that a set of source `ServiceAccount` is capable of sending traffic to a destination `ServiceAccount`. +To authorize the `whoami-client` pod to send traffic to `whoami.whoami.traefik.mesh`, we need to explicitly allow it to hit the pods exposed by the `whoami` service. ```yaml --- diff --git a/docs/content/index.md b/docs/content/index.md index fcd1434e7..6a9b1fefb 100644 --- a/docs/content/index.md +++ b/docs/content/index.md @@ -1,14 +1,14 @@ -# Maesh: Simpler Service Mesh +# Traefik Mesh: Simpler Service Mesh

-Maesh +Traefik Mesh

-Maesh is a lightweight and simpler service mesh designed from the ground up to be straightforward, easy to install and easy to use. +Traefik Mesh is a lightweight and simpler service mesh designed from the ground up to be straightforward, easy to install and easy to use. -Built on top of Traefik, Maesh fits as your de-facto service mesh in your Kubernetes cluster supporting the latest Service Mesh Interface specification (SMI). +Built on top of Traefik, Traefik Mesh fits as your de-facto service mesh in your Kubernetes cluster supporting the latest Service Mesh Interface specification (SMI). -Moreover, Maesh is opt-in by default, which means that your existing services are unaffected until you decide to add them to the mesh. +Moreover, Traefik Mesh is opt-in by default, which means that your existing services are unaffected until you decide to add them to the mesh.

SMI @@ -16,15 +16,15 @@ Moreover, Maesh is opt-in by default, which means that your existing services ar ## Non-Invasive Service Mesh -Maesh does not use any sidecar container but handles routing through proxy endpoints running on each node. +Traefik Mesh does not use any sidecar container but handles routing through proxy endpoints running on each node. The mesh controller runs in a dedicated pod and handles all the configuration parsing and deployment to the proxy nodes. -Maesh supports multiple configuration options: annotations on user service objects, and SMI objects. -Not using sidecars means that Maesh does not modify your Kubernetes objects and does not modify your traffic without your knowledge. -Using the Maesh endpoints is all that is required. +Traefik Mesh supports multiple configuration options: annotations on user service objects, and SMI objects. +Not using sidecars means that Traefik Mesh does not modify your Kubernetes objects and does not modify your traffic without your knowledge. +Using the Traefik Mesh endpoints is all that is required.

-Maesh -Maesh +Traefik Mesh +Traefik Mesh

## Prerequisites diff --git a/docs/content/install.md b/docs/content/install.md index f5d11d02c..d9fd92d6c 100644 --- a/docs/content/install.md +++ b/docs/content/install.md @@ -1,23 +1,23 @@ # Installation -To install Maesh, the installation method is quite simple: +To install Traefik Mesh, the installation method is quite simple: ```bash -helm repo add maesh https://containous.github.io/maesh/charts +helm repo add traefik-mesh https://traefik.github.io/mesh/charts helm repo update ``` -Install Maesh Helm Chart: +Install Traefik Mesh Helm Chart: ```bash -helm install maesh maesh/maesh +helm install traefik-mesh traefik-mesh/traefik-mesh ``` ## Install from source !!! Note "Supported Installations" Please be aware that the supported installation method is via Helm, using official releases. - If you want to build/install/run Maesh from source, we may not be able to provide support. + If you want to build/install/run Traefik Mesh from source, we may not be able to provide support. Installing from source is intended for development/contributing. To build the image locally, run: @@ -33,40 +33,39 @@ You will then be able to use the tagged image as your image in your `values.yaml To deploy the Helm Chart, run: ```shell -helm install maesh helm/chart/maesh --set controller.image.pullPolicy=IfNotPresent --set controller.image.tag=latest +helm install traefik-mesh helm/chart/mesh --set controller.image.pullPolicy=IfNotPresent --set controller.image.tag=latest ``` ## KubeDNS support -Maesh supports KubeDNS: +Traefik Mesh supports KubeDNS: ```bash -helm install maesh maesh/maesh --set kubedns=true +helm install traefik-mesh traefik-mesh/traefik-mesh --set kubedns=true ``` -With the `kubedns` parameter Maesh will install CoreDNS and patch KubeDNS to use it as a [stubDomain](https://v1-17.docs.kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#example-stub-domain). +With the `kubedns` parameter Traefik Mesh will install CoreDNS and patch KubeDNS to use it as a [stubDomain](https://v1-17.docs.kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/#example-stub-domain). ## Custom cluster domain If you use a cluster domain other than `cluster.local` set it by using the `clusterDomain` parameter: ```bash -helm install maesh maesh/maesh --set clusterDomain=my.custom.domain.com +helm install traefik-mesh traefik-mesh/traefik-mesh --set clusterDomain=my.custom.domain.com ``` ## Access Control List -By default, Maesh does not restrict traffic between pods and services. However, some scenarios require more control -over the rules for internal communication. The Access Control List mode (ACL) requires a set of rules to explicitly allow -traffic between different resources. +By default, Traefik Mesh does not restrict traffic between pods and services. However, some scenarios require more control over the rules for internal communication. +The Access Control List mode (ACL) requires a set of rules to explicitly allow traffic between different resources. -To enable ACL, install Maesh in ACL mode by setting the `acl` Helm Chart option to `true`. +To enable ACL, install Traefik Mesh in ACL mode by setting the `acl` Helm Chart option to `true`. ```bash -helm install maesh --namespace=maesh maesh/maesh --set acl=true +helm install traefik-mesh --namespace=traefik-mesh traefik-mesh/traefik-mesh --set acl=true ``` -Maesh supports the [SMI specification](https://smi-spec.io/) which defines a set of custom resources +Traefik Mesh supports the [SMI specification](https://smi-spec.io/) which defines a set of custom resources to provide a fine-grained control over instrumentation, routing and access control of east-west communications. !!! Note "CRDs" @@ -77,45 +76,45 @@ to provide a fine-grained control over instrumentation, routing and access contr ## Platform recommendations -Maesh works on Kubernetes environments that conforms to the global Kubernetes specification. +Traefik Mesh works on Kubernetes environments that conforms to the global Kubernetes specification. That being said, we have had users encounter issues when using variants such as minikube, microk8s, and other development distributions. -Maesh runs without issue on most public clouds (AWS, GKE, Azure, DigitalOcean, and more). -If you want to run Maesh in development, we would recommend using [k3s](https://k3s.io/), as it is fully conformant. -We use k3s in Maesh's integration tests, so you can be sure that it works properly. +Traefik Mesh runs without issue on most public clouds (AWS, GKE, Azure, DigitalOcean, and more). +If you want to run Traefik Mesh in development, we would recommend using [k3s](https://k3s.io/), as it is fully conformant. +We use k3s in Traefik Mesh's integration tests, so you can be sure that it works properly. If you encounter issues on variants such as minikube or microk8s, please try and reproduce the issue on k3s. If you are unable to reproduce, it may be an issue with the distribution behaving differently than official Kubernetes. ## Verify your installation -You can check that Maesh has been installed properly by running the following command: +You can check that Traefik Mesh has been installed properly by running the following command: ```bash tab="Command" -kubectl get all -n maesh +kubectl get all -n traefik-mesh ``` ```text tab="Expected Output" -NAME READY STATUS RESTARTS AGE -pod/maesh-controller-676fb86b89-pj8ph 1/1 Running 0 11s -pod/maesh-mesh-w62z5 1/1 Running 0 11s -pod/maesh-mesh-zjlpf 1/1 Running 0 11s +NAME READY STATUS RESTARTS AGE +pod/traefik-mesh-controller-676fb86b89-pj8ph 1/1 Running 0 11s +pod/traefik-mesh-proxy-w62z5 1/1 Running 0 11s +pod/traefik-mesh-proxy-zjlpf 1/1 Running 0 11s -NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE -daemonset.apps/maesh-mesh 2 2 0 2 0 29s +NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE +daemonset.apps/traefik-mesh-proxy 2 2 0 2 0 29s -NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE -deployment.apps/maesh-controller 1 1 1 0 28s +NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE +deployment.apps/traefik-mesh-controller 1 1 1 0 28s -NAME DESIRED CURRENT READY AGE -replicaset.apps/maesh-controller-676fb86b89 1 1 0 28s +NAME DESIRED CURRENT READY AGE +replicaset.apps/traefik-mesh-controller-676fb86b89 1 1 0 28s ``` ## Usage -To use Maesh, instead of referencing services via their normal `.`, instead use `..maesh`. -This will access the Maesh service mesh, and will allow you to route requests through Maesh. +To use Traefik Mesh, instead of referencing services via their normal `.`, instead use `..traefik.mesh`. +This will access the Traefik Mesh service mesh, and will allow you to route requests through Traefik Mesh. -By default, Maesh is opt-in, meaning you have to use the Maesh service names to access the mesh, so you can have some services running through the mesh, and some services not. +By default, Traefik Mesh is opt-in, meaning you have to use the Traefik Mesh service names to access the mesh, so you can have some services running through the mesh, and some services not. diff --git a/docs/content/migration/helm-chart.md b/docs/content/migration/helm-chart.md index bd82fda3e..7403b3d27 100644 --- a/docs/content/migration/helm-chart.md +++ b/docs/content/migration/helm-chart.md @@ -5,44 +5,52 @@ Helm Chart ## v2.1 to v3.0 +### Traefik Mesh renaming + +All existing resources have been renamed and prefixed by `traefik-mesh`. +For example, the `maesh-controller`resource has been renamed to `traefik-mesh-controller`. + +### Mesh Property Name + +Inside the Traefik Mesh helm chart, the `mesh` property has been renamed to `proxy`. + ### Image version -Since version `v1.4`, Maesh uses plain [Traefik](https://github.com/containous/traefik/) Docker image for mesh proxies. -Therefore, to change the image version used for the controller, or the mesh proxies you should use the `controller.image` -and `mesh.image` options. +Since version `v1.4`, Traefik Mesh uses plain [Traefik](https://github.com/traefik/traefik/) Docker image for proxies. +Therefore, to change the image version used for the controller, or the proxies you should use the `controller.image` and `proxy.image` options. + +### Default Mode + +The `mesh.defaultMode` option has been removed. +You should use the new `defaultMode` option to configure the default traffic mode. ## v2.0 to v2.1 ### Default Mode The `mesh.defaultMode` option has been deprecated and will be removed in a future major release. -You should use the new `defaultMode` option to configure the default traffic mode for Maesh services. +You should use the new `defaultMode` option to configure the default traffic mode. ### Prometheus and Grafana services -Prior to version `v2.1`, when the Metrics chart is deployed, Prometheus and Grafana services are exposed by default through -a `NodePort`. For security reasons, those services are not exposed by default anymore. To expose them you should use the -new `prometheus.service` and `grafana.service` options, more details in the corresponding [values.yaml](https://github.com/containous/maesh/blob/e59b861ac91261b950663410a6223a02fc7e2290/helm/chart/maesh/charts/metrics/values.yaml). +Prior to version `v2.1`, when the Metrics chart is deployed, Prometheus and Grafana services are exposed by default through a `NodePort`. +For security reasons, those services are not exposed by default anymore. +To expose them you should use the new `prometheus.service` and `grafana.service` options, more details in the corresponding [values.yaml](https://github.com/traefik/mesh/blob/e59b861ac91261b950663410a6223a02fc7e2290/helm/chart/maesh/charts/metrics/values.yaml). ## v1.x to v2.0 -### Default Mode - -The `mesh.defaultMode` option has been removed. You should use the new `defaultMode` option to configure the default traffic -mode for Maesh services. - ### Image version -Since version `v1.2`, Maesh uses [Traefik](https://github.com/containous/traefik/) as a library and does not rely on its -Docker image anymore. Therefore, the `controller.image` and `mesh.image` options have been removed. You should use the -new `image` option as described in the [documentation](../install.md#deploy-helm-chart). +Since version `v1.2`, [Traefik](https://github.com/traefik/traefik/) is used as a library. +Therefore, the `controller.image` and `mesh.image` options have been removed. +You should use the new `image` option as described in the [documentation](../install.md#deploy-helm-chart). ### Log Level -The `controller.logging.debug` and `mesh.logging` options have been removed. You should use the new `controller.logLevel` -and `mesh.logLevel` options to configure the logging level for the controller and proxies. +The `controller.logging.debug` and `mesh.logging` options have been removed. +You should use the new `controller.logLevel` and `mesh.logLevel` options to configure the logging level for the controller and proxies. ### SMI Mode -The `smi.enable` option has been deprecated and removed. You should use the new and backward compatible ACL mode -option as described in the [documentation](../install.md#access-control-list). +The `smi.enable` option has been deprecated and removed. +You should use the new and backward compatible ACL mode option as described in the [documentation](../install.md#access-control-list). diff --git a/docs/content/migration/maesh-v1.md b/docs/content/migration/maesh-v1.md deleted file mode 100644 index d6db975ec..000000000 --- a/docs/content/migration/maesh-v1.md +++ /dev/null @@ -1,16 +0,0 @@ -# Minor Migrations - -Maesh v1 -{: .subtitle } - -## v1.1 to v1.2 - -### Debug - -The `--debug` CLI flag is deprecated and will be removed in a future major release. Instead, you should use the new -`--logLevel` flag with `debug` as value. - -### SMI Mode - -The `--smi` CLI flag is deprecated and will be removed in a future major release. Instead, you should use the new and -backward compatible `--acl` flag. diff --git a/docs/content/migration/traefik-mesh-v1.md b/docs/content/migration/traefik-mesh-v1.md new file mode 100644 index 000000000..e3cf7223e --- /dev/null +++ b/docs/content/migration/traefik-mesh-v1.md @@ -0,0 +1,55 @@ +# Minor Migrations + +Traefik Mesh v1 +{: .subtitle } + +## Traefik Mesh v1.4 + +Maesh has been renamed to Traefik Mesh in an effort to rename all of our products and make them look closer. +Through this renaming process, a couple of things changed which might be worth mentioning for a migration process. +All areas that changed are mentioned below with the appropriate actions needed to do. + +Everything called Maesh references to `v1.3`, while Traefik Mesh refers to `v1.4`. + +### Environment Variable Prefix + +Prior to Traefik Mesh, environment variables were prefixed with `MAESH_`. +Now they're prefixed with `TRAEFIK_MESH_` and the `MAESH_` prefix is deprecated. +You need to decide on either using `MAESH_` or `TRAEFIK_MESH_` as mixing both will result in an error. + +### Configuration File Name + +The default configuration file name is changed from `maesh` to `traefik-mesh` as well. + +### DNS Name + +The well known internal DNS name, to opt in into the usage of Maesh was `.maesh`. +Now, with the rebranding process this has been changed to `traefik.mesh` and thus, you now need to use the DNS name of `servicename.servicenamespace.traefik.maesh` to opt-in into the usage of Traefik Mesh. +The old name `.maesh`, is deprecated and will be removed eventually. + +### Docker Image Name + +As part of the process, the docker-image has been moved from `containous/maesh` to `traefik/mesh`. +The old image will not be updated anymore and `traefik/mesh` starts with `v1.4.0`. + +### Binary + +The new binary name is `traefik-mesh`, rather than `maesh` before. +However, as Traefik Mesh is running inside k8s this change should not be critical as it's hidden by the docker-image name. + +### Annotations + +As part of the rebranding process, the annotation prefix has changed. +The annotation prefix `maesh.containo.us/` has been deprecated in favour of `mesh.traefik.io`. + +## v1.1 to v1.2 + +### Debug + +The `--debug` CLI flag is deprecated and will be removed in a future major release. +Instead, you should use the new `--logLevel` flag with `debug` as value. + +### SMI Mode + +The `--smi` CLI flag is deprecated and will be removed in a future major release. +Instead, you should use the new and backward compatible `--acl` flag. diff --git a/docs/content/quickstart.md b/docs/content/quickstart.md index e55b3f0d0..ffb918277 100644 --- a/docs/content/quickstart.md +++ b/docs/content/quickstart.md @@ -1,6 +1,6 @@ # Quickstart -Maesh can be installed in your cluster without affecting any running services. +Traefik Mesh can be installed in your cluster without affecting any running services. It can safely be installed using the [Helm Chart](https://helm.sh/docs/intro/using_helm/#helm-install-installing-a-package). ## Prerequisites @@ -11,15 +11,12 @@ It can safely be installed using the [Helm Chart](https://helm.sh/docs/intro/usi ### RBAC -Depending on the tool you used to deploy your cluster you might need -to tweak RBAC permissions. +Depending on the tool you used to deploy your cluster you might need to tweak RBAC permissions. #### `kubeadm` -If you used `kubeadm` to deploy your cluster, a fast way to allow the -helm installation to perform all steps it needs is to edit the -`cluster-admin` `ClusterRoleBinding`, adding the following to the -`subjects` section: +If you used `kubeadm` to deploy your cluster, a fast way to allow the helm installation to perform all steps it needs is to edit the +`cluster-admin` `ClusterRoleBinding`, adding the following to the `subjects` section: ```yaml - kind: ServiceAccount @@ -27,31 +24,31 @@ helm installation to perform all steps it needs is to edit the namespace: kube-system ``` -## Installing Maesh +## Installing Traefik Mesh ```bash tab="Command" -helm repo add maesh https://containous.github.io/maesh/charts +helm repo add traefik-mesh https://traefik.github.io/mesh/charts helm repo update -helm install maesh maesh/maesh +helm install traefik-mesh traefik-mesh/traefik-mesh ``` ```bash tab="Expected output" [...] NOTES: -Thank you for installing maesh. +Thank you for installing traefik-mesh. -Your release is named maesh. +Your release is named traefik-mesh. To learn more about the release, try: - $ helm status maesh - $ helm get maesh + $ helm status traefik-mesh + $ helm get traefik-mesh ``` -## Using Maesh +## Using Traefik Mesh -As an example, let's deploy a server application and a client application under the `maesh-test` namespace. +As an example, let's deploy a server application and a client application under the `test` namespace. ```yaml tab="server.yaml" --- @@ -59,7 +56,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: server - namespace: maesh-test + namespace: test labels: app: server spec: @@ -74,7 +71,7 @@ spec: spec: containers: - name: server - image: containous/whoami:v1.4.0 + image: traefik/whoami:latest ports: - containerPort: 80 --- @@ -82,7 +79,7 @@ kind: Service apiVersion: v1 metadata: name: server - namespace: maesh-test + namespace: test spec: selector: app: server @@ -99,7 +96,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: client - namespace: maesh-test + namespace: test labels: app: client spec: @@ -124,7 +121,7 @@ spec: Create the namespace then deploy those two applications: ```bash -kubectl create namespace maesh-test +kubectl create namespace test kubectl apply -f server.yaml kubectl apply -f client.yaml ``` @@ -132,7 +129,7 @@ kubectl apply -f client.yaml You should now see the following output: ```bash tab="Command" -kubectl get all -n maesh-test +kubectl get all -n test ``` ```text tab="Expected output" @@ -156,13 +153,13 @@ replicaset.apps/server-7c8fd58db5 2 2 2 77s Take note of the client app pod name (here it's `client-7446fdf848-x96fq`) and open a new terminal session inside this pod using `kubectl exec`. ```bash -kubectl -n maesh-test exec -ti client-7446fdf848-x96fq ash +kubectl -n test exec -ti client-7446fdf848-x96fq ash ``` From inside the client container, make sure your server is reachable using the Kubernetes DNS service discovery. ```bash tab="Command" -curl server.maesh-test.svc.cluster.local +curl server.test.svc.cluster.local ``` ```test tab="Expected Output" @@ -173,17 +170,17 @@ IP: 10.42.2.10 IP: fe80::a4ec:77ff:fe37:1cdd RemoteAddr: 10.42.2.9:46078 GET / HTTP/1.1 -Host: server.maesh-test.svc.cluster.local +Host: server.test.svc.cluster.local User-Agent: curl/7.64.0 Accept: */* ``` You can note that all this server application is doing is to respond with the content of the request it receives. -Now replace the `svc.cluster.local` suffix by `maesh`, and tada: you are now using Maesh to reach your server! +Now replace the `svc.cluster.local` suffix by `traefik.mesh`, and tada: you are now using Traefik Mesh to reach your server! ```bash tab="Command" -curl server.maesh-test.maesh +curl server.test.traefik.mesh ``` ```test tab="Expected Output" @@ -194,21 +191,21 @@ IP: 10.42.1.7 IP: fe80::601d:7cff:fe26:c8c6 RemoteAddr: 10.42.1.5:59478 GET / HTTP/1.1 -Host: server.maesh-test.maesh +Host: server.test.traefik.mesh User-Agent: curl/7.64.0 Accept: */* Accept-Encoding: gzip Uber-Trace-Id: 3f9e7129a059f70:7e889a1ebcb147ac:3f9e7129a059f70:1 X-Forwarded-For: 10.42.2.9 -X-Forwarded-Host: server.maesh-test.maesh +X-Forwarded-Host: server.test.traefik.mesh X-Forwarded-Port: 80 X-Forwarded-Proto: http -X-Forwarded-Server: maesh-mesh-w95q2 +X-Forwarded-Server: traefik-mesh-proxy-w95q2 X-Real-Ip: 10.42.2.9 ``` -Note the presence of `X-Forwarded` headers as well as other instrumentation headers like `Uber-Trace-Id`, indicating than your request has been processed and instrumented by Maesh. +Note the presence of `X-Forwarded` headers as well as other instrumentation headers like `Uber-Trace-Id`, indicating than your request has been processed and instrumented by Traefik Mesh. ## What's next -See the [examples page](examples.md) to see a more advanced example, or dive into the [configuration](configuration.md) to discover all Maesh capabilities. +See the [examples page](examples.md) to see a more advanced example, or dive into the [configuration](configuration.md) to discover all Traefik Mesh capabilities. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 9087591bf..906260387 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -1,11 +1,11 @@ -site_name: Maesh -site_description: Maesh Documentation +site_name: Traefik Mesh +site_description: Traefik Mesh Documentation site_author: containo.us site_url: https://docs.mae.sh dev_addr: 0.0.0.0:8000 repo_name: 'GitHub' -repo_url: 'https://github.com/containous/maesh' +repo_url: 'https://github.com/traefik/mesh' docs_dir: 'content' edit_uri: 'edit/master/docs/content/' @@ -16,8 +16,8 @@ theme: custom_dir: 'theme' language: en include_sidebar: true - favicon: assets/img/maesh-logo.svg - logo: assets/img/maesh-logo.svg + favicon: assets/img/traefik-mesh-logo.svg + logo: assets/img/traefik-mesh-logo.svg feature: tabs: false palette: @@ -27,7 +27,7 @@ theme: prev: 'Previous' next: 'Next' -copyright: "Copyright © 2016-2020 Containous" +copyright: "Copyright © 2020 Traefik Labs" extra_css: - assets/styles/root.css @@ -76,7 +76,7 @@ nav: - 'Examples': 'examples.md' - 'API': 'api.md' - 'Migration': - - 'Maesh v1': 'migration/maesh-v1.md' + - 'Traefik Mesh v1': 'migration/traefik-mesh-v1.md' - 'Helm Chart': 'migration/helm-chart.md' - 'Contributing': - 'Thank You!': 'contributing/thank-you.md' diff --git a/docs/scripts/verify.sh b/docs/scripts/verify.sh index f451557e1..492b244b7 100755 --- a/docs/scripts/verify.sh +++ b/docs/scripts/verify.sh @@ -19,10 +19,10 @@ find "${PATH_TO_SITE}" -type f -not -path "/app/site/theme/*" \ htmlproofer \ --check-html \ --check_external_hash \ - --alt_ignore="/maesh-logo.png/" \ - --alt_ignore="/maesh-logo.svg/" \ + --alt_ignore="/traefik-mesh-logo.png/" \ + --alt_ignore="/traefik-mesh-logo.svg/" \ --http_status_ignore="0,500,501,503" \ - --url_ignore="/fonts.gstatic.com/,/docs.mae.sh/,/github.com\/containous\/maesh\/edit*/,/pilot.traefik.io\/profile/,/containo.us/,/docs.traefik.io/,/www.mkdocs.org/,/squidfunk.github.io/,/ietf.org/" \ + --url_ignore="/fonts.gstatic.com/,/docs.mae.sh/,/github.com\/traefik\/mesh\/edit*/,/pilot.traefik.io\/profile/,/containo.us/,/docs.traefik.io/,/www.mkdocs.org/,/squidfunk.github.io/,/ietf.org/" \ '{}' 1>/dev/null ## HTML-proofer options at https://github.com/gjtorikian/html-proofer#configuration diff --git a/docs/theme/main.html b/docs/theme/main.html index c4929f69e..f3b193a66 100644 --- a/docs/theme/main.html +++ b/docs/theme/main.html @@ -6,12 +6,12 @@ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); -})(window,document,'script','dataLayer','GTM-W6HPV6C'); +})(window,document,'script','dataLayer','GTM-KVZ2ZDK'); {%- endblock %} {% block header %} - {% include "partials/containous-header.html" %} + {% include "partials/company-header.html" %} {% include "partials/header.html" %} {% endblock %} diff --git a/docs/theme/partials/containous-header.html b/docs/theme/partials/company-header.html similarity index 99% rename from docs/theme/partials/containous-header.html rename to docs/theme/partials/company-header.html index e81587e90..44360b7d1 100644 --- a/docs/theme/partials/containous-header.html +++ b/docs/theme/partials/company-header.html @@ -197,7 +197,7 @@
-

Interested in joining Containous?

+

Interested in joining Traefik Labs?

-
\ No newline at end of file + diff --git a/go.mod b/go.mod index 7dff9f0fc..09e2439f4 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,9 @@ -module github.com/containous/maesh +module github.com/traefik/mesh go 1.15 require ( github.com/cenkalti/backoff/v4 v4.0.2 - github.com/containous/traefik/v2 v2.3.0-rc4 github.com/go-check/check v0.0.0-20180628173108-788fd7840127 github.com/google/uuid v1.1.1 github.com/gorilla/mux v1.7.3 @@ -13,6 +12,7 @@ require ( github.com/sirupsen/logrus v1.6.0 github.com/stretchr/testify v1.6.1 github.com/traefik/paerser v0.1.0 + github.com/traefik/traefik/v2 v2.3.0-rc6 github.com/vdemeester/shakers v0.1.0 k8s.io/api v0.18.6 k8s.io/apimachinery v0.18.6 diff --git a/go.sum b/go.sum index 9782fd6ff..f34bf028f 100644 --- a/go.sum +++ b/go.sum @@ -64,6 +64,7 @@ github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798 h1:2T/jmrHeTezcCM58 github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61 h1:1NIUJ+MAMpqDr4LWIfNsoJR+G7zg/8GZVwuRkmJxtTc= github.com/ExpediaDotCom/haystack-client-go v0.0.0-20190315171017-e7edbdf53a61/go.mod h1:62qWSDaEI0BLykU+zQza5CAKgW0lOy9oBSz3/DvYz4w= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= @@ -83,8 +84,10 @@ github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMo github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 h1:xPMsUicZ3iosVPSIP7bW5EcGUzjiiMl1OYTe14y/R24= github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= 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 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.23.1 h1:XxJBCZEoWJtoWjf/xRbmGUpAmTZGnuuF0ON0EvxxBrs= @@ -95,13 +98,15 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/abronan/valkeyrie v0.0.0-20200127174252-ef4277a138cd h1:UlQRt3CZdeD+WfDamDtdDDOu84CYbGIh9/B28TgzCZk= github.com/abronan/valkeyrie v0.0.0-20200127174252-ef4277a138cd/go.mod h1:2RUNONRAQ8bS1QcVJF3dYO/faiEro6NAAIQ6CqBkpD0= -github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.8 h1:6rJvj+NXjjauunLeS7uGy891F1cuAwsWKa9iGzTjz1s= -github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.8/go.mod h1:aVvklgKsPENRkl29bNwrHISa1F+YLGTHArMxZMBqWM8= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.18/go.mod h1:L+HB2uBoDgi3+r1pJEJcbGwyyHhd2QXaGsKLbDwtm8Q= 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/aliyun/alibaba-cloud-sdk-go v1.61.112 h1:E273ePcLllLIBGg5BHr3T0Fp1BJTvUyh5Y57ziSy81w= -github.com/aliyun/alibaba-cloud-sdk-go v1.61.112/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.458/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878 h1:EFSB7Zo9Eg91v7MJPVsifUysc/wPdN+NOnVe6bWbdBM= @@ -109,9 +114,13 @@ github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQh github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.16.23/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.30.20 h1:ktsy2vodSZxz/arYqo7DlpkIeNohHL+4Rmjdo7YGtrE= github.com/aws/aws-sdk-go v1.30.20/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= 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= @@ -122,19 +131,23 @@ github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8 github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/c0va23/go-proxyprotocol v0.9.1 h1:5BCkp0fDJOhzzH1lhjUgHhmZz9VvRMMif1U2D31hb34= github.com/c0va23/go-proxyprotocol v0.9.1/go.mod h1:TNjUV+llvk8TvWJxlPYAeAYZgSzT/iicNr3nWBWX320= -github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +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/cenkalti/backoff/v4 v4.0.2 h1:JIufpQLbh4DkbQoii76ItQIUFzevQSqOLZca4eamEDs= github.com/cenkalti/backoff/v4 v4.0.2/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.10.2 h1:VBodKICVPnwmDxstcW3biKcDSpFIfS/RELUXsZSBYK4= -github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= +github.com/cloudflare/cloudflare-go v0.13.2/go.mod h1:27kfc1apuifUmJhp069y0+hwlKDg4bd8LWlu7oKeZvM= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= github.com/codegangsta/negroni v1.0.0 h1:+aYywywx4bnKXWvoWtRfJ91vC59NbEhEY03sZjQhbVY= @@ -161,24 +174,23 @@ github.com/containous/multibuf v0.0.0-20190809014333-8b6c9a7e6bba h1:PhR03pep+5e github.com/containous/multibuf v0.0.0-20190809014333-8b6c9a7e6bba/go.mod h1:zkWcASFUJEst6QwCrxLdkuw1gvaKqmflEipm+iecV5M= github.com/containous/mux v0.0.0-20200408164629-f779179d490a h1:9HowJycBgtJU6s+2ic6cTeAV1CaJC+dJfC7rFoMwoyc= github.com/containous/mux v0.0.0-20200408164629-f779179d490a/go.mod h1:z8WW7n06n8/1xF9Jl9WmuDeZuHAhfL+bwarNjsciwwg= -github.com/containous/traefik/v2 v2.3.0-rc4 h1:WEOM8Un8RTK65CZHXqaWIhokdcX3BlE6TGNaduW9QLc= -github.com/containous/traefik/v2 v2.3.0-rc4/go.mod h1:xHE4peU2VKKZL2A5VqAovE+nDhrFH/Au/AqkwJr1sfk= -github.com/containous/yaegi v0.8.14/go.mod h1:Yj82MHpXQ9/h3ukzc2numJQ/Wr4+M3C9YLMzNjFtd3o= github.com/coreos/bbolt v1.3.3 h1:n6AiVyVRKQFNb6mJlwESEvvLoDyiTzXX7ORAUlkeBdY= github.com/coreos/bbolt v1.3.3/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU= github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpu/goacmedns v0.0.2 h1:hYAgjnPu7HogTgb8trqQouR/RrBgXq1TPBgmxbK9eRA= -github.com/cpu/goacmedns v0.0.2/go.mod h1:4MipLkI+qScwqtVxcNO6okBhbgRrr7/tKXUSgSL0teQ= +github.com/cpu/goacmedns v0.0.3/go.mod h1:4MipLkI+qScwqtVxcNO6okBhbgRrr7/tKXUSgSL0teQ= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= 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= @@ -186,10 +198,7 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumC github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2 h1:G9/PqfhOrt8JXnw0DGTfVoOkKHDhOlEZqhE/cu+NvQM= -github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dnsimple/dnsimple-go v0.60.0 h1:N+q+ML1CZGf+5r4udu9Opy7WJNtOaFT9aM86Af9gLhk= -github.com/dnsimple/dnsimple-go v0.60.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg= +github.com/dnsimple/dnsimple-go v0.63.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg= github.com/docker/cli v0.0.0-20200221155518-740919cc7fc0 h1:hlGHcYGaaHs/yffSubcUKlp8TyV1v7qhcZZ5nGNQ2Fw= github.com/docker/cli v0.0.0-20200221155518-740919cc7fc0/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= @@ -207,6 +216,7 @@ github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7/go.mod h1:cyGadeNE github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/donovanhide/eventsource v0.0.0-20170630084216-b8f31a59085e h1:rMOGp6HPeMHbdLrZkX2nD+94uqDunc27tXVuS+ey4mQ= github.com/donovanhide/eventsource v0.0.0-20170630084216-b8f31a59085e/go.mod h1:56wL82FO0bfMU5RvfXoIwSOP2ggqqxT+tAfNEIyxuHw= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/eapache/channels v1.1.0 h1:F1taHcn7/F0i8DYqKXJnyhJcVpp2kgFcNePxXtnyu4k= github.com/eapache/channels v1.1.0/go.mod h1:jMm2qB5Ubtg9zLd+inMZd2/NUvXgzmWXsDaLyQIGfH0= github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= @@ -215,6 +225,7 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8 github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 h1:clC1lXBpe2kTj2VHdaIu9ajZQe4kcEY9j0NsnDDBZ3o= github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elastic/go-sysinfo v1.1.1 h1:ZVlaLDyhVkDfjwPGU55CQRCRolNpc7P0BbyhhQZQmMI= @@ -225,6 +236,7 @@ github.com/elazarl/go-bindata-assetfs v1.0.0 h1:G/bYguwHIzWq9ZoyUQqrjTmJbbYn3j3C github.com/elazarl/go-bindata-assetfs v1.0.0/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -232,14 +244,15 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/exoscale/egoscale v0.18.1 h1:1FNZVk8jHUx0AvWhOZxLEDNlacTU0chMXUUNkm9EZaI= -github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= +github.com/exoscale/egoscale v0.23.0/go.mod h1:hRo78jkjkCDKpivQdRBEpNYF5+cVpCJCPDg2/r45KaY= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.0 h1:gh8fMGz0rlOv/1WmRZm7OgncIOTsAj21iNJot48omJQ= github.com/felixge/httpsnoop v1.0.0/go.mod h1:3+D9sFq0ahK/JeJPhCBUV1xlf4/eIYrUQaxulT0VzX8= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/gambol99/go-marathon v0.0.0-20180614232016-99a156b96fb2 h1:df6OFl8WNXk82xxP3R9ZPZ5seOA8XZkwLdbEzZF1/xI= @@ -247,8 +260,8 @@ github.com/gambol99/go-marathon v0.0.0-20180614232016-99a156b96fb2/go.mod h1:GLy 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/go-acme/lego/v3 v3.8.0 h1:9OOEn54eZvEPRRdM7xiC5f7EBW0MlEeChr+kzlIhdN8= -github.com/go-acme/lego/v3 v3.8.0/go.mod h1:kYiHYgSRzb1l2NQPWvWvkVG5etNCusGFsZc2MTak3m0= +github.com/go-acme/lego/v4 v4.0.1 h1:vPwbTYfw5+fOaON9rWCN43iNrPw5cdJBhNMnA8oxBTM= +github.com/go-acme/lego/v4 v4.0.1/go.mod h1:pIFm5tWkXSgiAEfJ/XQCQIvX1cEvHFwbgLZyx8OVSUE= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= @@ -258,21 +271,29 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.1-0.20200915143503-439c4d2ed3ea/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0 h1:MP4Eh7ZCb31lleYCFuwm0oe4/YGak+5l1vA2NOE80nA= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= 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.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -331,6 +352,7 @@ github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/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/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -341,12 +363,14 @@ github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTV github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g= github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gophercloud/gophercloud v0.3.0 h1:6sjpKIpVwRIIwmcEGp+WwNovNsem+c+2vm6oxshRpL8= -github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gophercloud/gophercloud v0.6.1-0.20191122030953-d8ac278c1c9d/go.mod h1:ozGNgr9KYOVATV5jsgHl/ceCDXGuguqOZAzoQ/2vcNM= +github.com/gophercloud/gophercloud v0.7.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= +github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c/go.mod h1:ehWUbLQJPqS0Ep+CxeD559hsm9pthPXadJNKwZkp43w= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +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 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -355,6 +379,7 @@ github.com/gravitational/trace v0.0.0-20190726142706-a535a178675f/go.mod h1:RvdO 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 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c= 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= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -385,8 +410,7 @@ github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1: github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.6.6 h1:HJunrbHTDDbBb/ay4kxa1n+dLmttUlnP3V9oNE4hmsM= -github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-retryablehttp v0.6.7/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= @@ -413,6 +437,7 @@ github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs= github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df h1:MZf03xP9WdakyXhOWuAD5uPK3wHh96wCsqe3hCMKh8E= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= @@ -420,8 +445,8 @@ github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8 h1:CGgOkSJeqMRmt0D9XLWExdT4m4F1vd3FV3VPt+0VxkQ= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e h1:txQltCyjXAqVVSZDArPEhUTg35hKwVIuXwtQo7eAMNQ= -github.com/influxdata/influxdb1-client v0.0.0-20190809212627-fc22c7df067e/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/instana/go-sensor v1.5.1 h1:GLxYsYiDWD15RSXDHS70VvTVU/CbwUimWrK6/e4eBPQ= github.com/instana/go-sensor v1.5.1/go.mod h1:5dEieTqu59XZr2/X53xF2Px4v83aSRRZa/47VbxAVa4= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03 h1:FUwcHNlEqkqLjLBdCp5PRlCFijNjvcYANOZXzCfXwCM= @@ -468,10 +493,10 @@ github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c github.com/libkermit/compose v0.0.0-20171122111507-c04e39c026ad/go.mod h1:GyCk/ifDcqsU1tsRMMWqXANnTtxzcwEWscb7j5qmblM= github.com/libkermit/docker v0.0.0-20171122101128-e6674d32b807/go.mod h1:std11u6pTaNwryy0Hy1dTQNdHKka1jNpflEieKtv5VE= github.com/libkermit/docker-check v0.0.0-20171122104347-1113af38e591/go.mod h1:EBQ0jeOrBpOTkquwjmJl4W6z5xqlf5oA2LZfTqRNcO0= -github.com/linode/linodego v0.10.0 h1:AMdb82HVgY8o3mjBXJcUv9B+fnJjfDMn2rNRGbX+jvM= -github.com/linode/linodego v0.10.0/go.mod h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA= -github.com/liquidweb/liquidweb-go v1.6.0 h1:vIj1I/Wf97fUnyirD+bi6Y63c0GiXk9nKI1+sFFl3G0= -github.com/liquidweb/liquidweb-go v1.6.0/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linode/linodego v0.21.0/go.mod h1:UTpq1JUZD0CZsJ8rt+0CRkqbzrp1MbGakVPt2DXY5Mk= +github.com/liquidweb/liquidweb-go v1.6.1/go.mod h1:UDcVnAMDkZxpw4Y7NOHkqoeiGacVLEIG/i5J9cyixzQ= github.com/looplab/fsm v0.1.0 h1:Qte7Zdn/5hBNbXzP7yxVU4OIFHWXBovyTT2LaBTyC20= github.com/looplab/fsm v0.1.0/go.mod h1:m2VaOfDHxqXBBMgc26m6yUOwkFn8H2AlJDE+jd/uafI= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= @@ -484,17 +509,18 @@ github.com/mailgun/ttlmap v0.0.0-20170619185759-c1c17f74874f/go.mod h1:8heskWJ5c github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/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 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= -github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -510,9 +536,7 @@ github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1D github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= 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.3.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.3.2 h1:mRS76wmkOn3KkKAyXDu42V+6ebnXWIztFSYGN7GeoRg= -github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -528,17 +552,27 @@ github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRW github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04 h1:o6uBwrhM5C8Ll3MAAxrQxRHEu7FkapwTuI2WmL1rw4g= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= github.com/nrdcg/auroradns v1.0.1 h1:m/kBq83Xvy3cU261MOknd8BdnOk12q4lAWM+kOdsC2Y= github.com/nrdcg/auroradns v1.0.1/go.mod h1:y4pc0i9QXYlFCWrhWrUSIETnZgrf4KuwjDIWmmXo3JI= +github.com/nrdcg/desec v0.5.0/go.mod h1:2ejvMazkav1VdDbv2HeQO7w+Ta1CGHqzQr27ZBYTuEQ= github.com/nrdcg/dnspod-go v0.4.0 h1:c/jn1mLZNKF3/osJ6mz3QPxTudvPArXTjpkmYj0uK6U= github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= -github.com/nrdcg/goinwx v0.7.0 h1:j6JlOp0nNwtvaP09TvKqc9pktjH81nOad0+Gx9S1t9U= -github.com/nrdcg/goinwx v0.7.0/go.mod h1:4tKJOCi/1lTxuw9/yB2Ez0aojwtUCSkckjc22eALpqE= +github.com/nrdcg/goinwx v0.8.1/go.mod h1:tILVc10gieBp/5PMvbcYeXM6pVQ+c9jxDZnpaR1UW7c= github.com/nrdcg/namesilo v0.2.1 h1:kLjCjsufdW/IlC+iSfAqj0iQGgKjlbUUeDJio5Y6eMg= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -550,6 +584,7 @@ github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -563,6 +598,7 @@ github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1 github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= @@ -571,15 +607,16 @@ github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/oracle/oci-go-sdk v7.0.0+incompatible h1:oj5ESjXwwkFRdhZSnPlShvLWYdt/IZ65RQxveYM3maA= -github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= -github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014 h1:37VE5TYj2m/FLA9SNr4z0+A0JefvTmR60Zwf8XSEV7c= -github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= +github.com/oracle/oci-go-sdk v24.2.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/ovh/go-ovh v1.1.0/go.mod h1:AxitLZ5HBRPyUd+Zl60Ajaag+rNTdVXWIkzfrVuTXWA= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= @@ -603,16 +640,19 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0 h1:BQ53HtBmfOitExawJ6LokA4x8ov/z0SYYb0+HxJfRI8= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0 h1:kRhiuYSXR3+uv2IbVbZhUxK5zVD/2pp3Gd2PpvPkpEo= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -621,6 +661,7 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.5 h1:3+auTFlqw+ZaQYJARz6ArODtkaIwtvBTx3N2NehQlL8= github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= github.com/rancher/go-rancher-metadata v0.0.0-20200311180630-7f4c936a06ac h1:wBGhHdXKICZmvAPWS8gQoMyOWDH7QAi9bU4Z1nDWnFU= github.com/rancher/go-rancher-metadata v0.0.0-20200311180630-7f4c936a06ac/go.mod h1:67sLWL17mVlO1HFROaTBmU71NB4R8UNCesFHhg0f6LQ= @@ -630,10 +671,10 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 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/sacloud/libsacloud v1.26.1 h1:td3Kd7lvpSAxxHEVpnaZ9goHmmhi0D/RfP0Rqqf/kek= -github.com/sacloud/libsacloud v1.26.1/go.mod h1:79ZwATmHLIFZIMd7sxA3LwzVy/B77uj3LDoToVTxDoQ= +github.com/sacloud/libsacloud v1.36.2/go.mod h1:P7YAOVmnIn3DKHqCZcUKYUXmSwGBm3yS7IBEjKVSrjg= github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec h1:6ncX5ko6B9LntYM0YBRXkiSaZMmLYeZ/NWcmeB43mMY= github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis= github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= @@ -654,13 +695,18 @@ github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIK github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= 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/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/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/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= @@ -675,16 +721,17 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stvp/go-udp-testing v0.0.0-20191102171040-06b61409b154 h1:XGopsea1Dw7ecQ8JscCNQXDGYAKDiWjDeXnpN/+BY9g= github.com/stvp/go-udp-testing v0.0.0-20191102171040-06b61409b154/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7 h1:CpHxIaZzVy26GqJn8ptRyto8fuoYOd1v0fXm9bG3wQ8= -github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= github.com/tinylib/msgp v1.0.2 h1:DfdQrzQa7Yh2es9SuLkixqxuXS2SxsdYn0KbdrOGWD8= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +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 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/traefik/paerser v0.1.0 h1:B4v1tbvd8YnHsA7spwHKEWJoGrRP+2jYpIozsCMHhl0= github.com/traefik/paerser v0.1.0/go.mod h1:yYnAgdEC2wJH5CgG75qGWC8SsFDEapg09o9RrA6FfrE= -github.com/transip/gotransip/v6 v6.0.2 h1:rOCMY607PYF+YvMHHtJt7eZRd0mx/uhyz6dsXWPmn+4= -github.com/transip/gotransip/v6 v6.0.2/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g= +github.com/traefik/traefik/v2 v2.3.0-rc6 h1:B1+uYaP9cyscs1K9+SQ2rJYO6BVoY18JwNKMzorF4vQ= +github.com/traefik/traefik/v2 v2.3.0-rc6/go.mod h1:CAemATo18BZPU8YbSRDLF/Q9v7W52WnRblbo2/BsizM= +github.com/traefik/yaegi v0.9.0/go.mod h1:FAYnRlZyuVlEkvnkHq3bvJ1lW5be6XuwgLdkYgYG6Lk= +github.com/transip/gotransip/v6 v6.2.0/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/uber-go/atomic v1.3.2 h1:Azu9lPBWRNKzYXSIwRfgRuDuS0YKsK4NFhiQv98gkxo= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= @@ -696,15 +743,16 @@ github.com/unrolled/render v1.0.2/go.mod h1:gN9T0NhL4Bfbwu8ann7Ry/TGHYfosul+J0ob github.com/unrolled/secure v1.0.7 h1:BcQHp3iKZyZCKj5gRqwQG+5urnGBF00wGgoPPwtheVQ= github.com/unrolled/secure v1.0.7/go.mod h1:uGc1OcRF8gCVBA+ANksKmvM85Hka6SZtQIbrKc3sHS4= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.4/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vdemeester/shakers v0.1.0 h1:K+n9sSyUCg2ywmZkv+3c7vsYZfivcfKhMh8kRxCrONM= github.com/vdemeester/shakers v0.1.0/go.mod h1:IZ1HHynUOQt32iQ3rvAeVddXLd19h/6LWiKsh9RZtAQ= github.com/vulcand/oxy v1.1.0 h1:DbBijGo1+6cFqR9jarkMxasdj0lgWwrrFtue6ijek4Q= github.com/vulcand/oxy v1.1.0/go.mod h1:ADiMYHi8gkGl2987yQIzDRoXZilANF4WtKaQ92OppKY= github.com/vulcand/predicate v1.1.0 h1:Gq/uWopa4rx/tnZu2opOSBqHK63Yqlou/SzrbwdJiNg= github.com/vulcand/predicate v1.1.0/go.mod h1:mlccC5IRBoc2cIFmCB8ZM62I3VDb6p2GXESMHa3CnZg= -github.com/vultr/govultr v0.4.2 h1:9i8xKZ+xp6vwZ9raqHoBLzhB4wCnMj7nOQTj5YIRLWY= -github.com/vultr/govultr v0.4.2/go.mod h1:TUuUizMOFc7z+PNMssb6iGjKjQfpw5arIaOLfocVudQ= +github.com/vultr/govultr v0.5.0/go.mod h1:wZZXZbYbqyY1n3AldoeYNZK4Wnmmoq6dNFkvd5TV3ss= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -723,6 +771,8 @@ go.elastic.co/fastjson v1.0.0 h1:ooXV/ABvf+tBul26jcVViPT3sBir0PvXgibYB1IQQzg= go.elastic.co/fastjson v1.0.0/go.mod h1:PmeUOMMtLHQr9ZS9J9owrAVg0FkaZDRZJEFTTGHtchs= go.etcd.io/bbolt v1.3.1-etcd.8 h1:6J7QAKqfFBGnU80KRnuQxfjjeE5xAGE/qB810I3FQHQ= go.etcd.io/bbolt v1.3.1-etcd.8/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v3.3.13+incompatible h1:jCejD5EMnlGxFvcGRyEV4VGlENZc7oPQX6o0t7n3xbw= go.etcd.io/etcd v3.3.13+incompatible/go.mod h1:yaeTdrJi5lOmYerz05bd8+V7KubZs8YSFZfzsF9A6aI= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -735,12 +785,16 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277 h1:d9qaMM+ODpCq+9We41//fu/sHsTnXcrqd1en3x+GKy4= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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= @@ -753,12 +807,14 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200317142112-1b76d66859c6 h1:TjszyFsQsyZNHwdVdZ5m7bjmreu0znc2kRYsEml9/Ww= golang.org/x/crypto v0.0.0-20200317142112-1b76d66859c6/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904 h1:bXoxMPcSLOq08zI3/c5dEBT6lE4eh+jOh886GHrn6V8= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -790,7 +846,6 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= @@ -808,11 +863,13 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -820,6 +877,8 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= 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= @@ -857,12 +916,15 @@ golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -871,17 +933,21 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +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-20190921001708-c4c64cad1fd0/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-20200630173020-3af7569d3a1e h1:EHBhcS0mlXEAVwNyO2dLfjToGsyY4j24pTs2ScHnX7s= +golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/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-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -904,14 +970,18 @@ golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -938,6 +1008,7 @@ google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.20.0 h1:jz2KixHX7EcCPiQrySzPdnYT7DbINAypCqKZ1Z7GM40= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= 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= @@ -948,6 +1019,7 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -967,9 +1039,11 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= 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.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1 h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk= @@ -980,9 +1054,13 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= 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/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/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/h2non/gock.v1 v1.0.15 h1:SzLqcIlb/fDfg7UvukMpNcWsu7sI5tWwL+KCATZqks0= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= @@ -990,6 +1068,7 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.1 h1:GyboHr4UqMiLUybYjd22ZjQIKEJEpgtLXtuGbR21Oho= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jcmturner/aescts.v1 v1.0.1 h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw= gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= gopkg.in/jcmturner/dnsutils.v1 v1.0.1 h1:cIuC1OLRGZrld+16ZJvvZxVJeKPsvd5eUIvxfoN5hSM= @@ -1000,20 +1079,21 @@ gopkg.in/jcmturner/gokrb5.v7 v7.2.3 h1:hHMV/yKPwMnJhPuPx7pH2Uw/3Qyf+thJYlisUc440 gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= gopkg.in/jcmturner/rpc.v1 v1.1.0 h1:QHIUxTX1ISuAv9dD2wJ9HWQVuWDX/Zc0PfeC2tjc4rU= gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= -gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc h1:GAcf+t0o8gdJAdSFYdE9wChu4bIyguMVqz0RHiFL5VY= -gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= +gopkg.in/ns1/ns1-go.v2 v2.4.2/go.mod h1:GMnKY+ZuoJ+lVLL+78uSTjwTz2jMazq6AfGKQOYhsPk= gopkg.in/redis.v5 v5.2.9 h1:MNZYOLPomQzZMfpN3ZtD1uyJ2IDonTTlxYiV/pEApiw= gopkg.in/redis.v5 v5.2.9/go.mod h1:6gtv0/+A4iM08kdRfocWYB3bLX2tebpNtfKlFT6H4mY= -gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= @@ -1045,8 +1125,10 @@ k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU= k8s.io/client-go v0.18.6 h1:I+oWqJbibLSGsZj8Xs8F0aWVXJVIoUHWaaJV3kUN/Zw= k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q= k8s.io/code-generator v0.18.0/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= +k8s.io/code-generator v0.18.2 h1:C1Nn2JiMf244CvBDKVPX0W2mZFJkVBg54T8OV7/Imso= k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200114144118-36b2048a9120 h1:RPscN6KhmG54S33L+lr3GS+oD1jmchIU0ll519K6FA4= k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= @@ -1070,3 +1152,4 @@ sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnM sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/helm/chart/maesh/.helmignore b/helm/chart/mesh/.helmignore similarity index 100% rename from helm/chart/maesh/.helmignore rename to helm/chart/mesh/.helmignore diff --git a/helm/chart/maesh/Chart.yaml b/helm/chart/mesh/Chart.yaml similarity index 74% rename from helm/chart/maesh/Chart.yaml rename to helm/chart/mesh/Chart.yaml index aab83e2aa..eaacb0558 100644 --- a/helm/chart/maesh/Chart.yaml +++ b/helm/chart/mesh/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 -name: maesh +name: traefik-mesh version: 2.1.2 appVersion: v1.3.2 -description: Maesh - Simpler Service Mesh +description: Traefik Mesh - Simpler Service Mesh type: application keywords: - traefik @@ -10,7 +10,7 @@ keywords: - smi home: https://mae.sh/ sources: - - https://github.com/containous/maesh/ + - https://github.com/traefik/mesh/ maintainers: - name: emilevauge email: emile@vauge.com @@ -24,7 +24,7 @@ maintainers: email: harold@containo.us - name: kevinpollet email: kevin@containo.us -icon: https://raw.githubusercontent.com/containous/maesh/v1.2/docs/content/assets/img/maesh.png +icon: https://raw.githubusercontent.com/traefik/mesh/master/docs/content/assets/img/traefik-mesh.png dependencies: - name: tracing version: 0.0.3 diff --git a/helm/chart/maesh/Guidelines.md b/helm/chart/mesh/Guidelines.md similarity index 92% rename from helm/chart/maesh/Guidelines.md rename to helm/chart/mesh/Guidelines.md index af3ea1460..09fce1fde 100644 --- a/helm/chart/maesh/Guidelines.md +++ b/helm/chart/mesh/Guidelines.md @@ -1,10 +1,10 @@ -# Maesh Helm Chart Guidelines +# Traefik Mesh Helm Chart Guidelines -This document outlines the guidelines for developing, managing and extending the Maesh Helm Chart. +This document outlines the guidelines for developing, managing and extending the Traefik Mesh Helm Chart. ## Optionality -All non-critical features (features not mandatory to start Maesh) in the Helm Chart must be optional. +All non-critical features (features not mandatory to start Traefik Mesh) in the Helm Chart must be optional. All non-critical features should be disabled (commented out) in the `values.yaml` file. All optional non-critical features should be disabled (commented out) in the `values.yaml` file, and have a comment `# (Optional)` in the line above. This allows minimal configuration, and ease of extension. @@ -13,7 +13,7 @@ This allows minimal configuration, and ease of extension. ```yaml image: - name: containous/maesh + name: traefik/mesh ``` This feature is critical, and therefore is defined clearly in the `values.yaml` file. @@ -64,7 +64,7 @@ These should just be added as an uncommented non-critical feature: ```yaml image: - name: containous/maesh + name: traefik/mesh # (Optional) # pullPolicy: IfNotPresent ``` diff --git a/helm/chart/maesh/README.md b/helm/chart/mesh/README.md similarity index 65% rename from helm/chart/maesh/README.md rename to helm/chart/mesh/README.md index eb2494a2b..e9eeb0e5e 100644 --- a/helm/chart/maesh/README.md +++ b/helm/chart/mesh/README.md @@ -1,9 +1,9 @@ -# Maesh +# Traefik Mesh -Maesh is a simple, yet full-featured service mesh. It is container-native and fits as your de-facto service mesh in your Kubernetes cluster. +Traefik Mesh is a simple, yet full-featured service mesh. It is container-native and fits as your de-facto service mesh in your Kubernetes cluster. It supports the latest Service Mesh Interface specification [SMI](https://smi-spec.io/) that facilitates integration with pre-existing solution. -Moreover, Maesh is opt-in by default, which means that your existing services are unaffected until you decide to add them to the mesh. +Moreover, Traefik Mesh is opt-in by default, which means that your existing services are unaffected until you decide to add them to the mesh. ## Prerequisites @@ -13,83 +13,82 @@ Moreover, Maesh is opt-in by default, which means that your existing services ar ## Installing the Chart -To install the chart with the release name `maesh`: +To install the chart with the release name `traefik-mesh`: ```bash -$ helm repo add maesh https://containous.github.io/maesh/charts +$ helm repo add traefik-mesh https://traefik.github.io/mesh/charts $ helm repo update -$ helm install maesh maesh/maesh +$ helm install traefik-mesh traefik-mesh/traefik-mesh ``` -You can use the `--namespace my-namespace` flag to deploy Maesh in a custom namespace and the `--set "key1=val1,key2=val2,..."` -flag to configure it. Where `key1=val1`, `key2=val2`, `...` are chart values that you can find at -https://github.com/containous/maesh/blob/master/helm/chart/maesh/values.yaml. +You can use the `--namespace my-namespace` flag to deploy Traefik Mesh in a custom namespace and the `--set "key1=val1,key2=val2,..."` flag to configure it. +Where `key1=val1`, `key2=val2`, `...` are chart values that you can find at https://github.com/traefik/mesh/blob/master/helm/chart/mesh/values.yaml. ## Uninstalling the Chart -To uninstall the chart with the release name `maesh`: +To uninstall the chart with the release name `traefik-mesh`: ```bash -$ helm uninstall maesh +$ helm uninstall traefik-mesh ``` ## Configuration -The following table lists the configurable parameters of the Maesh chart and their default values. - -| Key | Description | Default | -|--------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------| -| acl | Enable ACL mode. | `false` | -| clusterDomain | Custom cluster domain. | `"cluster.local"` | -| controller.affinity | Node/Pod affinities for the controller. | `{}` | -| controller.ignoreNamespaces | Namespace to ignore for the controller. | `[]` | -| controller.image.name | Docker image for the controller. | `"containous/maesh"` | -| controller.image.pullPolicy | Pull policy for the controller Docker image. | `"IfNotPresent"` | -| controller.image.pullSecret | Name of the Secret resource containing the private registry credentials for the controller image. | | -| controller.image.tag | Tag for the controller container Docker image. | `{{ .Chart.AppVersion }}` | -| controller.logFormat | Controller log format. | `"common"` | -| controller.logLevel | Controller log level. | `"error"` | -| controller.nodeSelector | Node labels for pod assignment. See the [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) for more details. | `{}` | -| controller.resources.limit.cpu | Maximum amount of CPU units that the controller container can use. | `"200m"` | -| controller.resources.limit.mem | Maximum amount of memory that the controller container can use. | `"100Mi"` | -| controller.resources.request.cpu | Amount of CPU units that the controller container requests. | `"100m"` | -| controller.resources.request.mem | Amount of memory that the controller container requests. | `"50Mi"` | -| controller.tolerations | Tolerations section for the controller. See the [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for more details. | `[]` | -| controller.watchNamespaces | Namespace to watch for the controller. | `[]` | -| defaultMode | The default mesh mode. This means that new mesh services will operate by default in HTTP mode. | `"http"` | -| kubedns | Enable KubeDNS support. | `false` | -| limits.http | Number of HTTP ports to allocate. | `10` | -| limits.tcp | Number of TCP ports to allocate. | `25` | -| limits.udp | Number of UDP ports to allocate. | `25` | -| logFormat | Log format for the controller and the mesh proxy. | `"common"` | -| logLevel | Log level for the controller and the mesh proxy. | `"error"` | -| mesh.additionalArguments | Arguments to be added to the mesh proxy container args. | `[]` | -| mesh.annotations | Annotations to be added to the mesh proxy deployment. | `{}` | -| mesh.env | Additional environment variables to set in the mesh proxy pods. | `[]` | -| mesh.envFrom | Additional environment variables to set in the mesh proxy pods. | `[]` | -| mesh.forwardingTimeouts.dialTimeout | Maximum duration allowed for a connection to a backend server to be established. See the [Traefik documentation](https://docs.traefik.io/routing/overview/#forwardingtimeoutsdialtimeout) for more details. | `"30s"` | -| mesh.forwardingTimeouts.idleConnTimeout | Maximum amount of time an idle (keep-alive) connection will remain idle before closing itself. See the [Traefik documentation](https://docs.traefik.io/routing/overview/#forwardingtimeoutsresponseheadertimeout) for more details. | `"1s"` | -| mesh.forwardingTimeouts.responseHeaderTimeout | Maximum amount of time, if non-zero, to wait for a server's response headers after fully writing the request (including its body, if any). See the [Traefik documentation](https://docs.traefik.io/routing/overview/#forwardingtimeoutsresponseheadertimeout) for more details. | `"0s"` | -| mesh.image.name | Docker image for the mesh proxy. | `"traefik"` | -| mesh.image.pullPolicy | Pull policy for the mesh proxy image. | `"IfNotPresent"` | -| mesh.image.pullSecret | Name of the Secret resource containing the private registry credentials for the mesh proxy image. | | -| mesh.image.tag | Tag for the mesh proxy container Docker image. | `"v2.3"` | -| mesh.logFormat | Mesh proxy log format. | `"common"` | -| mesh.logLevel | Mesh proxy log level. | `"error"` | -| mesh.nodeSelector | Node labels for pod assignment. See the [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) for more details. | `{}` | -| mesh.podAnnotations | Annotations to be added to the mesh proxy pods. | `{}` | -| mesh.pollInterval | Polling interval to get the configuration from the controller. | `"1s"` | -| mesh.pollTimeout | Polling timeout when connecting to the controller configuration endpoint. | `"1s"` | -| mesh.resources.limit.cpu | Maximum amount of CPU units that the mesh proxy container can use. | `"200m"` | -| mesh.resources.limit.mem | Maximum amount of memory that the mesh proxy container can use. | `"100Mi"` | -| mesh.resources.request.cpu | Amount of CPU units that the mesh proxy container requests. | `"100m"` | -| mesh.resources.request.mem | Amount of memory that the mesh proxy container requests. | `"50Mi"` | -| mesh.tolerations | Tolerations section for the mesh proxy. See the [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for more details. | `[]` | +The following table lists the configurable parameters of the Traefik Mesh chart and their default values. + +| Key | Description | Default | +|------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------| +| acl | Enable ACL mode. | `false` | +| clusterDomain | Custom cluster domain. | `"cluster.local"` | +| controller.affinity | Node/Pod affinities for the controller. | `{}` | +| controller.ignoreNamespaces | Namespace to ignore for the controller. | `[]` | +| controller.image.name | Docker image for the controller. | `"traefik/mesh"` | +| controller.image.pullPolicy | Pull policy for the controller Docker image. | `"IfNotPresent"` | +| controller.image.pullSecret | Name of the Secret resource containing the private registry credentials for the controller image. | | +| controller.image.tag | Tag for the controller container Docker image. | `{{ .Chart.AppVersion }}` | +| controller.logFormat | Controller log format. | `"common"` | +| controller.logLevel | Controller log level. | `"error"` | +| controller.nodeSelector | Node labels for pod assignment. See the [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) for more details. | `{}` | +| controller.resources.limit.cpu | Maximum amount of CPU units that the controller container can use. | `"200m"` | +| controller.resources.limit.mem | Maximum amount of memory that the controller container can use. | `"100Mi"` | +| controller.resources.request.cpu | Amount of CPU units that the controller container requests. | `"100m"` | +| controller.resources.request.mem | Amount of memory that the controller container requests. | `"50Mi"` | +| controller.tolerations | Tolerations section for the controller. See the [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for more details. | `[]` | +| controller.watchNamespaces | Namespace to watch for the controller. | `[]` | +| defaultMode | The default mesh mode. This means that new services will operate by default in HTTP mode. | `"http"` | +| kubedns | Enable KubeDNS support. | `false` | +| limits.http | Number of HTTP ports to allocate. | `10` | +| limits.tcp | Number of TCP ports to allocate. | `25` | +| limits.udp | Number of UDP ports to allocate. | `25` | +| logFormat | Log format for the controller and the proxy. | `"common"` | +| logLevel | Log level for the controller and the proxy. | `"error"` | +| proxy.additionalArguments | Arguments to be added to the proxy container args. | `[]` | +| proxy.annotations | Annotations to be added to the proxy deployment. | `{}` | +| proxy.env | Additional environment variables to set in the proxy pods. | `[]` | +| proxy.envFrom | Additional environment variables to set in the proxy pods. | `[]` | +| proxy.forwardingTimeouts.dialTimeout | Maximum duration allowed for a connection to a backend server to be established. See the [Traefik documentation](https://docs.traefik.io/routing/overview/#forwardingtimeoutsdialtimeout) for more details. | `"30s"` | +| proxy.forwardingTimeouts.idleConnTimeout | Maximum amount of time an idle (keep-alive) connection will remain idle before closing itself. See the [Traefik documentation](https://docs.traefik.io/routing/overview/#forwardingtimeoutsresponseheadertimeout) for more details. | `"1s"` | +| proxy.forwardingTimeouts.responseHeaderTimeout | Maximum amount of time, if non-zero, to wait for a server's response headers after fully writing the request (including its body, if any). See the [Traefik documentation](https://docs.traefik.io/routing/overview/#forwardingtimeoutsresponseheadertimeout) for more details. | `"0s"` | +| proxy.image.name | Docker image for the proxy. | `"traefik"` | +| proxy.image.pullPolicy | Pull policy for the proxy image. | `"IfNotPresent"` | +| proxy.image.pullSecret | Name of the Secret resource containing the private registry credentials for the proxy image. | | +| proxy.image.tag | Tag for the proxy container Docker image. | `"v2.3"` | +| proxy.logFormat | Proxy log format. | `"common"` | +| proxy.logLevel | Proxy log level. | `"error"` | +| proxy.nodeSelector | Node labels for pod assignment. See the [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) for more details. | `{}` | +| proxy.podAnnotations | Annotations to be added to the proxy pods. | `{}` | +| proxy.pollInterval | Polling interval to get the configuration from the controller. | `"1s"` | +| proxy.pollTimeout | Polling timeout when connecting to the controller configuration endpoint. | `"1s"` | +| proxy.resources.limit.cpu | Maximum amount of CPU units that the proxy container can use. | `"200m"` | +| proxy.resources.limit.mem | Maximum amount of memory that the proxy container can use. | `"100Mi"` | +| proxy.resources.request.cpu | Amount of CPU units that the proxy container requests. | `"100m"` | +| proxy.resources.request.mem | Amount of memory that the proxy container requests. | `"50Mi"` | +| proxy.tolerations | Tolerations section for the proxy. See the [K8S documentation](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) for more details. | `[]` | ### Metrics -The following table lists the available parameters to configure the metrics integrations on the mesh proxies. -As the mesh proxies are vanilla Traefik, check out the corresponding [documentation](https://docs.traefik.io/observability/metrics/overview/) for more details. +The following table lists the available parameters to configure the metrics integrations on the Traefik Mesh proxies. +As the proxies are vanilla Traefik, check out the corresponding [documentation](https://docs.traefik.io/observability/metrics/overview/) for more details. | Key | Description | Default | |--------------------------------------------------|------------------------------------------------------------------------------------------------------------------|--------------------------------------------| @@ -123,8 +122,8 @@ As the mesh proxies are vanilla Traefik, check out the corresponding [documentat ### Tracing -The following table lists the available parameters to configure the tracing integrations on the mesh proxies. -As the mesh proxies are vanilla Traefik, check out the corresponding [documentation](https://docs.traefik.io/observability/tracing/overview/) for more details. +The following table lists the available parameters to configure the tracing integrations on the Traefik Mesh proxies. +As the proxies are vanilla Traefik, check out the corresponding [documentation](https://docs.traefik.io/observability/tracing/overview/) for more details. | Key | Description | Default | |------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------| diff --git a/helm/chart/maesh/charts/metrics/Chart.yaml b/helm/chart/mesh/charts/metrics/Chart.yaml similarity index 100% rename from helm/chart/maesh/charts/metrics/Chart.yaml rename to helm/chart/mesh/charts/metrics/Chart.yaml diff --git a/helm/chart/maesh/charts/metrics/dashboards/traefik.json b/helm/chart/mesh/charts/metrics/dashboards/traefik.json similarity index 100% rename from helm/chart/maesh/charts/metrics/dashboards/traefik.json rename to helm/chart/mesh/charts/metrics/dashboards/traefik.json diff --git a/helm/chart/maesh/charts/metrics/templates/grafana-pdb.yaml b/helm/chart/mesh/charts/metrics/templates/grafana-pdb.yaml similarity index 83% rename from helm/chart/maesh/charts/metrics/templates/grafana-pdb.yaml rename to helm/chart/mesh/charts/metrics/templates/grafana-pdb.yaml index 5da1ae909..c6096666a 100644 --- a/helm/chart/maesh/charts/metrics/templates/grafana-pdb.yaml +++ b/helm/chart/mesh/charts/metrics/templates/grafana-pdb.yaml @@ -6,7 +6,7 @@ metadata: labels: app: maesh component: grafana - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: diff --git a/helm/chart/maesh/charts/metrics/templates/grafana.yaml b/helm/chart/mesh/charts/metrics/templates/grafana.yaml similarity index 95% rename from helm/chart/maesh/charts/metrics/templates/grafana.yaml rename to helm/chart/mesh/charts/metrics/templates/grafana.yaml index f88ff8f28..2f9b956a9 100644 --- a/helm/chart/maesh/charts/metrics/templates/grafana.yaml +++ b/helm/chart/mesh/charts/metrics/templates/grafana.yaml @@ -7,7 +7,7 @@ metadata: labels: app: maesh component: grafana - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: @@ -102,7 +102,7 @@ metadata: labels: app: maesh component: grafana - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} data: @@ -146,7 +146,7 @@ data: editable: true options: path: /var/lib/grafana/dashboards - homeDashboardId: maesh + homeDashboardId: traefik-mesh --- apiVersion: v1 @@ -157,7 +157,7 @@ metadata: labels: app: maesh component: grafana - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: diff --git a/helm/chart/maesh/charts/metrics/templates/prometheus-pdb.yaml b/helm/chart/mesh/charts/metrics/templates/prometheus-pdb.yaml similarity index 84% rename from helm/chart/maesh/charts/metrics/templates/prometheus-pdb.yaml rename to helm/chart/mesh/charts/metrics/templates/prometheus-pdb.yaml index 909778754..209d56487 100644 --- a/helm/chart/maesh/charts/metrics/templates/prometheus-pdb.yaml +++ b/helm/chart/mesh/charts/metrics/templates/prometheus-pdb.yaml @@ -6,7 +6,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: diff --git a/helm/chart/maesh/charts/metrics/templates/prometheus.yaml b/helm/chart/mesh/charts/metrics/templates/prometheus.yaml similarity index 95% rename from helm/chart/maesh/charts/metrics/templates/prometheus.yaml rename to helm/chart/mesh/charts/metrics/templates/prometheus.yaml index c0cab3e19..e9205fcc4 100644 --- a/helm/chart/maesh/charts/metrics/templates/prometheus.yaml +++ b/helm/chart/mesh/charts/metrics/templates/prometheus.yaml @@ -8,7 +8,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} data: @@ -31,7 +31,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} data: @@ -44,7 +44,7 @@ data: - "/prometheus/rules/*.yaml" scrape_configs: - - job_name: 'maesh' + - job_name: 'traefik-mesh' relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep @@ -73,7 +73,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: @@ -177,7 +177,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} annotations: diff --git a/helm/chart/maesh/charts/metrics/templates/rbac.yaml b/helm/chart/mesh/charts/metrics/templates/rbac.yaml similarity index 85% rename from helm/chart/maesh/charts/metrics/templates/rbac.yaml rename to helm/chart/mesh/charts/metrics/templates/rbac.yaml index b177b567a..393069aea 100644 --- a/helm/chart/maesh/charts/metrics/templates/rbac.yaml +++ b/helm/chart/mesh/charts/metrics/templates/rbac.yaml @@ -6,7 +6,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} roleRef: @@ -26,7 +26,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} rules: @@ -57,7 +57,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} @@ -70,6 +70,6 @@ metadata: labels: app: maesh component: grafana - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} diff --git a/helm/chart/maesh/charts/metrics/templates/storage.yaml b/helm/chart/mesh/charts/metrics/templates/storage.yaml similarity index 88% rename from helm/chart/maesh/charts/metrics/templates/storage.yaml rename to helm/chart/mesh/charts/metrics/templates/storage.yaml index 9f7e4dafa..14e640350 100644 --- a/helm/chart/maesh/charts/metrics/templates/storage.yaml +++ b/helm/chart/mesh/charts/metrics/templates/storage.yaml @@ -7,7 +7,7 @@ metadata: labels: app: maesh component: grafana - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: @@ -29,7 +29,7 @@ metadata: labels: app: maesh component: prometheus - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: diff --git a/helm/chart/maesh/charts/metrics/values.yaml b/helm/chart/mesh/charts/metrics/values.yaml similarity index 100% rename from helm/chart/maesh/charts/metrics/values.yaml rename to helm/chart/mesh/charts/metrics/values.yaml diff --git a/helm/chart/maesh/charts/tracing/Chart.yaml b/helm/chart/mesh/charts/tracing/Chart.yaml similarity index 100% rename from helm/chart/maesh/charts/tracing/Chart.yaml rename to helm/chart/mesh/charts/tracing/Chart.yaml diff --git a/helm/chart/maesh/charts/tracing/templates/jaeger-deployment.yaml b/helm/chart/mesh/charts/tracing/templates/jaeger-deployment.yaml similarity index 100% rename from helm/chart/maesh/charts/tracing/templates/jaeger-deployment.yaml rename to helm/chart/mesh/charts/tracing/templates/jaeger-deployment.yaml diff --git a/helm/chart/maesh/charts/tracing/templates/jaeger-pdb.yaml b/helm/chart/mesh/charts/tracing/templates/jaeger-pdb.yaml similarity index 85% rename from helm/chart/maesh/charts/tracing/templates/jaeger-pdb.yaml rename to helm/chart/mesh/charts/tracing/templates/jaeger-pdb.yaml index 82f894ce9..38d40cdd9 100644 --- a/helm/chart/maesh/charts/tracing/templates/jaeger-pdb.yaml +++ b/helm/chart/mesh/charts/tracing/templates/jaeger-pdb.yaml @@ -5,7 +5,7 @@ metadata: name: jaeger labels: app: jaeger - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: diff --git a/helm/chart/maesh/charts/tracing/templates/jaeger-sa.yaml b/helm/chart/mesh/charts/tracing/templates/jaeger-sa.yaml similarity index 81% rename from helm/chart/maesh/charts/tracing/templates/jaeger-sa.yaml rename to helm/chart/mesh/charts/tracing/templates/jaeger-sa.yaml index aaf58643b..d91f4fab1 100644 --- a/helm/chart/maesh/charts/tracing/templates/jaeger-sa.yaml +++ b/helm/chart/mesh/charts/tracing/templates/jaeger-sa.yaml @@ -6,7 +6,7 @@ metadata: namespace: {{ .Release.Namespace }} labels: app: jaeger - chart: {{ include "maesh.chartLabel" . | quote}} + chart: {{ include "traefikMesh.chartLabel" . | quote}} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} automountServiceAccountToken: false diff --git a/helm/chart/maesh/charts/tracing/templates/jaeger-services.yaml b/helm/chart/mesh/charts/tracing/templates/jaeger-services.yaml similarity index 100% rename from helm/chart/maesh/charts/tracing/templates/jaeger-services.yaml rename to helm/chart/mesh/charts/tracing/templates/jaeger-services.yaml diff --git a/helm/chart/maesh/charts/tracing/values.yaml b/helm/chart/mesh/charts/tracing/values.yaml similarity index 100% rename from helm/chart/maesh/charts/tracing/values.yaml rename to helm/chart/mesh/charts/tracing/values.yaml diff --git a/helm/chart/maesh/crds/smi-access.yaml b/helm/chart/mesh/crds/smi-access.yaml similarity index 98% rename from helm/chart/maesh/crds/smi-access.yaml rename to helm/chart/mesh/crds/smi-access.yaml index ab11de1d7..298ac0f63 100644 --- a/helm/chart/maesh/crds/smi-access.yaml +++ b/helm/chart/mesh/crds/smi-access.yaml @@ -86,4 +86,4 @@ spec: type: string namespace: description: Namespace of this source. - type: string \ No newline at end of file + type: string diff --git a/helm/chart/maesh/crds/smi-specs.yaml b/helm/chart/mesh/crds/smi-specs.yaml similarity index 99% rename from helm/chart/maesh/crds/smi-specs.yaml rename to helm/chart/mesh/crds/smi-specs.yaml index f29f32312..7f6bdc052 100644 --- a/helm/chart/maesh/crds/smi-specs.yaml +++ b/helm/chart/mesh/crds/smi-specs.yaml @@ -93,4 +93,4 @@ spec: storage: false - name: v1alpha1 served: false - storage: false \ No newline at end of file + storage: false diff --git a/helm/chart/maesh/crds/smi-split.yaml b/helm/chart/mesh/crds/smi-split.yaml similarity index 98% rename from helm/chart/maesh/crds/smi-split.yaml rename to helm/chart/mesh/crds/smi-split.yaml index 224eb6a12..b953d1998 100644 --- a/helm/chart/maesh/crds/smi-split.yaml +++ b/helm/chart/mesh/crds/smi-split.yaml @@ -68,4 +68,4 @@ spec: type: string weight: description: Traffic weight value of this backend. - type: number \ No newline at end of file + type: number diff --git a/helm/chart/maesh/templates/NOTES.txt b/helm/chart/mesh/templates/NOTES.txt similarity index 100% rename from helm/chart/maesh/templates/NOTES.txt rename to helm/chart/mesh/templates/NOTES.txt diff --git a/helm/chart/maesh/templates/_helpers.tpl b/helm/chart/mesh/templates/_helpers.tpl similarity index 56% rename from helm/chart/maesh/templates/_helpers.tpl rename to helm/chart/mesh/templates/_helpers.tpl index 1656bd309..e89d8e5cd 100644 --- a/helm/chart/maesh/templates/_helpers.tpl +++ b/helm/chart/mesh/templates/_helpers.tpl @@ -3,28 +3,28 @@ {{/* Define the Chart version Label. */}} -{{- define "maesh.chartLabel" -}} +{{- define "traefikMesh.chartLabel" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version -}} {{- end -}} {{/* -Define the templated image with tag. +Define the templated controller image with tag. */}} -{{- define "maesh.controllerImage" -}} +{{- define "traefikMesh.controllerImage" -}} {{- printf "%s:%s" .Values.controller.image.name ( .Values.controller.image.tag | default .Chart.AppVersion ) -}} {{- end -}} {{/* -Define the templated mesh image with tag. +Define the templated proxy image with tag. */}} -{{- define "maesh.meshImage" -}} - {{- printf "%s:%s" .Values.mesh.image.name ( .Values.mesh.image.tag | default "v2.3" ) -}} +{{- define "traefikMesh.proxyImage" -}} + {{- printf "%s:%s" .Values.proxy.image.name ( .Values.proxy.image.tag | default "v2.3" ) -}} {{- end -}} {{/* -Define the watchNamespaces List. +Define the controller watchNamespaces List. */}} -{{- define "maesh.controllerWatchNamespaces" -}} +{{- define "traefikMesh.controllerWatchNamespaces" -}} --watchNamespaces= {{- range $idx, $ns := .Values.controller.watchNamespaces }} {{- if $idx }},{{ end }} @@ -33,9 +33,9 @@ Define the watchNamespaces List. {{- end -}} {{/* -Define the ignoreNamespaces List. +Define the controller ignoreNamespaces List. */}} -{{- define "maesh.controllerIgnoreNamespaces" -}} +{{- define "traefikMesh.controllerIgnoreNamespaces" -}} --ignoreNamespaces= {{- range $idx, $ns := .Values.controller.ignoreNamespaces }} {{- if $idx }},{{ end }} diff --git a/helm/chart/maesh/templates/controller/controller-deployment.yaml b/helm/chart/mesh/templates/controller/controller-deployment.yaml similarity index 88% rename from helm/chart/maesh/templates/controller/controller-deployment.yaml rename to helm/chart/mesh/templates/controller/controller-deployment.yaml index 21298ca75..2401bd9d7 100644 --- a/helm/chart/maesh/templates/controller/controller-deployment.yaml +++ b/helm/chart/mesh/templates/controller/controller-deployment.yaml @@ -2,12 +2,12 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: maesh-controller + name: traefik-mesh-controller namespace: {{ .Release.Namespace }} labels: app: maesh component: controller - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: @@ -27,7 +27,7 @@ spec: prometheus.io/scrape: "true" prometheus.io/port: "4646" spec: - serviceAccountName: maesh-controller + serviceAccountName: traefik-mesh-controller securityContext: runAsNonRoot: true runAsUser: 999 @@ -48,8 +48,8 @@ spec: {{ toYaml . | indent 8 }} {{- end }} containers: - - name: maesh-controller - image: {{ include "maesh.controllerImage" . | quote }} + - name: traefik-mesh-controller + image: {{ include "traefikMesh.controllerImage" . | quote }} imagePullPolicy: {{ .Values.controller.image.pullPolicy | default "IfNotPresent" }} args: {{- if or .Values.controller.logLevel .Values.logLevel }} @@ -66,10 +66,10 @@ spec: {{- end }} - "--namespace={{ .Release.Namespace }}" {{- if .Values.controller.watchNamespaces }} - - {{ include "maesh.controllerWatchNamespaces" . | quote }} + - {{ include "traefikMesh.controllerWatchNamespaces" . | quote }} {{- end }} {{- if .Values.controller.ignoreNamespaces }} - - {{ include "maesh.controllerIgnoreNamespaces" . | quote }} + - {{ include "traefikMesh.controllerIgnoreNamespaces" . | quote }} {{- end }} {{- if .Values.limits.http }} - "--limitHTTPPort={{ .Values.limits.http }}" @@ -97,8 +97,8 @@ spec: initialDelaySeconds: 3 periodSeconds: 1 initContainers: - - name: maesh-prepare - image: {{ include "maesh.controllerImage" . | quote }} + - name: traefik-mesh-prepare + image: {{ include "traefikMesh.controllerImage" . | quote }} imagePullPolicy: {{ .Values.controller.image.pullPolicy | default "IfNotPresent"}} args: - "prepare" diff --git a/helm/chart/maesh/templates/controller/controller-pdb.yaml b/helm/chart/mesh/templates/controller/controller-pdb.yaml similarity index 80% rename from helm/chart/maesh/templates/controller/controller-pdb.yaml rename to helm/chart/mesh/templates/controller/controller-pdb.yaml index a260c8311..67f2b297a 100644 --- a/helm/chart/maesh/templates/controller/controller-pdb.yaml +++ b/helm/chart/mesh/templates/controller/controller-pdb.yaml @@ -2,12 +2,12 @@ apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: - name: maesh-controller + name: traefik-mesh-controller namespace: {{ .Release.Namespace }} labels: app: maesh component: controller - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} spec: diff --git a/helm/chart/maesh/templates/controller/controller-rbac.yaml b/helm/chart/mesh/templates/controller/controller-rbac.yaml similarity index 84% rename from helm/chart/maesh/templates/controller/controller-rbac.yaml rename to helm/chart/mesh/templates/controller/controller-rbac.yaml index bf18bca3f..5e3674283 100644 --- a/helm/chart/maesh/templates/controller/controller-rbac.yaml +++ b/helm/chart/mesh/templates/controller/controller-rbac.yaml @@ -2,12 +2,12 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: maesh-controller-role + name: traefik-mesh-controller-role namespace: {{ .Release.Namespace }} labels: app: maesh component: controller - chart: {{ include "maesh.chartLabel" . | quote}} + chart: {{ include "traefikMesh.chartLabel" . | quote}} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} rules: @@ -63,19 +63,19 @@ rules: apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: maesh-controller + name: traefik-mesh-controller namespace: {{ .Release.Namespace }} labels: app: maesh component: controller - chart: {{ include "maesh.chartLabel" . | quote}} + chart: {{ include "traefikMesh.chartLabel" . | quote}} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: maesh-controller-role + name: traefik-mesh-controller-role subjects: - kind: ServiceAccount - name: maesh-controller + name: traefik-mesh-controller namespace: {{ .Release.Namespace }} diff --git a/helm/chart/maesh/templates/controller/controller-sa.yaml b/helm/chart/mesh/templates/controller/controller-sa.yaml similarity index 74% rename from helm/chart/maesh/templates/controller/controller-sa.yaml rename to helm/chart/mesh/templates/controller/controller-sa.yaml index 4121659f9..a153bba21 100644 --- a/helm/chart/maesh/templates/controller/controller-sa.yaml +++ b/helm/chart/mesh/templates/controller/controller-sa.yaml @@ -2,12 +2,12 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: maesh-controller + name: traefik-mesh-controller namespace: {{ .Release.Namespace }} labels: app: maesh component: controller - chart: {{ include "maesh.chartLabel" . | quote}} + chart: {{ include "traefikMesh.chartLabel" . | quote}} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} automountServiceAccountToken: true diff --git a/helm/chart/maesh/templates/controller/controller-service.yaml b/helm/chart/mesh/templates/controller/controller-service.yaml similarity index 83% rename from helm/chart/maesh/templates/controller/controller-service.yaml rename to helm/chart/mesh/templates/controller/controller-service.yaml index 3ee3dde3f..1fdc4d773 100644 --- a/helm/chart/maesh/templates/controller/controller-service.yaml +++ b/helm/chart/mesh/templates/controller/controller-service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: - name: maesh-controller + name: traefik-mesh-controller namespace: {{ .Release.Namespace }} labels: app: maesh @@ -11,7 +11,6 @@ spec: type: ClusterIP ports: - port: 9000 - name: mesh-controller-api targetPort: api selector: app: maesh diff --git a/helm/chart/maesh/templates/controller/hooks/cleanup-hook.yaml b/helm/chart/mesh/templates/controller/hooks/cleanup-hook.yaml similarity index 84% rename from helm/chart/maesh/templates/controller/hooks/cleanup-hook.yaml rename to helm/chart/mesh/templates/controller/hooks/cleanup-hook.yaml index 7d8bb573f..1dc709abb 100644 --- a/helm/chart/maesh/templates/controller/hooks/cleanup-hook.yaml +++ b/helm/chart/mesh/templates/controller/hooks/cleanup-hook.yaml @@ -2,12 +2,12 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: maesh-cleanup + name: traefik-mesh-cleanup namespace: {{ .Release.Namespace }} labels: app: maesh component: cleanup - chart: {{ include "maesh.chartLabel" . | quote}} + chart: {{ include "traefikMesh.chartLabel" . | quote}} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} annotations: @@ -19,12 +19,12 @@ metadata: kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: - name: maesh-cleanup-role + name: traefik-mesh-cleanup-role namespace: {{ .Release.Namespace }} labels: app: maesh component: cleanup - chart: {{ include "maesh.chartLabel" . | quote}} + chart: {{ include "traefikMesh.chartLabel" . | quote}} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} annotations: @@ -60,12 +60,12 @@ rules: kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: - name: maesh-cleanup + name: traefik-mesh-cleanup namespace: {{ .Release.Namespace }} labels: app: maesh component: cleanup - chart: {{ include "maesh.chartLabel" . | quote}} + chart: {{ include "traefikMesh.chartLabel" . | quote}} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} annotations: @@ -75,22 +75,22 @@ metadata: roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: maesh-cleanup-role + name: traefik-mesh-cleanup-role subjects: - kind: ServiceAccount - name: maesh-cleanup + name: traefik-mesh-cleanup namespace: {{ .Release.Namespace }} --- apiVersion: batch/v1 kind: Job metadata: - name: maesh-cleanup + name: traefik-mesh-cleanup namespace: {{ .Release.Namespace }} labels: app: maesh component: cleanup - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote}} heritage: {{ .Release.Service | quote}} annotations: @@ -107,15 +107,15 @@ spec: component: cleanup release: {{ .Release.Name | quote}} spec: - serviceAccountName: maesh-cleanup + serviceAccountName: traefik-mesh-cleanup restartPolicy: Never {{- if .Values.controller.image.pullSecret }} imagePullSecrets: - name: {{ .Values.controller.image.pullSecret }} {{- end }} containers: - - name: maesh-cleanup - image: {{ include "maesh.controllerImage" . | quote }} + - name: traefik-mesh-cleanup + image: {{ include "traefikMesh.controllerImage" . | quote }} imagePullPolicy: {{ .Values.controller.image.pullPolicy | default "IfNotPresent" }} args: - "cleanup" diff --git a/helm/chart/maesh/templates/coredns/coredns-configmap.yaml b/helm/chart/mesh/templates/coredns/coredns-configmap.yaml similarity index 91% rename from helm/chart/maesh/templates/coredns/coredns-configmap.yaml rename to helm/chart/mesh/templates/coredns/coredns-configmap.yaml index cfffffd3a..7490b0b06 100644 --- a/helm/chart/maesh/templates/coredns/coredns-configmap.yaml +++ b/helm/chart/mesh/templates/coredns/coredns-configmap.yaml @@ -8,7 +8,7 @@ metadata: labels: app: maesh component: coredns - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote}} heritage: {{ .Release.Service | quote}} data: diff --git a/helm/chart/maesh/templates/coredns/coredns-deployment.yaml b/helm/chart/mesh/templates/coredns/coredns-deployment.yaml similarity index 96% rename from helm/chart/maesh/templates/coredns/coredns-deployment.yaml rename to helm/chart/mesh/templates/coredns/coredns-deployment.yaml index 84be488fc..d301753ac 100644 --- a/helm/chart/maesh/templates/coredns/coredns-deployment.yaml +++ b/helm/chart/mesh/templates/coredns/coredns-deployment.yaml @@ -8,7 +8,7 @@ metadata: labels: app: maesh component: coredns - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote}} heritage: {{ .Release.Service | quote}} spec: @@ -29,7 +29,7 @@ spec: component: coredns release: {{ .Release.Name | quote }} spec: - serviceAccountName: maesh-coredns + serviceAccountName: traefik-mesh-coredns affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: diff --git a/helm/chart/maesh/templates/coredns/coredns-rbac.yaml b/helm/chart/mesh/templates/coredns/coredns-rbac.yaml similarity index 79% rename from helm/chart/maesh/templates/coredns/coredns-rbac.yaml rename to helm/chart/mesh/templates/coredns/coredns-rbac.yaml index 766c56306..6c03def0c 100644 --- a/helm/chart/maesh/templates/coredns/coredns-rbac.yaml +++ b/helm/chart/mesh/templates/coredns/coredns-rbac.yaml @@ -6,10 +6,10 @@ metadata: labels: app: maesh component: coredns - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote}} heritage: {{ .Release.Service | quote}} - name: maesh-coredns-role + name: traefik-mesh-coredns-role namespace: {{ .Release.Namespace }} rules: - apiGroups: @@ -33,12 +33,12 @@ rules: apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: maesh-coredns + name: traefik-mesh-coredns namespace: {{ .Release.Namespace }} labels: app: maesh component: coredns - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote}} heritage: {{ .Release.Service | quote}} annotations: @@ -46,9 +46,9 @@ metadata: roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: maesh-coredns-role + name: traefik-mesh-coredns-role subjects: - kind: ServiceAccount - name: maesh-coredns + name: traefik-mesh-coredns namespace: {{ .Release.Namespace }} {{- end }} diff --git a/helm/chart/maesh/templates/coredns/coredns-sa.yaml b/helm/chart/mesh/templates/coredns/coredns-sa.yaml similarity index 74% rename from helm/chart/maesh/templates/coredns/coredns-sa.yaml rename to helm/chart/mesh/templates/coredns/coredns-sa.yaml index b6af36f4c..7d24e2d2f 100644 --- a/helm/chart/maesh/templates/coredns/coredns-sa.yaml +++ b/helm/chart/mesh/templates/coredns/coredns-sa.yaml @@ -3,12 +3,12 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: maesh-coredns + name: traefik-mesh-coredns namespace: {{ .Release.Namespace }} labels: app: maesh component: coredns - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote}} heritage: {{ .Release.Service | quote}} {{- end}} diff --git a/helm/chart/maesh/templates/coredns/coredns-service.yaml b/helm/chart/mesh/templates/coredns/coredns-service.yaml similarity index 91% rename from helm/chart/maesh/templates/coredns/coredns-service.yaml rename to helm/chart/mesh/templates/coredns/coredns-service.yaml index e0f3fb3ca..50af41dc5 100644 --- a/helm/chart/maesh/templates/coredns/coredns-service.yaml +++ b/helm/chart/mesh/templates/coredns/coredns-service.yaml @@ -8,7 +8,7 @@ metadata: labels: app: maesh component: coredns - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote}} heritage: {{ .Release.Service | quote}} annotations: diff --git a/helm/chart/maesh/templates/mesh/mesh-daemonset.yaml b/helm/chart/mesh/templates/proxy/proxy-daemonset.yaml similarity index 84% rename from helm/chart/maesh/templates/mesh/mesh-daemonset.yaml rename to helm/chart/mesh/templates/proxy/proxy-daemonset.yaml index b4099a8a9..0cbe9c7c6 100644 --- a/helm/chart/maesh/templates/mesh/mesh-daemonset.yaml +++ b/helm/chart/mesh/templates/proxy/proxy-daemonset.yaml @@ -2,15 +2,15 @@ apiVersion: apps/v1 kind: DaemonSet metadata: - name: maesh-mesh + name: traefik-mesh-proxy namespace: {{ .Release.Namespace }} labels: app: maesh component: maesh-mesh - chart: {{ include "maesh.chartLabel" . | quote }} + chart: {{ include "traefikMesh.chartLabel" . | quote }} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} - {{- with .Values.mesh.annotations }} + {{- with .Values.proxy.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} @@ -29,36 +29,36 @@ spec: annotations: prometheus.io/scrape: "true" prometheus.io/port: "8080" - {{- with .Values.mesh.podAnnotations }} + {{- with .Values.proxy.podAnnotations }} {{- toYaml . | nindent 8 }} {{- end }} spec: - serviceAccountName: maesh-mesh + serviceAccountName: traefik-mesh-proxy securityContext: runAsNonRoot: true runAsUser: 999 terminationGracePeriodSeconds: 30 - {{- if .Values.mesh.image.pullSecret }} + {{- if .Values.proxy.image.pullSecret }} imagePullSecrets: - - name: {{ .Values.mesh.image.pullSecret }} + - name: {{ .Values.proxy.image.pullSecret }} {{- end }} - {{- with .Values.mesh.nodeSelector }} + {{- with .Values.proxy.nodeSelector }} nodeSelector: {{ toYaml . | indent 8 }} {{- end }} - {{- with .Values.mesh.tolerations }} + {{- with .Values.proxy.tolerations }} tolerations: {{ toYaml . | indent 8 }} {{- end }} containers: - - name: maesh-mesh - image: {{ include "maesh.meshImage" . | quote }} - imagePullPolicy: {{ .Values.mesh.image.pullPolicy | default "IfNotPresent" }} - {{- with .Values.mesh.env }} + - name: traefik-mesh-proxy + image: {{ include "traefikMesh.proxyImage" . | quote }} + imagePullPolicy: {{ .Values.proxy.image.pullPolicy | default "IfNotPresent" }} + {{- with .Values.proxy.env }} env: {{- toYaml . | nindent 12 }} {{- end }} - {{- with .Values.mesh.envFrom }} + {{- with .Values.proxy.envFrom }} envFrom: {{- toYaml . | nindent 12 }} {{- end }} @@ -76,12 +76,12 @@ spec: {{- range $i, $port := untilStep 15000 ((add (.Values.limits.udp|int) 15000)|int) 1 }} - {{ printf "\"--entryPoints.udp-%d.address=:%d/udp\"" $port $port }} {{- end }} - - {{ printf "--providers.http.endpoint=http://maesh-controller.%s.svc.%s:9000/api/configuration/current" .Release.Namespace (default "cluster.local" .Values.clusterDomain) | quote }} - {{- if .Values.mesh.pollInterval }} - - "--providers.http.pollInterval={{ .Values.mesh.pollInterval }}" + - {{ printf "--providers.http.endpoint=http://traefik-mesh-controller.%s.svc.%s:9000/api/configuration/current" .Release.Namespace (default "cluster.local" .Values.clusterDomain) | quote }} + {{- if .Values.proxy.pollInterval }} + - "--providers.http.pollInterval={{ .Values.proxy.pollInterval }}" {{- end }} - {{- if .Values.mesh.pollTimeout }} - - "--providers.http.pollTimeout={{ .Values.mesh.pollTimeout }}" + {{- if .Values.proxy.pollTimeout }} + - "--providers.http.pollTimeout={{ .Values.proxy.pollTimeout }}" {{- end }} {{- if .Values.tracing.jaeger.enabled }} {{- if .Values.tracing.jaeger.localAgentHostPort }} @@ -161,22 +161,22 @@ spec: - "--api.dashboard=false" - "--api.insecure" - "--ping" - {{- if .Values.mesh.forwardingTimeouts }} - {{- if .Values.mesh.forwardingTimeouts.dialTimeout }} - - "--serversTransport.forwardingTimeouts.dialTimeout={{ .Values.mesh.forwardingTimeouts.dialTimeout }}" + {{- if .Values.proxy.forwardingTimeouts }} + {{- if .Values.proxy.forwardingTimeouts.dialTimeout }} + - "--serversTransport.forwardingTimeouts.dialTimeout={{ .Values.proxy.forwardingTimeouts.dialTimeout }}" {{- end }} - {{- if .Values.mesh.forwardingTimeouts.responseHeaderTimeout }} - - "--serversTransport.forwardingTimeouts.responseHeaderTimeout={{ .Values.mesh.forwardingTimeouts.responseHeaderTimeout }}" + {{- if .Values.proxy.forwardingTimeouts.responseHeaderTimeout }} + - "--serversTransport.forwardingTimeouts.responseHeaderTimeout={{ .Values.proxy.forwardingTimeouts.responseHeaderTimeout }}" {{- end }} - {{- if .Values.mesh.forwardingTimeouts.idleConnTimeout }} - - "--serversTransport.forwardingTimeouts.idleConnTimeout={{ .Values.mesh.forwardingTimeouts.idleConnTimeout }}" + {{- if .Values.proxy.forwardingTimeouts.idleConnTimeout }} + - "--serversTransport.forwardingTimeouts.idleConnTimeout={{ .Values.proxy.forwardingTimeouts.idleConnTimeout }}" {{- end }} {{- end }} - {{- if or .Values.mesh.logLevel .Values.logLevel }} - - "--log.level={{ or .Values.mesh.logLevel .Values.logLevel }}" + {{- if or .Values.proxy.logLevel .Values.logLevel }} + - "--log.level={{ or .Values.proxy.logLevel .Values.logLevel }}" {{- end }} - {{- if or .Values.mesh.logFormat .Values.logFormat }} - - "--log.format={{ or .Values.mesh.logFormat .Values.logFormat }}" + {{- if or .Values.proxy.logFormat .Values.logFormat }} + - "--log.format={{ or .Values.proxy.logFormat .Values.logFormat }}" {{- end }} {{- if .Values.metrics.prometheus.enabled }} - "--metrics.prometheus=true" @@ -253,7 +253,7 @@ spec: - "--metrics.statsd.prefix={{ .Values.metrics.statsd.prefix }}" {{- end }} {{- end }} - {{- with .Values.mesh.additionalArguments }} + {{- with .Values.proxy.additionalArguments }} {{- range . }} - {{ . | quote }} {{- end }} @@ -278,8 +278,8 @@ spec: periodSeconds: 1 resources: requests: - memory: {{ .Values.mesh.resources.request.mem }} - cpu: {{ .Values.mesh.resources.request.cpu }} + memory: {{ .Values.proxy.resources.request.mem }} + cpu: {{ .Values.proxy.resources.request.cpu }} limits: - memory: {{ .Values.mesh.resources.limit.mem }} - cpu: {{ .Values.mesh.resources.limit.cpu }} + memory: {{ .Values.proxy.resources.limit.mem }} + cpu: {{ .Values.proxy.resources.limit.cpu }} diff --git a/helm/chart/maesh/templates/mesh/mesh-sa.yaml b/helm/chart/mesh/templates/proxy/proxy-sa.yaml similarity index 75% rename from helm/chart/maesh/templates/mesh/mesh-sa.yaml rename to helm/chart/mesh/templates/proxy/proxy-sa.yaml index 8d33544b6..45f7a87ee 100644 --- a/helm/chart/maesh/templates/mesh/mesh-sa.yaml +++ b/helm/chart/mesh/templates/proxy/proxy-sa.yaml @@ -2,12 +2,12 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: maesh-mesh + name: traefik-mesh-proxy namespace: {{ .Release.Namespace }} labels: app: maesh component: maesh-mesh - chart: {{ include "maesh.chartLabel" . | quote}} + chart: {{ include "traefikMesh.chartLabel" . | quote}} release: {{ .Release.Name | quote }} heritage: {{ .Release.Service | quote }} automountServiceAccountToken: false diff --git a/helm/chart/maesh/values.yaml b/helm/chart/mesh/values.yaml similarity index 98% rename from helm/chart/maesh/values.yaml rename to helm/chart/mesh/values.yaml index 1bbe9d881..3e33e6c38 100644 --- a/helm/chart/maesh/values.yaml +++ b/helm/chart/mesh/values.yaml @@ -1,4 +1,4 @@ -# Default values for Maesh. +# Default values for Traefik Mesh. # acl: true @@ -18,7 +18,7 @@ limits: controller: image: - name: containous/maesh + name: traefik/mesh # (Optional) # pullPolicy: IfNotPresent # (Optional) @@ -48,7 +48,7 @@ controller: tolerations: [] affinity: {} -mesh: +proxy: image: name: traefik # (Optional) diff --git a/integration/acl_disabled_test.go b/integration/acl_disabled_test.go index 110e34411..3c5a41b6b 100644 --- a/integration/acl_disabled_test.go +++ b/integration/acl_disabled_test.go @@ -4,11 +4,11 @@ import ( "net/http" "time" - "github.com/containous/maesh/integration/k3d" - "github.com/containous/maesh/integration/tool" - "github.com/containous/maesh/integration/try" "github.com/go-check/check" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/integration/k3d" + "github.com/traefik/mesh/integration/tool" + "github.com/traefik/mesh/integration/try" checker "github.com/vdemeester/shakers" ) @@ -23,11 +23,11 @@ func (s *ACLDisabledSuite) SetUpSuite(c *check.C) { var err error requiredImages := []k3d.DockerImage{ - {Name: "containous/maesh:latest", Local: true}, + {Name: "traefik/mesh:latest", Local: true}, {Name: "traefik:v2.3"}, - {Name: "containous/whoami:v1.0.1"}, - {Name: "containous/whoamitcp:v0.0.2"}, - {Name: "containous/whoamiudp:v0.0.1"}, + {Name: "traefik/whoami:latest"}, + {Name: "traefik/whoamitcp:latest"}, + {Name: "traefik/whoamiudp:latest"}, {Name: "giantswarm/tiny-tools:3.9"}, } @@ -38,17 +38,17 @@ func (s *ACLDisabledSuite) SetUpSuite(c *check.C) { ) c.Assert(err, checker.IsNil) - c.Assert(s.cluster.CreateNamespace(s.logger, maeshNamespace), checker.IsNil) + c.Assert(s.cluster.CreateNamespace(s.logger, traefikMeshNamespace), checker.IsNil) c.Assert(s.cluster.CreateNamespace(s.logger, testNamespace), checker.IsNil) c.Assert(s.cluster.Apply(s.logger, smiCRDs), checker.IsNil) c.Assert(s.cluster.Apply(s.logger, "testdata/tool/tool.yaml"), checker.IsNil) - c.Assert(s.cluster.Apply(s.logger, "testdata/maesh/controller-acl-disabled.yaml"), checker.IsNil) - c.Assert(s.cluster.Apply(s.logger, "testdata/maesh/proxy.yaml"), checker.IsNil) + c.Assert(s.cluster.Apply(s.logger, "testdata/traefik-mesh/controller-acl-disabled.yaml"), checker.IsNil) + c.Assert(s.cluster.Apply(s.logger, "testdata/traefik-mesh/proxy.yaml"), checker.IsNil) c.Assert(s.cluster.WaitReadyPod("tool", testNamespace, 60*time.Second), checker.IsNil) - c.Assert(s.cluster.WaitReadyDeployment("maesh-controller", maeshNamespace, 60*time.Second), checker.IsNil) - c.Assert(s.cluster.WaitReadyDaemonSet("maesh-mesh", maeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDeployment("traefik-mesh-controller", traefikMeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDaemonSet("traefik-mesh-proxy", traefikMeshNamespace, 60*time.Second), checker.IsNil) s.tool = tool.New(s.logger, "tool", testNamespace) } @@ -65,7 +65,7 @@ func (s *ACLDisabledSuite) TestHTTPService(c *check.C) { c.Assert(s.cluster.Apply(s.logger, "testdata/acl_disabled/http"), checker.IsNil) defer s.cluster.Delete(s.logger, "testdata/acl_disabled/http") - s.assertHTTPServiceReachable(c, "server-http.test.maesh:8080", "server-http", 60*time.Second) + s.assertHTTPServiceReachable(c, "server-http.test.traefik.mesh:8080", "server-http", 60*time.Second) } // TestTCPService deploys a TCP service "server" with one Pod called "server" and asserts this service is @@ -74,7 +74,7 @@ func (s *ACLDisabledSuite) TestTCPService(c *check.C) { c.Assert(s.cluster.Apply(s.logger, "testdata/acl_disabled/tcp"), checker.IsNil) defer s.cluster.Delete(s.logger, "testdata/acl_disabled/tcp") - s.assertTCPServiceReachable(c, "server-tcp.test.maesh", 8080, "server-tcp", 60*time.Second) + s.assertTCPServiceReachable(c, "server-tcp.test.traefik.mesh", 8080, "server-tcp", 60*time.Second) } // TestUDPService deploys a UDP service "server" with one Pod called "server" and asserts this service is @@ -83,7 +83,7 @@ func (s *ACLDisabledSuite) TestUDPervice(c *check.C) { c.Assert(s.cluster.Apply(s.logger, "testdata/acl_disabled/udp"), checker.IsNil) defer s.cluster.Delete(s.logger, "testdata/acl_disabled/udp") - s.assertUDPServiceReachable(c, "server-udp.test.maesh", 8080, "server-udp", 60*time.Second) + s.assertUDPServiceReachable(c, "server-udp.test.traefik.mesh", 8080, "server-udp", 60*time.Second) } // TestSplitTraffic deploys an HTTP service "server" and a TrafficSplit attached to it configured to distribute equally @@ -93,8 +93,7 @@ func (s *ACLDisabledSuite) TestSplitTraffic(c *check.C) { c.Assert(s.cluster.Apply(s.logger, "testdata/acl_disabled/traffic-split"), checker.IsNil) defer s.cluster.Delete(s.logger, "testdata/acl_disabled/traffic-split") - s.assertHTTPServiceReachable(c, "server-split.test.maesh:8080", "server-v1", 60*time.Second) - s.assertHTTPServiceReachable(c, "server-split.test.maesh:8080", "server-v2", 30*time.Second) + s.assertHTTPServiceReachable(c, "server-split.test.traefik.mesh:8080", "server-v1", 60*time.Second) } func (s *ACLDisabledSuite) assertHTTPServiceReachable(c *check.C, url, expectedHostname string, timeout time.Duration) { diff --git a/integration/acl_enabled_test.go b/integration/acl_enabled_test.go index d0d4f0046..2bb87ace8 100644 --- a/integration/acl_enabled_test.go +++ b/integration/acl_enabled_test.go @@ -4,11 +4,11 @@ import ( "net/http" "time" - "github.com/containous/maesh/integration/k3d" - "github.com/containous/maesh/integration/tool" - "github.com/containous/maesh/integration/try" "github.com/go-check/check" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/integration/k3d" + "github.com/traefik/mesh/integration/tool" + "github.com/traefik/mesh/integration/try" checker "github.com/vdemeester/shakers" ) @@ -24,9 +24,9 @@ func (s *ACLEnabledSuite) SetUpSuite(c *check.C) { var err error requiredImages := []k3d.DockerImage{ - {Name: "containous/maesh:latest", Local: true}, + {Name: "traefik/mesh:latest", Local: true}, {Name: "traefik:v2.3"}, - {Name: "containous/whoami:v1.0.1"}, + {Name: "traefik/whoami:latest"}, {Name: "giantswarm/tiny-tools:3.9"}, } @@ -37,19 +37,19 @@ func (s *ACLEnabledSuite) SetUpSuite(c *check.C) { ) c.Assert(err, checker.IsNil) - c.Assert(s.cluster.CreateNamespace(s.logger, maeshNamespace), checker.IsNil) + c.Assert(s.cluster.CreateNamespace(s.logger, traefikMeshNamespace), checker.IsNil) c.Assert(s.cluster.CreateNamespace(s.logger, testNamespace), checker.IsNil) c.Assert(s.cluster.Apply(s.logger, smiCRDs), checker.IsNil) c.Assert(s.cluster.Apply(s.logger, "testdata/tool/tool-authorized.yaml"), checker.IsNil) c.Assert(s.cluster.Apply(s.logger, "testdata/tool/tool-forbidden.yaml"), checker.IsNil) - c.Assert(s.cluster.Apply(s.logger, "testdata/maesh/controller-acl-enabled.yaml"), checker.IsNil) - c.Assert(s.cluster.Apply(s.logger, "testdata/maesh/proxy.yaml"), checker.IsNil) + c.Assert(s.cluster.Apply(s.logger, "testdata/traefik-mesh/controller-acl-enabled.yaml"), checker.IsNil) + c.Assert(s.cluster.Apply(s.logger, "testdata/traefik-mesh/proxy.yaml"), checker.IsNil) c.Assert(s.cluster.WaitReadyPod("tool-authorized", testNamespace, 60*time.Second), checker.IsNil) c.Assert(s.cluster.WaitReadyPod("tool-forbidden", testNamespace, 60*time.Second), checker.IsNil) - c.Assert(s.cluster.WaitReadyDeployment("maesh-controller", maeshNamespace, 60*time.Second), checker.IsNil) - c.Assert(s.cluster.WaitReadyDaemonSet("maesh-mesh", maeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDeployment("traefik-mesh-controller", traefikMeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDaemonSet("traefik-mesh-proxy", traefikMeshNamespace, 60*time.Second), checker.IsNil) s.toolAuthorized = tool.New(s.logger, "tool-authorized", testNamespace) s.toolForbidden = tool.New(s.logger, "tool-forbidden", testNamespace) @@ -66,16 +66,16 @@ func (s *ACLEnabledSuite) TestHTTPServiceWithTrafficTarget(c *check.C) { defer s.cluster.Delete(s.logger, "testdata/acl_enabled/http") s.logger.Infof("Asserting TrafficTarget with no HTTPRouteGroup are enforced") - s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http.test.maesh:8080", nil, http.StatusOK) - s.assertHTTPServiceStatus(c, s.toolForbidden, "server-http.test.maesh:8080", nil, http.StatusForbidden) + s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http.test.traefik.mesh:8080", nil, http.StatusOK) + s.assertHTTPServiceStatus(c, s.toolForbidden, "server-http.test.traefik.mesh:8080", nil, http.StatusForbidden) s.logger.Infof("Asserting HTTPRouteGroup path filtering is enforced") - s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-api.test.maesh:8080/api", nil, http.StatusOK) - s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-api.test.maesh:8080", nil, http.StatusForbidden) + s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-api.test.traefik.mesh:8080/api", nil, http.StatusOK) + s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-api.test.traefik.mesh:8080", nil, http.StatusForbidden) s.logger.Infof("Asserting HTTPRouteGroup header filtering is enforced") - s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-header.test.maesh:8080", map[string]string{"Authorized": "true"}, http.StatusOK) - s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-header.test.maesh:8080", map[string]string{"Authorized": "false"}, http.StatusForbidden) + s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-header.test.traefik.mesh:8080", map[string]string{"Authorized": "true"}, http.StatusOK) + s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-header.test.traefik.mesh:8080", map[string]string{"Authorized": "false"}, http.StatusForbidden) } func (s *ACLEnabledSuite) TestHTTPServiceWithTrafficSplit(c *check.C) { @@ -83,8 +83,8 @@ func (s *ACLEnabledSuite) TestHTTPServiceWithTrafficSplit(c *check.C) { defer s.cluster.Delete(s.logger, "testdata/acl_enabled/traffic-split") s.logger.Info("Asserting TrafficTarget is enforced") - s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-split.test.maesh:8080", nil, http.StatusOK) - s.assertHTTPServiceStatus(c, s.toolForbidden, "server-http-split.test.maesh:8080", nil, http.StatusForbidden) + s.assertHTTPServiceStatus(c, s.toolAuthorized, "server-http-split.test.traefik.mesh:8080", nil, http.StatusOK) + s.assertHTTPServiceStatus(c, s.toolForbidden, "server-http-split.test.traefik.mesh:8080", nil, http.StatusForbidden) } func (s *ACLEnabledSuite) assertHTTPServiceStatus(c *check.C, t *tool.Tool, url string, headers map[string]string, expectedStatus int) { diff --git a/integration/coredns_test.go b/integration/coredns_test.go index 243d91de4..0fdca242c 100644 --- a/integration/coredns_test.go +++ b/integration/coredns_test.go @@ -5,11 +5,11 @@ import ( "fmt" "time" - "github.com/containous/maesh/integration/k3d" - "github.com/containous/maesh/integration/tool" - "github.com/containous/maesh/integration/try" "github.com/go-check/check" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/integration/k3d" + "github.com/traefik/mesh/integration/tool" + "github.com/traefik/mesh/integration/try" checker "github.com/vdemeester/shakers" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/util/retry" @@ -26,7 +26,7 @@ func (s *CoreDNSSuite) SetUpSuite(c *check.C) { var err error requiredImages := []k3d.DockerImage{ - {Name: "containous/whoami:v1.0.1"}, + {Name: "traefik/whoami:latest"}, {Name: "coredns/coredns:1.3.1"}, {Name: "coredns/coredns:1.4.0"}, {Name: "coredns/coredns:1.5.2"}, @@ -42,7 +42,7 @@ func (s *CoreDNSSuite) SetUpSuite(c *check.C) { ) c.Assert(err, checker.IsNil) - c.Assert(s.cluster.CreateNamespace(s.logger, maeshNamespace), checker.IsNil) + c.Assert(s.cluster.CreateNamespace(s.logger, traefikMeshNamespace), checker.IsNil) c.Assert(s.cluster.CreateNamespace(s.logger, testNamespace), checker.IsNil) c.Assert(s.cluster.Apply(s.logger, smiCRDs), checker.IsNil) @@ -87,13 +87,18 @@ func (s *CoreDNSSuite) testCoreDNSVersion(c *check.C, version string) { c.Assert(s.setCoreDNSVersion(version), checker.IsNil) c.Assert(s.cluster.WaitReadyDeployment("coredns", metav1.NamespaceSystem, 60*time.Second), checker.IsNil) - c.Assert(maeshPrepare(), checker.IsNil) + c.Assert(traefikMeshPrepare(), checker.IsNil) c.Assert(s.cluster.WaitReadyDeployment("coredns", metav1.NamespaceSystem, 60*time.Second), checker.IsNil) err := try.Retry(func() error { return s.tool.Dig("whoami.whoami.maesh") }, 30*time.Second) c.Assert(err, checker.IsNil) + + err = try.Retry(func() error { + return s.tool.Dig("whoami.whoami.traefik.mesh") + }, 30*time.Second) + c.Assert(err, checker.IsNil) } func (s *CoreDNSSuite) setCoreDNSVersion(version string) error { diff --git a/integration/helm_test.go b/integration/helm_test.go index ecc0b5500..cb56b57dc 100644 --- a/integration/helm_test.go +++ b/integration/helm_test.go @@ -6,9 +6,9 @@ import ( "strings" "time" - "github.com/containous/maesh/integration/k3d" "github.com/go-check/check" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/integration/k3d" checker "github.com/vdemeester/shakers" ) @@ -22,7 +22,7 @@ func (s *HelmSuite) SetUpSuite(c *check.C) { var err error requiredImages := []k3d.DockerImage{ - {Name: "containous/maesh:latest", Local: true}, + {Name: "traefik/mesh:latest", Local: true}, {Name: "traefik:v2.3"}, } @@ -33,7 +33,7 @@ func (s *HelmSuite) SetUpSuite(c *check.C) { ) c.Assert(err, checker.IsNil) - c.Assert(s.cluster.CreateNamespace(s.logger, maeshNamespace), checker.IsNil) + c.Assert(s.cluster.CreateNamespace(s.logger, traefikMeshNamespace), checker.IsNil) } func (s *HelmSuite) TearDownSuite(c *check.C) { @@ -43,36 +43,36 @@ func (s *HelmSuite) TearDownSuite(c *check.C) { } func (s *HelmSuite) TestACLDisabled(c *check.C) { - s.installHelmMaesh(c, false, false) - defer s.uninstallHelmMaesh(c) + s.installHelmTraefikMesh(c, false, false) + defer s.uninstallHelmTraefikMesh(c) - c.Assert(s.cluster.WaitReadyDeployment("maesh-controller", maeshNamespace, 60*time.Second), checker.IsNil) - c.Assert(s.cluster.WaitReadyDaemonSet("maesh-mesh", maeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDeployment("traefik-mesh-controller", traefikMeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDaemonSet("traefik-mesh-proxy", traefikMeshNamespace, 60*time.Second), checker.IsNil) } func (s *HelmSuite) TestACLEnabled(c *check.C) { - s.installHelmMaesh(c, true, false) - defer s.uninstallHelmMaesh(c) + s.installHelmTraefikMesh(c, true, false) + defer s.uninstallHelmTraefikMesh(c) - c.Assert(s.cluster.WaitReadyDeployment("maesh-controller", maeshNamespace, 60*time.Second), checker.IsNil) - c.Assert(s.cluster.WaitReadyDaemonSet("maesh-mesh", maeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDeployment("traefik-mesh-controller", traefikMeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDaemonSet("traefik-mesh-proxy", traefikMeshNamespace, 60*time.Second), checker.IsNil) } func (s *HelmSuite) TestKubeDNSEnabled(c *check.C) { - s.installHelmMaesh(c, false, true) - defer s.uninstallHelmMaesh(c) + s.installHelmTraefikMesh(c, false, true) + defer s.uninstallHelmTraefikMesh(c) - c.Assert(s.cluster.WaitReadyDeployment("maesh-controller", maeshNamespace, 60*time.Second), checker.IsNil) - c.Assert(s.cluster.WaitReadyDaemonSet("maesh-mesh", maeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDeployment("traefik-mesh-controller", traefikMeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDaemonSet("traefik-mesh-proxy", traefikMeshNamespace, 60*time.Second), checker.IsNil) } -func (s *HelmSuite) installHelmMaesh(c *check.C, acl bool, kubeDNS bool) { - s.logger.Info("Installing Maesh via helm...") +func (s *HelmSuite) installHelmTraefikMesh(c *check.C, acl bool, kubeDNS bool) { + s.logger.Info("Installing Traefik Mesh via helm...") args := []string{ - "install", "powpow", "../helm/chart/maesh", - "--values", "testdata/maesh/values.yaml", - "--namespace", maeshNamespace, + "install", "powpow", "../helm/chart/mesh", + "--values", "testdata/traefik-mesh/values.yaml", + "--namespace", traefikMeshNamespace, } if kubeDNS { @@ -93,12 +93,12 @@ func (s *HelmSuite) installHelmMaesh(c *check.C, acl bool, kubeDNS bool) { } } -func (s *HelmSuite) uninstallHelmMaesh(c *check.C) { - s.logger.Info("Uninstalling Maesh via helm...") +func (s *HelmSuite) uninstallHelmTraefikMesh(c *check.C) { + s.logger.Info("Uninstalling Traefik Mesh via helm...") args := []string{ "uninstall", "powpow", - "--namespace", maeshNamespace, + "--namespace", traefikMeshNamespace, } cmd := exec.Command("helm", args...) diff --git a/integration/integration_test.go b/integration/integration_test.go index e3149d9aa..4e09aabd4 100644 --- a/integration/integration_test.go +++ b/integration/integration_test.go @@ -13,14 +13,14 @@ import ( ) var ( - integration = flag.Bool("integration", false, "run integration tests") - debug = flag.Bool("debug", false, "debug log level") - masterURL = "https://localhost:8443" - k3dClusterName = "maesh-integration" - maeshNamespace = "maesh" - maeshBinary = "../dist/maesh" - smiCRDs = "../helm/chart/maesh/crds/" - testNamespace = "test" + integration = flag.Bool("integration", false, "run integration tests") + debug = flag.Bool("debug", false, "debug log level") + masterURL = "https://localhost:8443" + k3dClusterName = "traefik-mesh-integration" + traefikMeshNamespace = "traefik-mesh" + traefikMeshBinary = "../dist/traefik-mesh" + smiCRDs = "../helm/chart/mesh/crds/" + testNamespace = "test" ) func Test(t *testing.T) { @@ -42,22 +42,22 @@ func Test(t *testing.T) { check.TestingT(t) } -func maeshPrepare() error { +func traefikMeshPrepare() error { args := []string{ "prepare", "--masterurl=" + masterURL, "--kubeconfig=" + os.Getenv("KUBECONFIG"), "--loglevel=debug", "--clusterdomain=cluster.local", - "--namespace=" + maeshNamespace, + "--namespace=" + traefikMeshNamespace, } - cmd := exec.Command(maeshBinary, args...) + cmd := exec.Command(traefikMeshBinary, args...) cmd.Env = os.Environ() output, err := cmd.CombinedOutput() if err != nil { - return fmt.Errorf("maesh prepare has failed - %s: %w", string(output), err) + return fmt.Errorf("traefik mesh prepare has failed - %s: %w", string(output), err) } return nil diff --git a/integration/k3d/k3d.go b/integration/k3d/k3d.go index 50bc40fc0..f76192ac8 100644 --- a/integration/k3d/k3d.go +++ b/integration/k3d/k3d.go @@ -10,9 +10,9 @@ import ( "strings" "time" - "github.com/containous/maesh/integration/try" - "github.com/containous/maesh/pkg/k8s" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/integration/try" + "github.com/traefik/mesh/pkg/k8s" corev1 "k8s.io/api/core/v1" kubeerror "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/integration/kubedns_test.go b/integration/kubedns_test.go index 482d7ba60..58731f6fb 100644 --- a/integration/kubedns_test.go +++ b/integration/kubedns_test.go @@ -3,11 +3,11 @@ package integration import ( "time" - "github.com/containous/maesh/integration/k3d" - "github.com/containous/maesh/integration/tool" - "github.com/containous/maesh/integration/try" "github.com/go-check/check" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/integration/k3d" + "github.com/traefik/mesh/integration/tool" + "github.com/traefik/mesh/integration/try" checker "github.com/vdemeester/shakers" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -23,7 +23,7 @@ func (s *KubeDNSSuite) SetUpSuite(c *check.C) { var err error requiredImages := []k3d.DockerImage{ - {Name: "containous/whoami:v1.0.1"}, + {Name: "traefik/whoami:latest"}, {Name: "coredns/coredns:1.6.3"}, {Name: "giantswarm/tiny-tools:3.9"}, {Name: "gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.7"}, @@ -39,7 +39,7 @@ func (s *KubeDNSSuite) SetUpSuite(c *check.C) { ) c.Assert(err, checker.IsNil) - c.Assert(s.cluster.CreateNamespace(s.logger, maeshNamespace), checker.IsNil) + c.Assert(s.cluster.CreateNamespace(s.logger, traefikMeshNamespace), checker.IsNil) c.Assert(s.cluster.CreateNamespace(s.logger, testNamespace), checker.IsNil) c.Assert(s.cluster.Apply(s.logger, smiCRDs), checker.IsNil) @@ -49,7 +49,7 @@ func (s *KubeDNSSuite) SetUpSuite(c *check.C) { c.Assert(s.cluster.WaitReadyPod("tool", testNamespace, 60*time.Second), checker.IsNil) c.Assert(s.cluster.WaitReadyDeployment("kube-dns", metav1.NamespaceSystem, 60*time.Second), checker.IsNil) - c.Assert(s.cluster.WaitReadyDeployment("coredns", maeshNamespace, 60*time.Second), checker.IsNil) + c.Assert(s.cluster.WaitReadyDeployment("coredns", traefikMeshNamespace, 60*time.Second), checker.IsNil) s.tool = tool.New(s.logger, "tool", testNamespace) } @@ -63,7 +63,7 @@ func (s *KubeDNSSuite) TearDownSuite(c *check.C) { func (s *KubeDNSSuite) TestKubeDNSDig(c *check.C) { s.logger.Info("Asserting KubeDNS has been patched successfully and can be dug") - c.Assert(maeshPrepare(), checker.IsNil) + c.Assert(traefikMeshPrepare(), checker.IsNil) // Wait for kubeDNS, as the pods will be restarted by prepare. c.Assert(s.cluster.WaitReadyDeployment("kube-dns", metav1.NamespaceSystem, 60*time.Second), checker.IsNil) @@ -72,4 +72,9 @@ func (s *KubeDNSSuite) TestKubeDNSDig(c *check.C) { return s.tool.Dig("whoami.whoami.maesh") }, 60*time.Second) c.Assert(err, checker.IsNil) + + err = try.Retry(func() error { + return s.tool.Dig("whoami.whoami.traefik.mesh") + }, 60*time.Second) + c.Assert(err, checker.IsNil) } diff --git a/integration/testdata/acl_disabled/http/1.server.yaml b/integration/testdata/acl_disabled/http/1.server.yaml index 4f1a98378..612f59097 100644 --- a/integration/testdata/acl_disabled/http/1.server.yaml +++ b/integration/testdata/acl_disabled/http/1.server.yaml @@ -9,7 +9,7 @@ metadata: spec: containers: - name: server-http - image: containous/whoami:v1.0.1 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: @@ -32,4 +32,4 @@ spec: name: server-http targetPort: 80 selector: - app: server-http \ No newline at end of file + app: server-http diff --git a/integration/testdata/acl_disabled/tcp/1.server.yaml b/integration/testdata/acl_disabled/tcp/1.server.yaml index d167494a9..62ff5c21c 100644 --- a/integration/testdata/acl_disabled/tcp/1.server.yaml +++ b/integration/testdata/acl_disabled/tcp/1.server.yaml @@ -9,7 +9,7 @@ metadata: spec: containers: - name: server-tcp - image: containous/whoamitcp:v0.0.2 + image: traefik/whoamitcp:latest imagePullPolicy: IfNotPresent readinessProbe: tcpSocket: @@ -26,7 +26,7 @@ metadata: app: server-tcp plop: cool annotations: - maesh.containo.us/traffic-type: tcp + mesh.traefik.io/traffic-type: tcp spec: type: ClusterIP ports: diff --git a/integration/testdata/acl_disabled/traffic-split/2.server-v1.yaml b/integration/testdata/acl_disabled/traffic-split/2.server-v1.yaml index c097646ca..cecdcea5e 100644 --- a/integration/testdata/acl_disabled/traffic-split/2.server-v1.yaml +++ b/integration/testdata/acl_disabled/traffic-split/2.server-v1.yaml @@ -9,7 +9,7 @@ metadata: spec: containers: - name: server-v1 - image: containous/whoami:v1.0.1 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: diff --git a/integration/testdata/acl_disabled/traffic-split/3.server-v2.yaml b/integration/testdata/acl_disabled/traffic-split/3.server-v2.yaml index f4c1b5f30..1f2ab4ecc 100644 --- a/integration/testdata/acl_disabled/traffic-split/3.server-v2.yaml +++ b/integration/testdata/acl_disabled/traffic-split/3.server-v2.yaml @@ -9,7 +9,7 @@ metadata: spec: containers: - name: server-v2 - image: containous/whoami:v1.0.1 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: diff --git a/integration/testdata/acl_disabled/udp/1.server.yaml b/integration/testdata/acl_disabled/udp/1.server.yaml index fbdce4e40..869ea1ded 100644 --- a/integration/testdata/acl_disabled/udp/1.server.yaml +++ b/integration/testdata/acl_disabled/udp/1.server.yaml @@ -9,7 +9,7 @@ metadata: spec: containers: - name: server-udp - image: containous/whoamiudp:v0.0.1 + image: traefik/whoamiudp:latest imagePullPolicy: IfNotPresent ports: - name: udp @@ -25,7 +25,7 @@ metadata: app: server-udp plop: cool annotations: - maesh.containo.us/traffic-type: udp + mesh.traefik.io/traffic-type: udp spec: type: ClusterIP ports: diff --git a/integration/testdata/acl_enabled/http/1.server.yaml b/integration/testdata/acl_enabled/http/1.server.yaml index c45906241..33fdb7079 100644 --- a/integration/testdata/acl_enabled/http/1.server.yaml +++ b/integration/testdata/acl_enabled/http/1.server.yaml @@ -10,7 +10,7 @@ spec: serviceAccountName: server containers: - name: server-http - image: containous/whoami:v1.0.1 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: @@ -33,4 +33,4 @@ spec: name: server-http targetPort: 80 selector: - app: server-http \ No newline at end of file + app: server-http diff --git a/integration/testdata/acl_enabled/http/3.server-api.yaml b/integration/testdata/acl_enabled/http/3.server-api.yaml index b5a9a54ad..c6e2b5e63 100644 --- a/integration/testdata/acl_enabled/http/3.server-api.yaml +++ b/integration/testdata/acl_enabled/http/3.server-api.yaml @@ -10,7 +10,7 @@ spec: serviceAccountName: server-api containers: - name: server-http-api - image: containous/whoami:v1.0.1 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: @@ -33,4 +33,4 @@ spec: name: server-http-api targetPort: 80 selector: - app: server-http-api \ No newline at end of file + app: server-http-api diff --git a/integration/testdata/acl_enabled/http/4.server-header.yaml b/integration/testdata/acl_enabled/http/4.server-header.yaml index 53272e8b4..8294560ea 100644 --- a/integration/testdata/acl_enabled/http/4.server-header.yaml +++ b/integration/testdata/acl_enabled/http/4.server-header.yaml @@ -10,7 +10,7 @@ spec: serviceAccountName: server-header containers: - name: server-http-header - image: containous/whoami:v1.0.1 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: @@ -33,4 +33,4 @@ spec: name: server-http-header targetPort: 80 selector: - app: server-http-header \ No newline at end of file + app: server-http-header diff --git a/integration/testdata/acl_enabled/traffic-split/1.server-split.yaml b/integration/testdata/acl_enabled/traffic-split/1.server-split.yaml index 03189dc29..b412fe7da 100644 --- a/integration/testdata/acl_enabled/traffic-split/1.server-split.yaml +++ b/integration/testdata/acl_enabled/traffic-split/1.server-split.yaml @@ -26,7 +26,7 @@ spec: serviceAccountName: server-split containers: - name: server-http-split-v1 - image: containous/whoami:v1.0.1 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: @@ -63,7 +63,7 @@ spec: serviceAccountName: server-split containers: - name: server-http-split-v2 - image: containous/whoami:v1.0.1 + image: traefik/whoami:latest imagePullPolicy: IfNotPresent readinessProbe: httpGet: @@ -116,4 +116,4 @@ spec: sources: - kind: ServiceAccount name: tool-authorized - namespace: test \ No newline at end of file + namespace: test diff --git a/integration/testdata/coredns/whoami-shadow-service.yaml b/integration/testdata/coredns/whoami-shadow-service.yaml index 3451259d6..9544f39ed 100644 --- a/integration/testdata/coredns/whoami-shadow-service.yaml +++ b/integration/testdata/coredns/whoami-shadow-service.yaml @@ -2,8 +2,8 @@ apiVersion: v1 kind: Service metadata: - name: maesh-whoami-6d61657368-whoami - namespace: maesh + name: traefik-mesh-whoami-6d61657368-whoami + namespace: traefik-mesh labels: app: maesh type: shadow @@ -14,4 +14,4 @@ spec: name: whoami targetPort: 80 selector: - app: maesh-mesh \ No newline at end of file + app: traefik-mesh-proxy diff --git a/integration/testdata/kubedns/coredns.yaml b/integration/testdata/kubedns/coredns.yaml index ecc1bbd05..d54b15cc7 100644 --- a/integration/testdata/kubedns/coredns.yaml +++ b/integration/testdata/kubedns/coredns.yaml @@ -3,7 +3,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: coredns - namespace: maesh + namespace: traefik-mesh --- apiVersion: rbac.authorization.k8s.io/v1beta1 @@ -46,13 +46,13 @@ roleRef: subjects: - kind: ServiceAccount name: coredns - namespace: maesh + namespace: traefik-mesh --- apiVersion: v1 kind: ConfigMap metadata: name: coredns - namespace: maesh + namespace: traefik-mesh data: Corefile: | .:53 { @@ -76,7 +76,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: coredns - namespace: maesh + namespace: traefik-mesh labels: k8s-app: coredns kubernetes.io/name: "CoreDNS" @@ -167,7 +167,7 @@ apiVersion: v1 kind: Service metadata: name: coredns - namespace: maesh + namespace: traefik-mesh annotations: prometheus.io/port: "9153" prometheus.io/scrape: "true" diff --git a/integration/testdata/maesh/controller-acl-disabled.yaml b/integration/testdata/traefik-mesh/controller-acl-disabled.yaml similarity index 76% rename from integration/testdata/maesh/controller-acl-disabled.yaml rename to integration/testdata/traefik-mesh/controller-acl-disabled.yaml index 8fb5fd9cd..5bddab682 100644 --- a/integration/testdata/maesh/controller-acl-disabled.yaml +++ b/integration/testdata/traefik-mesh/controller-acl-disabled.yaml @@ -2,8 +2,8 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh labels: app: maesh component: controller @@ -12,8 +12,8 @@ metadata: kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: - name: maesh-controller-role - namespace: maesh + name: traefik-mesh-controller-role + namespace: traefik-mesh labels: app: maesh component: controller @@ -26,13 +26,6 @@ rules: verbs: - list - watch - - apiGroups: - - "" - resources: - - namespaces - verbs: - - get - - create - apiGroups: - "" resources: @@ -41,8 +34,6 @@ rules: - get - create - update - - list - - watch - apiGroups: - "" resources: @@ -61,7 +52,6 @@ rules: verbs: - get - update - - create - apiGroups: - access.smi-spec.io - specs.smi-spec.io @@ -80,26 +70,26 @@ rules: kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh labels: app: maesh component: controller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: maesh-controller-role + name: traefik-mesh-controller-role subjects: - kind: ServiceAccount - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh --- apiVersion: apps/v1 kind: Deployment metadata: - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh labels: app: maesh component: controller @@ -115,16 +105,15 @@ spec: app: maesh component: controller spec: - serviceAccountName: maesh-controller - automountServiceAccountToken: true + serviceAccountName: traefik-mesh-controller containers: - - name: maesh-controller - image: "containous/maesh:latest" + - name: traefik-mesh-controller + image: "traefik/mesh:latest" imagePullPolicy: IfNotPresent args: - "--logLevel=DEBUG" - "--defaultMode=http" - - "--namespace=maesh" + - "--namespace=traefik-mesh" - "--limitHTTPPort=5" - "--limitTCPPort=5" - "--limitUDPPort=5" @@ -138,21 +127,21 @@ spec: initialDelaySeconds: 3 periodSeconds: 1 initContainers: - - name: maesh-prepare - image: "containous/maesh:latest" + - name: traefik-mesh-prepare + image: "traefik/mesh:latest" imagePullPolicy: IfNotPresent args: - "prepare" - "--logLevel=DEBUG" - "--clusterdomain=cluster.local" - - "--namespace=maesh" + - "--namespace=traefik-mesh" --- apiVersion: v1 kind: Service metadata: - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh labels: app: maesh component: controller diff --git a/integration/testdata/maesh/controller-acl-enabled.yaml b/integration/testdata/traefik-mesh/controller-acl-enabled.yaml similarity index 78% rename from integration/testdata/maesh/controller-acl-enabled.yaml rename to integration/testdata/traefik-mesh/controller-acl-enabled.yaml index e3271b429..8ad41d7d7 100644 --- a/integration/testdata/maesh/controller-acl-enabled.yaml +++ b/integration/testdata/traefik-mesh/controller-acl-enabled.yaml @@ -2,8 +2,8 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh labels: app: maesh component: controller @@ -12,8 +12,8 @@ metadata: kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: - name: maesh-controller-role - namespace: maesh + name: traefik-mesh-controller-role + namespace: traefik-mesh labels: app: maesh component: controller @@ -26,13 +26,6 @@ rules: verbs: - list - watch - - apiGroups: - - "" - resources: - - namespaces - verbs: - - get - - create - apiGroups: - "" resources: @@ -41,8 +34,6 @@ rules: - get - create - update - - list - - watch - apiGroups: - "" resources: @@ -61,7 +52,6 @@ rules: verbs: - get - update - - create - apiGroups: - access.smi-spec.io - specs.smi-spec.io @@ -80,26 +70,26 @@ rules: kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh labels: app: maesh component: controller roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: maesh-controller-role + name: traefik-mesh-controller-role subjects: - kind: ServiceAccount - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh --- apiVersion: apps/v1 kind: Deployment metadata: - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh labels: app: maesh component: controller @@ -115,16 +105,16 @@ spec: app: maesh component: controller spec: - serviceAccountName: maesh-controller + serviceAccountName: traefik-mesh-controller automountServiceAccountToken: true containers: - - name: maesh-controller - image: "containous/maesh:latest" + - name: traefik-mesh-controller + image: "traefik/mesh:latest" imagePullPolicy: IfNotPresent args: - "--logLevel=DEBUG" - "--defaultMode=http" - - "--namespace=maesh" + - "--namespace=traefik-mesh" - "--acl" - "--limitHTTPPort=5" - "--limitTCPPort=5" @@ -139,22 +129,22 @@ spec: initialDelaySeconds: 3 periodSeconds: 1 initContainers: - - name: maesh-prepare - image: "containous/maesh:latest" + - name: traefik-mesh-prepare + image: "traefik/mesh:latest" imagePullPolicy: IfNotPresent args: - "prepare" - "--logLevel=DEBUG" - "--clusterdomain=cluster.local" - - "--namespace=maesh" + - "--namespace=traefik-mesh" - "--acl" --- apiVersion: v1 kind: Service metadata: - name: maesh-controller - namespace: maesh + name: traefik-mesh-controller + namespace: traefik-mesh labels: app: maesh component: controller diff --git a/integration/testdata/maesh/proxy.yaml b/integration/testdata/traefik-mesh/proxy.yaml similarity index 85% rename from integration/testdata/maesh/proxy.yaml rename to integration/testdata/traefik-mesh/proxy.yaml index 27983e271..f76001b11 100644 --- a/integration/testdata/maesh/proxy.yaml +++ b/integration/testdata/traefik-mesh/proxy.yaml @@ -2,18 +2,19 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: maesh-mesh - namespace: maesh + name: traefik-mesh-proxy + namespace: traefik-mesh labels: app: maesh component: maesh-mesh +automountServiceAccountToken: false --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: - name: maesh-mesh-role - namespace: maesh + name: traefik-mesh-proxy-role + namespace: traefik-mesh labels: app: maesh component: maesh-mesh @@ -29,26 +30,26 @@ rules: kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: - name: maesh-mesh - namespace: maesh + name: traefik-mesh-proxy + namespace: traefik-mesh labels: app: maesh component: maesh-mesh roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: maesh-mesh-role + name: traefik-mesh-proxy-role subjects: - kind: ServiceAccount - name: maesh-mesh - namespace: maesh + name: traefik-mesh-proxy + namespace: traefik-mesh --- apiVersion: apps/v1 kind: DaemonSet metadata: - name: maesh-mesh - namespace: maesh + name: traefik-mesh-proxy + namespace: traefik-mesh labels: app: maesh component: maesh-mesh @@ -63,11 +64,10 @@ spec: app: maesh component: maesh-mesh spec: - serviceAccountName: maesh-mesh - automountServiceAccountToken: true + serviceAccountName: traefik-mesh-proxy terminationGracePeriodSeconds: 30 containers: - - name: maesh-mesh + - name: traefik-mesh-proxy image: "traefik:v2.3" imagePullPolicy: IfNotPresent args: @@ -98,7 +98,7 @@ spec: - "--entryPoints.udp-15002.address=:15002/udp" - "--entryPoints.udp-15003.address=:15003/udp" - "--entryPoints.udp-15004.address=:15004/udp" - - "--providers.http.endpoint=http://maesh-controller.maesh.svc.cluster.local:9000/api/configuration/current" + - "--providers.http.endpoint=http://traefik-mesh-controller.traefik-mesh.svc.cluster.local:9000/api/configuration/current" - "--providers.http.pollInterval=100ms" - "--providers.http.pollTimeout=100ms" - "--api.dashboard=false" diff --git a/integration/testdata/maesh/values.yaml b/integration/testdata/traefik-mesh/values.yaml similarity index 82% rename from integration/testdata/maesh/values.yaml rename to integration/testdata/traefik-mesh/values.yaml index 0b977ccf0..b55343aeb 100644 --- a/integration/testdata/maesh/values.yaml +++ b/integration/testdata/traefik-mesh/values.yaml @@ -1,15 +1,13 @@ # -# Maesh configuration. +# Traefik Mesh configuration. # controller: image: - name: containous/maesh pullPolicy: IfNotPresent tag: latest -mesh: +proxy: image: - name: traefik pullPolicy: IfNotPresent tag: v2.3 diff --git a/integration/tool/tool.go b/integration/tool/tool.go index a26ac279a..df691c480 100644 --- a/integration/tool/tool.go +++ b/integration/tool/tool.go @@ -11,8 +11,8 @@ import ( "strings" "time" - "github.com/containous/maesh/integration/try" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/integration/try" ) // Tool is pod capable of running operations from within the cluster. diff --git a/integration/try/try.go b/integration/try/try.go index 4cfbbed41..19a6efe40 100644 --- a/integration/try/try.go +++ b/integration/try/try.go @@ -7,7 +7,7 @@ import ( "time" "github.com/cenkalti/backoff/v4" - "github.com/containous/maesh/pkg/safe" + "github.com/traefik/mesh/pkg/safe" ) // CITimeoutMultiplier is the multiplier for all timeout in the CI. diff --git a/netlify.toml b/netlify.toml index d5e939fc0..e09b352f1 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,6 +1,6 @@ [build] # Path relative to the root of the repository -publish = "docs/site" +publish = "site" base = "docs" # Path relative to the "base" directory diff --git a/pkg/annotations/annotations.go b/pkg/annotations/annotations.go index 10a38bfca..69013daf1 100644 --- a/pkg/annotations/annotations.go +++ b/pkg/annotations/annotations.go @@ -23,13 +23,12 @@ const ( ) const ( - baseAnnotation = "maesh.containo.us/" - annotationServiceType = baseAnnotation + "traffic-type" - annotationScheme = baseAnnotation + "scheme" - annotationRetryAttempts = baseAnnotation + "retry-attempts" - annotationCircuitBreakerExpression = baseAnnotation + "circuit-breaker-expression" - annotationRateLimitAverage = baseAnnotation + "ratelimit-average" - annotationRateLimitBurst = baseAnnotation + "ratelimit-burst" + annotationServiceType = "traffic-type" + annotationScheme = "scheme" + annotationRetryAttempts = "retry-attempts" + annotationCircuitBreakerExpression = "circuit-breaker-expression" + annotationRateLimitAverage = "ratelimit-average" + annotationRateLimitBurst = "ratelimit-burst" ) // ErrNotFound indicates that the annotation hasn't been found. @@ -37,8 +36,8 @@ var ErrNotFound = errors.New("annotation not found") // GetTrafficType returns the value of the traffic-type annotation. func GetTrafficType(defaultTrafficType string, annotations map[string]string) (string, error) { - trafficType, ok := annotations[annotationServiceType] - if !ok { + trafficType, exists := getAnnotation(annotations, annotationServiceType) + if !exists { return defaultTrafficType, nil } @@ -55,8 +54,8 @@ func GetTrafficType(defaultTrafficType string, annotations map[string]string) (s // GetScheme returns the value of the scheme annotation. func GetScheme(annotations map[string]string) (string, error) { - scheme, ok := annotations[annotationScheme] - if !ok { + scheme, exists := getAnnotation(annotations, annotationScheme) + if !exists { return SchemeHTTP, nil } @@ -73,8 +72,8 @@ func GetScheme(annotations map[string]string) (string, error) { // GetRetryAttempts returns the value of the retry-attempts annotation. func GetRetryAttempts(annotations map[string]string) (int, error) { - retryAttempts, ok := annotations[annotationRetryAttempts] - if !ok { + retryAttempts, exists := getAnnotation(annotations, annotationRetryAttempts) + if !exists { return 0, ErrNotFound } @@ -88,8 +87,8 @@ func GetRetryAttempts(annotations map[string]string) (int, error) { // GetCircuitBreakerExpression returns the value of the circuit-breaker-expression annotation. func GetCircuitBreakerExpression(annotations map[string]string) (string, error) { - circuitBreakerExpression, ok := annotations[annotationCircuitBreakerExpression] - if !ok { + circuitBreakerExpression, exists := getAnnotation(annotations, annotationCircuitBreakerExpression) + if !exists { return "", ErrNotFound } @@ -98,8 +97,8 @@ func GetCircuitBreakerExpression(annotations map[string]string) (string, error) // GetRateLimitBurst returns the value of the rate-limit-burst annotation. func GetRateLimitBurst(annotations map[string]string) (int, error) { - rateLimitBurst, ok := annotations[annotationRateLimitBurst] - if !ok { + rateLimitBurst, exists := getAnnotation(annotations, annotationRateLimitBurst) + if !exists { return 0, ErrNotFound } @@ -113,7 +112,7 @@ func GetRateLimitBurst(annotations map[string]string) (int, error) { // GetRateLimitAverage returns the value of the rate-limit-average annotation. func GetRateLimitAverage(annotations map[string]string) (int, error) { - rateLimitAverage, ok := annotations[annotationRateLimitAverage] + rateLimitAverage, ok := getAnnotation(annotations, annotationRateLimitAverage) if !ok { return 0, ErrNotFound } @@ -125,3 +124,15 @@ func GetRateLimitAverage(annotations map[string]string) (int, error) { return average, nil } + +// getAnnotation returns the value of the annotation with the given name and a boolean evaluating to true if the +// annotation has been found, false otherwise. This function will try to resolve the annotation with the traefik mesh +// domain prefix and fallback to the deprecated maesh domain prefix if not found. +func getAnnotation(annotations map[string]string, name string) (string, bool) { + value, exists := annotations["mesh.traefik.io/"+name] + if !exists { + value, exists = annotations["maesh.containo.us/"+name] + } + + return value, exists +} diff --git a/pkg/annotations/annotations_test.go b/pkg/annotations/annotations_test.go index 1076f68d2..bc90500cf 100644 --- a/pkg/annotations/annotations_test.go +++ b/pkg/annotations/annotations_test.go @@ -17,7 +17,7 @@ func TestGetTrafficType(t *testing.T) { { desc: "unknown service type", annotations: map[string]string{ - "maesh.containo.us/traffic-type": "hello", + "mesh.traefik.io/traffic-type": "hello", }, err: true, }, @@ -29,21 +29,21 @@ func TestGetTrafficType(t *testing.T) { { desc: "http", annotations: map[string]string{ - "maesh.containo.us/traffic-type": "http", + "mesh.traefik.io/traffic-type": "http", }, want: ServiceTypeHTTP, }, { desc: "tcp", annotations: map[string]string{ - "maesh.containo.us/traffic-type": "tcp", + "mesh.traefik.io/traffic-type": "tcp", }, want: ServiceTypeTCP, }, { desc: "udp", annotations: map[string]string{ - "maesh.containo.us/traffic-type": "udp", + "mesh.traefik.io/traffic-type": "udp", }, want: ServiceTypeUDP, }, @@ -53,11 +53,12 @@ func TestGetTrafficType(t *testing.T) { t.Run(test.desc, func(t *testing.T) { tt, err := GetTrafficType(ServiceTypeHTTP, test.annotations) if test.err { - assert.Error(t, err) - } else { - assert.NoError(t, err) - assert.Equal(t, test.want, tt) + require.Error(t, err) + return } + + require.NoError(t, err) + assert.Equal(t, test.want, tt) }) } } @@ -70,9 +71,9 @@ func TestGetScheme(t *testing.T) { err bool }{ { - desc: "unknown service type", + desc: "unknown scheme", annotations: map[string]string{ - "maesh.containo.us/scheme": "hello", + "mesh.traefik.io/scheme": "hello", }, err: true, }, @@ -84,21 +85,21 @@ func TestGetScheme(t *testing.T) { { desc: "http", annotations: map[string]string{ - "maesh.containo.us/scheme": "http", + "mesh.traefik.io/scheme": "http", }, want: SchemeHTTP, }, { desc: "https", annotations: map[string]string{ - "maesh.containo.us/scheme": "https", + "mesh.traefik.io/scheme": "https", }, want: SchemeHTTPS, }, { desc: "h2c", annotations: map[string]string{ - "maesh.containo.us/scheme": "h2c", + "mesh.traefik.io/scheme": "h2c", }, want: SchemeH2C, }, @@ -106,97 +107,244 @@ func TestGetScheme(t *testing.T) { for _, test := range tests { t.Run(test.desc, func(t *testing.T) { - tt, err := GetScheme(test.annotations) + scheme, err := GetScheme(test.annotations) if test.err { - assert.Error(t, err) - } else { - assert.NoError(t, err) - assert.Equal(t, test.want, tt) + require.Error(t, err) + return } + + require.NoError(t, err) + assert.Equal(t, test.want, scheme) }) } } -func TestGetRetryAttempts_Valid(t *testing.T) { - attempts, err := GetRetryAttempts(map[string]string{ - "maesh.containo.us/retry-attempts": "2", - }) - - require.NoError(t, err) - assert.Equal(t, 2, attempts) -} - -func TestGetRetryAttempts_NotSet(t *testing.T) { - _, err := GetRetryAttempts(map[string]string{}) - - assert.Equal(t, ErrNotFound, err) -} +func TestGetRetryAttempts(t *testing.T) { + tests := []struct { + desc string + annotations map[string]string + want int + err bool + wantNotFound bool + }{ + { + desc: "invalid", + annotations: map[string]string{ + "mesh.traefik.io/retry-attempts": "hello", + }, + err: true, + }, + { + desc: "valid", + annotations: map[string]string{ + "mesh.traefik.io/retry-attempts": "2", + }, + want: 2, + }, + { + desc: "not set", + annotations: map[string]string{}, + err: true, + wantNotFound: true, + }, + } -func TestGetRetryAttempts_Invalid(t *testing.T) { - _, err := GetRetryAttempts(map[string]string{ - "maesh.containo.us/retry-attempts": "hello", - }) + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + attempts, err := GetRetryAttempts(test.annotations) + if test.err { + require.Error(t, err) + assert.Equal(t, test.wantNotFound, err == ErrNotFound) + return + } - assert.Error(t, err) + require.NoError(t, err) + assert.Equal(t, test.want, attempts) + }) + } } -func TestGetCircuitBreakerExpression_Valid(t *testing.T) { - expression, err := GetCircuitBreakerExpression(map[string]string{ - "maesh.containo.us/circuit-breaker-expression": "LatencyAtQuantileMS(50.0) > 100", - }) - - require.NoError(t, err) - assert.Equal(t, "LatencyAtQuantileMS(50.0) > 100", expression) -} +func TestGetCircuitBreakerExpression(t *testing.T) { + tests := []struct { + desc string + annotations map[string]string + want string + err bool + wantNotFound bool + }{ + { + desc: "valid", + annotations: map[string]string{ + "mesh.traefik.io/circuit-breaker-expression": "LatencyAtQuantileMS(50.0) > 100", + }, + want: "LatencyAtQuantileMS(50.0) > 100", + }, + { + desc: "not set", + annotations: map[string]string{}, + err: true, + wantNotFound: true, + }, + } -func TestGetCircuitBreakerExpression_NotSet(t *testing.T) { - _, err := GetCircuitBreakerExpression(map[string]string{}) + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + value, err := GetCircuitBreakerExpression(test.annotations) + if test.err { + require.Error(t, err) + assert.Equal(t, test.wantNotFound, err == ErrNotFound) + return + } - assert.Equal(t, ErrNotFound, err) + require.NoError(t, err) + assert.Equal(t, test.want, value) + }) + } } -func TestGetRateLimitBurst_Valid(t *testing.T) { - attempts, err := GetRateLimitBurst(map[string]string{ - "maesh.containo.us/ratelimit-burst": "200", - }) - - require.NoError(t, err) - assert.Equal(t, 200, attempts) -} +func TestGetRateLimitBurst(t *testing.T) { + tests := []struct { + desc string + annotations map[string]string + want int + err bool + wantNotFound bool + }{ + { + desc: "invalid", + annotations: map[string]string{ + "mesh.traefik.io/ratelimit-burst": "hello", + }, + err: true, + }, + { + desc: "valid", + annotations: map[string]string{ + "mesh.traefik.io/ratelimit-burst": "200", + }, + want: 200, + }, + { + desc: "not set", + annotations: map[string]string{}, + err: true, + wantNotFound: true, + }, + } -func TestGetRateLimitBurst_NotSet(t *testing.T) { - _, err := GetRateLimitBurst(map[string]string{}) + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + value, err := GetRateLimitBurst(test.annotations) + if test.err { + require.Error(t, err) + assert.Equal(t, test.wantNotFound, err == ErrNotFound) + return + } - assert.Equal(t, ErrNotFound, err) + require.NoError(t, err) + assert.Equal(t, test.want, value) + }) + } } -func TestGetRateLimitBurst_Invalid(t *testing.T) { - _, err := GetRateLimitBurst(map[string]string{ - "maesh.containo.us/ratelimit-burst": "hello", - }) - - assert.Error(t, err) -} +func TestGetRateLimitAverage(t *testing.T) { + tests := []struct { + desc string + annotations map[string]string + want int + err bool + wantNotFound bool + }{ + { + desc: "invalid", + annotations: map[string]string{ + "mesh.traefik.io/ratelimit-average": "hello", + }, + err: true, + }, + { + desc: "valid", + annotations: map[string]string{ + "mesh.traefik.io/ratelimit-average": "100", + }, + want: 100, + }, + { + desc: "not set", + annotations: map[string]string{}, + err: true, + wantNotFound: true, + }, + } -func TestGetRateLimitAverage_Valid(t *testing.T) { - attempts, err := GetRateLimitAverage(map[string]string{ - "maesh.containo.us/ratelimit-average": "100", - }) + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + value, err := GetRateLimitAverage(test.annotations) + if test.err { + require.Error(t, err) + assert.Equal(t, test.wantNotFound, err == ErrNotFound) + return + } - require.NoError(t, err) - assert.Equal(t, 100, attempts) + require.NoError(t, err) + assert.Equal(t, test.want, value) + }) + } } -func TestGetRateLimitAverage_NotSet(t *testing.T) { - _, err := GetRateLimitAverage(map[string]string{}) - - assert.Equal(t, ErrNotFound, err) -} +func Test_getAnnotation(t *testing.T) { + tests := []struct { + desc string + annotations map[string]string + name string + want string + exists bool + }{ + { + desc: "should return the traefik mesh annotation value", + annotations: map[string]string{ + "mesh.traefik.io/foo": "bar", + }, + name: "foo", + want: "bar", + exists: true, + }, + { + desc: "should return the deprecated maesh annotation value", + annotations: map[string]string{ + "maesh.containo.us/foo": "bar", + }, + name: "foo", + want: "bar", + exists: true, + }, + { + desc: "should return the traefik mesh annotation value", + annotations: map[string]string{ + "mesh.traefik.io/foo": "bar", + "maesh.containo.us/foo": "fuzzy", + }, + name: "foo", + want: "bar", + exists: true, + }, + { + desc: "should return not found", + annotations: map[string]string{ + "mesh.traefik.io/foo": "bar", + "maesh.containo.us/foo": "fuzzy", + }, + name: "bar", + want: "", + }, + } -func TestGetRateLimitAverage_Invalid(t *testing.T) { - _, err := GetRateLimitAverage(map[string]string{ - "maesh.containo.us/ratelimit-average": "hello", - }) + for _, test := range tests { + t.Run(test.desc, func(t *testing.T) { + value, exists := getAnnotation(test.annotations, test.name) - assert.Error(t, err) + assert.Equal(t, test.want, value) + assert.Equal(t, test.exists, exists) + }) + } } diff --git a/pkg/annotations/middleware.go b/pkg/annotations/middleware.go index ba5e387ad..d5e4b8e33 100644 --- a/pkg/annotations/middleware.go +++ b/pkg/annotations/middleware.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "github.com/containous/traefik/v2/pkg/config/dynamic" + "github.com/traefik/traefik/v2/pkg/config/dynamic" ) type middlewareBuilder func(annotations map[string]string) (middleware *dynamic.Middleware, name string, err error) diff --git a/pkg/annotations/middleware_test.go b/pkg/annotations/middleware_test.go index 1cdabe53d..9375d0494 100644 --- a/pkg/annotations/middleware_test.go +++ b/pkg/annotations/middleware_test.go @@ -3,8 +3,8 @@ package annotations import ( "testing" - "github.com/containous/traefik/v2/pkg/config/dynamic" "github.com/stretchr/testify/assert" + "github.com/traefik/traefik/v2/pkg/config/dynamic" ) func TestBuildMiddleware(t *testing.T) { @@ -22,7 +22,7 @@ func TestBuildMiddleware(t *testing.T) { { desc: "retry-attempts annotation is valid", annotations: map[string]string{ - "maesh.containo.us/retry-attempts": "5", + "mesh.traefik.io/retry-attempts": "5", }, want: map[string]*dynamic.Middleware{ "retry": { @@ -35,14 +35,14 @@ func TestBuildMiddleware(t *testing.T) { { desc: "retry-attempts annotation is invalid", annotations: map[string]string{ - "maesh.containo.us/retry-attempts": "hello", + "mesh.traefik.io/retry-attempts": "hello", }, err: true, }, { desc: "circuit-breaker-expression", annotations: map[string]string{ - "maesh.containo.us/circuit-breaker-expression": "LatencyAtQuantileMS(50.0) > 100", + "mesh.traefik.io/circuit-breaker-expression": "LatencyAtQuantileMS(50.0) > 100", }, want: map[string]*dynamic.Middleware{ "circuit-breaker": { @@ -55,8 +55,8 @@ func TestBuildMiddleware(t *testing.T) { { desc: "ratelimit-average and ratelimit-burst are both valid", annotations: map[string]string{ - "maesh.containo.us/ratelimit-average": "200", - "maesh.containo.us/ratelimit-burst": "100", + "mesh.traefik.io/ratelimit-average": "200", + "mesh.traefik.io/ratelimit-burst": "100", }, want: map[string]*dynamic.Middleware{ "rate-limit": { @@ -70,40 +70,40 @@ func TestBuildMiddleware(t *testing.T) { { desc: "ratelimit-average is valid but ratelimit-burst is invalid", annotations: map[string]string{ - "maesh.containo.us/ratelimit-average": "200", - "maesh.containo.us/ratelimit-burst": "hello", + "mesh.traefik.io/ratelimit-average": "200", + "mesh.traefik.io/ratelimit-burst": "hello", }, err: true, }, { desc: "ratelimit-burst is valid but ratelimit-average is invalid", annotations: map[string]string{ - "maesh.containo.us/ratelimit-burst": "200", - "maesh.containo.us/ratelimit-average": "hello", + "mesh.traefik.io/ratelimit-burst": "200", + "mesh.traefik.io/ratelimit-average": "hello", }, err: true, }, { desc: "ratelimit-average is set but ratelimit-burst is not", annotations: map[string]string{ - "maesh.containo.us/ratelimit-average": "200", + "mesh.traefik.io/ratelimit-average": "200", }, want: map[string]*dynamic.Middleware{}, }, { desc: "ratelimit-burst is set but ratelimit-average is not", annotations: map[string]string{ - "maesh.containo.us/ratelimit-burst": "200", + "mesh.traefik.io/ratelimit-burst": "200", }, want: map[string]*dynamic.Middleware{}, }, { desc: "multiple middlewares", annotations: map[string]string{ - "maesh.containo.us/retry-attempts": "5", - "maesh.containo.us/ratelimit-average": "200", - "maesh.containo.us/ratelimit-burst": "100", - "maesh.containo.us/circuit-breaker-expression": "LatencyAtQuantileMS(50.0) > 100", + "mesh.traefik.io/retry-attempts": "5", + "mesh.traefik.io/ratelimit-average": "200", + "mesh.traefik.io/ratelimit-burst": "100", + "mesh.traefik.io/circuit-breaker-expression": "LatencyAtQuantileMS(50.0) > 100", }, want: map[string]*dynamic.Middleware{ "retry": { diff --git a/pkg/api/api.go b/pkg/api/api.go index 4d3083bff..a1b979666 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -8,13 +8,13 @@ import ( "net/http" "time" - "github.com/containous/maesh/pkg/k8s" - "github.com/containous/maesh/pkg/provider" - "github.com/containous/maesh/pkg/safe" - "github.com/containous/maesh/pkg/topology" - "github.com/containous/traefik/v2/pkg/config/dynamic" "github.com/gorilla/mux" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/pkg/k8s" + "github.com/traefik/mesh/pkg/provider" + "github.com/traefik/mesh/pkg/safe" + "github.com/traefik/mesh/pkg/topology" + "github.com/traefik/traefik/v2/pkg/config/dynamic" kubeerror "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" diff --git a/pkg/api/api_test.go b/pkg/api/api_test.go index fda172132..5b51868b4 100644 --- a/pkg/api/api_test.go +++ b/pkg/api/api_test.go @@ -7,11 +7,11 @@ import ( "os" "testing" - "github.com/containous/maesh/pkg/k8s" "github.com/gorilla/mux" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/traefik/mesh/pkg/k8s" "k8s.io/client-go/kubernetes/fake" ) diff --git a/pkg/cleanup/cleanup.go b/pkg/cleanup/cleanup.go index 8f6f798d2..78b30258e 100644 --- a/pkg/cleanup/cleanup.go +++ b/pkg/cleanup/cleanup.go @@ -4,8 +4,8 @@ import ( "context" "fmt" - "github.com/containous/maesh/pkg/dns" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/pkg/dns" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" ) diff --git a/pkg/cleanup/cleanup_test.go b/pkg/cleanup/cleanup_test.go index 774024569..6e239dfe3 100644 --- a/pkg/cleanup/cleanup_test.go +++ b/pkg/cleanup/cleanup_test.go @@ -5,10 +5,10 @@ import ( "os" "testing" - "github.com/containous/maesh/pkg/k8s" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/traefik/mesh/pkg/k8s" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -30,7 +30,7 @@ func TestCleanup_CleanShadowServices(t *testing.T) { logger.SetOutput(os.Stdout) logger.SetLevel(logrus.DebugLevel) - cleanup := NewCleanup(logger, clientMock.KubernetesClient(), "maesh") + cleanup := NewCleanup(logger, clientMock.KubernetesClient(), "traefik-mesh") require.NotNil(t, cleanup) err := cleanup.CleanShadowServices(context.Background()) diff --git a/pkg/cleanup/testdata/mock.yaml b/pkg/cleanup/testdata/mock.yaml index 721e3390c..994a5df5f 100644 --- a/pkg/cleanup/testdata/mock.yaml +++ b/pkg/cleanup/testdata/mock.yaml @@ -3,7 +3,7 @@ apiVersion: v1 kind: Service metadata: name: test1 - namespace: maesh + namespace: traefik-mesh labels: app: maesh type: shadow @@ -20,7 +20,7 @@ apiVersion: v1 kind: Service metadata: name: test2 - namespace: maesh + namespace: traefik-mesh labels: app: maesh type: shadow @@ -37,7 +37,7 @@ apiVersion: v1 kind: Service metadata: name: test3 - namespace: maesh + namespace: traefik-mesh spec: selector: app: test diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 6c64769d1..de56b8be9 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -6,12 +6,6 @@ import ( "sync" "time" - "github.com/containous/maesh/cmd" - "github.com/containous/maesh/pkg/annotations" - "github.com/containous/maesh/pkg/k8s" - "github.com/containous/maesh/pkg/provider" - "github.com/containous/maesh/pkg/topology" - "github.com/containous/traefik/v2/pkg/config/dynamic" accessinformer "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/access/informers/externalversions" accesslister "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/access/listers/access/v1alpha2" specsinformer "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/specs/informers/externalversions" @@ -19,6 +13,12 @@ import ( splitinformer "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/informers/externalversions" splitlister "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/listers/split/v1alpha3" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/cmd" + "github.com/traefik/mesh/pkg/annotations" + "github.com/traefik/mesh/pkg/k8s" + "github.com/traefik/mesh/pkg/provider" + "github.com/traefik/mesh/pkg/topology" + "github.com/traefik/traefik/v2/pkg/config/dynamic" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" utilruntime "k8s.io/apimachinery/pkg/util/runtime" diff --git a/pkg/controller/controller_test.go b/pkg/controller/controller_test.go index e664c6f17..2b179e8f7 100644 --- a/pkg/controller/controller_test.go +++ b/pkg/controller/controller_test.go @@ -4,21 +4,21 @@ import ( "os" "testing" - "github.com/containous/maesh/pkg/k8s" - "github.com/containous/maesh/pkg/topology" - "github.com/containous/traefik/v2/pkg/config/dynamic" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" + "github.com/traefik/mesh/pkg/k8s" + "github.com/traefik/mesh/pkg/topology" + "github.com/traefik/traefik/v2/pkg/config/dynamic" ) const ( - meshNamespace string = "maesh" - minHTTPPort = int32(5000) - maxHTTPPort = int32(5005) - minTCPPort = int32(10000) - maxTCPPort = int32(10005) - minUDPPort = int32(15000) - maxUDPPort = int32(15005) + traefikMeshNamespace string = "traefik-mesh" + minHTTPPort = int32(5000) + maxHTTPPort = int32(5005) + minTCPPort = int32(10000) + maxTCPPort = int32(10005) + minUDPPort = int32(15000) + maxUDPPort = int32(15005) ) type storeMock struct{} @@ -39,7 +39,7 @@ func TestController_NewMeshController(t *testing.T) { controller := NewMeshController(clientMock, Config{ ACLEnabled: false, DefaultMode: "http", - Namespace: meshNamespace, + Namespace: traefikMeshNamespace, IgnoreNamespaces: []string{}, MinHTTPPort: minHTTPPort, MaxHTTPPort: maxHTTPPort, @@ -64,7 +64,7 @@ func TestController_NewMeshControllerWithSMI(t *testing.T) { controller := NewMeshController(clientMock, Config{ ACLEnabled: true, DefaultMode: "http", - Namespace: meshNamespace, + Namespace: traefikMeshNamespace, IgnoreNamespaces: []string{}, MinHTTPPort: minHTTPPort, MaxHTTPPort: maxHTTPPort, diff --git a/pkg/controller/portmapping_test.go b/pkg/controller/portmapping_test.go index 5943be2cb..70af465e7 100644 --- a/pkg/controller/portmapping_test.go +++ b/pkg/controller/portmapping_test.go @@ -7,10 +7,10 @@ import ( "testing" "time" - "github.com/containous/maesh/pkg/k8s" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/traefik/mesh/pkg/k8s" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -27,7 +27,7 @@ func TestPortMapping_AddEmptyState(t *testing.T) { serviceLister, err := newFakeServiceLister() require.NoError(t, err) - p := NewPortMapping("maesh", serviceLister, logger, 10000, 10200) + p := NewPortMapping("traefik-mesh", serviceLister, logger, 10000, 10200) wantSp := &servicePort{ Namespace: "my-ns", @@ -50,7 +50,7 @@ func TestPortMapping_AddOverflow(t *testing.T) { serviceLister, err := newFakeServiceLister() require.NoError(t, err) - p := NewPortMapping("maesh", serviceLister, logger, 10000, 10001) + p := NewPortMapping("traefik-mesh", serviceLister, logger, 10000, 10001) wantSp := &servicePort{ Namespace: "my-ns", @@ -88,7 +88,7 @@ func TestPortMapping_FindWithState(t *testing.T) { serviceLister, err := newFakeServiceLister() require.NoError(t, err) - p := NewPortMapping("maesh", serviceLister, logger, 10000, 10200) + p := NewPortMapping("traefik-mesh", serviceLister, logger, 10000, 10200) p.table[10000] = &servicePort{Namespace: "my-ns", Name: "my-app", Port: 9090} p.table[10002] = &servicePort{Namespace: "my-ns", Name: "my-app2", Port: 9092} @@ -108,7 +108,7 @@ func TestPortMapping_Remove(t *testing.T) { serviceLister, err := newFakeServiceLister() require.NoError(t, err) - p := NewPortMapping("maesh", serviceLister, logger, 10000, 10200) + p := NewPortMapping("traefik-mesh", serviceLister, logger, 10000, 10200) p.table[10000] = &servicePort{Namespace: "my-ns", Name: "my-app", Port: 9090} @@ -143,7 +143,7 @@ func TestPortMapping_LoadState(t *testing.T) { Port: 80, TargetPort: intstr.FromInt(10000), }), - newShadowService("maesh-foo-6d61657368-maesh", corev1.ServicePort{ + newShadowService("traefik-mesh-foo-6d61657368-traefik-mesh", corev1.ServicePort{ Port: 80, TargetPort: intstr.FromInt(10001), }), @@ -153,7 +153,7 @@ func TestPortMapping_LoadState(t *testing.T) { desc: "should ignore the shadow service ports with an out of range target port", expPorts: []int32{10001}, services: []runtime.Object{ - newShadowService("maesh-foo-6d61657368-maesh", + newShadowService("traefik-mesh-foo-6d61657368-traefik-mesh", corev1.ServicePort{ Port: 80, TargetPort: intstr.FromInt(5000), @@ -167,7 +167,7 @@ func TestPortMapping_LoadState(t *testing.T) { desc: "should initialize the state with all the shadow service target ports", expPorts: []int32{10000, 10001, 10002, 10003}, services: []runtime.Object{ - newShadowService("maesh-foo-6d61657368-maesh", + newShadowService("traefik-mesh-foo-6d61657368-traefik-mesh", corev1.ServicePort{ Port: 80, TargetPort: intstr.FromInt(10002), @@ -175,7 +175,7 @@ func TestPortMapping_LoadState(t *testing.T) { Port: 8080, TargetPort: intstr.FromInt(10003), }), - newShadowService("maesh-bar-6d61657368-maesh", + newShadowService("traefik-mesh-bar-6d61657368-traefik-mesh", corev1.ServicePort{ Port: 80, TargetPort: intstr.FromInt(10000), @@ -195,7 +195,7 @@ func TestPortMapping_LoadState(t *testing.T) { serviceLister, err := newFakeServiceLister(test.services...) require.NoError(t, err) - portMapping := NewPortMapping("maesh", serviceLister, logger, 10000, 10005) + portMapping := NewPortMapping("traefik-mesh", serviceLister, logger, 10000, 10005) err = portMapping.LoadState() @@ -225,7 +225,7 @@ func TestPortMapping_parseServiceNamespaceAndName(t *testing.T) { }, { desc: "should return the parsed service namespace and name from the shadow service name", - shadowSvcName: "maesh-foo-6d61657368-default", + shadowSvcName: "traefik-mesh-foo-6d61657368-default", expNamespace: "default", expName: "foo", }, @@ -239,7 +239,7 @@ func TestPortMapping_parseServiceNamespaceAndName(t *testing.T) { serviceLister, err := newFakeServiceLister() require.NoError(t, err) - portMapping := NewPortMapping("maesh", serviceLister, logger, 10000, 10005) + portMapping := NewPortMapping("traefik-mesh", serviceLister, logger, 10000, 10005) namespace, name, err := portMapping.parseServiceNamespaceAndName(test.shadowSvcName) if test.expErr { @@ -280,7 +280,7 @@ func newShadowService(name string, ports ...corev1.ServicePort) *corev1.Service APIVersion: "v1", }, ObjectMeta: metav1.ObjectMeta{ - Namespace: "maesh", + Namespace: "traefik-mesh", Name: name, Labels: map[string]string{ "app": "maesh", diff --git a/pkg/controller/service.go b/pkg/controller/service.go index 553b15864..32b5b63a4 100644 --- a/pkg/controller/service.go +++ b/pkg/controller/service.go @@ -5,9 +5,9 @@ import ( "errors" "fmt" - "github.com/containous/maesh/pkg/annotations" "github.com/hashicorp/go-version" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/pkg/annotations" corev1 "k8s.io/api/core/v1" kerrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/pkg/controller/service_test.go b/pkg/controller/service_test.go index 5db811732..156009d7c 100644 --- a/pkg/controller/service_test.go +++ b/pkg/controller/service_test.go @@ -79,8 +79,8 @@ func TestShadowServiceManager_CreateOrUpdate(t *testing.T) { }, expectedShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -113,8 +113,8 @@ func TestShadowServiceManager_CreateOrUpdate(t *testing.T) { }, expectedShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -143,8 +143,8 @@ func TestShadowServiceManager_CreateOrUpdate(t *testing.T) { }, currentShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -163,8 +163,8 @@ func TestShadowServiceManager_CreateOrUpdate(t *testing.T) { }, expectedShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -193,8 +193,8 @@ func TestShadowServiceManager_CreateOrUpdate(t *testing.T) { }, currentShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -208,8 +208,8 @@ func TestShadowServiceManager_CreateOrUpdate(t *testing.T) { }, expectedShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -260,7 +260,7 @@ func TestShadowServiceManager_CreateOrUpdate(t *testing.T) { shadowServiceManager := NewShadowServiceManager( log, lister, - "maesh", + "traefik-mesh", tcpPortMapperMock, portMapperMock{}, test.defaultMode, @@ -307,8 +307,8 @@ func TestShadowServiceManager_Delete(t *testing.T) { namespace: "bar", currentShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -327,8 +327,8 @@ func TestShadowServiceManager_Delete(t *testing.T) { namespace: "bar", currentShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -347,8 +347,8 @@ func TestShadowServiceManager_Delete(t *testing.T) { namespace: "bar", currentShadowSvc: &corev1.Service{ ObjectMeta: v1.ObjectMeta{ - Name: "maesh-foo-6d61657368-bar", - Namespace: "maesh", + Name: "traefik-mesh-foo-6d61657368-bar", + Namespace: "traefik-mesh", }, Spec: corev1.ServiceSpec{ Ports: []corev1.ServicePort{ @@ -403,7 +403,7 @@ func TestShadowServiceManager_Delete(t *testing.T) { shadowServiceManager := NewShadowServiceManager( log, lister, - "maesh", + "traefik-mesh", tcpPortMapperMock, udpPortMapperMock, "http", @@ -457,7 +457,7 @@ func TestShadowServiceManager_getShadowServiceName(t *testing.T) { shadowServiceManager := NewShadowServiceManager( log, lister, - "maesh", + "traefik-mesh", portMapperMock{}, portMapperMock{}, "http", @@ -468,7 +468,7 @@ func TestShadowServiceManager_getShadowServiceName(t *testing.T) { shadowSvcName := shadowServiceManager.getShadowServiceName(namespace, name) - assert.Equal(t, shadowSvcName, "maesh-foo-6d61657368-bar") + assert.Equal(t, shadowSvcName, "traefik-mesh-foo-6d61657368-bar") } func TestShadowServiceManager_getHTTPPort(t *testing.T) { @@ -504,7 +504,7 @@ func TestShadowServiceManager_getHTTPPort(t *testing.T) { shadowServiceManager := NewShadowServiceManager( log, lister, - "maesh", + "traefik-mesh", portMapperMock{}, portMapperMock{}, "http", diff --git a/pkg/controller/testdata/mock.yaml b/pkg/controller/testdata/mock.yaml index 7f0d4a86e..95189b82a 100644 --- a/pkg/controller/testdata/mock.yaml +++ b/pkg/controller/testdata/mock.yaml @@ -31,19 +31,3 @@ subsets: - ip: 10.0.0.2 ports: - port: 80 ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: tcp-state-table - namespace: maesh -data: - key: value ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: udp-state-table - namespace: maesh -data: - key: value diff --git a/pkg/dns/dns.go b/pkg/dns/dns.go index 35f8dc495..1948ed026 100644 --- a/pkg/dns/dns.go +++ b/pkg/dns/dns.go @@ -9,10 +9,10 @@ import ( "time" "github.com/cenkalti/backoff/v4" - "github.com/containous/maesh/pkg/safe" "github.com/google/uuid" goversion "github.com/hashicorp/go-version" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/pkg/safe" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" kerrors "k8s.io/apimachinery/pkg/api/errors" @@ -29,9 +29,14 @@ const ( CoreDNS KubeDNS + // Maesh config is deprecated and will be removed in the next major release. + maeshDomain = "maesh" maeshBlockHeader = "#### Begin Maesh Block" maeshBlockTrailer = "#### End Maesh Block" - maeshDomain = "maesh" + + traefikMeshDomain = "traefik.mesh" + traefikMeshBlockHeader = "#### Begin Traefik Mesh Block" + traefikMeshBlockTrailer = "#### End Traefik Mesh Block" ) var versionCoreDNS17 = goversion.Must(goversion.NewVersion("1.7")) @@ -72,7 +77,7 @@ func (c *Client) CheckDNSProvider(ctx context.Context) (Provider, error) { return KubeDNS, nil } - return UnknownDNS, errors.New("no supported DNS service available for installing maesh") + return UnknownDNS, errors.New("no supported DNS service available for installing traefik mesh") } func (c *Client) coreDNSMatch(ctx context.Context) (bool, error) { @@ -127,8 +132,8 @@ func (c *Client) kubeDNSMatch(ctx context.Context) (bool, error) { return true, nil } -// ConfigureCoreDNS patches the CoreDNS configuration for Maesh. -func (c *Client) ConfigureCoreDNS(ctx context.Context, coreDNSNamespace, clusterDomain, maeshNamespace string) error { +// ConfigureCoreDNS patches the CoreDNS configuration for Traefik Mesh. +func (c *Client) ConfigureCoreDNS(ctx context.Context, coreDNSNamespace, clusterDomain, traefikMeshNamespace string) error { c.logger.Debugf("Patching ConfigMap %q in namespace %q...", "coredns", coreDNSNamespace) coreDNSDeployment, err := c.kubeClient.AppsV1().Deployments(coreDNSNamespace).Get(ctx, "coredns", metav1.GetOptions{}) @@ -136,7 +141,7 @@ func (c *Client) ConfigureCoreDNS(ctx context.Context, coreDNSNamespace, cluster return err } - patchedConfigMap, changed, err := c.patchCoreDNSConfig(ctx, coreDNSDeployment, clusterDomain, maeshNamespace) + patchedConfigMap, changed, err := c.patchCoreDNSConfig(ctx, coreDNSDeployment, clusterDomain, traefikMeshNamespace) if err != nil { return fmt.Errorf("unable to patch coredns config: %w", err) } @@ -160,7 +165,7 @@ func (c *Client) ConfigureCoreDNS(ctx context.Context, coreDNSNamespace, cluster return nil } -func (c *Client) patchCoreDNSConfig(ctx context.Context, deployment *appsv1.Deployment, clusterDomain, maeshNamespace string) (*corev1.ConfigMap, bool, error) { +func (c *Client) patchCoreDNSConfig(ctx context.Context, deployment *appsv1.Deployment, clusterDomain, traefikMeshNamespace string) (*corev1.ConfigMap, bool, error) { coreDNSVersion, err := c.getCoreDNSVersion(deployment) if err != nil { return nil, false, err @@ -171,18 +176,30 @@ func (c *Client) patchCoreDNSConfig(ctx context.Context, deployment *appsv1.Depl // For AKS the CoreDNS config have to be added to the coredns-custom ConfigMap. // See https://docs.microsoft.com/en-us/azure/aks/coredns-custom if err == nil { - corefile, changed := addStubDomain( + // deprecated, will be removed in the next major release. + corefile, mChanged := addStubDomain( customConfigMap.Data["maesh.server"], maeshBlockHeader, maeshBlockTrailer, maeshDomain, clusterDomain, - maeshNamespace, + traefikMeshNamespace, coreDNSVersion, ) customConfigMap.Data["maesh.server"] = corefile - return customConfigMap, changed, nil + corefile, tChanged := addStubDomain( + customConfigMap.Data["traefik.mesh.server"], + traefikMeshBlockHeader, + traefikMeshBlockTrailer, + traefikMeshDomain, + clusterDomain, + traefikMeshNamespace, + coreDNSVersion, + ) + customConfigMap.Data["traefik.mesh.server"] = corefile + + return customConfigMap, mChanged || tChanged, nil } coreDNSConfigMap, err := c.getConfigMap(ctx, deployment, "coredns") @@ -190,19 +207,29 @@ func (c *Client) patchCoreDNSConfig(ctx context.Context, deployment *appsv1.Depl return nil, false, err } - corefile, changed := addStubDomain( + corefile, mChanged := addStubDomain( coreDNSConfigMap.Data["Corefile"], maeshBlockHeader, maeshBlockTrailer, maeshDomain, clusterDomain, - maeshNamespace, + traefikMeshNamespace, + coreDNSVersion, + ) + + corefile, tChanged := addStubDomain( + corefile, + traefikMeshBlockHeader, + traefikMeshBlockTrailer, + traefikMeshDomain, + clusterDomain, + traefikMeshNamespace, coreDNSVersion, ) coreDNSConfigMap.Data["Corefile"] = corefile - return coreDNSConfigMap, changed, nil + return coreDNSConfigMap, mChanged || tChanged, nil } func (c *Client) getCoreDNSVersion(deployment *appsv1.Deployment) (*goversion.Version, error) { @@ -219,9 +246,9 @@ func (c *Client) getCoreDNSVersion(deployment *appsv1.Deployment) (*goversion.Ve return nil, fmt.Errorf("unable to get CoreDNS container in deployment %q in namespace %q", deployment.Name, deployment.Namespace) } -// ConfigureKubeDNS patches the KubeDNS configuration for Maesh. -func (c *Client) ConfigureKubeDNS(ctx context.Context, clusterDomain, maeshNamespace string) error { - c.logger.Debugf("Patching ConfigMap %q in namespace %q...", "kube-dns", maeshNamespace) +// ConfigureKubeDNS patches the KubeDNS configuration for Traefik Mesh. +func (c *Client) ConfigureKubeDNS(ctx context.Context, clusterDomain, traefikMeshNamespace string) error { + c.logger.Debugf("Patching ConfigMap %q in namespace %q...", "kube-dns", traefikMeshNamespace) kubeDNSDeployment, err := c.kubeClient.AppsV1().Deployments(metav1.NamespaceSystem).Get(ctx, "kube-dns", metav1.GetOptions{}) if err != nil { @@ -230,16 +257,16 @@ func (c *Client) ConfigureKubeDNS(ctx context.Context, clusterDomain, maeshNames var coreDNSServiceIP string - c.logger.Debugf("Getting ClusterIP for Service %q in namespace %q", "coredns", maeshNamespace) + c.logger.Debugf("Getting ClusterIP for Service %q in namespace %q", "coredns", traefikMeshNamespace) operation := func() error { - svc, svcErr := c.kubeClient.CoreV1().Services(maeshNamespace).Get(ctx, "coredns", metav1.GetOptions{}) + svc, svcErr := c.kubeClient.CoreV1().Services(traefikMeshNamespace).Get(ctx, "coredns", metav1.GetOptions{}) if svcErr != nil { - return fmt.Errorf("unable to get CoreDNS service in namespace %q: %w", maeshNamespace, err) + return fmt.Errorf("unable to get CoreDNS service in namespace %q: %w", traefikMeshNamespace, err) } if svc.Spec.ClusterIP == "" { - return fmt.Errorf("coredns service in namespace %q has no ClusterIP", maeshNamespace) + return fmt.Errorf("coredns service in namespace %q has no ClusterIP", traefikMeshNamespace) } coreDNSServiceIP = svc.Spec.ClusterIP @@ -251,13 +278,13 @@ func (c *Client) ConfigureKubeDNS(ctx context.Context, clusterDomain, maeshNames return err } - c.logger.Debugf("ClusterIP for Service %q in namespace %q is %q", "coredns", maeshNamespace, coreDNSServiceIP) + c.logger.Debugf("ClusterIP for Service %q in namespace %q is %q", "coredns", traefikMeshNamespace, coreDNSServiceIP) if err := c.patchKubeDNSConfig(ctx, kubeDNSDeployment, coreDNSServiceIP); err != nil { return err } - if err := c.ConfigureCoreDNS(ctx, maeshNamespace, clusterDomain, maeshNamespace); err != nil { + if err := c.ConfigureCoreDNS(ctx, traefikMeshNamespace, clusterDomain, traefikMeshNamespace); err != nil { return err } @@ -282,7 +309,10 @@ func (c *Client) patchKubeDNSConfig(ctx context.Context, deployment *appsv1.Depl } } + // Add our stubDomains. + // maesh stubDomain is deprecated and will be removed in the next major release. stubDomains["maesh"] = []string{coreDNSServiceIP} + stubDomains["traefik.mesh"] = []string{coreDNSServiceIP} configMapData, err := json.Marshal(stubDomains) if err != nil { @@ -307,7 +337,7 @@ func (c *Client) restartPods(ctx context.Context, deployment *appsv1.Deployment) annotations = make(map[string]string) } - annotations["maesh-hash"] = uuid.New().String() + annotations["traefik-mesh-hash"] = uuid.New().String() deployment.Spec.Template.Annotations = annotations _, err := c.kubeClient.AppsV1().Deployments(deployment.Namespace).Update(ctx, deployment, metav1.UpdateOptions{}) @@ -345,6 +375,7 @@ func (c *Client) unpatchCoreDNSConfig(ctx context.Context, deployment *appsv1.De // See https://docs.microsoft.com/en-us/azure/aks/coredns-custom if err == nil { delete(coreDNSConfigMap.Data, "maesh.server") + delete(coreDNSConfigMap.Data, "traefik.mesh.server") return coreDNSConfigMap, nil } @@ -354,12 +385,20 @@ func (c *Client) unpatchCoreDNSConfig(ctx context.Context, deployment *appsv1.De return nil, err } - coreDNSConfigMap.Data["Corefile"] = removeStubDomain( + corefile := removeStubDomain( coreDNSConfigMap.Data["Corefile"], maeshBlockHeader, maeshBlockTrailer, ) + corefile = removeStubDomain( + corefile, + traefikMeshBlockHeader, + traefikMeshBlockTrailer, + ) + + coreDNSConfigMap.Data["Corefile"] = corefile + return coreDNSConfigMap, nil } @@ -387,8 +426,10 @@ func (c *Client) RestoreKubeDNS(ctx context.Context) error { return fmt.Errorf("unable to unmarshal stubdomains: %w", err) } - // Delete our stubDomain. + // Delete our stubDomains. + // maesh stubDomain is deprecated and will be removed in the next major release. delete(stubDomains, "maesh") + delete(stubDomains, "traefik.mesh") configMapData, err := json.Marshal(stubDomains) if err != nil { @@ -513,6 +554,7 @@ func addStubDomain(config, blockHeader, blockTrailer, domain, clusterDomain, tra loadbalance } %[5]s` + upstream := "" if coreDNSVersion.LessThan(versionCoreDNS17) { diff --git a/pkg/dns/dns_test.go b/pkg/dns/dns_test.go index 567e43993..e75aeaba2 100644 --- a/pkg/dns/dns_test.go +++ b/pkg/dns/dns_test.go @@ -5,44 +5,44 @@ import ( "os" "testing" - "github.com/containous/maesh/pkg/k8s" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/traefik/mesh/pkg/k8s" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) func TestCheckDNSProvider(t *testing.T) { tests := []struct { - desc string - mockFile string - expectedProvider Provider - expectedErr bool + desc string + mockFile string + expProvider Provider + expErr bool }{ { - desc: "CoreDNS supported version", - mockFile: "checkdnsprovider_supported_version.yaml", - expectedProvider: CoreDNS, - expectedErr: false, + desc: "CoreDNS supported version", + mockFile: "checkdnsprovider_supported_version.yaml", + expProvider: CoreDNS, + expErr: false, }, { - desc: "KubeDNS", - mockFile: "checkdnsprovider_kubedns.yaml", - expectedProvider: KubeDNS, - expectedErr: false, + desc: "KubeDNS", + mockFile: "checkdnsprovider_kubedns.yaml", + expProvider: KubeDNS, + expErr: false, }, { - desc: "CoreDNS unsupported version", - mockFile: "checkdnsprovider_unsupported_version.yaml", - expectedProvider: UnknownDNS, - expectedErr: true, + desc: "CoreDNS unsupported version", + mockFile: "checkdnsprovider_unsupported_version.yaml", + expProvider: UnknownDNS, + expErr: true, }, { - desc: "No known DNS provider", - mockFile: "checkdnsprovider_no_provider.yaml", - expectedProvider: UnknownDNS, - expectedErr: true, + desc: "No known DNS provider", + mockFile: "checkdnsprovider_no_provider.yaml", + expProvider: UnknownDNS, + expErr: true, }, } @@ -61,89 +61,98 @@ func TestCheckDNSProvider(t *testing.T) { client := NewClient(log, k8sClient.KubernetesClient()) provider, err := client.CheckDNSProvider(ctx) - if test.expectedErr { + if test.expErr { require.Error(t, err) return } require.NoError(t, err) - assert.Equal(t, test.expectedProvider, provider) + assert.Equal(t, test.expProvider, provider) }) } } func TestConfigureCoreDNS(t *testing.T) { tests := []struct { - desc string - mockFile string - expectedCorefile string - expectedCustom string - expectedErr bool - expectedRestart bool + desc string + mockFile string + expCorefile string + expCustoms map[string]string + expErr bool + expRestart bool }{ { - desc: "First time config of CoreDNS", - mockFile: "configurecoredns_not_patched.yaml", - expectedErr: false, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", - expectedRestart: true, + desc: "First time config of CoreDNS", + mockFile: "configurecoredns_not_patched.yaml", + expErr: false, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n\n#### Begin Traefik Mesh Block\ntraefik.mesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.traefik.mesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Traefik Mesh Block\n", + expRestart: true, }, { - desc: "Already patched CoreDNS config", - mockFile: "configurecoredns_already_patched.yaml", - expectedErr: false, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n }\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", - expectedRestart: false, + desc: "Already patched CoreDNS config", + mockFile: "configurecoredns_already_patched.yaml", + expErr: false, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n }\n\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n\n#### Begin Traefik Mesh Block\ntraefik.mesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.traefik.mesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Traefik Mesh Block\n", + expRestart: false, }, { - desc: "Missing Corefile configmap", - mockFile: "configurecoredns_missing_configmap.yaml", - expectedErr: true, - expectedRestart: false, + desc: "Missing Corefile configmap", + mockFile: "configurecoredns_missing_configmap.yaml", + expErr: true, + expRestart: false, }, { - desc: "First time config of CoreDNS custom", - mockFile: "configurecoredns_custom_not_patched.yaml", - expectedErr: false, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n", - expectedCustom: "\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", - expectedRestart: true, + desc: "First time config of CoreDNS custom", + mockFile: "configurecoredns_custom_not_patched.yaml", + expErr: false, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n", + expCustoms: map[string]string{ + "maesh.server": "\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", + "traefik.mesh.server": "\n#### Begin Traefik Mesh Block\ntraefik.mesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.traefik.mesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Traefik Mesh Block\n", + }, + expRestart: true, }, { - desc: "Already patched CoreDNS custom config", - mockFile: "configurecoredns_custom_already_patched.yaml", - expectedErr: false, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n", - expectedCustom: "#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", - expectedRestart: false, + desc: "Already patched CoreDNS custom config", + mockFile: "configurecoredns_custom_already_patched.yaml", + expErr: false, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n", + expCustoms: map[string]string{ + "maesh.server": "#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", + "traefik.mesh.server": "#### Begin Traefik Mesh Block\ntraefik.mesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.traefik.mesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n upstream\n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Traefik Mesh Block\n", + }, + expRestart: false, }, { - desc: "Config of CoreDNS 1.7", - mockFile: "configurecoredns_17.yaml", - expectedErr: false, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", - expectedRestart: true, + desc: "Config of CoreDNS 1.7", + mockFile: "configurecoredns_17.yaml", + expErr: false, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n\n#### Begin Traefik Mesh Block\ntraefik.mesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.traefik.mesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Traefik Mesh Block\n", + expRestart: true, }, { - desc: "CoreDNS 1.7 already patched for an older version of CoreDNS", - mockFile: "configurecoredns_17_already_patched.yaml", - expectedErr: false, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", - expectedRestart: true, + desc: "CoreDNS 1.7 already patched for an older version of CoreDNS", + mockFile: "configurecoredns_17_already_patched.yaml", + expErr: false, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n\n#### Begin Traefik Mesh Block\ntraefik.mesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.traefik.mesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Traefik Mesh Block\n", + expRestart: true, }, { - desc: "CoreDNS 1.7 custom config already patched for an older version of CoreDNS", - mockFile: "configurecoredns_17_custom_already_patched.yaml", - expectedErr: false, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n", - expectedCustom: "\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", - expectedRestart: true, + desc: "CoreDNS 1.7 custom config already patched for an older version of CoreDNS", + mockFile: "configurecoredns_17_custom_already_patched.yaml", + expErr: false, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n", + expCustoms: map[string]string{ + "maesh.server": "\n#### Begin Maesh Block\nmaesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.maesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.maesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Maesh Block\n", + "traefik.mesh.server": "\n#### Begin Traefik Mesh Block\ntraefik.mesh:53 {\n errors\n rewrite continue {\n name regex ([a-zA-Z0-9-_]*)\\.([a-zv0-9-_]*)\\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi\n answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\\.toto\\.svc\\.titi {1}.{2}.traefik.mesh\n }\n kubernetes titi in-addr.arpa ip6.arpa {\n pods insecure\n \n fallthrough in-addr.arpa ip6.arpa\n }\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n#### End Traefik Mesh Block\n", + }, + expRestart: true, }, { - desc: "Missing CoreDNS deployment", - mockFile: "configurecoredns_missing_deployment.yaml", - expectedErr: true, - expectedRestart: false, + desc: "Missing CoreDNS deployment", + mockFile: "configurecoredns_missing_deployment.yaml", + expErr: true, + expRestart: false, }, } @@ -162,7 +171,7 @@ func TestConfigureCoreDNS(t *testing.T) { client := NewClient(log, k8sClient.KubernetesClient()) err := client.ConfigureCoreDNS(ctx, "kube-system", "titi", "toto") - if test.expectedErr { + if test.expErr { require.Error(t, err) return } @@ -172,52 +181,54 @@ func TestConfigureCoreDNS(t *testing.T) { cfgMap, err := k8sClient.KubernetesClient().CoreV1().ConfigMaps("kube-system").Get(ctx, "coredns", metav1.GetOptions{}) require.NoError(t, err) - assert.Equal(t, test.expectedCorefile, cfgMap.Data["Corefile"]) + assert.Equal(t, test.expCorefile, cfgMap.Data["Corefile"]) - if len(test.expectedCustom) > 0 { + if len(test.expCustoms) > 0 { var customCfgMap *corev1.ConfigMap customCfgMap, err = k8sClient.KubernetesClient().CoreV1().ConfigMaps("kube-system").Get(ctx, "coredns-custom", metav1.GetOptions{}) require.NoError(t, err) - assert.Equal(t, test.expectedCustom, customCfgMap.Data["maesh.server"]) + for key, value := range test.expCustoms { + assert.Equal(t, value, customCfgMap.Data[key]) + } } coreDNSDeployment, err := k8sClient.KubernetesClient().AppsV1().Deployments("kube-system").Get(ctx, "coredns", metav1.GetOptions{}) require.NoError(t, err) - restarted := coreDNSDeployment.Spec.Template.Annotations["maesh-hash"] != "" - assert.Equal(t, test.expectedRestart, restarted) + restarted := coreDNSDeployment.Spec.Template.Annotations["traefik-mesh-hash"] != "" + assert.Equal(t, test.expRestart, restarted) }) } } func TestConfigureKubeDNS(t *testing.T) { tests := []struct { - desc string - mockFile string - expectedStubDomains string - expectedErr bool + desc string + mockFile string + expStubDomains string + expErr bool }{ { - desc: "should return an error if kube-dns deployment does not exist", - mockFile: "configurekubedns_missing_deployment.yaml", - expectedErr: true, + desc: "should return an error if kube-dns deployment does not exist", + mockFile: "configurekubedns_missing_deployment.yaml", + expErr: true, }, { - desc: "should add maesh stubdomain config in kube-dns configmap", - mockFile: "configurekubedns_not_patched.yaml", - expectedStubDomains: `{"maesh":["1.2.3.4"]}`, + desc: "should add stubdomains config in kube-dns configmap", + mockFile: "configurekubedns_not_patched.yaml", + expStubDomains: `{"maesh":["1.2.3.4"],"traefik.mesh":["1.2.3.4"]}`, }, { - desc: "should replace maesh stubdomain config in kube-dns configmap", - mockFile: "configurekubedns_already_patched.yaml", - expectedStubDomains: `{"maesh":["1.2.3.4"]}`, + desc: "should replace stubdomains config in kube-dns configmap", + mockFile: "configurekubedns_already_patched.yaml", + expStubDomains: `{"maesh":["1.2.3.4"],"traefik.mesh":["1.2.3.4"]}`, }, { - desc: "should create optional kube-dns configmap and add maesh stubdomain config", - mockFile: "configurekubedns_optional_configmap.yaml", - expectedStubDomains: `{"maesh":["1.2.3.4"]}`, + desc: "should create optional kube-dns configmap and add stubdomains config", + mockFile: "configurekubedns_optional_configmap.yaml", + expStubDomains: `{"maesh":["1.2.3.4"],"traefik.mesh":["1.2.3.4"]}`, }, } @@ -235,8 +246,8 @@ func TestConfigureKubeDNS(t *testing.T) { client := NewClient(log, k8sClient.KubernetesClient()) - err := client.ConfigureKubeDNS(ctx, "cluster.local", "maesh") - if test.expectedErr { + err := client.ConfigureKubeDNS(ctx, "cluster.local", "traefik-mesh") + if test.expErr { require.Error(t, err) return } @@ -246,39 +257,39 @@ func TestConfigureKubeDNS(t *testing.T) { cfgMap, err := k8sClient.KubernetesClient().CoreV1().ConfigMaps("kube-system").Get(ctx, "kube-dns", metav1.GetOptions{}) require.NoError(t, err) - assert.Equal(t, test.expectedStubDomains, cfgMap.Data["stubDomains"]) + assert.Equal(t, test.expStubDomains, cfgMap.Data["stubDomains"]) }) } } func TestRestoreCoreDNS(t *testing.T) { tests := []struct { - desc string - mockFile string - hasCustom bool - expectedCorefile string + desc string + mockFile string + hasCustom bool + expCorefile string }{ { - desc: "CoreDNS config patched", - mockFile: "restorecoredns_patched.yaml", - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n }\n\n# This is test data that must be present\n", + desc: "CoreDNS config patched", + mockFile: "restorecoredns_patched.yaml", + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n }\n\n# This is test data that must be present\n", }, { - desc: "CoreDNS config not patched", - mockFile: "restorecoredns_not_patched.yaml", - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n", + desc: "CoreDNS config not patched", + mockFile: "restorecoredns_not_patched.yaml", + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n", }, { - desc: "CoreDNS custom config patched", - mockFile: "restorecoredns_custom_patched.yaml", - hasCustom: true, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n }\n", + desc: "CoreDNS custom config patched", + mockFile: "restorecoredns_custom_patched.yaml", + hasCustom: true, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n }\n", }, { - desc: "CoreDNS custom config not patched", - mockFile: "restorecoredns_custom_not_patched.yaml", - hasCustom: true, - expectedCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n }\n", + desc: "CoreDNS custom config not patched", + mockFile: "restorecoredns_custom_not_patched.yaml", + hasCustom: true, + expCorefile: ".:53 {\n errors\n health {\n lameduck 5s\n }\n ready\n kubernetes {{ pillar['dns_domain'] }} in-addr.arpa ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n ttl 30\n }\n prometheus :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n }\n", }, } @@ -302,7 +313,7 @@ func TestRestoreCoreDNS(t *testing.T) { cfgMap, err := k8sClient.KubernetesClient().CoreV1().ConfigMaps("kube-system").Get(ctx, "coredns", metav1.GetOptions{}) require.NoError(t, err) - assert.Equal(t, test.expectedCorefile, cfgMap.Data["Corefile"]) + assert.Equal(t, test.expCorefile, cfgMap.Data["Corefile"]) if test.hasCustom { customCfgMap, err := k8sClient.KubernetesClient().CoreV1().ConfigMaps("kube-system").Get(ctx, "coredns-custom", metav1.GetOptions{}) @@ -320,19 +331,19 @@ func TestRestoreCoreDNS(t *testing.T) { func TestRestoreKubeDNS(t *testing.T) { tests := []struct { - desc string - mockFile string - expectedStubDomains string + desc string + mockFile string + expStubDomains string }{ { - desc: "Not patched", - mockFile: "restorekubedns_not_patched.yaml", - expectedStubDomains: "", + desc: "Not patched", + mockFile: "restorekubedns_not_patched.yaml", + expStubDomains: "", }, { - desc: "Already patched", - mockFile: "restorekubedns_already_patched.yaml", - expectedStubDomains: `{"test":["5.6.7.8"]}`, + desc: "Already patched", + mockFile: "restorekubedns_already_patched.yaml", + expStubDomains: `{"test":["5.6.7.8"]}`, }, } @@ -356,7 +367,7 @@ func TestRestoreKubeDNS(t *testing.T) { cfgMap, err := k8sClient.KubernetesClient().CoreV1().ConfigMaps("kube-system").Get(ctx, "kube-dns", metav1.GetOptions{}) require.NoError(t, err) - assert.Equal(t, test.expectedStubDomains, cfgMap.Data["stubDomains"]) + assert.Equal(t, test.expStubDomains, cfgMap.Data["stubDomains"]) }) } } diff --git a/pkg/dns/testdata/configurecoredns_already_patched.yaml b/pkg/dns/testdata/configurecoredns_already_patched.yaml index 8a98c6471..00b930fb7 100644 --- a/pkg/dns/testdata/configurecoredns_already_patched.yaml +++ b/pkg/dns/testdata/configurecoredns_already_patched.yaml @@ -46,6 +46,7 @@ data: reload loadbalance } + #### Begin Maesh Block maesh:53 { errors @@ -65,3 +66,23 @@ data: loadbalance } #### End Maesh Block + + #### Begin Traefik Mesh Block + traefik.mesh:53 { + errors + rewrite continue { + name regex ([a-zA-Z0-9-_]*)\.([a-zv0-9-_]*)\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi + answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\.toto\.svc\.titi {1}.{2}.traefik.mesh + } + kubernetes titi in-addr.arpa ip6.arpa { + pods insecure + upstream + fallthrough in-addr.arpa ip6.arpa + } + forward . /etc/resolv.conf + cache 30 + loop + reload + loadbalance + } + #### End Traefik Mesh Block diff --git a/pkg/dns/testdata/configurecoredns_custom_already_patched.yaml b/pkg/dns/testdata/configurecoredns_custom_already_patched.yaml index f4cce8c94..f34f6d239 100644 --- a/pkg/dns/testdata/configurecoredns_custom_already_patched.yaml +++ b/pkg/dns/testdata/configurecoredns_custom_already_patched.yaml @@ -41,6 +41,28 @@ data: loadbalance } #### End Maesh Block + + traefik.mesh.server: | + #### Begin Traefik Mesh Block + traefik.mesh:53 { + errors + rewrite continue { + name regex ([a-zA-Z0-9-_]*)\.([a-zv0-9-_]*)\.traefik.mesh toto-{1}-6d61657368-{2}.toto.svc.titi + answer name toto-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*)\.toto\.svc\.titi {1}.{2}.traefik.mesh + } + kubernetes titi in-addr.arpa ip6.arpa { + pods insecure + upstream + fallthrough in-addr.arpa ip6.arpa + } + forward . /etc/resolv.conf + cache 30 + loop + reload + loadbalance + } + #### End Traefik Mesh Block + --- apiVersion: v1 kind: ConfigMap diff --git a/pkg/dns/testdata/configurekubedns_already_patched.yaml b/pkg/dns/testdata/configurekubedns_already_patched.yaml index f620f7b1c..73b2cf03b 100644 --- a/pkg/dns/testdata/configurekubedns_already_patched.yaml +++ b/pkg/dns/testdata/configurekubedns_already_patched.yaml @@ -20,7 +20,7 @@ apiVersion: v1 kind: Service metadata: name: coredns - namespace: maesh + namespace: traefik-mesh spec: clusterIP: "1.2.3.4" --- @@ -28,7 +28,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: coredns - namespace: maesh + namespace: traefik-mesh spec: template: spec: @@ -45,13 +45,13 @@ apiVersion: v1 kind: ConfigMap metadata: name: other-cfgmap - namespace: maesh + namespace: traefik-mesh --- apiVersion: v1 kind: ConfigMap metadata: name: coredns - namespace: maesh + namespace: traefik-mesh data: Corefile: | .:53 { diff --git a/pkg/dns/testdata/configurekubedns_not_patched.yaml b/pkg/dns/testdata/configurekubedns_not_patched.yaml index f620f7b1c..73b2cf03b 100644 --- a/pkg/dns/testdata/configurekubedns_not_patched.yaml +++ b/pkg/dns/testdata/configurekubedns_not_patched.yaml @@ -20,7 +20,7 @@ apiVersion: v1 kind: Service metadata: name: coredns - namespace: maesh + namespace: traefik-mesh spec: clusterIP: "1.2.3.4" --- @@ -28,7 +28,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: coredns - namespace: maesh + namespace: traefik-mesh spec: template: spec: @@ -45,13 +45,13 @@ apiVersion: v1 kind: ConfigMap metadata: name: other-cfgmap - namespace: maesh + namespace: traefik-mesh --- apiVersion: v1 kind: ConfigMap metadata: name: coredns - namespace: maesh + namespace: traefik-mesh data: Corefile: | .:53 { diff --git a/pkg/dns/testdata/configurekubedns_optional_configmap.yaml b/pkg/dns/testdata/configurekubedns_optional_configmap.yaml index 76cee2c54..e49f6dcfc 100644 --- a/pkg/dns/testdata/configurekubedns_optional_configmap.yaml +++ b/pkg/dns/testdata/configurekubedns_optional_configmap.yaml @@ -15,7 +15,7 @@ apiVersion: v1 kind: Service metadata: name: coredns - namespace: maesh + namespace: traefik-mesh spec: clusterIP: "1.2.3.4" --- @@ -23,7 +23,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: coredns - namespace: maesh + namespace: traefik-mesh spec: template: spec: @@ -40,13 +40,13 @@ apiVersion: v1 kind: ConfigMap metadata: name: other-cfgmap - namespace: maesh + namespace: traefik-mesh --- apiVersion: v1 kind: ConfigMap metadata: name: coredns - namespace: maesh + namespace: traefik-mesh data: Corefile: | .:53 { diff --git a/pkg/dns/testdata/restorekubedns_already_patched.yaml b/pkg/dns/testdata/restorekubedns_already_patched.yaml index d7c151a34..13469a24a 100644 --- a/pkg/dns/testdata/restorekubedns_already_patched.yaml +++ b/pkg/dns/testdata/restorekubedns_already_patched.yaml @@ -17,12 +17,12 @@ metadata: namespace: kube-system data: stubDomains: | - {"maesh":["1.2.3.4"], "test":["5.6.7.8"]} + {"maesh":["1.2.3.4"], "traefik.mesh":["1.2.3.4"], "test":["5.6.7.8"]} --- apiVersion: v1 kind: Service metadata: name: coredns - namespace: maesh + namespace: traefik-mesh spec: clusterIP: "1.2.3.4" diff --git a/pkg/dns/testdata/restorekubedns_not_patched.yaml b/pkg/dns/testdata/restorekubedns_not_patched.yaml index d2023de22..f62349070 100644 --- a/pkg/dns/testdata/restorekubedns_not_patched.yaml +++ b/pkg/dns/testdata/restorekubedns_not_patched.yaml @@ -20,6 +20,6 @@ apiVersion: v1 kind: Service metadata: name: coredns - namespace: maesh + namespace: traefik-mesh spec: clusterIP: "1.2.3.4" diff --git a/pkg/provider/key.go b/pkg/provider/key.go index c64473978..e533e7d66 100644 --- a/pkg/provider/key.go +++ b/pkg/provider/key.go @@ -3,7 +3,7 @@ package provider import ( "fmt" - "github.com/containous/maesh/pkg/topology" + "github.com/traefik/mesh/pkg/topology" ) const ( diff --git a/pkg/provider/provider.go b/pkg/provider/provider.go index 8c76254d4..d30a27c0f 100644 --- a/pkg/provider/provider.go +++ b/pkg/provider/provider.go @@ -6,10 +6,10 @@ import ( "net" "strconv" - "github.com/containous/maesh/pkg/annotations" - "github.com/containous/maesh/pkg/topology" - "github.com/containous/traefik/v2/pkg/config/dynamic" "github.com/sirupsen/logrus" + "github.com/traefik/mesh/pkg/annotations" + "github.com/traefik/mesh/pkg/topology" + "github.com/traefik/traefik/v2/pkg/config/dynamic" corev1 "k8s.io/api/core/v1" ) @@ -533,7 +533,7 @@ func (p *Provider) buildServicesForTrafficSplitBackends(t *topology.Topology, cf if len(backendSvc.TrafficSplits) > 0 { tsKey := topology.Key{Name: ts.Name, Namespace: ts.Namespace} - p.logger.Warnf("Nested TrafficSplits detected in TrafficSplit %q: Maesh doesn't support nested TrafficSplits", tsKey) + p.logger.Warnf("Nested TrafficSplits detected in TrafficSplit %q: Traefik Mesh doesn't support nested TrafficSplits", tsKey) } backendSvcKey := getServiceKeyFromTrafficSplitBackend(ts, svcPort.Port, backend) @@ -854,7 +854,7 @@ func buildUDPServiceFromTrafficSplit(backendSvc []dynamic.UDPWRRService) *dynami func buildHTTPSplitTrafficBackendService(backend topology.TrafficSplitBackend, scheme string, port int32) *dynamic.Service { server := dynamic.Server{ - URL: fmt.Sprintf("%s://%s.%s.maesh:%d", scheme, backend.Service.Name, backend.Service.Namespace, port), + URL: fmt.Sprintf("%s://%s.%s.traefik.mesh:%d", scheme, backend.Service.Name, backend.Service.Namespace, port), } return &dynamic.Service{ @@ -867,7 +867,7 @@ func buildHTTPSplitTrafficBackendService(backend topology.TrafficSplitBackend, s func buildTCPSplitTrafficBackendService(backend topology.TrafficSplitBackend, port int32) *dynamic.TCPService { server := dynamic.TCPServer{ - Address: fmt.Sprintf("%s.%s.maesh:%d", backend.Service.Name, backend.Service.Namespace, port), + Address: fmt.Sprintf("%s.%s.traefik.mesh:%d", backend.Service.Name, backend.Service.Namespace, port), } return &dynamic.TCPService{ @@ -879,7 +879,7 @@ func buildTCPSplitTrafficBackendService(backend topology.TrafficSplitBackend, po func buildUDPSplitTrafficBackendService(backend topology.TrafficSplitBackend, port int32) *dynamic.UDPService { server := dynamic.UDPServer{ - Address: fmt.Sprintf("%s.%s.maesh:%d", backend.Service.Name, backend.Service.Namespace, port), + Address: fmt.Sprintf("%s.%s.traefik.mesh:%d", backend.Service.Name, backend.Service.Namespace, port), } return &dynamic.UDPService{ diff --git a/pkg/provider/provider_test.go b/pkg/provider/provider_test.go index daa0525f3..6973f074d 100644 --- a/pkg/provider/provider_test.go +++ b/pkg/provider/provider_test.go @@ -5,11 +5,11 @@ import ( "io/ioutil" "testing" - "github.com/containous/maesh/pkg/topology" - "github.com/containous/traefik/v2/pkg/config/dynamic" "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/traefik/mesh/pkg/topology" + "github.com/traefik/traefik/v2/pkg/config/dynamic" ) type stateTableMock func(namespace, name string, port int32) (int32, bool) diff --git a/pkg/provider/rule.go b/pkg/provider/rule.go index c16c6b064..6a08f07bd 100644 --- a/pkg/provider/rule.go +++ b/pkg/provider/rule.go @@ -4,8 +4,8 @@ import ( "fmt" "strings" - "github.com/containous/maesh/pkg/topology" specs "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/specs/v1alpha3" + "github.com/traefik/mesh/pkg/topology" ) func buildHTTPRuleFromTrafficSpecs(specs []topology.TrafficSpec) string { @@ -90,7 +90,7 @@ func appendHeaderFilter(matchParts []string, match *specs.HTTPMatch) []string { } func buildHTTPRuleFromService(svc *topology.Service) string { - return fmt.Sprintf("Host(`%s.%s.maesh`) || Host(`%s`)", svc.Name, svc.Namespace, svc.ClusterIP) + return fmt.Sprintf("Host(`%[1]s.%[2]s.traefik.mesh`) || Host(`%[1]s.%[2]s.maesh`) || Host(`%s`)", svc.Name, svc.Namespace, svc.ClusterIP) } func buildHTTPRuleFromTrafficTarget(tt *topology.ServiceTrafficTarget, ttSvc *topology.Service) string { diff --git a/pkg/provider/testdata/acl-disabled-http-basic-config.json b/pkg/provider/testdata/acl-disabled-http-basic-config.json index 4bdac813f..911997c48 100644 --- a/pkg/provider/testdata/acl-disabled-http-basic-config.json +++ b/pkg/provider/testdata/acl-disabled-http-basic-config.json @@ -6,16 +6,16 @@ "http-10000" ], "service": "my-ns-svc-a-8080", - "rule": "Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", - "priority": 1001 + "rule": "Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", + "priority": 1002 }, "my-ns-svc-a-8081": { "entryPoints": [ "http-10001" ], "service": "my-ns-svc-a-8081", - "rule": "Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", - "priority": 1001 + "rule": "Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", + "priority": 1002 }, "readiness": { "entryPoints": [ diff --git a/pkg/provider/testdata/acl-disabled-http-traffic-split-config.json b/pkg/provider/testdata/acl-disabled-http-traffic-split-config.json index c039f9ee9..d5d3cecad 100644 --- a/pkg/provider/testdata/acl-disabled-http-traffic-split-config.json +++ b/pkg/provider/testdata/acl-disabled-http-traffic-split-config.json @@ -6,32 +6,32 @@ "http-10000" ], "service": "my-ns-svc-a-8080", - "rule": "Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", - "priority": 1001 + "rule": "Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", + "priority": 1002 }, "my-ns-svc-b-8080": { "entryPoints": [ "http-10000" ], "service": "my-ns-svc-b-8080", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", - "priority": 1001 + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", + "priority": 1002 }, "my-ns-svc-c-8080": { "entryPoints": [ "http-10000" ], "service": "my-ns-svc-c-8080", - "rule": "Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", - "priority": 1001 + "rule": "Host(`svc-c.my-ns.traefik.mesh`) || Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", + "priority": 1002 }, "my-ns-svc-a-split-8080-traffic-split-direct": { "entryPoints": [ "http-10000" ], "service": "my-ns-svc-a-split-8080-traffic-split", - "rule": "Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", - "priority": 4001 + "rule": "Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", + "priority": 4002 }, "readiness": { "entryPoints": [ @@ -70,7 +70,7 @@ "loadBalancer": { "servers": [ { - "url": "http://svc-b.my-ns.maesh:8080" + "url": "http://svc-b.my-ns.traefik.mesh:8080" } ], "passHostHeader": false @@ -80,7 +80,7 @@ "loadBalancer": { "servers": [ { - "url": "http://svc-c.my-ns.maesh:8080" + "url": "http://svc-c.my-ns.traefik.mesh:8080" } ], "passHostHeader": false diff --git a/pkg/provider/testdata/acl-enabled-http-basic-config.json b/pkg/provider/testdata/acl-enabled-http-basic-config.json index bb389aa22..349d37b31 100644 --- a/pkg/provider/testdata/acl-enabled-http-basic-config.json +++ b/pkg/provider/testdata/acl-enabled-http-basic-config.json @@ -9,7 +9,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", "priority": 1 }, "my-ns-svc-b-8081": { @@ -20,7 +20,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", "priority": 1 }, "my-ns-svc-b-tt-8080-traffic-target-direct": { @@ -31,8 +31,8 @@ "my-ns-svc-b-tt-whitelist-traffic-target-direct" ], "service": "my-ns-svc-b-tt-8080-traffic-target", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", - "priority": 2001 + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", + "priority": 2002 }, "my-ns-svc-b-tt-8081-traffic-target-direct": { "entryPoints": [ @@ -42,8 +42,8 @@ "my-ns-svc-b-tt-whitelist-traffic-target-direct" ], "service": "my-ns-svc-b-tt-8081-traffic-target", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", - "priority": 2001 + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", + "priority": 2002 }, "readiness": { "entryPoints": [ diff --git a/pkg/provider/testdata/acl-enabled-http-route-group-config.json b/pkg/provider/testdata/acl-enabled-http-route-group-config.json index 5f86c21d8..6ce8c18ae 100644 --- a/pkg/provider/testdata/acl-enabled-http-route-group-config.json +++ b/pkg/provider/testdata/acl-enabled-http-route-group-config.json @@ -9,7 +9,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)", "priority": 1 }, "my-ns-svc-b-tt-8080-traffic-target-direct": { @@ -20,8 +20,8 @@ "my-ns-svc-b-tt-whitelist-traffic-target-direct" ], "service": "my-ns-svc-b-tt-8080-traffic-target", - "rule": "(Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)) && (PathPrefix(`/{path:app}`) || (PathPrefix(`/{path:api/notifications}`) && Method(`GET`)) || HeadersRegexp(`User-Agent`, `Mozilla/.*`))", - "priority": 2005 + "rule": "(Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.14.1`)) && (PathPrefix(`/{path:app}`) || (PathPrefix(`/{path:api/notifications}`) && Method(`GET`)) || HeadersRegexp(`User-Agent`, `Mozilla/.*`))", + "priority": 2006 }, "readiness": { "entryPoints": [ diff --git a/pkg/provider/testdata/acl-enabled-http-traffic-split-config.json b/pkg/provider/testdata/acl-enabled-http-traffic-split-config.json index 5c60ab349..d26428a09 100644 --- a/pkg/provider/testdata/acl-enabled-http-traffic-split-config.json +++ b/pkg/provider/testdata/acl-enabled-http-traffic-split-config.json @@ -9,7 +9,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", + "rule": "Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", "priority": 1 }, "my-ns-svc-a-split-8080-traffic-split-direct": { @@ -20,8 +20,8 @@ "my-ns-svc-a-split-whitelist-traffic-split-direct" ], "service": "my-ns-svc-a-split-8080-traffic-split", - "rule": "Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", - "priority": 4001 + "rule": "Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", + "priority": 4002 }, "my-ns-svc-b-8080": { @@ -32,7 +32,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", "priority": 1 }, "my-ns-svc-b-tt-8080-traffic-target-direct": { @@ -43,8 +43,8 @@ "my-ns-svc-b-tt-whitelist-traffic-target-direct" ], "service": "my-ns-svc-b-tt-8080-traffic-target", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", - "priority": 2001 + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", + "priority": 2002 }, "my-ns-svc-b-tt-8080-traffic-target-indirect": { "entryPoints": [ @@ -54,8 +54,8 @@ "my-ns-svc-b-tt-whitelist-traffic-target-indirect" ], "service": "my-ns-svc-b-tt-8080-traffic-target", - "rule": "(Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)) && HeadersRegexp(`X-Forwarded-For`, `.+`)", - "priority": 3002 + "rule": "(Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)) && HeadersRegexp(`X-Forwarded-For`, `.+`)", + "priority": 3003 }, "my-ns-svc-c-8080": { @@ -66,7 +66,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", + "rule": "Host(`svc-c.my-ns.traefik.mesh`) || Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", "priority": 1 }, "my-ns-svc-c-tt-8080-traffic-target-direct": { @@ -77,8 +77,8 @@ "my-ns-svc-c-tt-whitelist-traffic-target-direct" ], "service": "my-ns-svc-c-tt-8080-traffic-target", - "rule": "Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", - "priority": 2001 + "rule": "Host(`svc-c.my-ns.traefik.mesh`) || Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", + "priority": 2002 }, "my-ns-svc-c-tt-8080-traffic-target-indirect": { "entryPoints": [ @@ -88,8 +88,8 @@ "my-ns-svc-c-tt-whitelist-traffic-target-indirect" ], "service": "my-ns-svc-c-tt-8080-traffic-target", - "rule": "(Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)) && HeadersRegexp(`X-Forwarded-For`, `.+`)", - "priority": 3002 + "rule": "(Host(`svc-c.my-ns.traefik.mesh`) || Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)) && HeadersRegexp(`X-Forwarded-For`, `.+`)", + "priority": 3003 }, "readiness": { @@ -124,7 +124,7 @@ "loadBalancer": { "servers": [ { - "url": "http://svc-b.my-ns.maesh:8080" + "url": "http://svc-b.my-ns.traefik.mesh:8080" } ], "passHostHeader": false @@ -134,7 +134,7 @@ "loadBalancer": { "servers": [ { - "url": "http://svc-c.my-ns.maesh:8080" + "url": "http://svc-c.my-ns.traefik.mesh:8080" } ], "passHostHeader": false diff --git a/pkg/provider/testdata/acl-enabled-http-traffic-split-http-route-group-config.json b/pkg/provider/testdata/acl-enabled-http-traffic-split-http-route-group-config.json index 5c81e49d9..7f2a3d716 100644 --- a/pkg/provider/testdata/acl-enabled-http-traffic-split-http-route-group-config.json +++ b/pkg/provider/testdata/acl-enabled-http-traffic-split-http-route-group-config.json @@ -9,7 +9,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", + "rule": "Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", "priority": 1 }, "my-ns-svc-a-split-8080-traffic-split-direct": { @@ -20,8 +20,8 @@ "my-ns-svc-a-split-whitelist-traffic-split-direct" ], "service": "my-ns-svc-a-split-8080-traffic-split", - "rule": "(Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)) && (PathPrefix(`/{path:app}`))", - "priority": 4002 + "rule": "(Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)) && (PathPrefix(`/{path:app}`))", + "priority": 4003 }, "my-ns-svc-b-8080": { @@ -32,7 +32,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", "priority": 1 }, "my-ns-svc-b-tt-8080-traffic-target-direct": { @@ -43,8 +43,8 @@ "my-ns-svc-b-tt-whitelist-traffic-target-direct" ], "service": "my-ns-svc-b-tt-8080-traffic-target", - "rule": "Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", - "priority": 2001 + "rule": "Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)", + "priority": 2002 }, "my-ns-svc-b-tt-8080-traffic-target-indirect": { "entryPoints": [ @@ -54,8 +54,8 @@ "my-ns-svc-b-tt-whitelist-traffic-target-indirect" ], "service": "my-ns-svc-b-tt-8080-traffic-target", - "rule": "(Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)) && HeadersRegexp(`X-Forwarded-For`, `.+`)", - "priority": 3002 + "rule": "(Host(`svc-b.my-ns.traefik.mesh`) || Host(`svc-b.my-ns.maesh`) || Host(`10.10.15.1`)) && HeadersRegexp(`X-Forwarded-For`, `.+`)", + "priority": 3003 }, "my-ns-svc-c-8080": { @@ -66,7 +66,7 @@ "block-all-middleware" ], "service": "block-all-service", - "rule": "Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", + "rule": "Host(`svc-c.my-ns.traefik.mesh`) || Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", "priority": 1 }, "my-ns-svc-c-tt-8080-traffic-target-direct": { @@ -77,8 +77,8 @@ "my-ns-svc-c-tt-whitelist-traffic-target-direct" ], "service": "my-ns-svc-c-tt-8080-traffic-target", - "rule": "Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", - "priority": 2001 + "rule": "Host(`svc-c.my-ns.traefik.mesh`) || Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)", + "priority": 2002 }, "my-ns-svc-c-tt-8080-traffic-target-indirect": { "entryPoints": [ @@ -88,8 +88,8 @@ "my-ns-svc-c-tt-whitelist-traffic-target-indirect" ], "service": "my-ns-svc-c-tt-8080-traffic-target", - "rule": "(Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)) && HeadersRegexp(`X-Forwarded-For`, `.+`)", - "priority": 3002 + "rule": "(Host(`svc-c.my-ns.traefik.mesh`) || Host(`svc-c.my-ns.maesh`) || Host(`10.10.16.1`)) && HeadersRegexp(`X-Forwarded-For`, `.+`)", + "priority": 3003 }, "readiness": { @@ -124,7 +124,7 @@ "loadBalancer": { "servers": [ { - "url": "http://svc-b.my-ns.maesh:8080" + "url": "http://svc-b.my-ns.traefik.mesh:8080" } ], "passHostHeader": false @@ -134,7 +134,7 @@ "loadBalancer": { "servers": [ { - "url": "http://svc-c.my-ns.maesh:8080" + "url": "http://svc-c.my-ns.traefik.mesh:8080" } ], "passHostHeader": false diff --git a/pkg/provider/testdata/annotations-scheme-config.json b/pkg/provider/testdata/annotations-scheme-config.json index 7af5e42ef..a8692c18f 100644 --- a/pkg/provider/testdata/annotations-scheme-config.json +++ b/pkg/provider/testdata/annotations-scheme-config.json @@ -6,8 +6,8 @@ "http-10000" ], "service": "my-ns-svc-a-8080", - "rule": "Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", - "priority": 1001 + "rule": "Host(`svc-a.my-ns.traefik.mesh`) || Host(`svc-a.my-ns.maesh`) || Host(`10.10.14.1`)", + "priority": 1002 }, "readiness": { "entryPoints": [ diff --git a/pkg/provider/testdata/annotations-scheme-topology.json b/pkg/provider/testdata/annotations-scheme-topology.json index 27e45bb38..28634d706 100644 --- a/pkg/provider/testdata/annotations-scheme-topology.json +++ b/pkg/provider/testdata/annotations-scheme-topology.json @@ -5,7 +5,7 @@ "namespace": "my-ns", "selector": {}, "annotations": { - "maesh.containo.us/scheme": "https" + "mesh.traefik.io/scheme": "https" }, "ports": [ { @@ -38,4 +38,4 @@ }, "serviceTrafficTargets": {}, "trafficSplits": {} -} \ No newline at end of file +} diff --git a/pkg/provider/testdata/annotations-traffic-type-topology.json b/pkg/provider/testdata/annotations-traffic-type-topology.json index fa58e5d1c..a9c70b0cb 100644 --- a/pkg/provider/testdata/annotations-traffic-type-topology.json +++ b/pkg/provider/testdata/annotations-traffic-type-topology.json @@ -5,7 +5,7 @@ "namespace": "my-ns", "selector": {}, "annotations": { - "maesh.containo.us/traffic-type": "tcp" + "mesh.traefik.io/traffic-type": "tcp" }, "ports": [ { @@ -26,7 +26,7 @@ "namespace": "my-ns", "selector": {}, "annotations": { - "maesh.containo.us/traffic-type": "udp" + "mesh.traefik.io/traffic-type": "udp" }, "ports": [ { diff --git a/pkg/topology/builder.go b/pkg/topology/builder.go index 37cb58467..0f406e276 100644 --- a/pkg/topology/builder.go +++ b/pkg/topology/builder.go @@ -3,7 +3,6 @@ package topology import ( "fmt" - mk8s "github.com/containous/maesh/pkg/k8s" access "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/access/v1alpha2" specs "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/specs/v1alpha3" split "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/split/v1alpha3" @@ -11,6 +10,7 @@ import ( speclister "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/specs/listers/specs/v1alpha3" splitlister "github.com/servicemeshinterface/smi-sdk-go/pkg/gen/client/split/listers/split/v1alpha3" "github.com/sirupsen/logrus" + mk8s "github.com/traefik/mesh/pkg/k8s" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/labels" listers "k8s.io/client-go/listers/core/v1" diff --git a/pkg/topology/builder_test.go b/pkg/topology/builder_test.go index 8a4a379b1..7809cb9f5 100644 --- a/pkg/topology/builder_test.go +++ b/pkg/topology/builder_test.go @@ -10,7 +10,6 @@ import ( "testing" "time" - mk8s "github.com/containous/maesh/pkg/k8s" access "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/access/v1alpha2" specs "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/specs/v1alpha3" split "github.com/servicemeshinterface/smi-sdk-go/pkg/apis/split/v1alpha3" @@ -26,6 +25,7 @@ import ( "github.com/sirupsen/logrus" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + mk8s "github.com/traefik/mesh/pkg/k8s" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" @@ -39,9 +39,9 @@ func TestTopologyBuilder_BuildIgnoresNamespaces(t *testing.T) { selectorAppA := map[string]string{"app": "app-a"} selectorAppB := map[string]string{"app": "app-b"} annotations := map[string]string{ - "maesh.containo.us/traffic-type": "http", - "maesh.containo.us/ratelimit-average": "100", - "maesh.containo.us/ratelimit-burst": "200", + "mesh.traefik.io/traffic-type": "http", + "mesh.traefik.io/ratelimit-average": "100", + "mesh.traefik.io/ratelimit-burst": "200", } svcbPorts := []corev1.ServicePort{svcPort("port-8080", 8080, 8080)} svccPorts := []corev1.ServicePort{svcPort("port-9091", 9091, 9091)} @@ -159,9 +159,9 @@ func TestTopologyBuilder_TrafficTargetSourcesForbiddenTrafficSplit(t *testing.T) selectorAppC := map[string]string{"app": "app-c"} selectorAppD := map[string]string{"app": "app-d"} annotations := map[string]string{ - "maesh.containo.us/traffic-type": "http", - "maesh.containo.us/ratelimit-average": "100", - "maesh.containo.us/ratelimit-burst": "200", + "mesh.traefik.io/traffic-type": "http", + "mesh.traefik.io/ratelimit-average": "100", + "mesh.traefik.io/ratelimit-burst": "200", } svcPorts := []corev1.ServicePort{svcPort("port-8080", 8080, 8080)} @@ -427,9 +427,9 @@ func TestTopologyBuilder_BuildWithTrafficTargetEmptyDestinationPort(t *testing.T selectorAppA := map[string]string{"app": "app-a"} selectorAppB := map[string]string{"app": "app-b"} annotations := map[string]string{ - "maesh.containo.us/traffic-type": "http", - "maesh.containo.us/ratelimit-average": "100", - "maesh.containo.us/ratelimit-burst": "200", + "mesh.traefik.io/traffic-type": "http", + "mesh.traefik.io/ratelimit-average": "100", + "mesh.traefik.io/ratelimit-burst": "200", } svcbPorts := []corev1.ServicePort{ svcPort("port-8080", 8080, 8080), diff --git a/pkg/topology/testdata/topology-empty-destination-port.json b/pkg/topology/testdata/topology-empty-destination-port.json index bd2bf2c70..bb759405c 100644 --- a/pkg/topology/testdata/topology-empty-destination-port.json +++ b/pkg/topology/testdata/topology-empty-destination-port.json @@ -7,9 +7,9 @@ "app": "app-b" }, "annotations": { - "maesh.containo.us/ratelimit-average": "100", - "maesh.containo.us/ratelimit-burst": "200", - "maesh.containo.us/traffic-type": "http" + "mesh.traefik.io/ratelimit-average": "100", + "mesh.traefik.io/ratelimit-burst": "200", + "mesh.traefik.io/traffic-type": "http" }, "ports": [ { @@ -92,4 +92,4 @@ } }, "trafficSplits": {} -} \ No newline at end of file +} diff --git a/pkg/topology/testdata/topology-traffic-split-traffic-target.json b/pkg/topology/testdata/topology-traffic-split-traffic-target.json index cf238f1f4..e75c41e95 100644 --- a/pkg/topology/testdata/topology-traffic-split-traffic-target.json +++ b/pkg/topology/testdata/topology-traffic-split-traffic-target.json @@ -507,4 +507,4 @@ "errors": null } } -} \ No newline at end of file +} diff --git a/tmpl.Dockerfile b/tmpl.Dockerfile index 8f2ac29e1..964825162 100644 --- a/tmpl.Dockerfile +++ b/tmpl.Dockerfile @@ -15,7 +15,7 @@ RUN apk --no-cache --no-progress add \ && update-ca-certificates \ && rm -rf /var/cache/apk/* -WORKDIR /go/src/github.com/containous/maesh +WORKDIR /go/src/github.com/traefik/mesh # Download goreleaser binary to bin folder in $GOPATH RUN curl -sfL https://install.goreleaser.com/github.com/goreleaser/goreleaser.sh | sh @@ -34,6 +34,6 @@ RUN addgroup -g 1000 -S app && \ adduser -u 1000 -S app -G app COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ -COPY --from=builder /go/src/github.com/containous/maesh/dist/maesh /app/ +COPY --from=builder /go/src/github.com/traefik/mesh/dist/traefik-mesh /app/ -ENTRYPOINT ["/app/maesh"] +ENTRYPOINT ["/app/traefik-mesh"]