0

运营商是https://operatorhub.io/operator/keycloak-operator版本 11.0.0。

集群是 Kubernetes 版本 1.18.12。

我能够按照 OperatorHub.io 中的步骤安装 Operator Lifecycle Manager 和 Keycloak“OperatorGroup”和“Subscription”。它花费的时间比我预期的要长得多(可能是 20 分钟?),但最终创建了相应的“ClusterServiceVersion”。

但是,现在当我尝试通过创建以下资源来使用它时,它似乎根本没有做任何事情:

apiVersion: keycloak.org/v1alpha1
kind: Keycloak
metadata:
  name: example-keycloak
  namespace: keycloak
  labels:
    app: sso
spec:
  instances: 1
  externalAccess:
    enabled: true
  extensions:
    - https://github.com/aerogear/keycloak-metrics-spi/releases/download/1.0.4/keycloak-metrics-spi-1.0.4.jar

它接受新资源,所以我知道 CRD 已经到位。文档声明它应该创建一个有状态的集合、一个入口等等,但它似乎并没有创建任何东西。

我检查了集群日志,这是跳出给我的错误:

olm-operator ERROR controllers.operator Could not update Operator status {"request": "/keycloak-operator.my-keycloak-operator", "error": "Operation cannot be fulfilled on operators.operators.coreos.com \"keycloak-operator.my-keycloak-operator\": the object has been modified; please apply your changes to the latest version and try again"}

我对普通的 kubernetes 有相当多的经验,但我对“操作员”是全新的,所以我真的不知道下一步该往哪里看可能会出现什么问题。

任何提示/建议/解释?

更新:我在命名空间中创建 keycloak 资源,而不是我将操作员安装到的命名空间。因为它允许我在这个命名空间中创建自定义资源(种类:Keycloak),所以我认为这是支持的。但是,当我将 keycloak 资源创建到安装操作符的同一命名空间(my-keycloak-operator)时,它实际上试图做一些事情。请注意,它仍然无法启动 pod,但至少它正在尝试做某事。将这个问题留待一段时间,看看“无法更新操作员状态”是否是我应该关注的问题......

4

1 回答 1

1

看起来操作员或/和它想要启动的组件无法对kube-apiserver进行写入(POST/PUT) 。

根据您的描述,当您第一次在不同的命名空间上安装操作员时,它似乎根本没有权限显示任何内容。第二次将它安装到正确的命名空间时,看起来操作员能够与 kube-apiserver 通信,但它启动的组件(Keycloak 等)却不能。

我会检查 kube-apiserver(控制平面)上的日志,看看您是否有一些未经授权的请求,还要检查操作员试图启动的组件(pod、部署等)的日志文件。

如果您有未经授权的请求,您可能必须手动更新RBAC 规则。最后,我将与 IBM 云核实,看看它的 K8s 控制平面可能拥有哪些特定权限会阻止应用程序与其通信(kube-apiserver)。

✌️

于 2020-12-15T22:42:43.543 回答