创建命名空间后自动创建 Kubernetes 资源

2024-04-10

我有2个团队:

  • 开发人员:他们每次部署应用程序的分支/标签时都会创建一个新的 Kubernetes 命名空间
  • ops:它们通过(集群)角色和(集群)角色绑定管理对集群的访问控制

问题是,在“ops”创建 RBAC 资源之前,“devs”无法 kubectl 其命名空间。并且“开发人员”无法自己创建 RBAC 资源,因为他们没有要放入角色绑定资源中的主题列表(不能选择共享列表)。

我已阅读有关的官方文档准入网络钩子 https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/但我的理解是,它们只作用于触发 webhook 的资源。

每当创建新的命名空间时,Kubernetes 中是否有一种本机和/或简单的方法来应用资源?


我通过编写自定义控制器提出了一个解决方案。

部署以下自定义资源后,控制器注入role and rolebinding在命名空间匹配中dev-.* and fix-.*:

kind: NamespaceResourcesInjector
apiVersion: blakelead.com/v1alpha1
metadata:
  name: nri-test
spec:
  namespaces:
  - dev-.*
  - fix-.*
  resources:
  - |
    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: dev-role
    rules:
      - apiGroups: [""]
        resources: ["pods","pods/portforward", "services", "deployments", "ingresses"]
        verbs: ["list", "get"]
      - apiGroups: [""]
        resources: ["pods/portforward"]
        verbs: ["create"]
      - apiGroups: [""]
        resources: ["namespaces"]
        verbs: ["list", "get"]
  - |
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: dev-rolebinding
    subjects:
    - kind: User
      name: dev
    roleRef:
      kind: Role
      name: dev-role
      apiGroup: rbac.authorization.k8s.io

该控制器仍处于开发的早期阶段,但我已在越来越多的集群中成功使用它。

这是给有兴趣的人的:https://github.com/blakelead/nsinjector https://github.com/blakelead/nsinjector

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建命名空间后自动创建 Kubernetes 资源 的相关文章

  • Windows 持久卷上的 Kubernetes

    Windows minikube 是否支持带有主机路径的持久卷 如果是这样 语法是什么 I tried apiVersion v1 kind PersistentVolume metadata name kbmongo002 labels
  • 为什么我无法杀死 k8s pod 中的 python 进程?

    我试图杀死一个 python 进程 ps aux grep python root 1 12 6 2 1 2234740 1332316 Ssl 20 04 19 36 usr bin python3 batch run py root 4
  • 在 Kubernetes 中连接前端和后端

    我的前端设置为 this http post
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • PHP 类中的命名空间和全局变量问题

    我陷入了这种困惑 我不明白为什么我的 HelperClass 下的全局 error 返回空 我可以验证 class gt error 确实之前已填充了数据 在这种情况下 命名空间是否存在某种我不知道的问题 请给我一些指点 以下是一些相关的代
  • 如何从 minikube 中删除现有下载的 docker 镜像

    我正在将多个服务部署到本地集群 minikube using 开发空间工具 https devspace sh 一旦有人对其中一项服务进行更改并将图像推送到我们的私人存储库 我就需要这些更改在我的本地可用 我现在所做的就是完全删除minik
  • 如何将 Python 标识符转换为数字?

    参考 有没有更快的方法将数字转换为名称 https stackoverflow com questions 11052808 在上面提到的问题中 找到了将数字转换为名称的解决方案 这个问题问的恰恰相反 如何将名称转换回数字 到目前为止 这就
  • 如何在 minikube VM 中挂载 Host 文件夹

    我有一个用例 我需要 kubernetes 下的 Docker 容器来访问主机路径 我使用的是 minikube 容器能够访问 minikube VirtualBox VM 中的文件夹 但我不知道如何让它访问主机本身上的文件夹 我在主机上执
  • kubectl 部署失败

    我正在为 GKE 上的 Spring boot 应用程序设置 CI CD 管道 CI 构建步骤工作正常 但交付构建步骤由于 错误 没有对象传递到应用 错误而失败 我可以在云构建中看到以下日志 Starting Step 0 Deploy S
  • 未命名命名空间与全局声明

    使用未命名命名空间和全局声明有什么区别 使用这两个有什么特定的上下文吗 我们可以访问外部源文件中未命名的命名空间组件吗 未命名命名空间的要点是在翻译单元 源文件 内提供唯一的命名空间 而不需要显式前缀 这可以让您保证您的全局名称不会与其他翻
  • 启动 pods-kubernetes 时出错。 Pod 仍处于 ContainerCreating 状态

    我已经在运行 ubuntu 的桌面上安装了带有 minikube 的 kubernetes 试用版 然而 启动 Pod 似乎存在一些问题 Kubectl get pods all namespaces 显示所有处于 ContainerCre
  • Azure Kubernetes 服务 (AKS) 使用应用程序网关入口控制器 (AGIC):如何在 ASP.Net Core 6.0 中实现 HSTS 标头?

    一个行动项目来自安全扫描是为了实施HSTSASP Net Core 6 0 WebAPI 中的标头 使用应用程序网关入口控制器在 AKS 上部署 WebAPI 应用程序 SSL 终止发生在应用程序网关处 应用程序网关入口控制器和 POD 使
  • 如何在 Docker Desktop 上创建新的 Kubernetes 集群?

    我似乎不知道如何在我的计算机上运行的 Docker Desktop 实例上创建全新的 Kubernetes 集群 无论是 Mac 还是 PC 都没有关系 我知道如何设置当前集群上下文 但我只有一个集群 因此无法设置其他任何内容 What s
  • 如何更改 MongoDB 用户权限?

    例如 如果我有这个用户 gt db system users find user testAdmin pwd some hash roles clusterAdmin otherDBRoles TestDB readWrite 我想给那个用
  • Kubernetes,无法访问其他节点服务

    我正在 3 个带有 CentOS 7 的 VirtualBox 虚拟机 1 个 master 和 2 个 minions 中使用 Kubernetes 不幸的是安装手册说的是这样的every service will be accessib
  • 如何在 GKE 上为 Kubernetes Ingress 强制使用 SSL

    有没有办法强制对入口负载均衡器上的传入连接进行 SSL 升级 或者 如果这是不可能的 我可以禁用端口 80吗 我还没有找到一个好的文档页面来概述 YAML 文件中的此类选项 预先非常感谢 https github com kubernete
  • Google Cloud Kubernetes 访问私有 Docker Hub 托管映像

    是否可以将私有镜像从 Docker Hub 拉取到 Google Cloud Kubernetes 集群 是否建议这样做 或者我是否需要将我的私有映像也推送到 Google Cloud 我阅读了文档 但没有发现任何内容可以清楚地解释这一点
  • Kubernetes 的调度器是如何工作的?

    Kubernetes 的调度器是如何工作的 我的意思是说Kubernetes的调度器看起来很简单 我最初的想法是这个调度器只是一个简单的准入控制系统 而不是真正的调度器 是这样正确的吗 我找到了一个简短的描述 但信息并不丰富 kuberne
  • Ingress 未在 GKE 和 GCE 上获取地址

    创建入口时 不会生成地址 并且从 GKE 仪表板查看时 它始终位于Creating ingress地位 描述入口没有显示任何事件 我在 GKE 仪表板上看不到任何线索 有没有人有类似的问题或关于如何调试的任何建议 我的部署 yaml api
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di

随机推荐