91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes怎么限制不同團隊只能訪問各自namespace

發布時間:2023-04-15 17:45:56 來源:億速云 閱讀:133 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Kubernetes怎么限制不同團隊只能訪問各自namespace”,內容詳細,步驟清晰,細節處理妥當,希望這篇“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”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

论坛| 文水县| 武陟县| 花莲市| 修水县| 砚山县| 舒兰市| 涞水县| 德阳市| 天峻县| 包头市| 嘉定区| 英德市| 巴林左旗| 辽阳县| 仙居县| 饶阳县| 青海省| 孝义市| 新田县| 康平县| 万源市| 长岛县| 庆安县| 临安市| 敖汉旗| 金寨县| 尤溪县| 桑日县| 清远市| 灵石县| 盐津县| 民权县| 玛多县| 文安县| 烟台市| 汉寿县| 武山县| 旺苍县| 德兴市| 尼玛县|