From a61119f88fdde0c045aaf1fd03698fb35005c916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Thu, 12 Sep 2024 16:46:36 +0200 Subject: [PATCH 01/15] chore: Align runtime-watcher registry and make configurable --- cmd/main.go | 14 +-- config/watcher/kustomization.yaml | 3 + internal/pkg/flags/flags.go | 44 ++++--- internal/pkg/flags/flags_test.go | 199 ++++++++++++++++++++++++++++++ 4 files changed, 231 insertions(+), 29 deletions(-) diff --git a/cmd/main.go b/cmd/main.go index 0dc6c2e41f..76895134b7 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -322,7 +322,7 @@ func createSkrWebhookManager(mgr ctrl.Manager, skrContextFactory remote.SkrConte caCertificateCache := watcher.NewCACertificateCache(flagVar.CaCertCacheTTL) config := watcher.SkrWebhookManagerConfig{ SKRWatcherPath: flagVar.WatcherResourcesPath, - SkrWatcherImage: getWatcherImg(flagVar), + SkrWatcherImage: flagVar.GetWatcherImage(), SkrWebhookCPULimits: flagVar.WatcherResourceLimitsCPU, SkrWebhookMemoryLimits: flagVar.WatcherResourceLimitsMemory, RemoteSyncNamespace: flagVar.RemoteSyncNamespace, @@ -355,18 +355,6 @@ func createSkrWebhookManager(mgr ctrl.Manager, skrContextFactory remote.SkrConte resolvedKcpAddr) } -const ( - watcherRegProd = "europe-docker.pkg.dev/kyma-project/prod/runtime-watcher-skr" - watcherRegDev = "europe-docker.pkg.dev/kyma-project/dev/runtime-watcher" -) - -func getWatcherImg(flagVar *flags.FlagVar) string { - if flagVar.UseWatcherDevRegistry { - return fmt.Sprintf("%s:%s", watcherRegDev, flagVar.WatcherImageTag) - } - return fmt.Sprintf("%s:%s", watcherRegProd, flagVar.WatcherImageTag) -} - func setupPurgeReconciler(mgr ctrl.Manager, skrContextProvider remote.SkrContextProvider, event event.Event, diff --git a/config/watcher/kustomization.yaml b/config/watcher/kustomization.yaml index 32d8fb53c9..1bb49bae57 100644 --- a/config/watcher/kustomization.yaml +++ b/config/watcher/kustomization.yaml @@ -19,6 +19,9 @@ patches: - op: add path: /spec/template/spec/containers/0/args/- value: --skr-watcher-image-tag=1.1.1 + - op: add + path: /spec/template/spec/containers/0/args/- + value: --skr-watcher-image-registry=europe-docker.pkg.dev/kyma-project/prod - op: add path: /spec/template/spec/containers/0/args/- value: --enable-domain-name-pinning=true diff --git a/internal/pkg/flags/flags.go b/internal/pkg/flags/flags.go index b6d9fbf4db..cc5abc40f4 100644 --- a/internal/pkg/flags/flags.go +++ b/internal/pkg/flags/flags.go @@ -54,6 +54,7 @@ const ( DefaultKymaListenerAddress = ":8082" DefaultManifestListenerAddress = ":8083" DefaultPprofAddress = ":8084" + DefaultWatcherImageName = "runtime-watcher" DefaultWatcherResourcesPath = "./skr-webhook" DefaultWatcherResourceLimitsCPU = "0.1" DefaultWatcherResourceLimitsMemory = "200Mi" @@ -64,12 +65,13 @@ const ( ) var ( - errMissingWatcherImageTag = errors.New("runtime watcher image tag is not provided") - errWatcherDirNotExist = errors.New("failed to locate watcher resource manifest folder") - errLeaderElectionTimeoutConfig = errors.New("configured leader-election-renew-deadline must be less than leader-election-lease-duration") - errInvalidSelfSignedCertKeyLength = errors.New("invalid self-signed-cert-key-size: must be 4096") - errInvalidManifestRequeueJitterPercentage = errors.New("invalid manifest requeue jitter percentage: must be between 0 and 0.05") - errInvalidManifestRequeueJitterProbability = errors.New("invalid manifest requeue jitter probability: must be between 0 and 1") + ErrMissingWatcherImageTag = errors.New("runtime watcher image tag is not provided") + ErrMissingWatcherImageRegistry = errors.New("runtime watcher image registry is not provided") + ErrWatcherDirNotExist = errors.New("failed to locate watcher resource manifest folder") + ErrLeaderElectionTimeoutConfig = errors.New("configured leader-election-renew-deadline must be less than leader-election-lease-duration") + ErrInvalidSelfSignedCertKeyLength = errors.New("invalid self-signed-cert-key-size: must be 4096") + ErrInvalidManifestRequeueJitterPercentage = errors.New("invalid manifest requeue jitter percentage: must be between 0 and 0.05") + ErrInvalidManifestRequeueJitterProbability = errors.New("invalid manifest requeue jitter probability: must be between 0 and 1") ) //nolint:funlen // defines all program flags @@ -216,10 +218,12 @@ func DefineFlagVar() *FlagVar { flag.StringVar(&flagVar.DropCrdStoredVersionMap, "drop-crd-stored-version-map", DefaultDropCrdStoredVersionMap, "Specify the API versions to be dropped from the storage version. The input format should be a "+ "comma-separated list of API versions, where each API version is in the format 'kind:version'.") + flag.StringVar(&flagVar.WatcherImageName, "skr-watcher-image-name", DefaultWatcherImageName, + `Image name to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", "", `Image tag to be used for the SKR watcher image.`) - flag.BoolVar(&flagVar.UseWatcherDevRegistry, "watcher-dev-registry", false, - `Enable to use the dev registry for fetching the watcher image.`) + flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", "", + `Image registry to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherResourceLimitsMemory, "skr-webhook-memory-limits", DefaultWatcherResourceLimitsMemory, "The resources.limits.memory for skr webhook.") @@ -289,8 +293,9 @@ type FlagVar struct { SelfSignedCertRenewBuffer time.Duration SelfSignedCertKeySize int DropCrdStoredVersionMap string - UseWatcherDevRegistry bool WatcherImageTag string + WatcherImageName string + WatcherImageRegistry string WatcherResourceLimitsMemory string WatcherResourceLimitsCPU string WatcherResourcesPath string @@ -302,16 +307,19 @@ type FlagVar struct { func (f FlagVar) Validate() error { if f.EnableKcpWatcher { if f.WatcherImageTag == "" { - return errMissingWatcherImageTag + return ErrMissingWatcherImageTag + } + if f.WatcherImageRegistry == "" { + return ErrMissingWatcherImageRegistry } dirInfo, err := os.Stat(f.WatcherResourcesPath) if err != nil || !dirInfo.IsDir() { - return errWatcherDirNotExist + return ErrWatcherDirNotExist } } if f.LeaderElectionRenewDeadline >= f.LeaderElectionLeaseDuration { - return fmt.Errorf("%w (%.1f[s])", errLeaderElectionTimeoutConfig, f.LeaderElectionLeaseDuration.Seconds()) + return fmt.Errorf("%w (%.1f[s])", ErrLeaderElectionTimeoutConfig, f.LeaderElectionLeaseDuration.Seconds()) } if !map[int]bool{ @@ -319,15 +327,19 @@ func (f FlagVar) Validate() error { 4096: true, 8192: false, // see https://github.com/kyma-project/lifecycle-manager/issues/1793 }[f.SelfSignedCertKeySize] { - return errInvalidSelfSignedCertKeyLength + return ErrInvalidSelfSignedCertKeyLength } if f.ManifestRequeueJitterProbability < 0 || f.ManifestRequeueJitterProbability > 0.05 { - return errInvalidManifestRequeueJitterPercentage + return ErrInvalidManifestRequeueJitterPercentage } - if f.ManifestRequeueJitterProbability < 0 || f.ManifestRequeueJitterProbability > 1 { - return errInvalidManifestRequeueJitterProbability + if f.ManifestRequeueJitterPercentage < 0 || f.ManifestRequeueJitterPercentage > 1 { + return ErrInvalidManifestRequeueJitterProbability } return nil } + +func (f FlagVar) GetWatcherImage() string { + return fmt.Sprintf("%s/%s:%s", f.WatcherImageRegistry, f.WatcherImageName, f.WatcherImageTag) +} diff --git a/internal/pkg/flags/flags_test.go b/internal/pkg/flags/flags_test.go index 3052f0a03a..4fc7dccfa0 100644 --- a/internal/pkg/flags/flags_test.go +++ b/internal/pkg/flags/flags_test.go @@ -7,6 +7,7 @@ import ( "time" "github.com/kyma-project/lifecycle-manager/pkg/log" + "github.com/stretchr/testify/require" . "github.com/kyma-project/lifecycle-manager/internal/pkg/flags" ) @@ -223,6 +224,11 @@ func Test_ConstantFlags(t *testing.T) { constValue: DefaultPprofAddress, expectedValue: ":8084", }, + { + constName: "WatcherImageName", + constValue: DefaultWatcherImageName, + expectedValue: "runtime-watcher", + }, { constName: "DefaultWatcherResourcesPath", constValue: DefaultWatcherResourcesPath, @@ -265,3 +271,196 @@ func Test_ConstantFlags(t *testing.T) { }) } } + +func Test_Flags_Validate(t *testing.T) { + tests := []struct { + name string + flags FlagVar + err error + }{ + { + name: "WatcherImageTag is required", + flags: newFlagVarBuilder().withEnabledKcpWatcher(true).withWatcherImageTag("").build(), + err: ErrMissingWatcherImageTag, + }, + { + name: "WatcherImageTag is NOT required", + flags: newFlagVarBuilder().withWatcherImageTag("").build(), + err: nil, + }, + { + name: "WatcherImageRegistry is required", + flags: newFlagVarBuilder().withEnabledKcpWatcher(true).withWatcherImageRegistry("").build(), + err: ErrMissingWatcherImageRegistry, + }, + { + name: "WatcherImageRegistry is NOT required", + flags: newFlagVarBuilder().withWatcherImageRegistry("").build(), + err: nil, + }, + { + name: "WatcherResourcesPath is required", + flags: newFlagVarBuilder().withEnabledKcpWatcher(true).withWatcherResourcesPath("").build(), + err: ErrWatcherDirNotExist, + }, + { + name: "WatcherResourcesPath is NOT required", + flags: newFlagVarBuilder().withWatcherResourcesPath("").build(), + err: nil, + }, + { + name: "LeaderElectionRenewDeadline > LeaderElectionLeaseDuration", + flags: newFlagVarBuilder().withLeaderElectionRenewDeadline(2).withLeaderElectionLeaseDuration(1).build(), + err: ErrLeaderElectionTimeoutConfig, + }, + { + name: "LeaderElectionRenewDeadline = LeaderElectionLeaseDuration", + flags: newFlagVarBuilder().withLeaderElectionRenewDeadline(1).withLeaderElectionLeaseDuration(1).build(), + err: ErrLeaderElectionTimeoutConfig, + }, + { + name: "LeaderElectionRenewDeadline < LeaderElectionLeaseDuration", + flags: newFlagVarBuilder().withLeaderElectionRenewDeadline(1).withLeaderElectionLeaseDuration(2).build(), + err: nil, + }, + { + name: "SelfSignedCertKeySize 2048", + flags: newFlagVarBuilder().withSelfSignedCertKeySize(2048).build(), + err: ErrInvalidSelfSignedCertKeyLength, + }, + { + name: "SelfSignedCertKeySize 8192", + flags: newFlagVarBuilder().withSelfSignedCertKeySize(8192).build(), + err: ErrInvalidSelfSignedCertKeyLength, + }, + { + name: "SelfSignedCertKeySize 4711", + flags: newFlagVarBuilder().withSelfSignedCertKeySize(4711).build(), + err: ErrInvalidSelfSignedCertKeyLength, + }, + { + name: "SelfSignedCertKeySize 4096", + flags: newFlagVarBuilder().withSelfSignedCertKeySize(4096).build(), + err: nil, + }, + { + name: "ManifestRequeueJitterProbability < 0", + flags: newFlagVarBuilder().withManifestRequeueJitterProbability(-1).build(), + err: ErrInvalidManifestRequeueJitterPercentage, + }, + { + name: "ManifestRequeueJitterProbability > 0.05", + flags: newFlagVarBuilder().withManifestRequeueJitterProbability(0.1).build(), + err: ErrInvalidManifestRequeueJitterPercentage, + }, + { + name: "ManifestRequeueJitterProbability 0.01", + flags: newFlagVarBuilder().withManifestRequeueJitterProbability(0.01).build(), + err: nil, + }, + { + name: "ManifestRequeueJitterPercentage < 0", + flags: newFlagVarBuilder().withManifestRequeueJitterPercentage(-1).build(), + err: ErrInvalidManifestRequeueJitterProbability, + }, + { + name: "ManifestRequeueJitterPercentage > 0.05", + flags: newFlagVarBuilder().withManifestRequeueJitterPercentage(2).build(), + err: ErrInvalidManifestRequeueJitterProbability, + }, + { + name: "ManifestRequeueJitterPercentage 0.1", + flags: newFlagVarBuilder().withManifestRequeueJitterPercentage(0.1).build(), + err: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.flags.Validate() + if tt.err != nil { + require.ErrorIs(t, err, tt.err) + } else { + require.NoError(t, err) + } + }) + } +} + +// test builder + +type flagVarBuilder struct { + flags FlagVar +} + +func newFlagVarBuilder() *flagVarBuilder { + builder := &flagVarBuilder{ + flags: FlagVar{}, + } + + return builder. + withEnabledKcpWatcher(false). + withWatcherImageTag("v1.0.0"). + withWatcherImageName("runtime-watcher"). + withWatcherImageRegistry("foo.bar"). + withWatcherResourcesPath("./skr-webhook"). + withLeaderElectionRenewDeadline(120 * time.Second). + withLeaderElectionLeaseDuration(180 * time.Second). + withSelfSignedCertKeySize(4096). + withManifestRequeueJitterProbability(0.01). + withManifestRequeueJitterPercentage(0.1) +} + +func (b *flagVarBuilder) build() FlagVar { + return b.flags +} + +func (b *flagVarBuilder) withEnabledKcpWatcher(enabled bool) *flagVarBuilder { + b.flags.EnableKcpWatcher = enabled + return b +} + +func (b *flagVarBuilder) withWatcherImageTag(tag string) *flagVarBuilder { + b.flags.WatcherImageTag = tag + return b +} + +func (b *flagVarBuilder) withWatcherImageName(name string) *flagVarBuilder { + b.flags.WatcherImageName = name + return b +} + +func (b *flagVarBuilder) withWatcherImageRegistry(registry string) *flagVarBuilder { + b.flags.WatcherImageRegistry = registry + return b +} + +func (b *flagVarBuilder) withWatcherResourcesPath(path string) *flagVarBuilder { + b.flags.WatcherResourcesPath = path + return b +} + +func (b *flagVarBuilder) withLeaderElectionRenewDeadline(duration time.Duration) *flagVarBuilder { + b.flags.LeaderElectionRenewDeadline = duration + return b +} + +func (b *flagVarBuilder) withLeaderElectionLeaseDuration(duration time.Duration) *flagVarBuilder { + b.flags.LeaderElectionLeaseDuration = duration + return b +} + +func (b *flagVarBuilder) withSelfSignedCertKeySize(size int) *flagVarBuilder { + b.flags.SelfSignedCertKeySize = size + return b +} + +func (b *flagVarBuilder) withManifestRequeueJitterProbability(probability float64) *flagVarBuilder { + b.flags.ManifestRequeueJitterProbability = probability + return b +} + +func (b *flagVarBuilder) withManifestRequeueJitterPercentage(percentage float64) *flagVarBuilder { + b.flags.ManifestRequeueJitterPercentage = percentage + return b +} From 303e8491c994a5522f3c909136353b4460348031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 10:28:56 +0200 Subject: [PATCH 02/15] bump watcher version --- config/watcher/kustomization.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/watcher/kustomization.yaml b/config/watcher/kustomization.yaml index 1bb49bae57..6465269610 100644 --- a/config/watcher/kustomization.yaml +++ b/config/watcher/kustomization.yaml @@ -18,7 +18,7 @@ patches: value: --skr-watcher-path=/skr-webhook - op: add path: /spec/template/spec/containers/0/args/- - value: --skr-watcher-image-tag=1.1.1 + value: --skr-watcher-image-tag=1.1.4 - op: add path: /spec/template/spec/containers/0/args/- value: --skr-watcher-image-registry=europe-docker.pkg.dev/kyma-project/prod From 5399115e67b74701abe97b2066a877d44f3d13eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 10:49:16 +0200 Subject: [PATCH 03/15] fix linting --- internal/pkg/flags/flags_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/pkg/flags/flags_test.go b/internal/pkg/flags/flags_test.go index 4fc7dccfa0..e9431f4378 100644 --- a/internal/pkg/flags/flags_test.go +++ b/internal/pkg/flags/flags_test.go @@ -6,9 +6,10 @@ import ( "testing" "time" - "github.com/kyma-project/lifecycle-manager/pkg/log" "github.com/stretchr/testify/require" + "github.com/kyma-project/lifecycle-manager/pkg/log" + . "github.com/kyma-project/lifecycle-manager/internal/pkg/flags" ) From d57e73010556df2d3d8c2eff5840e4f7f636faed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 11:46:54 +0200 Subject: [PATCH 04/15] test flag defaults --- internal/pkg/flags/flags.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/pkg/flags/flags.go b/internal/pkg/flags/flags.go index cc5abc40f4..5e0d6f40d7 100644 --- a/internal/pkg/flags/flags.go +++ b/internal/pkg/flags/flags.go @@ -220,9 +220,9 @@ func DefineFlagVar() *FlagVar { "comma-separated list of API versions, where each API version is in the format 'kind:version'.") flag.StringVar(&flagVar.WatcherImageName, "skr-watcher-image-name", DefaultWatcherImageName, `Image name to be used for the SKR watcher image.`) - flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", "", + flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", "1.1.4", `Image tag to be used for the SKR watcher image.`) - flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", "", + flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", "europe-docker.pkg.dev/kyma-project/prod", `Image registry to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherResourceLimitsMemory, "skr-webhook-memory-limits", DefaultWatcherResourceLimitsMemory, From 1ada745112315419adaf78421e033eb127fb6f2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 13:14:07 +0200 Subject: [PATCH 05/15] remove efault for watcher image --- .github/actions/deploy-lifecycle-manager/action.yaml | 1 + internal/pkg/flags/flags.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/deploy-lifecycle-manager/action.yaml b/.github/actions/deploy-lifecycle-manager/action.yaml index 2587d68d5b..ce554cd6e6 100644 --- a/.github/actions/deploy-lifecycle-manager/action.yaml +++ b/.github/actions/deploy-lifecycle-manager/action.yaml @@ -18,6 +18,7 @@ runs: for retry in $(seq 1 $maxRetry) do if make local-deploy-with-watcher IMG=europe-docker.pkg.dev/kyma-project/${{ inputs.klm_image_repo }}/lifecycle-manager:${{ inputs.klm_version_tag }}; then + kubectl logs deploy/klm-controller-manager -n kcp-system kubectl wait pods -n kcp-system -l app.kubernetes.io/name=lifecycle-manager --for condition=Ready --timeout=90s echo "KLM deployed successfully" exit 0 diff --git a/internal/pkg/flags/flags.go b/internal/pkg/flags/flags.go index 5e0d6f40d7..014e6a89c5 100644 --- a/internal/pkg/flags/flags.go +++ b/internal/pkg/flags/flags.go @@ -220,7 +220,7 @@ func DefineFlagVar() *FlagVar { "comma-separated list of API versions, where each API version is in the format 'kind:version'.") flag.StringVar(&flagVar.WatcherImageName, "skr-watcher-image-name", DefaultWatcherImageName, `Image name to be used for the SKR watcher image.`) - flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", "1.1.4", + flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", "", `Image tag to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", "europe-docker.pkg.dev/kyma-project/prod", `Image registry to be used for the SKR watcher image.`) From f99529a4ea8d26cb171da9b40152c1219e1b657c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 13:35:56 +0200 Subject: [PATCH 06/15] describe and logs --- .github/actions/deploy-lifecycle-manager/action.yaml | 5 +++++ internal/pkg/flags/flags.go | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/actions/deploy-lifecycle-manager/action.yaml b/.github/actions/deploy-lifecycle-manager/action.yaml index ce554cd6e6..0a77ad98bb 100644 --- a/.github/actions/deploy-lifecycle-manager/action.yaml +++ b/.github/actions/deploy-lifecycle-manager/action.yaml @@ -18,15 +18,20 @@ runs: for retry in $(seq 1 $maxRetry) do if make local-deploy-with-watcher IMG=europe-docker.pkg.dev/kyma-project/${{ inputs.klm_image_repo }}/lifecycle-manager:${{ inputs.klm_version_tag }}; then + kubectl describe deploy/klm-controller-manager -n kcp-system kubectl logs deploy/klm-controller-manager -n kcp-system kubectl wait pods -n kcp-system -l app.kubernetes.io/name=lifecycle-manager --for condition=Ready --timeout=90s echo "KLM deployed successfully" exit 0 elif [[ $retry -lt $maxRetry ]]; then echo "Deploy encountered some error, will retry after 20 seconds" + kubectl describe deploy/klm-controller-manager -n kcp-system + kubectl logs deploy/klm-controller-manager -n kcp-system sleep 20 else echo "KLM deployment failed" + kubectl describe deploy/klm-controller-manager -n kcp-system + kubectl logs deploy/klm-controller-manager -n kcp-system exit 1 fi done diff --git a/internal/pkg/flags/flags.go b/internal/pkg/flags/flags.go index 014e6a89c5..cc5abc40f4 100644 --- a/internal/pkg/flags/flags.go +++ b/internal/pkg/flags/flags.go @@ -222,7 +222,7 @@ func DefineFlagVar() *FlagVar { `Image name to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", "", `Image tag to be used for the SKR watcher image.`) - flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", "europe-docker.pkg.dev/kyma-project/prod", + flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", "", `Image registry to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherResourceLimitsMemory, "skr-webhook-memory-limits", DefaultWatcherResourceLimitsMemory, From 30a941bb1cd40882e98576c6f73ee85274efcad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 14:04:25 +0200 Subject: [PATCH 07/15] quote value --- config/watcher/kustomization.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/watcher/kustomization.yaml b/config/watcher/kustomization.yaml index 6465269610..ac6b09953b 100644 --- a/config/watcher/kustomization.yaml +++ b/config/watcher/kustomization.yaml @@ -21,7 +21,7 @@ patches: value: --skr-watcher-image-tag=1.1.4 - op: add path: /spec/template/spec/containers/0/args/- - value: --skr-watcher-image-registry=europe-docker.pkg.dev/kyma-project/prod + value: --skr-watcher-image-registry="europe-docker.pkg.dev/kyma-project/prod" - op: add path: /spec/template/spec/containers/0/args/- value: --enable-domain-name-pinning=true From 25f35e05b941129c49591b1329b5d225eeeeed62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 14:15:08 +0200 Subject: [PATCH 08/15] test echo; no wait for build-iamge --- .github/actions/deploy-lifecycle-manager/action.yaml | 3 ++- .github/workflows/test-e2e.yaml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/deploy-lifecycle-manager/action.yaml b/.github/actions/deploy-lifecycle-manager/action.yaml index 0a77ad98bb..48538fe79e 100644 --- a/.github/actions/deploy-lifecycle-manager/action.yaml +++ b/.github/actions/deploy-lifecycle-manager/action.yaml @@ -24,9 +24,10 @@ runs: echo "KLM deployed successfully" exit 0 elif [[ $retry -lt $maxRetry ]]; then - echo "Deploy encountered some error, will retry after 20 seconds" + echo "TEST" kubectl describe deploy/klm-controller-manager -n kcp-system kubectl logs deploy/klm-controller-manager -n kcp-system + echo "Deploy encountered some error, will retry after 20 seconds" sleep 20 else echo "KLM deployment failed" diff --git a/.github/workflows/test-e2e.yaml b/.github/workflows/test-e2e.yaml index 5c66a9021c..3baeeb8590 100644 --- a/.github/workflows/test-e2e.yaml +++ b/.github/workflows/test-e2e.yaml @@ -14,7 +14,7 @@ jobs: uses: ./.github/workflows/build-image.yml e2e-integration: name: E2E - needs: build-image + # needs: build-image strategy: fail-fast: false matrix: From 82bdf3394c7f748498202badedcc7e43daf1ffbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 14:15:57 +0200 Subject: [PATCH 09/15] test echo --- .github/actions/deploy-lifecycle-manager/action.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/deploy-lifecycle-manager/action.yaml b/.github/actions/deploy-lifecycle-manager/action.yaml index 48538fe79e..80999f9835 100644 --- a/.github/actions/deploy-lifecycle-manager/action.yaml +++ b/.github/actions/deploy-lifecycle-manager/action.yaml @@ -18,13 +18,14 @@ runs: for retry in $(seq 1 $maxRetry) do if make local-deploy-with-watcher IMG=europe-docker.pkg.dev/kyma-project/${{ inputs.klm_image_repo }}/lifecycle-manager:${{ inputs.klm_version_tag }}; then + echo "TEST 1" kubectl describe deploy/klm-controller-manager -n kcp-system kubectl logs deploy/klm-controller-manager -n kcp-system kubectl wait pods -n kcp-system -l app.kubernetes.io/name=lifecycle-manager --for condition=Ready --timeout=90s echo "KLM deployed successfully" exit 0 elif [[ $retry -lt $maxRetry ]]; then - echo "TEST" + echo "TEST 2" kubectl describe deploy/klm-controller-manager -n kcp-system kubectl logs deploy/klm-controller-manager -n kcp-system echo "Deploy encountered some error, will retry after 20 seconds" From 16aca9ff3a0f56bf5fcf1f768d15881a6de83ee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 14:27:38 +0200 Subject: [PATCH 10/15] PR instead of PR_target --- .github/workflows/test-e2e.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-e2e.yaml b/.github/workflows/test-e2e.yaml index 3baeeb8590..ad86624844 100644 --- a/.github/workflows/test-e2e.yaml +++ b/.github/workflows/test-e2e.yaml @@ -6,7 +6,7 @@ on: k8s_version: description: With Kubernetes version required: false - pull_request_target: + pull_request: types: [ opened, edited, synchronize, reopened, ready_for_review ] jobs: build-image: From 0340780602ad17bb10fb528e98ec0266b9cc7b5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 15:02:14 +0200 Subject: [PATCH 11/15] revert test stuff; add flag default --- .github/actions/deploy-lifecycle-manager/action.yaml | 8 -------- .github/workflows/test-e2e.yaml | 4 ++-- internal/pkg/flags/flags.go | 3 ++- internal/pkg/flags/flags_test.go | 5 +++++ 4 files changed, 9 insertions(+), 11 deletions(-) diff --git a/.github/actions/deploy-lifecycle-manager/action.yaml b/.github/actions/deploy-lifecycle-manager/action.yaml index 80999f9835..2587d68d5b 100644 --- a/.github/actions/deploy-lifecycle-manager/action.yaml +++ b/.github/actions/deploy-lifecycle-manager/action.yaml @@ -18,22 +18,14 @@ runs: for retry in $(seq 1 $maxRetry) do if make local-deploy-with-watcher IMG=europe-docker.pkg.dev/kyma-project/${{ inputs.klm_image_repo }}/lifecycle-manager:${{ inputs.klm_version_tag }}; then - echo "TEST 1" - kubectl describe deploy/klm-controller-manager -n kcp-system - kubectl logs deploy/klm-controller-manager -n kcp-system kubectl wait pods -n kcp-system -l app.kubernetes.io/name=lifecycle-manager --for condition=Ready --timeout=90s echo "KLM deployed successfully" exit 0 elif [[ $retry -lt $maxRetry ]]; then - echo "TEST 2" - kubectl describe deploy/klm-controller-manager -n kcp-system - kubectl logs deploy/klm-controller-manager -n kcp-system echo "Deploy encountered some error, will retry after 20 seconds" sleep 20 else echo "KLM deployment failed" - kubectl describe deploy/klm-controller-manager -n kcp-system - kubectl logs deploy/klm-controller-manager -n kcp-system exit 1 fi done diff --git a/.github/workflows/test-e2e.yaml b/.github/workflows/test-e2e.yaml index ad86624844..5c66a9021c 100644 --- a/.github/workflows/test-e2e.yaml +++ b/.github/workflows/test-e2e.yaml @@ -6,7 +6,7 @@ on: k8s_version: description: With Kubernetes version required: false - pull_request: + pull_request_target: types: [ opened, edited, synchronize, reopened, ready_for_review ] jobs: build-image: @@ -14,7 +14,7 @@ jobs: uses: ./.github/workflows/build-image.yml e2e-integration: name: E2E - # needs: build-image + needs: build-image strategy: fail-fast: false matrix: diff --git a/internal/pkg/flags/flags.go b/internal/pkg/flags/flags.go index cc5abc40f4..80036cde39 100644 --- a/internal/pkg/flags/flags.go +++ b/internal/pkg/flags/flags.go @@ -55,6 +55,7 @@ const ( DefaultManifestListenerAddress = ":8083" DefaultPprofAddress = ":8084" DefaultWatcherImageName = "runtime-watcher" + DefaultWatcherImageRegistry = "europe-docker.pkg.dev/kyma-project/prod" DefaultWatcherResourcesPath = "./skr-webhook" DefaultWatcherResourceLimitsCPU = "0.1" DefaultWatcherResourceLimitsMemory = "200Mi" @@ -222,7 +223,7 @@ func DefineFlagVar() *FlagVar { `Image name to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", "", `Image tag to be used for the SKR watcher image.`) - flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", "", + flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", DefaultWatcherImageRegistry, `Image registry to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherResourceLimitsMemory, "skr-webhook-memory-limits", DefaultWatcherResourceLimitsMemory, diff --git a/internal/pkg/flags/flags_test.go b/internal/pkg/flags/flags_test.go index e9431f4378..9b097c3d39 100644 --- a/internal/pkg/flags/flags_test.go +++ b/internal/pkg/flags/flags_test.go @@ -230,6 +230,11 @@ func Test_ConstantFlags(t *testing.T) { constValue: DefaultWatcherImageName, expectedValue: "runtime-watcher", }, + { + constName: "WatcherImageRegistry", + constValue: DefaultWatcherImageRegistry, + expectedValue: "europe-docker.pkg.dev/kyma-project/prod", + }, { constName: "DefaultWatcherResourcesPath", constValue: DefaultWatcherResourcesPath, From 238ac2b8c318cb34b5ba17702890a523210689b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 15:39:21 +0200 Subject: [PATCH 12/15] default watcher image --- internal/pkg/flags/flags.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/pkg/flags/flags.go b/internal/pkg/flags/flags.go index 80036cde39..daaaa79ab7 100644 --- a/internal/pkg/flags/flags.go +++ b/internal/pkg/flags/flags.go @@ -54,6 +54,7 @@ const ( DefaultKymaListenerAddress = ":8082" DefaultManifestListenerAddress = ":8083" DefaultPprofAddress = ":8084" + DefaultWatcherImageTag = "1.1.4" DefaultWatcherImageName = "runtime-watcher" DefaultWatcherImageRegistry = "europe-docker.pkg.dev/kyma-project/prod" DefaultWatcherResourcesPath = "./skr-webhook" @@ -221,7 +222,7 @@ func DefineFlagVar() *FlagVar { "comma-separated list of API versions, where each API version is in the format 'kind:version'.") flag.StringVar(&flagVar.WatcherImageName, "skr-watcher-image-name", DefaultWatcherImageName, `Image name to be used for the SKR watcher image.`) - flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", "", + flag.StringVar(&flagVar.WatcherImageTag, "skr-watcher-image-tag", DefaultWatcherImageTag, `Image tag to be used for the SKR watcher image.`) flag.StringVar(&flagVar.WatcherImageRegistry, "skr-watcher-image-registry", DefaultWatcherImageRegistry, `Image registry to be used for the SKR watcher image.`) From b186e423a252c1e78e27fb9cdad989c3c397b046 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 16:38:01 +0200 Subject: [PATCH 13/15] remove quotes --- config/manager/kustomization.yaml | 4 ++-- config/watcher/kustomization.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 00ae86ff75..e012b9ba69 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -10,5 +10,5 @@ generatorOptions: images: - name: controller - newName: europe-docker.pkg.dev/kyma-project/prod/lifecycle-manager - newTag: latest + newName: k3d-myregistry.localhost:5000/lifecycle-manager + newTag: registry diff --git a/config/watcher/kustomization.yaml b/config/watcher/kustomization.yaml index ac6b09953b..6465269610 100644 --- a/config/watcher/kustomization.yaml +++ b/config/watcher/kustomization.yaml @@ -21,7 +21,7 @@ patches: value: --skr-watcher-image-tag=1.1.4 - op: add path: /spec/template/spec/containers/0/args/- - value: --skr-watcher-image-registry="europe-docker.pkg.dev/kyma-project/prod" + value: --skr-watcher-image-registry=europe-docker.pkg.dev/kyma-project/prod - op: add path: /spec/template/spec/containers/0/args/- value: --enable-domain-name-pinning=true From 1419184b82012645ac62b962e570ff94e81c4cb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Fri, 13 Sep 2024 17:03:01 +0200 Subject: [PATCH 14/15] revert faulty image name --- config/manager/kustomization.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index e012b9ba69..00ae86ff75 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -10,5 +10,5 @@ generatorOptions: images: - name: controller - newName: k3d-myregistry.localhost:5000/lifecycle-manager - newTag: registry + newName: europe-docker.pkg.dev/kyma-project/prod/lifecycle-manager + newTag: latest From dcd3fdf1b550a3ec586e55866b2af5fd24868d5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schw=C3=A4gerl?= Date: Mon, 23 Sep 2024 16:04:17 +0200 Subject: [PATCH 15/15] junk: Test E2E test with configurable registry --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4a0c0fce4e..540ea0ac76 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ [![REUSE status](https://api.reuse.software/badge/github.com/kyma-project/lifecycle-manager)](https://api.reuse.software/info/github.com/kyma-project/lifecycle-manager) # Lifecycle Manager +Test change. + Kyma is an opinionated set of Kubernetes-based modular building blocks that includes the necessary capabilities to develop and run enterprise-grade cloud-native applications. Kyma's Lifecycle Manager is a tool that manages the lifecycle of these modules in your cluster. ## Modularization