<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【多用戶】k8s多用戶配置 kubeconfig

      K8S 集群中的認(rèn)證、授權(quán)與 kubeconfig

      一、kubeconfig 介紹
      -[appuser@k8s-master-1 ~]$ cat /etc/kubernetes/kubeconfig
      apiVersion: v1
      kind: Config
      clusters:
      - name: shjq-dev01-chenqiang-cluster
      cluster:
      server: https://10.130.14.155:443
      certificate-authority: /etc/kubernetes/ssl/ca.crt
      users:
      - name: shjq-dev01-chenqiang-user
      user:
      client-certificate: /etc/kubernetes/ssl/cs_client.crt
      client-key: /etc/kubernetes/ssl/cs_client.key
      contexts:
      - context:
      cluster: shjq-dev01-chenqiang-cluster
      user: shjq-dev01-chenqiang-user
      name: shjq-dev01-chenqiang
      ------
      # 上面為 指定目錄格式
      # 我們要配置成單個(gè) kubeconfig 配置文件,我們需要做如下操作:
      - 修改 certificate-authority 成 certificate-authority-data
      - 修改 client-certificate 成 client-certificate-data
      - 修改 client-key 成 client-key-data
      - 對(duì) /etc/kubernetes/ssl/ca.crt, cs_client.crt, cs_client.key 進(jìn)行 base64 編碼,分別執(zhí)行 /etc/kubernetes/ssl/ca.crt|base64 等。
      -------
      apiVersion: v1
      clusters:
      - cluster:
      certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZuVENDQTRXZ0F3SUJBZ0lKQVBuVlJIdW9zZXpqTUEwR0NTcUdTSWIzRFFFQkN3VUFNR1V4Q3pBSkJnTlYKQkFZVEFrTk9NUkV3RHdZRFZRUUlEQWhUYUdGdVoyaGhhVEVQTUEwR0ExVUVCd3dHVUhWa2IyNW5NUll3RkFZRApWUVFLREExellXbGpiVzkwYjNJdVkyOXRNUXd3Q2dZRFZRUUxEQU5yT0hNeEREQUtCZ05WQkFNTUEyczRjekFlCkZ3MHhPREF6TURnd05qSTJORE5hRncweE9UQXpNRGd3TmpJMk5ETmFNR1V4Q3pBSkJnTlZCQVlUQWtOT01SRXcKRHdZRFZRUUlEQWhUYUdGdVoyaGhhVEVQTUEwR0ExVUVCd3dHVUhWa2IyNW5NUll3RkFZRFZRUUtEQTF6WVdsagpiVzkwYbnpCSDQvOG9Od0NDaHkrcUdYVE9hNTY2UzhjNW5vQ2c2TlovTGxZVjFLUHlJdjFMblRmd3VselUKenpSTGUwVkRjZXpwUmY0RnJ4TVJLSzg # 太長(zhǎng)了 有刪減
      server: https://10.130.14.155:443
      name: shjq-dev01-chenqiang-cluster
      contexts:
      - context:
      cluster: shjq-dev01-chenqiang-cluster
      user: shjq-dev01-chenqiang-user
      name: shjq-dev01-chenqiang
      current-context: shjq-dev01-chenqiang
      kind: Config
      preferences: {}
      users:
      - name: shjq-dev01-chenqiang-user
      user:
      client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVBakNDQWVvQ0NRQ0NhYWdFUnFmNExEQU5CZ2txaGtpRzl3MEJBUXNGQURCbE1Rc3dDUVlEVlFRR0V3SkQ # 太長(zhǎng)了 有刪減
      client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBeUI4djN5YjlqRmxRU0x3L1FYaVUycFdGck5jNjB0bmp1ZVh5N3gvNTZOcXNpOUhwCjdlSzZaSG5LL1JabDcxZUltS0tPNjhrVm9aSUZsRmx2UTJMWmtJMkVrYXpndHNrdnpvQ3l4aEhQSndIV01sRloKQ1dndDFXVHdkTm93emI1ZEtpSnhGbHFvWlJtZ3BBMGJ # 太長(zhǎng)了 有刪減

      以實(shí)際環(huán)境的 kubeconfig 為例進(jìn)行分析,主要包含以下幾部分信息
      三大部分
      clusters 用于集群認(rèn)證 Server 字段: 存儲(chǔ)集群的地址
      證書路徑(certificate-authority: /etc/kubernetes/ssl/ca.crt)或
      證書內(nèi)容(certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZuVENDQTRXZ)
      可以有多個(gè) cluster 集群
      users 用于用戶認(rèn)證 存儲(chǔ)用戶的證書、密鑰(兩種形式,路徑或內(nèi)容)
      證書形式
      client-certificate: /etc/kubernetes/ssl/cs_client.crt
      client-key: /etc/kubernetes/ssl/cs_client.key
      密鑰token形式:
      client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0
      client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktL
      可以有多個(gè) user 用戶
      context 上下文,用戶和集群的組合 采用某個(gè) context :表示采用某個(gè)用戶去管控某個(gè)集群
      默認(rèn)情況是,采用 admin 用戶管控集群,具有所有資源的創(chuàng)建權(quán)限
      二、明確一個(gè)問題
      由于 RBAC 機(jī)制,ServiceAccount 可以(通過Rolebinding或 ClusterRolebinding)具有(Role 或 ClusterRole 定義的)某些權(quán)限
      那么在默認(rèn) context 下(就是 admin user)下,創(chuàng)建一個(gè)具有 pod create 權(quán)限的 ServiceAccount,接下來使用該 ServiceAccount 去創(chuàng)建 Pod 等,并不能說是該 ServiceAccount 在管控集群,實(shí)際上仍是 admin user 在管控集群,所以此時(shí)不能成為 k8s 多用戶管控集群
      因?yàn)樵谠?k8s 環(huán)境中,仍可以創(chuàng)建 deployment 、Service、daemonset 等資源
      若是該 ServiceAccount 管控集群,在k8s環(huán)境中,應(yīng)該只能創(chuàng)建 pod
      所以可以這么理解

      cluster 多集群
      user 多用戶,user 的權(quán)限(可綁定 ServiceAccount,進(jìn)行權(quán)限限制,下文將講如何用 ServiceAccount 創(chuàng)建 User)
      context 表示使用用戶管控集群(該集群的最大權(quán)限就是用戶的權(quán)限)


      SA 通過 RoleBinding 綁定 Role ,具有 Role 權(quán)限,只能操作 Role 所在 namespace

      可以實(shí)現(xiàn) SA 具有操作別的 namespace 中資源的權(quán)限(例如 SA 在 ns1, Role 在 ns2,SA 可操作 ns2 資源)

      SA 通過 RoleBinding 綁定 ClusterRole, 具有 ClusterRole 權(quán)限,只能操作 SA 所在的 namespace

      可以實(shí)現(xiàn) SA 在所在 namespace 具有高權(quán)限,但不能跨出當(dāng)前 namespace
      SA 通過 ClusterRoleBinding 綁定 ClusterRole,具有 ClusterRole 權(quán)限,可操作所有 namespace 和集群資源

      沒有 ClusterRoleBinding 與 Role de 組合

      三、使用 ServiceAccount 創(chuàng)建 kubeconfig 中的 User
      3.1 創(chuàng)建 ServiceAccount 獲取 Token
      首先創(chuàng)建 role 或 clusterrole 進(jìn)行權(quán)限定義
      之后創(chuàng)建 ServiceAccount 用于與 role 或 clusterrole 綁定
      最后取出 ServiceAccount 對(duì)應(yīng)的 Token (創(chuàng)建 serviceaccount 時(shí)會(huì)自動(dòng)創(chuàng)建個(gè)同名的 secret 并掛載上,其用于訪問集群)
      # 簡(jiǎn)單舉例
      # 創(chuàng)建命名空間
      kubectl create ns ns-sa
      # 創(chuàng)建 serviceaccount
      kubectl create sa sa-test -n ns-sa
      # 創(chuàng)建 role 賦予某些權(quán)限 也可以通過 yaml 編寫
      kubectl -n ns-sa create role role-1 --verb=get,list --resources=Pod,Deployment -n test-sa
      # 綁定 賦予 sa 權(quán)限
      kubectl -n ns-sa create rolebinding sa-rolebinding-1 --role=ns-sa:role-1 --serviceaccount=sa-test

      # 獲取 sa 的 token
      # 首先查看對(duì)應(yīng)的 secret
      kubectl -n ns-sa get secret | grep sa-test # 獲知 secret 的名稱 如 sa-test-token-gz2jr
      # 然后獲取 token
      kubectl -n ns-sa describe secret sa-test-token-gz2jr
      # 或
      kubectl -n kube-system get secret admin-token-nwphb -o jsonpath={.data.token}|base64 -d # 這種方法 后面可能多個(gè) % 刪除就好

      3.2 創(chuàng)建 k8s user 管控
      實(shí)際上就是創(chuàng)建個(gè) user,使用的是上面 ServiceAccount 的 Token

      第一步:設(shè)置一個(gè)賬號(hào)鑒權(quán)信息(創(chuàng)建一個(gè)k8s user)

      上面的<TokenOfSecret>的內(nèi)容就是我們上面通過kubectl describe secret獲取到的 Token 值,注意指定的值兩邊沒有 符號(hào)

      $ kubectl config set-credentials test-user(自定義) --token <TokenOfSecret>

      第二步:設(shè)置集群的訪問信息

      若配置訪問已有的集群信息,忽略此步

      若添加新集群,則需要添加下面信息

      $ kubectl config set-cluster new-cluster-name(自定義) --server https://10.192.0.2:6443 --certificate-authority /home/shiyanlou/ca.crt --embed-certs=true

      Cluster "new-cluster-name" set.

      第三步:創(chuàng)建一個(gè) Context,把集群信息和鑒權(quán)信息綁定在一起

      # 采用了自己的集群 minikube
      $ kubectl config set-context your-context-name(自定義) --cluster minikube --user test-user

      Context "your-context-name" created.

      第四步:使用這個(gè)創(chuàng)建的 Context

      $ kubectl config use-context your-context-name

      Switched to context "your-context-name".

      通過以上步驟的設(shè)置,我們就可以在本地通過 kubectl 使用我們創(chuàng)建的 ServiceAccount 來調(diào)用 API 接口,訪問集群中資源的信息了。

      好了,讓我們來簡(jiǎn)單查看下默認(rèn)命名空間 default 中的 Pod 列表

      $ kubectl get pods

      Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:default:shiyanlou-admin" cannot list pods in the namespace "default"

      為什么會(huì)出現(xiàn)此信息?

      因?yàn)槲覀?role 賦予的權(quán)限是在 ns-sa 命名空間下查看 pod,因此無法獲取 default 空間下的 pod
      3.3 利用 mac 用戶進(jìn)行管控
      因?yàn)?mac 用戶不是 k8s user,所以不太清楚怎么利用mac user 創(chuàng)建 contxt

      此處測(cè)試 mac user 與 clusterrole admin 綁定,驗(yàn)證是否有創(chuàng)建pod權(quán)限

      新建mac 用戶 yeah

      【小技巧】macOS 下用 dscl 命令行管理用戶 創(chuàng)建用戶
      賦予權(quán)限

      # 綁定 admin clusterrole
      k create clusterrolebinding test-sa-admin2 --user=yeah --clusterrole=admin

      驗(yàn)證權(quán)限

      # 驗(yàn)證是否授權(quán)成功
      kubectl auth can-i create pods --namespace default --as yeah

      四、命令總結(jié)
      kubeconfig配置文件可通過kubectl config命令進(jìn)行設(shè)定
      kubectl config view #打印文件內(nèi)容
      kubectl config set-cluster # 設(shè)置clusters段
      kubectl config set-credentials # 設(shè)置users段
      kubectl config set-context # 設(shè)置contexts段
      kubectl config set-use-context # 設(shè)置current-context段

      獲取secret的token
      # 創(chuàng)建 serviceaccount 時(shí)會(huì)自動(dòng)創(chuàng)建個(gè)同名的 secret 并掛載上,其用于訪問集群
      kubectl -n kube-system get secret|grep admin-token
      # 用 jsonpath 方式獲取 token 的值
      kubectl -n kube-system get secret admin-token-nwphb -o jsonpath={.data.token}|base64 -d

      使用指定用戶創(chuàng)建資源
      # mac 用戶
      $ k apply -f 1sysctl.yaml --as=yeah
      # 使用 ServiceAccount
      $ k apply -f 1sysctl.yaml --as system:serviceaccount:default:sa-test1

      驗(yàn)證用戶是否有某些權(quán)限
      # 測(cè)試權(quán)限 因?yàn)?k8s User 綁定的 serveraccount, 所以 k8s User 本身并沒有權(quán)限
      $ kubectl auth can-i create pods --namespace default --as user-test1
      no
      # ServiceAccount 才有權(quán)限
      $ kubectl auth can-i create pods --namespace default --as system:serviceaccount:default:sa-test1
      yes

      posted @ 2023-01-11 10:19  純撿垃圾吃的  閱讀(647)  評(píng)論(0)    收藏  舉報(bào)
      返回頂部
      主站蜘蛛池模板: 插插无码视频大全不卡网站| 熟妇无码熟妇毛片| 精品亚洲女同一区二区| 在线视频精品中文无码| 国产台湾黄色av一区二区| 中文国产成人精品久久不卡| 国产jjizz女人多水喷水| 久久亚洲精品11p| 姐姐6电视剧在线观看| 亚洲av无码之国产精品网址蜜芽| av天堂久久精品影音先锋| 同性男男黄gay片免费| 亚洲人成网线在线播放VA| 夜夜嗨久久人成在日日夜夜| 麻豆精品久久久久久久99蜜桃 | 托里县| 亚洲AV永久无码嘿嘿嘿嘿| 欧美黑人大战白嫩在线| 狠狠躁夜夜躁人人爽天天5| 亚洲AV成人无码久久精品四虎| 欧美日韩一区二区综合| 国产精品久久中文字幕| 亚洲av精选一区二区| 一区二区三区AV波多野结衣| 国产精品无遮挡又爽又黄| 麻豆精品一区二区三区蜜臀| 中文字幕久久精品波多野结| 国产欧美亚洲精品a第一页| 成人免费亚洲av在线| 国产精品久久久久久无毒不卡| 亚洲精品无码在线观看| 婷婷四房播播| 永平县| 亚洲aⅴ男人的天堂在线观看 | 亚洲另类无码一区二区三区| 国产高清一区二区不卡| 亚洲av尤物一区二区| 欧美性猛交xxxx乱大交极品| 亚洲国产成人精品无色码| 福利视频一区二区在线| 国产综合色在线精品|