在 GKE 上为 NGINX Ingress Controller 自动创建 ClusterRoleBinding

Automatically Create ClusterRoleBinding on GKE for NGINX Ingress Controller

installation guide 在 Google Kubernetes Engine 上设置 NGINX Ingress,你必须 运行 下面的命令来生成一个 clusterrolebinding:

kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole cluster-admin \
  --user $(gcloud config get-value account)

因为我想自动执行整个设置过程,所以我不想在每次创建新集群时都运行执行此命令。

所以我想知道是否有办法创建一个配置 .yaml 文件,自动将上述 clusterrolebinding 应用到我在 GKE 上的集群?

您可以看到 kubectl 命令创建的结果 yaml,如下所示:

kubectl create clusterrolebinding cluster-admin-binding \
  --clusterrole cluster-admin \
  --user $(gcloud config get-value account)
  --dry-run
  -o yaml

这会给你这样的输出:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  creationTimestamp: null
  name: cluster-admin-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: your_user

然后您可以创建一个包含其内容的 yaml 文件 (e.j.clusterrolebinding.yaml) 并像使用任何其他配置文件一样部署到集群:

kubectl create -f clusterrolebinding.yaml

我认为这不会比 kubectl create clusterrolebinding 命令本身更容易实现自动化,但是您仍然需要将此新绑定告知集群。