From 89761248f8b0236076061213cf5810b9a260890c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20BUISSON?= Date: Mon, 23 Jan 2023 15:15:04 +0100 Subject: [PATCH] fix: multiple tags +error logs not send + tags documentation (#425) Errors without the `.Msg("")` were not correctly flushed. Co-authored-by: Enrico Stahn Co-authored-by: Richard Hillmann <2286479+project0@users.noreply.github.com> --- .k8s-image-swapper.yml | 2 ++ cmd/root.go | 4 ++-- docs/configuration.md | 2 +- pkg/registry/ecr.go | 4 ++-- pkg/webhook/image_swapper.go | 20 +++++++++----------- pkg/webhook/image_swapper_test.go | 16 ++++++++++++++++ 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/.k8s-image-swapper.yml b/.k8s-image-swapper.yml index 8c8a4e44..9f1d87de 100644 --- a/.k8s-image-swapper.yml +++ b/.k8s-image-swapper.yml @@ -46,6 +46,8 @@ target: tags: - key: CreatedBy value: k8s-image-swapper + - key: AnotherTag + value: another-tag imageTagMutability: MUTABLE imageScanningConfiguration: imageScanOnPush: true diff --git a/cmd/root.go b/cmd/root.go index c14507cb..a09c3142 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -73,12 +73,12 @@ A mutating webhook for Kubernetes, pointing the images to a new location.`, imageSwapPolicy, err := types.ParseImageSwapPolicy(cfg.ImageSwapPolicy) if err != nil { - log.Err(err) + log.Err(err).Str("policy", cfg.ImageSwapPolicy).Msg("parsing image swap policy failed") } imageCopyPolicy, err := types.ParseImageCopyPolicy(cfg.ImageCopyPolicy) if err != nil { - log.Err(err) + log.Err(err).Str("policy", cfg.ImageCopyPolicy).Msg("parsing image copy policy failed") } imagePullSecretProvider := setupImagePullSecretsProvider() diff --git a/docs/configuration.md b/docs/configuration.md index 52b6cf2e..73136634 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -153,6 +153,6 @@ It's a slice of `Key` and `Value`. aws: ecrOptions: tags: - - name: cluster + - key: cluster value: myCluster ``` diff --git a/pkg/registry/ecr.go b/pkg/registry/ecr.go index bf802e81..df9e3cd1 100644 --- a/pkg/registry/ecr.go +++ b/pkg/registry/ecr.go @@ -107,7 +107,7 @@ func (e *ECRClient) buildEcrTags() []*ecr.Tag { ecrTags := []*ecr.Tag{} for _, t := range e.tags { - tag := ecr.Tag{Key: &t.Key, Value: &t.Value} + tag := ecr.Tag{Key: aws.String(t.Key), Value: aws.String(t.Value)} ecrTags = append(ecrTags, &tag) } @@ -261,7 +261,7 @@ func NewMockECRClient(ecrClient ecriface.ECRAPI, region string, ecrDomain string scheduler: nil, targetAccount: targetAccount, authToken: []byte("mock-ecr-client-fake-auth-token"), - tags: []config.Tag{{Key: "CreatedBy", Value: "k8s-image-swapper"}}, + tags: []config.Tag{{Key: "CreatedBy", Value: "k8s-image-swapper"}, {Key: "AnotherTag", Value: "another-tag"}}, } return client, nil diff --git a/pkg/webhook/image_swapper.go b/pkg/webhook/image_swapper.go index 247e711f..8afa0c6a 100644 --- a/pkg/webhook/image_swapper.go +++ b/pkg/webhook/image_swapper.go @@ -215,28 +215,26 @@ func (p *ImageSwapper) Mutate(ctx context.Context, ar *kwhmodel.AdmissionReview, createRepoName := reference.TrimNamed(srcRef.DockerReference()).String() log.Ctx(lctx).Debug().Str("repository", createRepoName).Msg("create repository") if err := p.registryClient.CreateRepository(createRepoName); err != nil { - log.Err(err) + log.Err(err).Str("repository", createRepoName).Msg("failed to create repository") } // Retrieve secrets and auth credentials imagePullSecrets, err := p.imagePullSecretProvider.GetImagePullSecrets(pod) if err != nil { - log.Err(err) + log.Err(err).Msg("failed to retrieve image pull secrets from provider") } authFile, err := imagePullSecrets.AuthFile() - if authFile != nil { - defer func() { - if err := os.RemoveAll(authFile.Name()); err != nil { - log.Err(err) - } - }() - } - if err != nil { - log.Err(err) + log.Err(err).Msg("failed generating authFile") } + defer func() { + if err := os.RemoveAll(authFile.Name()); err != nil { + log.Err(err).Str("file", authFile.Name()).Msg("failed removing auth file") + } + }() + // Copy image // TODO: refactor to use structure instead of passing file name / string // or transform registryClient creds into auth compatible form, e.g. diff --git a/pkg/webhook/image_swapper_test.go b/pkg/webhook/image_swapper_test.go index 2aedd3a5..d68e5859 100644 --- a/pkg/webhook/image_swapper_test.go +++ b/pkg/webhook/image_swapper_test.go @@ -251,6 +251,10 @@ func TestImageSwapper_Mutate(t *testing.T) { Key: aws.String("CreatedBy"), Value: aws.String("k8s-image-swapper"), }, + { + Key: aws.String("AnotherTag"), + Value: aws.String("another-tag"), + }, }, }).Return(mock.Anything) ecrClient.On( @@ -267,6 +271,10 @@ func TestImageSwapper_Mutate(t *testing.T) { Key: aws.String("CreatedBy"), Value: aws.String("k8s-image-swapper"), }, + { + Key: aws.String("AnotherTag"), + Value: aws.String("another-tag"), + }, }, }).Return(mock.Anything) ecrClient.On( @@ -283,6 +291,10 @@ func TestImageSwapper_Mutate(t *testing.T) { Key: aws.String("CreatedBy"), Value: aws.String("k8s-image-swapper"), }, + { + Key: aws.String("AnotherTag"), + Value: aws.String("another-tag"), + }, }, }).Return(mock.Anything) @@ -339,6 +351,10 @@ func TestImageSwapper_MutateWithImagePullSecrets(t *testing.T) { Key: aws.String("CreatedBy"), Value: aws.String("k8s-image-swapper"), }, + { + Key: aws.String("AnotherTag"), + Value: aws.String("another-tag"), + }, }, }).Return(mock.Anything)