This is an automated email from the ASF dual-hosted git repository. pcongiusti pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit e117f51ad262c6c46a40023ab3ca1601863da066 Author: Pasquale Congiusti <[email protected]> AuthorDate: Fri Jun 7 15:36:42 2024 +0200 fix(install): simplify kustomize procedure --- e2e/install/kustomize/operator_test.go | 171 -------- e2e/install/kustomize/setup_test.go | 246 ++++++++--- e2e/install/kustomize/uninstall_test.go | 126 ------ e2e/install/upgrade/cli_upgrade_test.go | 3 - e2e/install/upgrade/kustomize_upgrade_test.go | 164 ++++++++ install/Makefile | 465 --------------------- install/base/config | 1 + install/{setup => base}/kustomization.yaml | 4 +- install/config | 1 - install/operator/kustomization.yaml | 50 --- .../kubernetes/descoped/integration-platform.yaml | 25 +- .../kubernetes/descoped}/kustomization.yaml | 11 +- .../descoped}/patch-watch-namespace-global.yaml | 2 +- .../namespaced/integration-platform.yaml | 25 +- .../kubernetes/namespaced}/kustomization.yaml | 23 +- .../patch-image-pull-policy-always.yaml | 0 .../patch-install-default-kamelets.yaml | 0 .../kubernetes/namespaced}/patch-log-level.yaml | 0 .../namespaced}/patch-node-selector.yaml | 0 .../kubernetes/namespaced}/patch-ports.yaml | 0 .../namespaced}/patch-resource-requirements.yaml | 0 .../kubernetes/namespaced}/patch-toleration.yaml | 0 install/script/Makefile | 1 - install/script/check_crd_api_support.sh | 1 - install/script/check_platform.sh | 1 - install/script/help.sh | 30 -- install/setup-cluster/kustomization.yaml | 22 - pkg/resources/config/manager/kustomization.yaml | 9 - pkg/resources/config/manifests/kustomization.yaml | 1 - .../config/manifests/patch-delete-pvc.yaml | 28 -- .../operator-cluster-role-binding-events.yaml | 1 - .../operator-cluster-role-binding-keda.yaml | 1 - .../operator-cluster-role-binding-knative.yaml | 1 - .../operator-cluster-role-binding-leases.yaml | 1 - .../operator-cluster-role-binding-podmonitors.yaml | 1 - .../operator-cluster-role-binding-strimzi.yaml | 1 - .../descoped/operator-cluster-role-binding.yaml | 1 - 37 files changed, 423 insertions(+), 994 deletions(-) diff --git a/e2e/install/kustomize/operator_test.go b/e2e/install/kustomize/operator_test.go deleted file mode 100644 index c8d686241..000000000 --- a/e2e/install/kustomize/operator_test.go +++ /dev/null @@ -1,171 +0,0 @@ -//go:build integration -// +build integration - -// To enable compilation of this file in Goland, go to "Settings -> Go -> Vendoring & Build Tags -> Custom Tags" and add "integration" - -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package kustomize - -import ( - "context" - "fmt" - "os" - "testing" - - corev1 "k8s.io/api/core/v1" - - . "github.com/apache/camel-k/v2/e2e/support" - testutil "github.com/apache/camel-k/v2/e2e/support/util" - v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" - "github.com/apache/camel-k/v2/pkg/util/kubernetes" - - . "github.com/onsi/gomega" -) - -func TestOperatorBasic(t *testing.T) { - makeDir := testutil.MakeTempCopyDir(t, "../../../install") - os.Setenv("CAMEL_K_TEST_MAKE_DIR", makeDir) - - ctx := TestContext() - - // Ensure no CRDs are already installed - g := NewWithT(t) - g.Expect(UninstallAll(t, ctx)).To(Succeed()) - - // Return the cluster to previous state - defer Cleanup(t, ctx) - - WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { - namespaceArg := fmt.Sprintf("NAMESPACE=%s", ns) - ExpectExecSucceed(t, g, Make(t, "setup-cluster", namespaceArg)) - ExpectExecSucceed(t, g, Make(t, "setup", namespaceArg)) - // Skip default kamelets installation for faster test runs - ExpectExecSucceed(t, g, Make(t, "operator", - namespaceArg, - "INSTALL_DEFAULT_KAMELETS=false")) - - // Refresh the test client to account for the newly installed CRDs - RefreshClient(t) - - g.Eventually(OperatorPod(t, ctx, ns)).ShouldNot(BeNil()) - g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning)) - - // Check if restricted security context has been applyed - operatorPod := OperatorPod(t, ctx, ns)() - g.Expect(operatorPod.Spec.Containers[0].SecurityContext.RunAsNonRoot).To(Equal(kubernetes.DefaultOperatorSecurityContext().RunAsNonRoot)) - g.Expect(operatorPod.Spec.Containers[0].SecurityContext.Capabilities).To(Equal(kubernetes.DefaultOperatorSecurityContext().Capabilities)) - g.Expect(operatorPod.Spec.Containers[0].SecurityContext.SeccompProfile).To(Equal(kubernetes.DefaultOperatorSecurityContext().SeccompProfile)) - g.Expect(operatorPod.Spec.Containers[0].SecurityContext.AllowPrivilegeEscalation).To(Equal(kubernetes.DefaultOperatorSecurityContext().AllowPrivilegeEscalation)) - - g.Eventually(Platform(t, ctx, ns)).ShouldNot(BeNil()) - registry := os.Getenv("KIND_REGISTRY") - if registry != "" { - g.Eventually(PlatformHas(t, ctx, ns, func(pl *v1.IntegrationPlatform) bool { - return pl.Status.Build.Registry.Address == registry - }), TestTimeoutShort).Should(BeTrue()) - } - - }) -} - -func TestOperatorKustomizeAlternativeImage(t *testing.T) { - makeDir := testutil.MakeTempCopyDir(t, "../../../install") - os.Setenv("CAMEL_K_TEST_MAKE_DIR", makeDir) - - ctx := TestContext() - - // Ensure no CRDs are already installed - g := NewWithT(t) - g.Expect(UninstallAll(t, ctx)).To(Succeed()) - - // Return the cluster to previous state - defer Cleanup(t, ctx) - - WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { - namespaceArg := fmt.Sprintf("NAMESPACE=%s", ns) - ExpectExecSucceed(t, g, Make(t, "setup-cluster", namespaceArg)) - ExpectExecSucceed(t, g, Make(t, "setup", namespaceArg)) - - // Skip default kamelets installation for faster test runs - newImage := "quay.io/kameltest/kamel-operator" - newTag := "1.1.1" - ExpectExecSucceed(t, g, Make(t, "operator", - fmt.Sprintf("CUSTOM_IMAGE=%s", newImage), - fmt.Sprintf("CUSTOM_VERSION=%s", newTag), - namespaceArg, - "INSTALL_DEFAULT_KAMELETS=false")) - - // Refresh the test client to account for the newly installed CRDs - RefreshClient(t) - - g.Eventually(OperatorImage(t, ctx, ns)).Should(Equal(fmt.Sprintf("%s:%s", newImage, newTag))) - }) -} - -func TestOperatorKustomizeGlobal(t *testing.T) { - makeDir := testutil.MakeTempCopyDir(t, "../../../install") - os.Setenv("CAMEL_K_TEST_MAKE_DIR", makeDir) - - ctx := TestContext() - - // Ensure no CRDs are already installed - g := NewWithT(t) - g.Expect(UninstallAll(t, ctx)).To(Succeed()) - - // Return the cluster to previous state - defer Cleanup(t, ctx) - - WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { - namespaceArg := fmt.Sprintf("NAMESPACE=%s", ns) - ExpectExecSucceed(t, g, Make(t, "setup-cluster", namespaceArg)) - ExpectExecSucceed(t, g, Make(t, "setup", namespaceArg, "GLOBAL=true")) - - // Skip default kamelets installation for faster test runs - ExpectExecSucceed(t, g, Make(t, "operator", - namespaceArg, - "GLOBAL=true", - "INSTALL_DEFAULT_KAMELETS=false")) - - // Refresh the test client to account for the newly installed CRDs - RefreshClient(t) - - podFunc := OperatorPod(t, ctx, ns) - g.Eventually(podFunc).ShouldNot(BeNil()) - g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning)) - pod := podFunc() - - containers := pod.Spec.Containers - g.Expect(containers).NotTo(BeEmpty()) - - envvars := containers[0].Env - g.Expect(envvars).NotTo(BeEmpty()) - - found := false - for _, v := range envvars { - if v.Name == "WATCH_NAMESPACE" { - g.Expect(v.Value).To(Equal("\"\"")) - found = true - break - } - } - g.Expect(found).To(BeTrue()) - - g.Eventually(Platform(t, ctx, ns)).ShouldNot(BeNil()) - }) -} diff --git a/e2e/install/kustomize/setup_test.go b/e2e/install/kustomize/setup_test.go index 79a2d1b72..90db17876 100644 --- a/e2e/install/kustomize/setup_test.go +++ b/e2e/install/kustomize/setup_test.go @@ -26,73 +26,219 @@ import ( "context" "fmt" "os" + "os/exec" "testing" + corev1 "k8s.io/api/core/v1" + . "github.com/apache/camel-k/v2/e2e/support" testutil "github.com/apache/camel-k/v2/e2e/support/util" - "github.com/apache/camel-k/v2/pkg/util/defaults" + v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" + "github.com/apache/camel-k/v2/pkg/util/kubernetes" + . "github.com/onsi/gomega" ) -func TestSetupKustomizeBasic(t *testing.T) { +func TestKustomizeNamespaced(t *testing.T) { + // TODO, likely we need to adjust this test with a Kustomize overlay for Openshift + // which would not require the registry setting + registry := os.Getenv("KIND_REGISTRY") + kustomizeDir := testutil.MakeTempCopyDir(t, "../../../install") ctx := TestContext() g := NewWithT(t) - makeDir := testutil.MakeTempCopyDir(t, "../../../install") - os.Setenv("CAMEL_K_TEST_MAKE_DIR", makeDir) - - // Ensure no CRDs are already installed - g.Expect(UninstallAll(t, ctx)).To(Succeed()) - g.Eventually(CRDs(t)).Should(HaveLen(0)) - - // Return the cluster to previous state - defer Cleanup(t, ctx) + g.Expect(registry).NotTo(Equal("")) + // Ensure no CRDs are already installed: we can skip to check as it may fail + // if no CRDs was previously installed. + UninstallAll(t, ctx) WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { - namespaceArg := fmt.Sprintf("NAMESPACE=%s", ns) - ExpectExecSucceed(t, g, Make(t, "setup-cluster", namespaceArg)) - g.Eventually(CRDs(t)).Should(HaveLen(GetExpectedCRDs(defaults.Version))) - - ExpectExecSucceed(t, g, Make(t, "setup", namespaceArg)) - - kpRoles := ExpectedKubePromoteRoles - opRoles := kpRoles + ExpectedOSPromoteRoles - g.Eventually(Role(t, ctx, ns)).Should(Or(HaveLen(kpRoles), HaveLen(opRoles))) - - kcRoles := ExpectedKubeClusterRoles - ocRoles := kcRoles + ExpectedOSClusterRoles - g.Eventually(ClusterRole(t, ctx)).Should(Or(HaveLen(kcRoles), HaveLen(ocRoles))) - - // Tidy up to ensure next test works - g.Expect(Kamel(t, ctx, "uninstall", "-n", ns).Execute()).To(Succeed()) + // We must change a few values in the Kustomize config + ExpectExecSucceed(t, g, + exec.Command( + "sed", + "-i", + fmt.Sprintf("s/namespace: .*/namespace: %s/", ns), + fmt.Sprintf("%s/overlays/kubernetes/namespaced/kustomization.yaml", kustomizeDir), + )) + ExpectExecSucceed(t, g, + exec.Command( + "sed", + "-i", + fmt.Sprintf("s/address: .*/address: %s/", registry), + fmt.Sprintf("%s/overlays/kubernetes/namespaced/integration-platform.yaml", kustomizeDir), + )) + + ExpectExecSucceed(t, g, Kubectl( + "apply", + "-k", + fmt.Sprintf("%s/overlays/kubernetes/namespaced", kustomizeDir), + "--server-side", + )) + // Refresh the test client to account for the newly installed CRDs + RefreshClient(t) + g.Eventually(OperatorPod(t, ctx, ns)).ShouldNot(BeNil()) + g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning)) + // Check if restricted security context has been applied + operatorPod := OperatorPod(t, ctx, ns)() + g.Expect(operatorPod.Spec.Containers[0].SecurityContext.RunAsNonRoot).To( + Equal(kubernetes.DefaultOperatorSecurityContext().RunAsNonRoot), + ) + g.Expect(operatorPod.Spec.Containers[0].SecurityContext.Capabilities).To( + Equal(kubernetes.DefaultOperatorSecurityContext().Capabilities), + ) + g.Expect(operatorPod.Spec.Containers[0].SecurityContext.SeccompProfile).To( + Equal(kubernetes.DefaultOperatorSecurityContext().SeccompProfile), + ) + g.Expect(operatorPod.Spec.Containers[0].SecurityContext.AllowPrivilegeEscalation).To( + Equal(kubernetes.DefaultOperatorSecurityContext().AllowPrivilegeEscalation), + ) + g.Eventually(Platform(t, ctx, ns)).ShouldNot(BeNil()) + g.Eventually(PlatformHas(t, ctx, ns, func(pl *v1.IntegrationPlatform) bool { + return pl.Status.Build.Registry.Address == registry + }), TestTimeoutShort).Should(BeTrue()) + + // Test a simple integration is running + g.Expect(KamelRun(t, ctx, ns, "files/yaml.yaml").Execute()).To(Succeed()) + g.Eventually(IntegrationPodPhase(t, ctx, ns, "yaml"), TestTimeoutLong).Should(Equal(corev1.PodRunning)) + g.Eventually(IntegrationConditionStatus(t, ctx, ns, "yaml", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue)) + g.Eventually(IntegrationLogs(t, ctx, ns, "yaml"), TestTimeoutShort).Should(ContainSubstring("Magicstring!")) + + // Test operator only uninstall + ExpectExecSucceed(t, g, Kubectl( + "delete", + "deploy,configmap,secret,sa,rolebindings,clusterrolebindings,roles,clusterroles", + "-l", + "app=camel-k", + "-n", + ns, + )) + g.Eventually(OperatorPod(t, ctx, ns)).Should(BeNil()) + g.Eventually(Integration(t, ctx, ns, "yaml"), TestTimeoutShort).ShouldNot(BeNil()) + g.Eventually(IntegrationConditionStatus(t, ctx, ns, "yaml", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue)) + + // Test CRD uninstall (will remove Integrations as well) + ExpectExecSucceed(t, g, Kubectl( + "delete", + "crd", + "-l", + "app=camel-k", + "-n", + ns, + )) + g.Eventually(OperatorPod(t, ctx, ns)).Should(BeNil()) + g.Eventually(Integration(t, ctx, ns, "yaml"), TestTimeoutShort).Should(BeNil()) + g.Eventually(CRDs(t)).Should(BeNil()) }) - } -func TestSetupKustomizeGlobal(t *testing.T) { - makeDir := testutil.MakeTempCopyDir(t, "../../../install") - os.Setenv("CAMEL_K_TEST_MAKE_DIR", makeDir) - +func TestKustomizeDescoped(t *testing.T) { + // TODO, likely we need to adjust this test with a Kustomize overlay for Openshift + // which would not require the registry setting + registry := os.Getenv("KIND_REGISTRY") + kustomizeDir := testutil.MakeTempCopyDir(t, "../../../install") ctx := TestContext() - - // Ensure no CRDs are already installed g := NewWithT(t) - g.Expect(UninstallAll(t, ctx)).To(Succeed()) - g.Eventually(CRDs(t)).Should(HaveLen(0)) - - // Return the cluster to previous state - defer Cleanup(t, ctx) + g.Expect(registry).NotTo(Equal("")) + // Ensure no CRDs are already installed: we can skip to check as it may fail + // if no CRDs was previously installed. + UninstallAll(t, ctx) WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { - namespaceArg := fmt.Sprintf("NAMESPACE=%s", ns) - ExpectExecSucceed(t, g, Make(t, "setup-cluster", namespaceArg)) - g.Eventually(CRDs(t)).Should(HaveLen(GetExpectedCRDs(defaults.Version))) - - ExpectExecSucceed(t, g, Make(t, "setup", "GLOBAL=true", namespaceArg)) - - g.Eventually(Role(t, ctx, ns)).Should(HaveLen(0)) - - kcpRoles := ExpectedKubeClusterRoles + ExpectedKubePromoteRoles - ocpRoles := kcpRoles + ExpectedOSClusterRoles + ExpectedOSPromoteRoles - g.Eventually(ClusterRole(t, ctx)).Should(Or(HaveLen(kcpRoles), HaveLen(ocpRoles))) + // We must change a few values in the Kustomize config + ExpectExecSucceed(t, g, + exec.Command( + "sed", + "-i", + fmt.Sprintf("s/namespace: .*/namespace: %s/", ns), + fmt.Sprintf("%s/overlays/kubernetes/descoped/kustomization.yaml", kustomizeDir), + )) + ExpectExecSucceed(t, g, + exec.Command( + "sed", + "-i", + fmt.Sprintf("s/address: .*/address: %s/", registry), + fmt.Sprintf("%s/overlays/kubernetes/descoped/integration-platform.yaml", kustomizeDir), + )) + + ExpectExecSucceed(t, g, Kubectl( + "apply", + "-k", + fmt.Sprintf("%s/overlays/kubernetes/descoped", kustomizeDir), + "--server-side", + )) + + // Refresh the test client to account for the newly installed CRDs + RefreshClient(t) + + podFunc := OperatorPod(t, ctx, ns) + g.Eventually(podFunc).ShouldNot(BeNil()) + g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning)) + pod := podFunc() + + containers := pod.Spec.Containers + g.Expect(containers).NotTo(BeEmpty()) + + envvars := containers[0].Env + g.Expect(envvars).NotTo(BeEmpty()) + + found := false + for _, v := range envvars { + if v.Name == "WATCH_NAMESPACE" { + g.Expect(v.Value).To(Equal("")) + found = true + break + } + } + g.Expect(found).To(BeTrue()) + // Check if restricted security context has been applied + operatorPod := OperatorPod(t, ctx, ns)() + g.Expect(operatorPod.Spec.Containers[0].SecurityContext.RunAsNonRoot).To( + Equal(kubernetes.DefaultOperatorSecurityContext().RunAsNonRoot), + ) + g.Expect(operatorPod.Spec.Containers[0].SecurityContext.Capabilities).To( + Equal(kubernetes.DefaultOperatorSecurityContext().Capabilities), + ) + g.Expect(operatorPod.Spec.Containers[0].SecurityContext.SeccompProfile).To( + Equal(kubernetes.DefaultOperatorSecurityContext().SeccompProfile), + ) + g.Expect(operatorPod.Spec.Containers[0].SecurityContext.AllowPrivilegeEscalation).To( + Equal(kubernetes.DefaultOperatorSecurityContext().AllowPrivilegeEscalation), + ) + g.Eventually(Platform(t, ctx, ns)).ShouldNot(BeNil()) + + // We need a different namespace from the global operator + WithNewTestNamespace(t, func(ctx context.Context, g *WithT, nsIntegration string) { + // Test a simple integration is running + g.Expect(KamelRun(t, ctx, nsIntegration, "files/yaml.yaml").Execute()).To(Succeed()) + g.Eventually(IntegrationPodPhase(t, ctx, nsIntegration, "yaml"), TestTimeoutLong).Should(Equal(corev1.PodRunning)) + g.Eventually(IntegrationConditionStatus(t, ctx, nsIntegration, "yaml", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue)) + g.Eventually(IntegrationLogs(t, ctx, nsIntegration, "yaml"), TestTimeoutShort).Should(ContainSubstring("Magicstring!")) + + // Test operator only uninstall + ExpectExecSucceed(t, g, Kubectl( + "delete", + "deploy,configmap,secret,sa,rolebindings,clusterrolebindings,roles,clusterroles", + "-l", + "app=camel-k", + "-n", + ns, + )) + g.Eventually(OperatorPod(t, ctx, ns)).Should(BeNil()) + g.Eventually(Integration(t, ctx, nsIntegration, "yaml"), TestTimeoutShort).ShouldNot(BeNil()) + g.Eventually(IntegrationConditionStatus(t, ctx, nsIntegration, "yaml", v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue)) + + // Test CRD uninstall (will remove Integrations as well) + ExpectExecSucceed(t, g, Kubectl( + "delete", + "crd", + "-l", + "app=camel-k", + "-n", + ns, + )) + g.Eventually(OperatorPod(t, ctx, ns)).Should(BeNil()) + g.Eventually(Integration(t, ctx, nsIntegration, "yaml"), TestTimeoutShort).Should(BeNil()) + g.Eventually(CRDs(t)).Should(BeNil()) + }) }) } diff --git a/e2e/install/kustomize/uninstall_test.go b/e2e/install/kustomize/uninstall_test.go deleted file mode 100644 index 305fa7512..000000000 --- a/e2e/install/kustomize/uninstall_test.go +++ /dev/null @@ -1,126 +0,0 @@ -//go:build integration -// +build integration - -// To enable compilation of this file in Goland, go to "Settings -> Go -> Vendoring & Build Tags -> Custom Tags" and add "integration" - -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package kustomize - -import ( - "context" - "fmt" - "os" - "testing" - - corev1 "k8s.io/api/core/v1" - - . "github.com/apache/camel-k/v2/e2e/support" - testutil "github.com/apache/camel-k/v2/e2e/support/util" - "github.com/apache/camel-k/v2/pkg/util/defaults" - . "github.com/onsi/gomega" -) - -func TestKustomizeUninstallBasic(t *testing.T) { - ctx := TestContext() - g := NewWithT(t) - makeDir := testutil.MakeTempCopyDir(t, "../../../install") - os.Setenv("CAMEL_K_TEST_MAKE_DIR", makeDir) - - // Ensure no CRDs are already installed - g.Expect(UninstallAll(t, ctx)).To(Succeed()) - g.Eventually(CRDs(t)).Should(HaveLen(0)) - - // Return the cluster to previous state - defer Cleanup(t, ctx) - - WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { - namespaceArg := fmt.Sprintf("NAMESPACE=%s", ns) - ExpectExecSucceed(t, g, Make(t, "setup-cluster", namespaceArg)) - ExpectExecSucceed(t, g, Make(t, "setup", namespaceArg)) - ExpectExecSucceed(t, g, Make(t, "platform", namespaceArg)) - // Skip default kamelets installation for faster test runs - ExpectExecSucceed(t, g, Make(t, "operator", namespaceArg, "INSTALL_DEFAULT_KAMELETS=false")) - g.Eventually(OperatorPod(t, ctx, ns)).ShouldNot(BeNil()) - g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning)) - - // Do uninstall - ExpectExecSucceed(t, g, Make(t, "uninstall", namespaceArg)) - - // Refresh the test client to account for the newly installed CRDs - RefreshClient(t) - - g.Eventually(OperatorPod(t, ctx, ns)).Should(BeNil()) - g.Eventually(Platform(t, ctx, ns)).Should(BeNil()) - // The operator can dynamically create a for its builders - // so, in case there is a build strategy "pod", expect this to have 1 role - g.Eventually(Role(t, ctx, ns)).Should(BeNil()) - g.Eventually(ClusterRole(t, ctx)).Should(BeNil()) - // CRDs should be still there - g.Eventually(CRDs(t)).Should(HaveLen(GetExpectedCRDs(defaults.Version))) - - // Do uninstall all - ExpectExecSucceed(t, g, Make(t, "uninstall", namespaceArg, "UNINSTALL_ALL=true")) - - g.Eventually(CRDs(t)).Should(BeNil()) - }) - -} - -func TestUninstallGlobal(t *testing.T) { - ctx := TestContext() - g := NewWithT(t) - makeDir := testutil.MakeTempCopyDir(t, "../../../install") - os.Setenv("CAMEL_K_TEST_MAKE_DIR", makeDir) - - // Ensure no CRDs are already installed - g.Expect(UninstallAll(t, ctx)).To(Succeed()) - g.Eventually(CRDs(t)).Should(HaveLen(0)) - - // Return the cluster to previous state - defer Cleanup(t, ctx) - - WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { - namespaceArg := fmt.Sprintf("NAMESPACE=%s", ns) - ExpectExecSucceed(t, g, Make(t, "setup-cluster", namespaceArg)) - ExpectExecSucceed(t, g, Make(t, "setup", namespaceArg, "GLOBAL=true")) - ExpectExecSucceed(t, g, Make(t, "platform", namespaceArg)) - // Skip default kamelets installation for faster test runs - ExpectExecSucceed(t, g, Make(t, "operator", namespaceArg, "GLOBAL=true", "INSTALL_DEFAULT_KAMELETS=false")) - g.Eventually(OperatorPod(t, ctx, ns)).ShouldNot(BeNil()) - g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning)) - - // Do uninstall - ExpectExecSucceed(t, g, Make(t, "uninstall", namespaceArg)) - - // Refresh the test client to account for the newly installed CRDs - RefreshClient(t) - - g.Eventually(OperatorPod(t, ctx, ns)).Should(BeNil()) - g.Eventually(Platform(t, ctx, ns)).Should(BeNil()) - g.Eventually(Role(t, ctx, ns)).Should(BeNil()) - g.Eventually(ClusterRole(t, ctx)).Should(BeNil()) - // CRDs should be still there - g.Eventually(CRDs(t)).Should(HaveLen(GetExpectedCRDs(defaults.Version))) - - // Do uninstall all - ExpectExecSucceed(t, g, Make(t, "uninstall", namespaceArg, "UNINSTALL_ALL=true")) - - g.Eventually(CRDs(t)).Should(BeNil()) - }) -} diff --git a/e2e/install/upgrade/cli_upgrade_test.go b/e2e/install/upgrade/cli_upgrade_test.go index 8f607fa92..b90d96446 100644 --- a/e2e/install/upgrade/cli_upgrade_test.go +++ b/e2e/install/upgrade/cli_upgrade_test.go @@ -43,13 +43,10 @@ func TestCLIOperatorUpgrade(t *testing.T) { WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { version, ok := os.LookupEnv("KAMEL_K_TEST_RELEASE_VERSION") g.Expect(ok).To(BeTrue()) - image, ok := os.LookupEnv("KAMEL_K_TEST_OPERATOR_CURRENT_IMAGE") g.Expect(ok).To(BeTrue()) - kamel, ok := os.LookupEnv("RELEASED_KAMEL_BIN") g.Expect(ok).To(BeTrue()) - // Set KAMEL_BIN only for this test - don't override the ENV variable for all tests g.Expect(os.Setenv("KAMEL_BIN", kamel)).To(Succeed()) diff --git a/e2e/install/upgrade/kustomize_upgrade_test.go b/e2e/install/upgrade/kustomize_upgrade_test.go new file mode 100644 index 000000000..e3bbdbdfb --- /dev/null +++ b/e2e/install/upgrade/kustomize_upgrade_test.go @@ -0,0 +1,164 @@ +//go:build integration +// +build integration + +// To enable compilation of this file in Goland, go to "Settings -> Go -> Vendoring & Build Tags -> Custom Tags" and add "integration" + +/* +Licensed to the Apache Software Foundation (ASF) under one or more +contributor license agreements. See the NOTICE file distributed with +this work for additional information regarding copyright ownership. +The ASF licenses this file to You under the Apache License, Version 2.0 +(the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package upgrade + +import ( + "context" + "fmt" + "os" + "os/exec" + "testing" + "time" + + . "github.com/onsi/gomega" + + corev1 "k8s.io/api/core/v1" + kerrors "k8s.io/apimachinery/pkg/api/errors" + + . "github.com/apache/camel-k/v2/e2e/support" + testutil "github.com/apache/camel-k/v2/e2e/support/util" + v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" + "github.com/apache/camel-k/v2/pkg/util/defaults" +) + +// WARNING: this test is not OLM specific but needs certain setting we provide in OLM installation scenario +func TestKustomizeUpgrade(t *testing.T) { + WithNewTestNamespace(t, func(ctx context.Context, g *WithT, ns string) { + // ********* START + // TODO: we need to replace this CLI based installation with Kustomize installation after 2.4 release + // this is a workaround as Kustomize was not working properly pre 2.4 + version, ok := os.LookupEnv("KAMEL_K_TEST_RELEASE_VERSION") + g.Expect(ok).To(BeTrue()) + image, ok := os.LookupEnv("KAMEL_K_TEST_OPERATOR_CURRENT_IMAGE") + g.Expect(ok).To(BeTrue()) + kamel, ok := os.LookupEnv("RELEASED_KAMEL_BIN") + g.Expect(ok).To(BeTrue()) + // Set KAMEL_BIN only for this test - don't override the ENV variable for all tests + g.Expect(os.Setenv("KAMEL_BIN", kamel)).To(Succeed()) + + if len(CRDs(t)()) > 0 { + // Clean up old installation - maybe leftover from another test + if err := UninstallAll(t, ctx); err != nil && !kerrors.IsNotFound(err) { + t.Error(err) + t.FailNow() + } + } + g.Eventually(CRDs(t)).Should(HaveLen(0)) + + // Should both install the CRDs and kamel in the given namespace + g.Expect(Kamel(t, ctx, "install", "-n", ns, "--global").Execute()).To(Succeed()) + // Check the operator pod is running + g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning)) + // Refresh the test client to account for the newly installed CRDs + RefreshClient(t) + // Check the IntegrationPlatform has been reconciled + g.Eventually(PlatformVersion(t, ctx, ns), TestTimeoutMedium).Should(Equal(version)) + // TODO: replace the code above + // ************* END + + // We need a different namespace from the global operator + WithNewTestNamespace(t, func(ctx context.Context, g *WithT, nsIntegration string) { + // Run the Integration + name := RandomizedSuffixName("yaml") + g.Expect(Kamel(t, ctx, "run", "-n", nsIntegration, "--name", name, "files/yaml.yaml").Execute()).To(Succeed()) + g.Eventually(IntegrationPodPhase(t, ctx, nsIntegration, name)).Should(Equal(corev1.PodRunning)) + g.Eventually(IntegrationConditionStatus(t, ctx, nsIntegration, name, v1.IntegrationConditionReady)).Should(Equal(corev1.ConditionTrue)) + // Check the Integration version + g.Eventually(IntegrationVersion(t, ctx, nsIntegration, name)).Should(Equal(version)) + + // Clear the KAMEL_BIN environment variable so that the current version is used from now on + g.Expect(os.Setenv("KAMEL_BIN", "")).To(Succeed()) + + // Upgrade the operator by installing the current version + registry := os.Getenv("KIND_REGISTRY") + kustomizeDir := testutil.MakeTempCopyDir(t, "../../../install") + g.Expect(registry).NotTo(Equal("")) + // We must change a few values in the Kustomize config + ExpectExecSucceed(t, g, + exec.Command( + "sed", + "-i", + fmt.Sprintf("s/namespace: .*/namespace: %s/", ns), + fmt.Sprintf("%s/overlays/kubernetes/descoped/kustomization.yaml", kustomizeDir), + )) + ExpectExecSucceed(t, g, + exec.Command( + "sed", + "-i", + fmt.Sprintf("s/address: .*/address: %s/", registry), + fmt.Sprintf("%s/overlays/kubernetes/descoped/integration-platform.yaml", kustomizeDir), + )) + + ExpectExecSucceed(t, g, Kubectl( + "apply", + "-k", + fmt.Sprintf("%s/overlays/kubernetes/descoped", kustomizeDir), + "--server-side", + "--force-conflicts", + )) + + // Check the operator image is the current built one + g.Eventually(OperatorImage(t, ctx, ns)).Should(Equal(image)) + // Check the operator pod is running + g.Eventually(OperatorPodPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(corev1.PodRunning)) + // Check the IntegrationPlatform has been reconciled + g.Eventually(PlatformPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(v1.IntegrationPlatformPhaseReady)) + g.Eventually(PlatformVersion(t, ctx, ns), TestTimeoutMedium).Should(Equal(defaults.Version)) + + // Check the Integration hasn't been upgraded + g.Consistently(IntegrationVersion(t, ctx, nsIntegration, name), 15*time.Second, 3*time.Second).Should(Equal(version)) + // Make sure that any Pod rollout is completing successfully + // otherwise we are probably in front of a non breaking compatibility change + g.Consistently(IntegrationConditionStatus(t, ctx, nsIntegration, name, v1.IntegrationConditionReady), + 2*time.Minute, 15*time.Second).Should(Equal(corev1.ConditionTrue)) + + // Force the Integration upgrade + g.Expect(Kamel(t, ctx, "rebuild", name, "-n", nsIntegration).Execute()).To(Succeed()) + + // A catalog should be created with the new configuration + g.Eventually(DefaultCamelCatalogPhase(t, ctx, ns), TestTimeoutMedium).Should(Equal(v1.CamelCatalogPhaseReady)) + // Check the Integration version has been upgraded + g.Eventually(IntegrationVersion(t, ctx, nsIntegration, name), TestTimeoutMedium).Should(Equal(defaults.Version)) + + // Check the previous kit is not garbage collected + g.Eventually(Kits(t, ctx, ns, KitWithVersion(version))).Should(HaveLen(1)) + // Check a new kit is created with the current version + g.Eventually(Kits(t, ctx, ns, KitWithVersion(defaults.Version))).Should(HaveLen(1)) + // Check the new kit is ready + g.Eventually(Kits(t, ctx, ns, KitWithVersion(defaults.Version), KitWithPhase(v1.IntegrationKitPhaseReady)), + TestTimeoutMedium).Should(HaveLen(1)) + + kit := Kits(t, ctx, ns, KitWithVersion(defaults.Version))()[0] + + // Check the Integration uses the new image + g.Eventually(IntegrationKit(t, ctx, nsIntegration, name), TestTimeoutMedium).Should(Equal(kit.Name)) + // Check the Integration Pod uses the new kit + g.Eventually(IntegrationPodImage(t, ctx, nsIntegration, name)).Should(Equal(kit.Status.Image)) + + // Check the Integration runs correctly + g.Eventually(IntegrationPodPhase(t, ctx, nsIntegration, name), TestTimeoutLong).Should(Equal(corev1.PodRunning)) + g.Eventually(IntegrationConditionStatus(t, ctx, nsIntegration, name, v1.IntegrationConditionReady), TestTimeoutShort).Should(Equal(corev1.ConditionTrue)) + }) + // TODO: we should verify new CRDs installed are the same as the one defined in the source core here + }) +} diff --git a/install/Makefile b/install/Makefile deleted file mode 100644 index 692d32f9a..000000000 --- a/install/Makefile +++ /dev/null @@ -1,465 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# -# Use bash explicitly in this Makefile to avoid unexpected platform -# incompatibilities among Linux distros. -# -SHELL := /bin/bash - -MAKE := make --no-print-directory - -# -# Allows for resources to be loaded from outside the root location of -# the kustomize config file. Ensures that resource don't need to be -# copied around the file system. -# -# See https://kubectl.docs.kubernetes.io/faq/kustomize -# -KOPTIONS := --load-restrictor LoadRestrictionsNone - -# -# Include the main camel-k Makefile containing -# basic common recipes like kustomize and vars -# like VERSION -# -include script/Makefile - -# -# Vars that can be overridden by external env vars -# -DRY_RUN ?= false -NAMESPACE ?= camel-k - -# Global: [true|false] -# - On setup: will promote roles and bindings to cluster-level -# - On operator: set namespace to all using WATCH_NAMESPACE env var -GLOBAL ?= false -# Always Pull Images: [true|false] -ALWAYS_PULL_IMAGES ?= false -# Monitoring: [true|false] -# - On operator: will add the prometheus resources to install -MONITORING ?= false -# Monitoring Port: integer -MONITORING_PORT ?= 8080 -# Health Port: integer -HEALTH_PORT ?= 8081 -# Operator Logging Level: string [info, debug, 0, 1] -LOGGING_LEVEL ?= info -# Install default kamelets: [true|false] -INSTALL_DEFAULT_KAMELETS ?= true -# Install default pvc: [true|false] -INSTALL_DEFAULT_PVC ?= true -# Uninstall all Camel K resources: [true|false] -UNINSTALL_ALL ?=false - -CONFIG := config -MANAGER := $(CONFIG)/manager -SAMPLES := $(CONFIG)/samples -RBAC := $(CONFIG)/rbac -RBAC_OS := $(RBAC)/openshift -RBAC_GLOBAL := global -OPERATOR := operator -PLACEHOLDER := placeholder -YAML := yaml - -# Fetch the latest image name - may override the original constant -IMAGE_NAME := $(shell grep image: $(MANAGER)/operator-deployment.yaml | sed 's/.*image: \(.*\):.*/\1/') - -# Setup patches -ROLE_TO_CROLE_PATCH := $(RBAC)/patch-role-to-clusterrole -ROLEBIN_TO_CROLEBIN_PATCH := $(RBAC)/patch-rolebinding-to-clusterrolebinding -# Operator patches -PORTS_PATCH := patch-ports -LOG_LEVEL_PATCH := patch-log-level -INSTALL_DEFAULT_KAMELETS_PATCH := patch-install-default-kamelets -IMAGE_PULL_POLICY_PATCH := patch-image-pull-policy-always -WATCH_NAMESPACE_PATCH := patch-watch-namespace-global -# Platform patches -INT_PLATFORM_PATCH := patch-integration-platform - -# -# Macro for editing kustomization to define -# the image reference -# -# Parameter: directory of the kustomization.yaml -# -define set-kustomize-image - $(if $(filter $(IMAGE_NAME),$(CUSTOM_IMAGE):$(CUSTOM_VERSION)),,\ - @cd $(1) || exit 1 && \ - $(KUSTOMIZE) edit set image $(IMAGE_NAME)=$(CUSTOM_IMAGE):$(CUSTOM_VERSION)) -endef - -# -# Macro for editing kustomization to define -# the namespace -# -# Parameter: directory of the kustomization.yaml -# -define set-kustomize-namespace - @cd $(1) || exit 1 && \ - $(KUSTOMIZE) edit set namespace $(NAMESPACE) -endef - -# -# Add or remove a patch on a kustomization.yaml -# targetting a kind of resource -# -# Parameters: -# * directory of the kustomization.yaml -# * [add, remove] -# * path of patch -# * kind of resources, eg. Deployment, Role -# -define add-remove-kind-patch - @cd $(1) || exit 1 && \ - $(KUSTOMIZE) edit $(2) patch --path $(3) --kind $(4) &> /dev/null -endef - -# -# Macro for adding / removing the prometheus resources for monitoring -# -define add-remove-operator-monitoring - @cd $(1) || exit 1 && \ - $(KUSTOMIZE) edit $(2) resource ../$(CONFIG)/prometheus &> /dev/null -endef - -.PHONY: have-platform check_admin setup-cluster .setup-kubernetes .setup-openshift setup - -# -# Determine the platform of the cluster based on -# either the use of querying through a go-client -# or using an installed client, ie. oc or kubectl -# -find-platform: -ifndef PLATFORM -PLATFORM=$(shell script/check_platform.sh) -endif - -# -# Checks if the cluster platform has been defined correctly either by the user -# or by the platform_check script. -# -have-platform: find-platform -ifeq ($(PLATFORM),openshift) - @echo Platform identified as 'openshift' -else ifeq ($(PLATFORM),kubernetes) - @echo Platform identified as 'kubernetes' -else - @echo "****" - @echo "**** ERROR: Cannot continue as cluster platform cannot be identified ****" - @echo "****" - @exit 1 -endif - -# -# Checks if the cluster user has the necessary privileges to be a cluster-admin -# In this case if the user can list the CRDs then probably a cluster-admin -# -check-admin: kubectl - @output=$$(kubectl get crd 2>&1) || (echo "****" && echo "**** ERROR: Cannot continue as user is not a Cluster-Admin ****" && echo "****"; exit 1) - -crd-api-support: kubectl -ifndef CRD_SUPPORT -CRD_SUPPORT=$(shell script/check_crd_api_support.sh) -endif - -check-crd-api-support: crd-api-support -ifneq ($(CRD_SUPPORT),OK) - $(error *** CRD API FAILURE: $(CRD_SUPPORT) ****) -endif - -#--- -# -#@ setup-cluster -# -#== Setup the cluster installation by installing crds and cluster roles. -# -# Will either call setup-cluster-openshift (then setup-cluster-kubernetes) or -# setup-cluster-kubernetes depending on the identity of the cluster -# -#=== Cluster-admin privileges are required. -# -#* PARAMETERS: -#** NAMESPACE: Set the namespace for the resources -#** PLATFORM: Override the discovered platform, if required -#** DRY_RUN: Print the resources to be applied instead of applying them [true|false] -# -#--- -setup-cluster: check-admin check-crd-api-support have-platform kustomize kubectl -# Set the namespace in the setup-cluster kustomization yaml - @$(call set-kustomize-namespace,$@) -ifeq ($(PLATFORM), openshift) - @cd $@ || exit 1 && $(KUSTOMIZE) edit add resource ../$(RBAC_OS) && cd - &> /dev/null; -endif -# -# Build the resources -# Post-process ClusterRoleBindings to fix the namespace in the refs (not yet handled by kustomize) -# Either apply to the cluster or output to CLI -# -ifeq ($(DRY_RUN), false) - @$(KUSTOMIZE) build $(KOPTIONS) $@ | \ - sed 's/$(PLACEHOLDER)/$(NAMESPACE)/' | \ - kubectl apply --server-side -f - -else - @$(KUSTOMIZE) build $(KOPTIONS) $@ | \ - sed 's/$(PLACEHOLDER)/$(NAMESPACE)/' -endif - -#--- -# -#@ setup -# -#== Setup the installation by installing roles and granting privileges for the installing operator. -# -#=== Calls setup-cluster -#=== Cluster-admin privileges are required. -# -#* PARAMETERS: -#** NAMESPACE: Set the namespace for the resources -#** GLOBAL: Convert all roles & bindings to cluster-level [true|false] -#** PLATFORM: Override the discovered platform, if required -#** DRY_RUN: Print the resources to be applied instead of applying them [true|false] -# -#--- -setup: setup-cluster -# Set the namespace in the setup kustomization yaml - @$(call set-kustomize-namespace,$@) -# If GLOBAL then add the versions with clusterroles and clusterrolebindings -ifeq ($(GLOBAL), true) - @cd $@ || exit 1 && $(KUSTOMIZE) edit add resource ../$(RBAC)/descoped && cd - &> /dev/null; -else - @cd $@ || exit 1 && $(KUSTOMIZE) edit add resource ../$(RBAC)/namespaced && cd - &> /dev/null; -endif -ifeq ($(PLATFORM), openshift) -ifeq ($(GLOBAL), true) - @cd $@ || exit 1 && $(KUSTOMIZE) edit add resource ../$(RBAC_OS)/descoped && cd - &> /dev/null; -else - @cd $@ || exit 1 && $(KUSTOMIZE) edit add resource ../$(RBAC_OS)/namespaced && cd - &> /dev/null; -endif -endif -# -# Build the resources -# Post-process RoleBindings to fix the namespace in the refs (not yet handled by kustomize) -# Either apply to the cluster or output to CLI -# -ifeq ($(DRY_RUN), false) - @$(KUSTOMIZE) build $(KOPTIONS) $@ | \ - sed 's/$(PLACEHOLDER)/$(NAMESPACE)/' | \ - kubectl apply --server-side -f - -else - @$(KUSTOMIZE) build $(KOPTIONS) $@ | \ - sed 's/$(PLACEHOLDER)/$(NAMESPACE)/' -endif - -.PHONY: operator .operator-port-patch .operator-can-monitor .operator-log-level-patch - -# -# Customizes the port patch -# -.operator-port-patch: - @sed -i 's/--monitoring-port=.*/--monitoring-port=$(MONITORING_PORT)/' $(MANAGER)/$(PORTS_PATCH).$(YAML) - @sed -i '/path:.*\/containerPort/,/- op/{s/value: .*/value: $(MONITORING_PORT)/}' $(MANAGER)/$(PORTS_PATCH).$(YAML) - @sed -i 's/--health-port=.*/--health-port=$(HEALTH_PORT)/' $(MANAGER)/$(PORTS_PATCH).$(YAML) - @sed -i '/path:.*\/httpGet\/port/,/- op/{s/value: .*/value: $(HEALTH_PORT)/}' $(MANAGER)/$(PORTS_PATCH).$(YAML) - -# -# Customizes the log level patch -# -.operator-log-level-patch: - @sed -i 's/ value:.*/ value: "$(LOGGING_LEVEL)"/' $(MANAGER)/$(LOG_LEVEL_PATCH).$(YAML) - -.operator-can-monitor: kubectl - @output=$$(kubectl get crd prometheusrules.monitoring.coreos.com 2>&1) || (echo "****" && echo "**** ERROR: Montoring not available as Prometheus CRDs not installed in cluster ****" && echo "****"; exit 1) - -#--- -# -#@ operator -# -#== Install the operator deployment and related resources. -# -#=== Cluster-admin privileges are required. -# -#* PARAMETERS: -#** NAMESPACE: Set the namespace to install the operator into -#** PLATFORM: Override the discovered platform, if required -#** GLOBAL: Set the operator to watch all namespaces for custom resources [true|false] -#** CUSTOM_IMAGE: Set a custom operator image name -#** CUSTOM_VERSION: Set a custom operator image version/tag -#** ALWAYS_PULL_IMAGES: Set whether to always pull the operator image [true|false] -#** MONITORING: Add the prometheus monitoring resources -#** MONITORING_PORT: Set a custom monitoring port -#** HEALTH_PORT: Set a custom health port -#** LOGGING_LEVEL: Set the level of logging [info|debug] -#** INSTALL_DEFAULT_KAMELETS: Install the default Kamelets from catalog [true|false] -#** DRY_RUN: Print the resources to be applied instead of applying them [true|false] -# -#--- -operator: check-admin have-platform check-crd-api-support kustomize kubectl .operator-port-patch .operator-log-level-patch -ifeq ($(MONITORING), true) - @$(MAKE) -s .operator-can-monitor - @$(call add-remove-operator-monitoring,$@,add) -else - @$(call add-remove-operator-monitoring,$@,remove) -endif -# Set the namespace in the operator kustomization yaml - @$(call set-kustomize-namespace,$@) -# Set the image reference of the kustomization - @$(call set-kustomize-image,$@) -# Set the WATCH NAMESPACE env var depending on GLOBAL var -ifeq ($(GLOBAL), true) - @$(call add-remove-kind-patch,$(MANAGER),add,$(WATCH_NAMESPACE_PATCH).$(YAML),Deployment) -else - @$(call add-remove-kind-patch,$(MANAGER),remove,$(WATCH_NAMESPACE_PATCH).$(YAML),Deployment) -endif -# Set the ALWAYS_PULL_IMAGES config depending on var -ifeq ($(ALWAYS_PULL_IMAGES),true) - @$(call add-remove-kind-patch,$(MANAGER),add,$(IMAGE_PULL_POLICY_PATCH).$(YAML),Deployment) -else - @$(call add-remove-kind-patch,$(MANAGER),remove,$(IMAGE_PULL_POLICY_PATCH).$(YAML),Deployment) -endif -# Set the PORTS depending on vars -ifneq ($(MONITORING_PORT), 8080) - @$(call add-remove-kind-patch,$(MANAGER),add,$(PORTS_PATCH).$(YAML),Deployment) -else ifneq ($(HEALTH_PORT), 8081) - @$(call add-remove-kind-patch,$(MANAGER),add,$(PORTS_PATCH).$(YAML),Deployment) -endif -# Set the Log level of the operator -ifneq ($(LOGGING_LEVEL), info) - @$(call add-remove-kind-patch,$(MANAGER),add,$(LOG_LEVEL_PATCH).$(YAML),Deployment) -else ifneq ($(LOGGING_LEVEL), 0) - @$(call add-remove-kind-patch,$(MANAGER),add,$(LOG_LEVEL_PATCH).$(YAML),Deployment) -else - @$(call add-remove-kind-patch,$(MANAGER),remove,$(LOG_LEVEL_PATCH).$(YAML),Deployment) -endif -# Set the INSTALL_DEFAULT_KAMELETS config depending on var -ifeq ($(INSTALL_DEFAULT_KAMELETS),false) - @$(call add-remove-kind-patch,$(MANAGER),add,$(INSTALL_DEFAULT_KAMELETS_PATCH).$(YAML),Deployment) -else - @$(call add-remove-kind-patch,$(MANAGER),remove,$(INSTALL_DEFAULT_KAMELETS_PATCH).$(YAML),Deployment) -endif -ifeq ($(DRY_RUN), false) - @$(KUSTOMIZE) build $(KOPTIONS) $@ | kubectl apply -f - -else - @$(KUSTOMIZE) build $(KOPTIONS) $@ -endif - -.PHONY: platform .platform-openshift-patch .platform-kubernetes-patch - -# -# Customizes the samples patches for kubernetes -# -.platform-kubernetes-patch: - @sed -i 's/.*profile:.*/ profile: Kubernetes/' $(SAMPLES)/$(INT_PLATFORM_PATCH).$(YAML) - -# -# Customizes the samples patches for openshift -# -.platform-openshift-patch: - @sed -i 's/.*profile:.*/ profile: OpenShift/' $(SAMPLES)/$(INT_PLATFORM_PATCH).$(YAML) - -#--- -# -#@ platform -# -#== Install the integration platform. -# -#=== Cluster-admin privileges are required. -# -#* PARAMETERS: -#** NAMESPACE: Set the namespace to install the operator into -#** PLATFORM: Override the discovered platform, if required -#** DRY_RUN: Print the resources to be applied instead of applying them [true|false] -# -#--- -platform: have-platform kustomize kubectl -# Cannot be a dependency as PLATFORM could contain 'ERROR: ' - @$(MAKE) .platform-$(PLATFORM)-patch -# Set the namespace in the platform kustomization yaml - @$(call set-kustomize-namespace,$@) -ifeq ($(DRY_RUN), false) - @$(KUSTOMIZE) build $(KOPTIONS) $@ | kubectl apply -f - -else - @$(KUSTOMIZE) build $(KOPTIONS) $@ -endif - -.PHONY: example - -#--- -# -#@ example -# -#== Install the example integration. -# -#* PARAMETERS: -#** NAMESPACE: Set the namespace to install the example into -#** PLATFORM: Override the discovered platform, if required -#** DRY_RUN: Print the resources to be applied instead of applying them [true|false] -# -#--- -example: kubectl -# Set the namespace in the example kustomization yaml - @$(call set-kustomize-namespace,$@) -ifeq ($(DRY_RUN), false) - @$(KUSTOMIZE) build $(KOPTIONS) $@ | kubectl apply -f - -else - @$(KUSTOMIZE) build $(KOPTIONS) $@ -endif - -.PHONY: uninstall - -#--- -# -#@ uninstall -# -#== Uninstall the resources previously installed by the platform, operator, setup, and setup-cluster targets. -# -#=== Cluster-admin privileges are required. -# -#* PARAMETERS: -#** NAMESPACE: Set the namespace to uninstall the resources from -#** UNINSTALL_ALL: Uninstall all Camel K resources including crds and cluster roles installed by setup-cluster [true|false] -#** DRY_RUN: Print the resources to be applied instead of applying them [true|false] -# -#--- -uninstall: kubectl -# Set the namespace in the all target kustomization yaml - @$(call set-kustomize-namespace, platform) - @$(call set-kustomize-namespace, operator) - @$(call set-kustomize-namespace, setup) -ifeq ($(UNINSTALL_ALL), true) - @$(call set-kustomize-namespace, setup-cluster) -endif -ifeq ($(DRY_RUN), false) - @$(KUSTOMIZE) build $(KOPTIONS) platform | kubectl delete --ignore-not-found=true -f - - @$(KUSTOMIZE) build $(KOPTIONS) operator | kubectl delete --ignore-not-found=true -f - - @$(KUSTOMIZE) build $(KOPTIONS) setup | kubectl delete --ignore-not-found=true -f - -ifeq ($(UNINSTALL_ALL), true) - @$(KUSTOMIZE) build $(KOPTIONS) setup-cluster | kubectl delete --ignore-not-found=true -f - -endif -else - @$(KUSTOMIZE) build $(KOPTIONS) platform | kubectl delete --dry-run=client -f - - @$(KUSTOMIZE) build $(KOPTIONS) operator | kubectl delete --dry-run=client -f - - @$(KUSTOMIZE) build $(KOPTIONS) setup | kubectl delete --dry-run=client -f - -ifeq ($(UNINSTALL_ALL), true) - @$(KUSTOMIZE) build $(KOPTIONS) setup-cluster | kubectl delete --dry-run=client -f - -endif -endif - -.DEFAULT_GOAL := help -.PHONY: help -help: ## Show this help screen. - @#./script/help.sh $(MAKEFILE_LIST) - @awk 'BEGIN { printf "\nUsage: make \033[31m<PARAM1=val1 PARAM2=val2>\033[0m \033[36m<target>\033[0m\n"; printf "\nAvailable targets are:\n" } /^#@/ { printf "\033[36m%-15s\033[0m", $$2; subdesc=0; next } /^#===/ { printf "%-14s \033[32m%s\033[0m\n", " ", substr($$0, 5); subdesc=1; next } /^#==/ { printf "\033[0m%s\033[0m\n\n", substr($$0, 4); next } /^#\*\*/ { printf "%-14s \033[31m%s\033[0m\n", " ", substr($$0, 4); next } /^#\*/ && (subdesc == 1) { printf "\n"; next } /^#\-\-\-/ { pri [...] diff --git a/install/base/config b/install/base/config new file mode 120000 index 000000000..82818de8a --- /dev/null +++ b/install/base/config @@ -0,0 +1 @@ +../../pkg/resources/config/ \ No newline at end of file diff --git a/install/setup/kustomization.yaml b/install/base/kustomization.yaml similarity index 96% rename from install/setup/kustomization.yaml rename to install/base/kustomization.yaml index 9598726ca..fd44ce4a6 100644 --- a/install/setup/kustomization.yaml +++ b/install/base/kustomization.yaml @@ -18,7 +18,9 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- ../config/rbac +- ./config/crd +- ./config/rbac +- ./config/manager transformers: - |- diff --git a/install/config b/install/config deleted file mode 120000 index 90c8cdbdc..000000000 --- a/install/config +++ /dev/null @@ -1 +0,0 @@ -../pkg/resources/config/ \ No newline at end of file diff --git a/install/operator/kustomization.yaml b/install/operator/kustomization.yaml deleted file mode 100644 index dc1a8db59..000000000 --- a/install/operator/kustomization.yaml +++ /dev/null @@ -1,50 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -# -# Add patches for modifying the deployment -# -# * patch-image-pull-policy-always.yaml -# modifies the image pull policy property to "Always" -# -# * patch-monitoring-port.yaml -# modifies the monitoring port -# -# * patch-health-port.yaml -# modifies the health port -# -# * patch-watch-namespace-global.yaml -# modifies the WATCH_NAMESPACE env var to wildcard for all namespaces -# -# * patch-toleration.yaml -# modifies the tolerations configuration of the deployment -# Edit the patch manually to add the required keys -# -# * patch-nodes-selector.yaml -# modifies the nodeSelector configuration of the deployment -# to bind the deployment to a particular labelled group of nodes -# Edit the patch manually to add the required configuration -# -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: -- ../config/manager -images: -- name: docker.io/apache/camel-k - newName: docker.io/apache/camel-k - newTag: 2.0.0-SNAPSHOT diff --git a/pkg/resources/config/manager/patch-image-pull-policy-always.yaml b/install/overlays/kubernetes/descoped/integration-platform.yaml similarity index 57% copy from pkg/resources/config/manager/patch-image-pull-policy-always.yaml copy to install/overlays/kubernetes/descoped/integration-platform.yaml index e03b90dc7..05136f15b 100644 --- a/pkg/resources/config/manager/patch-image-pull-policy-always.yaml +++ b/install/overlays/kubernetes/descoped/integration-platform.yaml @@ -15,13 +15,22 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: apps/v1 -kind: Deployment +apiVersion: camel.apache.org/v1 +kind: IntegrationPlatform metadata: - name: camel-k-operator + name: camel-k spec: - template: - spec: - containers: - - name: camel-k-operator - imagePullPolicy: Always + build: + # Registry is required unless your cluster has KEP-1755 enabled and you want to use the local registry. + # This is a feature recommended for development purpose only. + # more info at https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/generic/1755-communicating-a-local-registry + registry: + # For minikube local cluster you can enable one with + # + # $ minikube addons enable registry + # + # and get the value from + # $ kubectl -n kube-system get service registry -o jsonpath='{.spec.clusterIP}' + # + address: registry-host.io + insecure: true diff --git a/install/example/kustomization.yaml b/install/overlays/kubernetes/descoped/kustomization.yaml similarity index 84% rename from install/example/kustomization.yaml rename to install/overlays/kubernetes/descoped/kustomization.yaml index 6b9541ac7..1f0e96900 100644 --- a/install/example/kustomization.yaml +++ b/install/overlays/kubernetes/descoped/kustomization.yaml @@ -18,4 +18,13 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: -- ../config/samples/bases/camel_v1_integration.yaml +- ../../../base +- ../../../base/config/rbac/descoped +- integration-platform.yaml + +namespace: camel-k + +patches: +- path: patch-watch-namespace-global.yaml + target: + kind: Deployment diff --git a/pkg/resources/config/manager/patch-watch-namespace-global.yaml b/install/overlays/kubernetes/descoped/patch-watch-namespace-global.yaml similarity index 98% rename from pkg/resources/config/manager/patch-watch-namespace-global.yaml rename to install/overlays/kubernetes/descoped/patch-watch-namespace-global.yaml index 626fa2b7a..69c6ae502 100644 --- a/pkg/resources/config/manager/patch-watch-namespace-global.yaml +++ b/install/overlays/kubernetes/descoped/patch-watch-namespace-global.yaml @@ -19,4 +19,4 @@ path: /spec/template/spec/containers/0/env/0/valueFrom - op: add path: /spec/template/spec/containers/0/env/0/value - value: '""' + value: "" diff --git a/pkg/resources/config/manager/patch-image-pull-policy-always.yaml b/install/overlays/kubernetes/namespaced/integration-platform.yaml similarity index 57% copy from pkg/resources/config/manager/patch-image-pull-policy-always.yaml copy to install/overlays/kubernetes/namespaced/integration-platform.yaml index e03b90dc7..05136f15b 100644 --- a/pkg/resources/config/manager/patch-image-pull-policy-always.yaml +++ b/install/overlays/kubernetes/namespaced/integration-platform.yaml @@ -15,13 +15,22 @@ # limitations under the License. # --------------------------------------------------------------------------- -apiVersion: apps/v1 -kind: Deployment +apiVersion: camel.apache.org/v1 +kind: IntegrationPlatform metadata: - name: camel-k-operator + name: camel-k spec: - template: - spec: - containers: - - name: camel-k-operator - imagePullPolicy: Always + build: + # Registry is required unless your cluster has KEP-1755 enabled and you want to use the local registry. + # This is a feature recommended for development purpose only. + # more info at https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/generic/1755-communicating-a-local-registry + registry: + # For minikube local cluster you can enable one with + # + # $ minikube addons enable registry + # + # and get the value from + # $ kubectl -n kube-system get service registry -o jsonpath='{.spec.clusterIP}' + # + address: registry-host.io + insecure: true diff --git a/install/platform/kustomization.yaml b/install/overlays/kubernetes/namespaced/kustomization.yaml similarity index 72% rename from install/platform/kustomization.yaml rename to install/overlays/kubernetes/namespaced/kustomization.yaml index b425aeb51..54d318512 100644 --- a/install/platform/kustomization.yaml +++ b/install/overlays/kubernetes/namespaced/kustomization.yaml @@ -14,17 +14,22 @@ # See the License for the specific language governing permissions and # limitations under the License. # --------------------------------------------------------------------------- - apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -# -# * patch-integration-platform.yaml -# customizes the integration platform custom resource -# Edit the patch manually to add required configuration -# resources: -- ../config/samples/bases/camel_v1_integrationplatform.yaml +- ../../../base +- ../../../base/config/rbac/namespaced +- integration-platform.yaml + +namespace: default -patchesStrategicMerge: -- ../config/samples/patch-integration-platform.yaml +# You can provide any required adjustement here. Take the following as references: +# patchesStrategicMerge: +# - patch-toleration.yaml +# - patch-node-selector.yaml +# - patch-resource-requirements.yaml +# patches: +# - path: patch-log-level.yaml +# target: +# kind: Deployment \ No newline at end of file diff --git a/pkg/resources/config/manager/patch-image-pull-policy-always.yaml b/install/overlays/kubernetes/namespaced/patch-image-pull-policy-always.yaml similarity index 100% rename from pkg/resources/config/manager/patch-image-pull-policy-always.yaml rename to install/overlays/kubernetes/namespaced/patch-image-pull-policy-always.yaml diff --git a/pkg/resources/config/manager/patch-install-default-kamelets.yaml b/install/overlays/kubernetes/namespaced/patch-install-default-kamelets.yaml similarity index 100% rename from pkg/resources/config/manager/patch-install-default-kamelets.yaml rename to install/overlays/kubernetes/namespaced/patch-install-default-kamelets.yaml diff --git a/pkg/resources/config/manager/patch-log-level.yaml b/install/overlays/kubernetes/namespaced/patch-log-level.yaml similarity index 100% rename from pkg/resources/config/manager/patch-log-level.yaml rename to install/overlays/kubernetes/namespaced/patch-log-level.yaml diff --git a/pkg/resources/config/manager/patch-node-selector.yaml b/install/overlays/kubernetes/namespaced/patch-node-selector.yaml similarity index 100% rename from pkg/resources/config/manager/patch-node-selector.yaml rename to install/overlays/kubernetes/namespaced/patch-node-selector.yaml diff --git a/pkg/resources/config/manager/patch-ports.yaml b/install/overlays/kubernetes/namespaced/patch-ports.yaml similarity index 100% rename from pkg/resources/config/manager/patch-ports.yaml rename to install/overlays/kubernetes/namespaced/patch-ports.yaml diff --git a/pkg/resources/config/manager/patch-resource-requirements.yaml b/install/overlays/kubernetes/namespaced/patch-resource-requirements.yaml similarity index 100% rename from pkg/resources/config/manager/patch-resource-requirements.yaml rename to install/overlays/kubernetes/namespaced/patch-resource-requirements.yaml diff --git a/pkg/resources/config/manager/patch-toleration.yaml b/install/overlays/kubernetes/namespaced/patch-toleration.yaml similarity index 100% rename from pkg/resources/config/manager/patch-toleration.yaml rename to install/overlays/kubernetes/namespaced/patch-toleration.yaml diff --git a/install/script/Makefile b/install/script/Makefile deleted file mode 120000 index d89e34fe5..000000000 --- a/install/script/Makefile +++ /dev/null @@ -1 +0,0 @@ -../../script/Makefile \ No newline at end of file diff --git a/install/script/check_crd_api_support.sh b/install/script/check_crd_api_support.sh deleted file mode 120000 index 3d144aabd..000000000 --- a/install/script/check_crd_api_support.sh +++ /dev/null @@ -1 +0,0 @@ -../../script/check_crd_api_support.sh \ No newline at end of file diff --git a/install/script/check_platform.sh b/install/script/check_platform.sh deleted file mode 120000 index 329d24665..000000000 --- a/install/script/check_platform.sh +++ /dev/null @@ -1 +0,0 @@ -../../script/check_platform.sh \ No newline at end of file diff --git a/install/script/help.sh b/install/script/help.sh deleted file mode 100755 index c79347664..000000000 --- a/install/script/help.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - - -awk 'BEGIN { - printf "\nUsage: make \033[31m<PARAM1=val1 PARAM2=val2>\033[0m \033[36m<target>\033[0m\n" - printf "\nAvailable targets are:\n" - } - /^#@/ { printf "\033[36m%-15s\033[0m", $2; subdesc=0; next } - /^#===/ { printf "%-14s \033[32m%s\033[0m\n", " ", substr($0, 5); subdesc=1; next } - /^#==/ { printf "\033[0m%s\033[0m\n\n", substr($0, 4); next } - /^#\*\*/ { printf "%-14s \033[31m%s\033[0m\n", " ", substr($0, 4); next } - /^#\*/ && (subdesc == 1) { printf "\n"; next } - /^#\-\-\-/ { printf "\n"; next }' ${1} diff --git a/install/setup-cluster/kustomization.yaml b/install/setup-cluster/kustomization.yaml deleted file mode 100644 index cfce7838b..000000000 --- a/install/setup-cluster/kustomization.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- -apiVersion: kustomize.config.k8s.io/v1beta1 -kind: Kustomization - -resources: -- ../config/crd -- ../config/rbac/user-cluster-role.yaml diff --git a/pkg/resources/config/manager/kustomization.yaml b/pkg/resources/config/manager/kustomization.yaml index 38c67427f..895978ab4 100644 --- a/pkg/resources/config/manager/kustomization.yaml +++ b/pkg/resources/config/manager/kustomization.yaml @@ -21,12 +21,3 @@ kind: Kustomization resources: - operator-deployment.yaml - operator-service-account.yaml - -patchesStrategicMerge: -- patch-toleration.yaml -- patch-node-selector.yaml -- patch-resource-requirements.yaml -patches: -- path: patch-log-level.yaml - target: - kind: Deployment diff --git a/pkg/resources/config/manifests/kustomization.yaml b/pkg/resources/config/manifests/kustomization.yaml index 7c6754326..bd94db03f 100644 --- a/pkg/resources/config/manifests/kustomization.yaml +++ b/pkg/resources/config/manifests/kustomization.yaml @@ -33,7 +33,6 @@ resources: patchesStrategicMerge: - patch-delete-user-cluster-role.yaml -- patch-delete-pvc.yaml images: - name: docker.io/apache/camel-k newName: docker.io/apache/camel-k diff --git a/pkg/resources/config/manifests/patch-delete-pvc.yaml b/pkg/resources/config/manifests/patch-delete-pvc.yaml deleted file mode 100644 index ef4d9825a..000000000 --- a/pkg/resources/config/manifests/patch-delete-pvc.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# --------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# --------------------------------------------------------------------------- - -apiVersion: apps/v1 -kind: Deployment -metadata: - name: camel-k-operator -spec: - template: - spec: - containers: - - name: camel-k-operator - volumeMounts: null - volumes: null diff --git a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-events.yaml b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-events.yaml index 9dd5228d2..abc12cf9b 100644 --- a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-events.yaml +++ b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-events.yaml @@ -24,7 +24,6 @@ metadata: subjects: - kind: ServiceAccount name: camel-k-operator - namespace: placeholder roleRef: kind: ClusterRole name: camel-k-operator-events diff --git a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-keda.yaml b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-keda.yaml index 92e154e87..5ee70de10 100644 --- a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-keda.yaml +++ b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-keda.yaml @@ -24,7 +24,6 @@ metadata: subjects: - kind: ServiceAccount name: camel-k-operator - namespace: placeholder roleRef: kind: ClusterRole name: camel-k-operator-keda diff --git a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-knative.yaml b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-knative.yaml index 739b0dd06..717ea682d 100644 --- a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-knative.yaml +++ b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-knative.yaml @@ -24,7 +24,6 @@ metadata: subjects: - kind: ServiceAccount name: camel-k-operator - namespace: placeholder roleRef: kind: ClusterRole name: camel-k-operator-knative diff --git a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-leases.yaml b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-leases.yaml index 35d667fd1..84099b3d1 100644 --- a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-leases.yaml +++ b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-leases.yaml @@ -24,7 +24,6 @@ metadata: subjects: - kind: ServiceAccount name: camel-k-operator - namespace: placeholder roleRef: kind: ClusterRole name: camel-k-operator-leases diff --git a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-podmonitors.yaml b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-podmonitors.yaml index bef231b07..a8cee53ea 100644 --- a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-podmonitors.yaml +++ b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-podmonitors.yaml @@ -24,7 +24,6 @@ metadata: subjects: - kind: ServiceAccount name: camel-k-operator - namespace: placeholder roleRef: kind: ClusterRole name: camel-k-operator-podmonitors diff --git a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-strimzi.yaml b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-strimzi.yaml index fefd14352..876c161ec 100644 --- a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-strimzi.yaml +++ b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding-strimzi.yaml @@ -24,7 +24,6 @@ metadata: subjects: - kind: ServiceAccount name: camel-k-operator - namespace: placeholder roleRef: kind: ClusterRole name: camel-k-operator-strimzi diff --git a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding.yaml b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding.yaml index 83f227d62..0d6f587a1 100644 --- a/pkg/resources/config/rbac/descoped/operator-cluster-role-binding.yaml +++ b/pkg/resources/config/rbac/descoped/operator-cluster-role-binding.yaml @@ -24,7 +24,6 @@ metadata: subjects: - kind: ServiceAccount name: camel-k-operator - namespace: placeholder roleRef: kind: ClusterRole name: camel-k-operator
