mirror of
https://github.com/external-secrets/external-secrets.git
synced 2024-12-14 11:57:59 +00:00
Merge branch 'external-secrets:main' into main
This commit is contained in:
commit
ecef240319
17 changed files with 73 additions and 54 deletions
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
|
@ -11,7 +11,7 @@ on:
|
|||
env:
|
||||
# Common versions
|
||||
GO_VERSION: '1.16'
|
||||
GOLANGCI_VERSION: 'v1.33'
|
||||
GOLANGCI_VERSION: 'v1.42.1'
|
||||
# list of available versions: https://storage.googleapis.com/kubebuilder-tools
|
||||
# TODO: 1.21.2 does not shut down properly with controller-runtime 0.9.2
|
||||
KUBEBUILDER_TOOLS_VERSION: '1.20.2'
|
||||
|
@ -123,7 +123,7 @@ jobs:
|
|||
# Check DIff also runs Reviewable which needs golangci-lint installed
|
||||
- name: Check Diff
|
||||
run: |
|
||||
wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.33.0
|
||||
wget -O- -nv https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s v1.42.1
|
||||
export PATH=$PATH:./bin
|
||||
make check-diff
|
||||
|
||||
|
|
|
@ -32,14 +32,10 @@ linters-settings:
|
|||
min-complexity: 16
|
||||
goheader:
|
||||
template-path: ./hack/boilerplate.go.txt
|
||||
golint:
|
||||
min-confidence: 0
|
||||
govet:
|
||||
check-shadowing: false
|
||||
lll:
|
||||
line-length: 300
|
||||
maligned:
|
||||
suggest-new: true
|
||||
misspell:
|
||||
locale: US
|
||||
|
||||
|
@ -62,7 +58,6 @@ linters:
|
|||
- gocritic
|
||||
- godot
|
||||
- gofmt
|
||||
- golint
|
||||
- goprintffuncname
|
||||
- gosec
|
||||
- gosimple
|
||||
|
@ -70,13 +65,12 @@ linters:
|
|||
- ineffassign
|
||||
- interfacer
|
||||
- lll
|
||||
- maligned
|
||||
- misspell
|
||||
- nakedret
|
||||
- nolintlint
|
||||
- prealloc
|
||||
- revive
|
||||
- rowserrcheck
|
||||
- scopelint
|
||||
- sqlclosecheck
|
||||
- staticcheck
|
||||
- structcheck
|
||||
|
@ -102,7 +96,6 @@ issues:
|
|||
- errcheck
|
||||
- dupl
|
||||
- gosec
|
||||
- scopelint
|
||||
- unparam
|
||||
- lll
|
||||
|
||||
|
|
2
Makefile
2
Makefile
|
@ -107,7 +107,7 @@ lint.check: ## Check install of golanci-lint
|
|||
lint.install: ## Install golangci-lint to the go bin dir
|
||||
@if ! golangci-lint --version > /dev/null 2>&1; then \
|
||||
echo "Installing golangci-lint"; \
|
||||
curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(GOBIN) v1.33.0; \
|
||||
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOBIN) v1.42.1; \
|
||||
fi
|
||||
|
||||
lint: lint.check ## Run golangci-lint
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
ARG GO_VERSION=1.16
|
||||
FROM golang:$GO_VERSION-buster as builder
|
||||
|
||||
ENV KUBECTL_VERSION="v1.19.2"
|
||||
ENV HELM_VERSION="v3.3.4"
|
||||
ENV KUBECTL_VERSION="v1.21.2"
|
||||
ENV HELM_VERSION="v3.7.1"
|
||||
|
||||
RUN go get -u github.com/onsi/ginkgo/ginkgo
|
||||
RUN wget -q https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl -O /usr/local/bin/kubectl && \
|
||||
|
@ -10,7 +10,7 @@ RUN wget -q https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_
|
|||
wget -q https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz -O - | tar -xzO linux-amd64/helm > /usr/local/bin/helm && \
|
||||
chmod +x /usr/local/bin/helm
|
||||
|
||||
FROM alpine:3.12
|
||||
FROM alpine:3.14.2
|
||||
RUN apk add -U --no-cache \
|
||||
ca-certificates \
|
||||
bash \
|
||||
|
|
|
@ -4,7 +4,7 @@ SHELL := /bin/bash
|
|||
|
||||
IMG_TAG = test
|
||||
IMG = local/external-secrets-e2e:$(IMG_TAG)
|
||||
KIND_IMG = "kindest/node:v1.20.7@sha256:cbeaf907fc78ac97ce7b625e4bf0de16e3ea725daf6b04f930bd14c67c671ff9"
|
||||
KIND_IMG = "kindest/node:v1.21.1@sha256:69860bda5563ac81e3c0057d654b5253219618a22ec3a346306239bba8cfa1a6"
|
||||
BUILD_ARGS ?=
|
||||
export FOCUS := $(FOCUS)
|
||||
|
||||
|
@ -19,13 +19,14 @@ test: e2e-image ## Run e2e tests against current kube context
|
|||
$(MAKE) -C ../ docker.build \
|
||||
IMAGE_REGISTRY=local/external-secrets \
|
||||
VERSION=$(IMG_TAG) \
|
||||
ARCH=amd64
|
||||
ARCH=amd64 \
|
||||
BUILD_ARGS="--build-arg TARGETARCH=amd64 --build-arg TARGETOS=linux"
|
||||
kind load docker-image --name="external-secrets" local/external-secrets:$(IMG_TAG)
|
||||
kind load docker-image --name="external-secrets" $(IMG)
|
||||
./run.sh
|
||||
|
||||
e2e-bin:
|
||||
CGO_ENABLED=0 ginkgo build .
|
||||
CGO_ENABLED=0 go run github.com/onsi/ginkgo/ginkgo build .
|
||||
|
||||
e2e-image: e2e-bin
|
||||
-rm -rf ./k8s/deploy
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set -e
|
||||
set -euo pipefail
|
||||
|
||||
NC='\e[0m'
|
||||
BGREEN='\e[32m'
|
||||
|
@ -46,8 +46,8 @@ ginkgo_args=(
|
|||
kubectl apply -f /k8s/deploy/crds
|
||||
|
||||
echo -e "${BGREEN}Running e2e test suite (FOCUS=${FOCUS})...${NC}"
|
||||
ginkgo "${ginkgo_args[@]}" \
|
||||
-focus="${FOCUS}" \
|
||||
-skip="\[Serial\]|\[MemoryLeak\]" \
|
||||
-nodes="${E2E_NODES}" \
|
||||
ACK_GINKGO_RC=true ginkgo "${ginkgo_args[@]}" \
|
||||
-focus="${FOCUS}" \
|
||||
-skip="\[Serial\]|\[MemoryLeak\]" \
|
||||
-nodes="${E2E_NODES}" \
|
||||
/e2e.test
|
||||
|
|
|
@ -286,6 +286,7 @@ func (l *Vault) Setup(cfg *Config) error {
|
|||
return l.chart.Setup(cfg)
|
||||
}
|
||||
|
||||
// nolint:gocritic
|
||||
func genVaultCertificates(namespace string) ([]byte, []byte, []byte, []byte, []byte, []byte, error) {
|
||||
// gen server ca + certs
|
||||
serverRootCert, serverRootPem, serverRootKey, err := genCARoot()
|
||||
|
|
|
@ -13,9 +13,7 @@
|
|||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
set -euo pipefail
|
||||
|
||||
if ! command -v kind --version &> /dev/null; then
|
||||
echo "kind is not installed. Use the package manager or visit the official site https://kind.sigs.k8s.io/"
|
||||
|
|
|
@ -31,7 +31,11 @@ var _ = Describe("[alibaba] ", func() {
|
|||
accessKeyID := os.Getenv("ACCESS_KEY_ID")
|
||||
accessKeySecret := os.Getenv("ACCESS_KEY_SECRET")
|
||||
regionID := os.Getenv("REGION_ID")
|
||||
prov := newAlibabaProvider(f, accessKeyID, accessKeySecret, regionID)
|
||||
prov := &alibabaProvider{}
|
||||
|
||||
if accessKeyID != "" && accessKeySecret != "" && regionID != "" {
|
||||
prov = newAlibabaProvider(f, accessKeyID, accessKeySecret, regionID)
|
||||
}
|
||||
|
||||
DescribeTable("sync secrets", framework.TableFunc(f, prov),
|
||||
Entry(common.SimpleDataSync(f)),
|
||||
|
|
|
@ -30,7 +30,11 @@ var _ = Describe("[azure] ", func() {
|
|||
tenantID := os.Getenv("TENANT_ID")
|
||||
clientID := os.Getenv("AZURE_CLIENT_ID")
|
||||
clientSecret := os.Getenv("AZURE_CLIENT_SECRET")
|
||||
prov := newazureProvider(f, clientID, clientSecret, tenantID, vaultURL)
|
||||
prov := &azureProvider{}
|
||||
|
||||
if vaultURL != "" && tenantID != "" && clientID != "" && clientSecret != "" {
|
||||
prov = newazureProvider(f, clientID, clientSecret, tenantID, vaultURL)
|
||||
}
|
||||
|
||||
DescribeTable("sync secrets", framework.TableFunc(f, prov),
|
||||
Entry(common.SimpleDataSync(f)),
|
||||
|
|
|
@ -36,7 +36,11 @@ var _ = Describe("[gcp] ", func() {
|
|||
f := framework.New("eso-gcp")
|
||||
credentials := os.Getenv("GCP_SM_SA_JSON")
|
||||
projectID := os.Getenv("GCP_PROJECT_ID")
|
||||
prov := newgcpProvider(f, credentials, projectID)
|
||||
prov := &gcpProvider{}
|
||||
|
||||
if credentials != "" && projectID != "" {
|
||||
prov = newgcpProvider(f, credentials, projectID)
|
||||
}
|
||||
|
||||
// P12Cert case creates a secret with a p12 cert containing a privkey and cert bundled together.
|
||||
// It uses templating to generate a k8s secret of type tls with pem values
|
||||
|
|
|
@ -33,7 +33,12 @@ var _ = Describe("[gitlab] ", func() {
|
|||
f := framework.New("esogitlab")
|
||||
credentials := os.Getenv("GITLAB_TOKEN")
|
||||
projectID := os.Getenv("GITLAB_PROJECT_ID")
|
||||
prov := newGitlabProvider(f, credentials, projectID)
|
||||
|
||||
prov := &gitlabProvider{}
|
||||
|
||||
if credentials != "" && projectID != "" {
|
||||
prov = newGitlabProvider(f, credentials, projectID)
|
||||
}
|
||||
|
||||
DescribeTable("sync secrets", framework.TableFunc(f, prov),
|
||||
Entry(common.SimpleDataSync(f)),
|
||||
|
|
1
go.sum
1
go.sum
|
@ -222,6 +222,7 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+
|
|||
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=
|
||||
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I=
|
||||
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
|
||||
github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||
github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw=
|
||||
|
|
|
@ -238,11 +238,16 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
|
|||
}
|
||||
|
||||
conditionSynced := NewExternalSecretCondition(esv1alpha1.ExternalSecretReady, v1.ConditionTrue, esv1alpha1.ConditionReasonSecretSynced, "Secret was synced")
|
||||
currCond := GetExternalSecretCondition(externalSecret.Status, esv1alpha1.ExternalSecretReady)
|
||||
SetExternalSecretCondition(&externalSecret, *conditionSynced)
|
||||
externalSecret.Status.RefreshTime = metav1.NewTime(time.Now())
|
||||
externalSecret.Status.SyncedResourceVersion = getResourceVersion(externalSecret)
|
||||
syncCallsTotal.With(syncCallsMetricLabels).Inc()
|
||||
log.V(1).Info("reconciled secret")
|
||||
if currCond == nil || currCond.Status != conditionSynced.Status {
|
||||
log.Info("reconciled secret") // Log once if on success in any verbosity
|
||||
} else {
|
||||
log.V(1).Info("reconciled secret") // Log all reconciliation cycles if higher verbosity applied
|
||||
}
|
||||
|
||||
return ctrl.Result{
|
||||
RequeueAfter: refreshInt,
|
||||
|
|
|
@ -134,6 +134,11 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
ExternalSecretName = "test-es"
|
||||
ExternalSecretStore = "test-store"
|
||||
ExternalSecretTargetSecretName = "test-secret"
|
||||
FakeManager = "fake.manager"
|
||||
expectedSecretVal = "SOMEVALUE was templated"
|
||||
targetPropObj = "{{ .targetProperty | toString | upper }} was templated"
|
||||
FooValue = "map-foo-value"
|
||||
BarValue = "map-bar-value"
|
||||
)
|
||||
|
||||
var ExternalSecretNamespace string
|
||||
|
@ -283,13 +288,13 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
// create secret beforehand
|
||||
Expect(k8sClient.Create(context.Background(), &v1.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "test-secret",
|
||||
Name: ExternalSecretTargetSecretName,
|
||||
Namespace: ExternalSecretNamespace,
|
||||
},
|
||||
Data: map[string][]byte{
|
||||
existingKey: []byte(existingVal),
|
||||
},
|
||||
}, client.FieldOwner("fake.manager"))).To(Succeed())
|
||||
}, client.FieldOwner(FakeManager))).To(Succeed())
|
||||
|
||||
fakeProvider.WithGetSecret([]byte(secretVal), nil)
|
||||
tc.checkSecret = func(es *esv1alpha1.ExternalSecret, secret *v1.Secret) {
|
||||
|
@ -309,7 +314,7 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
"external-secrets",
|
||||
fmt.Sprintf("{\"f:data\":{\"f:targetProperty\":{}},\"f:immutable\":{},\"f:metadata\":{\"f:annotations\":{\"f:%s\":{}}}}", esv1alpha1.AnnotationDataHash)),
|
||||
).To(BeTrue())
|
||||
Expect(hasFieldOwnership(secret.ObjectMeta, "fake.manager", "{\"f:data\":{\".\":{},\"f:pre-existing-key\":{}},\"f:type\":{}}")).To(BeTrue())
|
||||
Expect(hasFieldOwnership(secret.ObjectMeta, FakeManager, "{\"f:data\":{\".\":{},\"f:pre-existing-key\":{}},\"f:type\":{}}")).To(BeTrue())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -348,13 +353,13 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
// create secret beforehand
|
||||
Expect(k8sClient.Create(context.Background(), &v1.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "test-secret",
|
||||
Name: ExternalSecretTargetSecretName,
|
||||
Namespace: ExternalSecretNamespace,
|
||||
},
|
||||
Data: map[string][]byte{
|
||||
existingKey: []byte(existingVal),
|
||||
},
|
||||
}, client.FieldOwner("fake.manager"))).To(Succeed())
|
||||
}, client.FieldOwner(FakeManager))).To(Succeed())
|
||||
fakeProvider.WithGetSecret([]byte(secretVal), nil)
|
||||
|
||||
tc.checkCondition = func(es *esv1alpha1.ExternalSecret) bool {
|
||||
|
@ -373,7 +378,7 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
// check owner/managedFields
|
||||
Expect(hasOwnerRef(secret.ObjectMeta, "ExternalSecret", ExternalSecretName)).To(BeFalse())
|
||||
Expect(secret.ObjectMeta.ManagedFields).To(HaveLen(1))
|
||||
Expect(hasFieldOwnership(secret.ObjectMeta, "fake.manager", "{\"f:data\":{\".\":{},\"f:targetProperty\":{}},\"f:type\":{}}")).To(BeTrue())
|
||||
Expect(hasFieldOwnership(secret.ObjectMeta, FakeManager, "{\"f:data\":{\".\":{},\"f:targetProperty\":{}},\"f:type\":{}}")).To(BeTrue())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -381,7 +386,6 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
// to construct a new secret: labels, annotations and type
|
||||
syncWithTemplate := func(tc *testCase) {
|
||||
const secretVal = "someValue"
|
||||
const expectedSecretVal = "SOMEVALUE was templated"
|
||||
const tplStaticKey = "tplstatickey"
|
||||
const tplStaticVal = "tplstaticvalue"
|
||||
tc.externalSecret.ObjectMeta.Labels = map[string]string{
|
||||
|
@ -401,7 +405,7 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
},
|
||||
Type: v1.SecretTypeOpaque,
|
||||
Data: map[string]string{
|
||||
targetProp: "{{ .targetProperty | toString | upper }} was templated",
|
||||
targetProp: targetPropObj,
|
||||
tplStaticKey: tplStaticVal,
|
||||
},
|
||||
}
|
||||
|
@ -426,7 +430,6 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
// * dataFrom
|
||||
syncWithTemplatePrecedence := func(tc *testCase) {
|
||||
const secretVal = "someValue"
|
||||
const expectedSecretVal = "SOMEVALUE was templated"
|
||||
const tplStaticKey = "tplstatickey"
|
||||
const tplStaticVal = "tplstaticvalue"
|
||||
const tplFromCMName = "template-cm"
|
||||
|
@ -480,7 +483,7 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
},
|
||||
Data: map[string]string{
|
||||
// this should be the data value, not dataFrom
|
||||
targetProp: "{{ .targetProperty | toString | upper }} was templated",
|
||||
targetProp: targetPropObj,
|
||||
// this should use the value from the map
|
||||
"bar": "value from map: {{ .bar | toString }}",
|
||||
// just a static value
|
||||
|
@ -494,8 +497,8 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
}
|
||||
fakeProvider.WithGetSecret([]byte(secretVal), nil)
|
||||
fakeProvider.WithGetSecretMap(map[string][]byte{
|
||||
"targetProperty": []byte("map-foo-value"),
|
||||
"bar": []byte("map-bar-value"),
|
||||
"targetProperty": []byte(FooValue),
|
||||
"bar": []byte(BarValue),
|
||||
}, nil)
|
||||
tc.checkSecret = func(es *esv1alpha1.ExternalSecret, secret *v1.Secret) {
|
||||
// check values
|
||||
|
@ -509,7 +512,6 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
|
||||
refreshWithTemplate := func(tc *testCase) {
|
||||
const secretVal = "someValue"
|
||||
const expectedSecretVal = "SOMEVALUE was templated"
|
||||
const tplStaticKey = "tplstatickey"
|
||||
const tplStaticVal = "tplstaticvalue"
|
||||
tc.externalSecret.Spec.RefreshInterval = &metav1.Duration{Duration: time.Second}
|
||||
|
@ -520,7 +522,7 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
},
|
||||
Type: v1.SecretTypeOpaque,
|
||||
Data: map[string]string{
|
||||
targetProp: "{{ .targetProperty | toString | upper }} was templated",
|
||||
targetProp: targetPropObj,
|
||||
tplStaticKey: tplStaticVal,
|
||||
},
|
||||
}
|
||||
|
@ -660,13 +662,13 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
},
|
||||
}
|
||||
fakeProvider.WithGetSecretMap(map[string][]byte{
|
||||
"foo": []byte("map-foo-value"),
|
||||
"bar": []byte("map-bar-value"),
|
||||
"foo": []byte(FooValue),
|
||||
"bar": []byte(BarValue),
|
||||
}, nil)
|
||||
tc.checkSecret = func(es *esv1alpha1.ExternalSecret, secret *v1.Secret) {
|
||||
// check values
|
||||
Expect(string(secret.Data["foo"])).To(Equal("map-foo-value"))
|
||||
Expect(string(secret.Data["bar"])).To(Equal("map-bar-value"))
|
||||
Expect(string(secret.Data["foo"])).To(Equal(FooValue))
|
||||
Expect(string(secret.Data["bar"])).To(Equal(BarValue))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -687,14 +689,14 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
},
|
||||
}
|
||||
fakeProvider.WithGetSecretMap(map[string][]byte{
|
||||
"tls.crt": []byte("map-foo-value"),
|
||||
"tls.key": []byte("map-bar-value"),
|
||||
"tls.crt": []byte(FooValue),
|
||||
"tls.key": []byte(BarValue),
|
||||
}, nil)
|
||||
tc.checkSecret = func(es *esv1alpha1.ExternalSecret, secret *v1.Secret) {
|
||||
Expect(secret.Type).To(Equal(v1.SecretTypeTLS))
|
||||
// check values
|
||||
Expect(string(secret.Data["tls.crt"])).To(Equal("map-foo-value"))
|
||||
Expect(string(secret.Data["tls.key"])).To(Equal("map-bar-value"))
|
||||
Expect(string(secret.Data["tls.crt"])).To(Equal(FooValue))
|
||||
Expect(string(secret.Data["tls.key"])).To(Equal(BarValue))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -851,7 +853,7 @@ var _ = Describe("ExternalSecret controller", func() {
|
|||
// When we amend the created kind=secret, refresh operation should be run again regardless of refresh interval
|
||||
checkSecretDataHashAnnotationChange := func(tc *testCase) {
|
||||
fakeData := map[string][]byte{
|
||||
"targetProperty": []byte("map-foo-value"),
|
||||
"targetProperty": []byte(FooValue),
|
||||
}
|
||||
fakeProvider.WithGetSecretMap(fakeData, nil)
|
||||
tc.externalSecret.Spec.RefreshInterval = &metav1.Duration{Duration: time.Minute * 10}
|
||||
|
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
package register
|
||||
|
||||
// packages imported here are registered to the controller schema.
|
||||
// nolint:golint
|
||||
// nolint:revive
|
||||
import (
|
||||
_ "github.com/external-secrets/external-secrets/pkg/provider/akeyless"
|
||||
_ "github.com/external-secrets/external-secrets/pkg/provider/alibaba"
|
||||
|
|
1
tools.go
1
tools.go
|
@ -4,5 +4,6 @@
|
|||
package tools
|
||||
|
||||
import (
|
||||
_ "github.com/onsi/ginkgo/ginkgo"
|
||||
_ "sigs.k8s.io/controller-tools/cmd/controller-gen"
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue