You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2022/01/31 13:23:16 UTC
[camel-k] 08/09: chore(cli): Install Knative addressable-resolver ClusterRole and ClusterRoleBinding
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 4bec325b596175d75444aadfa78fc20a4cb1a4c0
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Mon Jan 31 10:53:36 2022 +0100
chore(cli): Install Knative addressable-resolver ClusterRole and ClusterRoleBinding
---
pkg/install/cluster.go | 18 ++++++++++++++++++
pkg/install/operator.go | 46 +++++++++++++++++++++++++++-------------------
2 files changed, 45 insertions(+), 19 deletions(-)
diff --git a/pkg/install/cluster.go b/pkg/install/cluster.go
index 7902986..966f5ea 100644
--- a/pkg/install/cluster.go
+++ b/pkg/install/cluster.go
@@ -35,6 +35,7 @@ import (
"github.com/apache/camel-k/pkg/client"
"github.com/apache/camel-k/pkg/resources"
+ "github.com/apache/camel-k/pkg/util/knative"
"github.com/apache/camel-k/pkg/util/kubernetes"
)
@@ -193,6 +194,23 @@ func SetupClusterWideResourcesOrCollect(ctx context.Context, clientProvider clie
}
}
+ isKnative, err := knative.IsInstalled(ctx, c)
+ if err != nil {
+ return err
+ }
+ if isKnative {
+ ok, err := isClusterRoleInstalled(ctx, c, "camel-k-operator-bind-addressable-resolver")
+ if err != nil {
+ return err
+ }
+ if !ok || collection != nil {
+ err := installResource(ctx, c, collection, "/rbac/operator-cluster-role-addressable-resolver.yaml")
+ if err != nil {
+ return err
+ }
+ }
+ }
+
return nil
}
diff --git a/pkg/install/operator.go b/pkg/install/operator.go
index 47c5a0c..18fa8f0 100644
--- a/pkg/install/operator.go
+++ b/pkg/install/operator.go
@@ -247,44 +247,51 @@ func OperatorOrCollect(ctx context.Context, c client.Client, cfg OperatorConfigu
if err := installKnative(ctx, c, cfg.Namespace, customizer, collection, force); err != nil {
return err
}
+ if err := installClusterRoleBinding(ctx, c, collection, cfg.Namespace, "camel-k-operator-bind-addressable-resolver", "/rbac/operator-cluster-role-binding-addressable-resolver.yaml"); err != nil {
+ if k8serrors.IsForbidden(err) {
+ fmt.Println("Warning: the operator will not be able to bind Knative addressable-resolver ClusterRole. Try installing the operator as cluster-admin.")
+ } else {
+ return err
+ }
+ }
}
- if errevt := installEvents(ctx, c, cfg.Namespace, customizer, collection, force); errevt != nil {
- if k8serrors.IsAlreadyExists(errevt) {
- return errevt
+ if err = installEvents(ctx, c, cfg.Namespace, customizer, collection, force); err != nil {
+ if k8serrors.IsAlreadyExists(err) {
+ return err
}
fmt.Println("Warning: the operator will not be able to publish Kubernetes events. Try installing as cluster-admin to allow it to generate events.")
}
- if errmtr := installKedaBindings(ctx, c, cfg.Namespace, customizer, collection, force); errmtr != nil {
- if k8serrors.IsAlreadyExists(errmtr) {
- return errmtr
+ if err = installKedaBindings(ctx, c, cfg.Namespace, customizer, collection, force); err != nil {
+ if k8serrors.IsAlreadyExists(err) {
+ return err
}
fmt.Println("Warning: the operator will not be able to create KEDA resources. Try installing as cluster-admin.")
}
- if errmtr := installPodMonitors(ctx, c, cfg.Namespace, customizer, collection, force); errmtr != nil {
- if k8serrors.IsAlreadyExists(errmtr) {
- return errmtr
+ if err = installPodMonitors(ctx, c, cfg.Namespace, customizer, collection, force); err != nil {
+ if k8serrors.IsAlreadyExists(err) {
+ return err
}
fmt.Println("Warning: the operator will not be able to create PodMonitor resources. Try installing as cluster-admin.")
}
- if errmtr := installStrimziBindings(ctx, c, cfg.Namespace, customizer, collection, force); errmtr != nil {
- if k8serrors.IsAlreadyExists(errmtr) {
- return errmtr
+ if err := installStrimziBindings(ctx, c, cfg.Namespace, customizer, collection, force); err != nil {
+ if k8serrors.IsAlreadyExists(err) {
+ return err
}
fmt.Println("Warning: the operator will not be able to lookup strimzi kafka resources. Try installing as cluster-admin to allow the lookup of strimzi kafka resources.")
}
- if errmtr := installLeaseBindings(ctx, c, cfg.Namespace, customizer, collection, force); errmtr != nil {
- if k8serrors.IsAlreadyExists(errmtr) {
- return errmtr
+ if err = installLeaseBindings(ctx, c, cfg.Namespace, customizer, collection, force); err != nil {
+ if k8serrors.IsAlreadyExists(err) {
+ return err
}
fmt.Println("Warning: the operator will not be able to create Leases. Try installing as cluster-admin to allow management of Lease resources.")
}
- if errmtr := installClusterRoleBinding(ctx, c, collection, cfg.Namespace, "camel-k-operator-custom-resource-definitions", "/rbac/operator-cluster-role-binding-custom-resource-definitions.yaml"); errmtr != nil {
+ if err = installClusterRoleBinding(ctx, c, collection, cfg.Namespace, "camel-k-operator-custom-resource-definitions", "/rbac/operator-cluster-role-binding-custom-resource-definitions.yaml"); err != nil {
fmt.Println("Warning: the operator will not be able to get CustomResourceDefinitions resources and the service-binding trait will fail if used. Try installing the operator as cluster-admin.")
}
@@ -309,7 +316,6 @@ func installClusterRoleBinding(ctx context.Context, c client.Client, collection
existing, err := c.RbacV1().ClusterRoleBindings().Get(ctx, name, metav1.GetOptions{})
switch {
case k8serrors.IsNotFound(err):
-
content, err := resources.ResourceAsString(path)
if err != nil {
return err
@@ -324,8 +330,10 @@ func installClusterRoleBinding(ctx context.Context, c client.Client, collection
if err != nil {
return err
}
- // nolint: forcetypeassert
- target = obj.(*rbacv1.ClusterRoleBinding)
+ var ok bool
+ if target, ok = obj.(*rbacv1.ClusterRoleBinding); !ok {
+ return fmt.Errorf("file %v does not contain a ClusterRoleBinding resource", path)
+ }
case err != nil:
return err
default: