Kubernetes如何限制不同团队只能访问各自namespace实现

 更新时间:2023年04月13日 10:08:53   作者:烂笔头  
这篇文章主要为大家介绍了Kubernetes如何限制不同团队只能访问各自namespace实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

场景说明

假设有这么一个场景:一个 Kubernetes 集群,有多个 namespace,然后每个 namespace 由一个工程团队去使用,不同的工程团队之间无法访问和操作其他团队的 namespace 下的资源,实现资源和权限隔离的目的。

1 | 实现思路

可以利用 Kubernetes 的 RBAC 来实现:

  • 在各自的 namespace 下创建一个 ServiceAccount
  • 在这个 namespace 下创建一个 Role,定义这个 Role 的权限规则(rules)
  • 将这个 Role 和 ServiceAccount 进行绑定
  • 最后生成一个kubeconfig,给到各个团队通过 kubectl 命令行调用

2 | 实现的脚本

需要的配置文件已经写好,如下:

  • create_kubeconfig.sh
#!/bin/bash
# Created by lanbitou 03.29.2023
ns=$1
name=$ns
user=$name
kubeconfig=$ns"-config"
# kubernetes master api server 地址, 需要替换掉
apiserver="https://123.456.789.ABC:6443"
cluster="cluster_name_"$ns
context=$cluster
name=$name ns=$ns envsubst < create-role-rolebinding.yaml | kubectl apply -f -
if [ $? != 0 ]
then
    echo "error, exit=1"
    exit 1
fi
token=$(kubectl -n $ns get secret $(kubectl -n $ns get secret | grep $user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)
echo $token
kubectl config set-credentials $user --token=$token --kubeconfig=$kubeconfig
kubectl config set-cluster $cluster --insecure-skip-tls-verify=true --server=$apiserver  --kubeconfig=$kubeconfig
kubectl config set-context $context --cluster=$cluster --user=$user --kubeconfig=$kubeconfig
kubectl config use-context $context --kubeconfig=$kubeconfig
echo $kubeconfig' is created in the current path.'

NOTE

这个脚本要在 Kubernetes admin 权限的 kubeconfig 下运行。

  • create-role-rolebinding.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: $name
  namespace: $ns
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: $ns
  name: $name
rules:
- apiGroups: ["", "extensions", "apps"]
  #resources: ["pods", "services", "configmaps", "secrets","deployments","replicasets","statefulsets","daemonsets","pods/log","pods/exec","namespaces"]
  resources: ["*"]
  verbs: ["*"]
- apiGroups: ["batch"]
  resources: ["jobs","cronjobs"]
  verbs: ["*"]
- apiGroups: ["apiextensions.k8s.io"]
  resources: ["customresourcedefinitions"]
  verbs: ["*"]
# 如果发现生成的kubeconfig权限不足,可以根据提示,在这里添加对应的rule
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: $name
  namespace: $ns
subjects:
- kind: ServiceAccount
  name: $name
  namespace: $ns
roleRef:
  kind: Role
  name: $name
  apiGroup: rbac.authorization.k8s.io

3 | 使用方式

假设,有 zhangsan,lisi,wangwu 三个团队,namespace 也是 zhangsan,lisi,wangwu。

那么执行脚本如下:

$ bash create_kubeconfig.sh zhangsan
$ bash create_kubeconfig.sh lisi
$ bash create_kubeconfig.sh wangwu

即可在脚本所在目录,生成对应的kubeconfig:zhangsan-config, lisi-config 和 wangwu-config。 那么,不同团队对k8s集群的访问就可以这样进行:

$ kubectl -n zhangsan --kube-config=zhangsan-config get all

以上就是Kubernetes如何限制不同团队只能访问各自namespace实现的详细内容,更多关于Kubernetes限制namespace的资料请关注脚本之家其它相关文章!

相关文章

  • 详解k8s NetworkPolicy 网络策略是怎么样的

    详解k8s NetworkPolicy 网络策略是怎么样的

    这篇文章主要为大家介绍了k8s NetworkPolicy 网络策略是怎么样的深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • K8S删除pod的4种方法小结

    K8S删除pod的4种方法小结

    在Kubernetes集群环境中工作时,有时会遇到需要从一个工作节点中删除pod的情况,下面这篇文章主要给大家介绍了关于K8S删除pod的4种方法,需要的朋友可以参考下
    2024-01-01
  • CentOS 8.2 k8s 基础环境配置

    CentOS 8.2 k8s 基础环境配置

    这篇文章主要介绍了CentOS 8.2 k8s 基础环境配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • K8S-ConfigMap实现应用和配置分离详解

    K8S-ConfigMap实现应用和配置分离详解

    这篇文章主要为大家介绍了K8S-ConfigMap实现应用和配置分离详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • KubeSphere分级管理实践及解析

    KubeSphere分级管理实践及解析

    这篇文章主要为大家介绍了KubeSphere分级管理实践及解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Rainbond对微服务进行请求速率限制详解

    Rainbond对微服务进行请求速率限制详解

    这篇文章主要为大家介绍了Rainbond对微服务进行请求速率限制,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Rainbond上部署API Gateway Kong及环境配置教程

    Rainbond上部署API Gateway Kong及环境配置教程

    这篇文章主要为大家介绍了Rainbond上部署API Gateway Kong及环境配置教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • k8s部署Ingress并创建规则的详细介绍

    k8s部署Ingress并创建规则的详细介绍

    这篇文章主要介绍了k8s部署Ingress并创建规则,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 一文详解基于k8s部署Session模式Flink集群

    一文详解基于k8s部署Session模式Flink集群

    这篇文章主要为大家介绍了基于k8s部署Session模式Flink集群详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Kubernetes实现CI与CD配置教程

    Kubernetes实现CI与CD配置教程

    这篇文章主要为大家介绍了基于Kubernetes实现CI与CD配置教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05

最新评论