<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 升級Dashboard 我們在kubernetes1.6的時候同時安裝了dashboard插件,該插件也是基于kubernetes1.6版本開發的。如今kubernetes1.8版本業已發布,如何升級dashboard以獲取新版中功能呢? Dashboard的升級比較簡單,因為它僅僅是一個前端應用,用來展現集群信息和與后端API交互,理論上只需要更新原先dashboard的yaml配置文件中的鏡像就可以了,但是為了使用dashboard1.7版本中的用戶登陸功能,還需要做一些額外的操作。 [dashboard](https://github.com/kubernetes/dashboard)的更新日志請見[release note](https://github.com/kubernetes/dashboard/releases),當前的最新版本為v1.7.1,下面將介紹將dashboard從v1.6.3升級到v1.7.1并開啟用戶登陸認證的詳細步驟。 ## 升級步驟 **刪除原來的版本** 首先刪除原來的dashboard資源: ```bash kubectl delete -f dashboard/ ``` 將`dashboard`目錄下的所有yaml文件中的資源全部刪除,包括Deployment、service和角色綁定等。 **部署新版本** 我們使用官方的配置文件來安裝,首先下載官方配置: ```bash wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml ``` 修改其中的兩個鏡像地址為我們的私有地址。 - gcr.io/google_containers/kubernetes-dashboard-init-amd64:v1.0.1 - gcr.io/google_containers/kubernetes-dashboard-amd64:v1.7.1 這個兩個鏡像可以同時從**時速云**上獲取: - index.tenxcloud.com/jimmy/kubernetes-dashboard-amd64:v1.7.1 - index.tenxcloud.com/jimmy/kubernetes-dashboard-init-amd64:v1.0.1 將service type設置為`NodePort`,修改后的yaml文件見[kubernetes-dashboard.yaml](https://github.com/rootsongjc/kubernetes-handbook/tree/master/manifests/dashboard-1.7.1/kubernetes-dashboard.yaml),然后就可以部署新版本的dashboard了。 ```bash kubectl create -f kubernetes-dashboard.yaml ``` 獲取dashboard的外網訪問端口: ```bash kubectl -n kube-system get svc kubernetes-dashboard NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard 10.254.177.181 <nodes> 443:32324/TCP 49m ``` 訪問集群中的任何一個節點,即可打開dashboard登陸頁面,如<https://172.20.0.113:32324/>(請使用https訪問),支持使用`kubeconfig`和`token`兩種的認證方式: ![登陸界面](https://box.kancloud.cn/06748f8cde370493d9c5b3f1502073d8_1199x643.jpg) 選擇本地的`kubeconfig`文件以登陸集群,`kubeconfig`文件中包括登陸的用戶名、證書和token信息。 登陸之后首先看到的界面是這樣的: ![Dashboard首頁](https://box.kancloud.cn/8de3574ba85f99b082bc1522e8f23511_1199x643.jpg) 這是因為該用戶沒有對`default`命名空間的訪問權限。 修改URL地址中的`namespace`字段為該用戶有權限訪問的命名空間如brand:<https://172.20.0.113:32324/#!/overview?namespace=brand>: ![Dashboard用戶空間頁面](https://box.kancloud.cn/702fa86447e112b08c17dadef41dbeff_1171x1042.jpg) **設置界面的語言** 我們看到現在 dashboard 的頁面都已經被漢化了,當前支持英文、中文簡體、中文繁體、日語,根據瀏覽器的語言自動切換的。如果想要強制設置 dashboard 中顯示的語言,需要在 dahsboard 的 Deployment yaml 配置中增加如下配置: ```yaml env: - name: ACCEPT_LANGUAGE value: english ``` 更簡單的方式是,如果您使用的Chrome瀏覽器,則在瀏覽器中的配置中設置語言的順序后刷新網頁,dashboard將以您在Chrome中配置的首選語言顯示。 ## 身份認證 登陸 dashboard 的時候支持 kubeconfig 和 token 兩種認證方式,kubeconfig 中也依賴 token 字段,所以生成 token 這一步是必不可少的。 下文分兩塊來講解兩種登陸認證方式: - 為 brand 命名空間下的 brand 用戶創建 kubeconfig 文件 - 為集群的管理員(擁有所有命名空間的 amdin 權限)創建 token ### 使用 kubeconfig 登陸dashboard的時候可以指定`kubeconfig`文件來認證用戶權限,如何生成登陸dashboard時指定的`kubeconfig`文件請參考[創建用戶認證授權的kubeconfig文件](../guide/kubectl-user-authentication-authorization.md)。 > 注意我們生成的 kubeconfig 文件中沒有 token 字段,需要手動添加該字段。 比如我們為 brand namespace 下的 brand 用戶生成了名為 `brand.kubeconfig` 的 kubeconfig 文件,還要再該文件中追加一行 `token` 的配置(如何生成 token 將在下文介紹),如下所示: ![kubeconfig文件](https://box.kancloud.cn/4e5c15c66246aa9e4264b74cf43cf1f9_1798x1168.jpg) 這樣就可以使用`brand.kubeconfig`文件來登陸dashboard了,而且只能訪問和操作`brand`命名空間下的對象。 ### 生成集群管理員的token 以下是為集群最高權限的管理員(可以任意操作所有namespace中的所有資源)生成token的步驟詳解。 > 注意:登陸dashboard的時候token值是必須的,而kubeconfig文件是kubectl命令所必須的,kubectl命令使用的kubeconfig文件中可以不包含token信息。 需要創建一個admin用戶并授予admin角色綁定,使用下面的yaml文件創建admin用戶并賦予他管理員權限,然后可以通過token登陸dashbaord,該文件見[admin-role.yaml](https://github.com/rootsongjc/kubernetes-handbook/tree/master/manifests/dashboard-1.7.1/admin-role.yaml)。這種認證方式本質上是通過 Service Account 的身份認證加上 Bearer token 請求 API server 的方式實現,參考 [Kubernetes 中的認證](https://kubernetes.io/docs/admin/authentication/)。 ```yaml kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: admin annotations: rbac.authorization.kubernetes.io/autoupdate: "true" roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccount name: admin namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: admin namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile ``` 然后執行下面的命令創建 serviceaccount 和角色綁定,對于其他命名空間的其他用戶只要修改上述 yaml 中的 `name` 和 `namespace` 字段即可: ```bash kubectl create -f admin-role.yaml ``` 創建完成后獲取secret和token的值。 運行下面的命令直接獲取admin用戶的token: ```bash kubectl -n kube-system describe secret `kubectl -n kube-system get secret|grep admin-token|cut -d " " -f1`|grep "token:"|tr -s " "|cut -d " " -f2 ``` **手動獲取** 也可以執行下面的步驟來獲取token值: ```bash # 獲取admin-token的secret名字 $ kubectl -n kube-system get secret|grep admin-token admin-token-nwphb kubernetes.io/service-account-token 3 6m # 獲取token的值 $ kubectl -n kube-system describe secret admin-token-nwphb Name: admin-token-nwphb Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name=admin kubernetes.io/service-account.uid=f37bd044-bfb3-11e7-87c0-f4e9d49f8ed0 Type: kubernetes.io/service-account-token Data ==== namespace: 11 bytes token: 非常長的字符串 ca.crt: 1310 bytes ``` 在 dashboard 登錄頁面上有兩種登錄方式,`kubeconfig` 文件和 token (令牌),使用 token 登錄可以直接使用上面輸出中的那個**非常長的字符串**作為 token 登錄,即可以擁有管理員權限操作整個kubernetes集群中的對象。對于 `kubeconfig` 文件登錄方式,不能直接使用之前給 kubectl 生成的 `kubeconfig` 文件(`~/.kube/config`) 需要給它加一個 token 字段,您可以將這串 token 加到 admin 用戶的`kubeconfig`文件中,繼續使用`kubeconfig`登錄,具體加的位置可以參考`bootstrap-kubeconfig` 文件,兩種認證方式任您選擇。 **注意**:通過 `kubectl get secret xxx` 輸出中的 token 值需要進行 `base64` 解碼,在線解碼工具 [base64decode](https://www.base64decode.org/),Linux 和 Mac 有自帶的 `base64` 命令也可以直接使用,輸入 `base64` 是進行編碼,Linux 中`base64 -d` 表示解碼,Mac 中使用 `base64 -D`;通過 `kubectl describe secret xxx` 輸出中的 token 不需要 `base64` 解碼。 也可以使用 jsonpath 的方式直接獲取 token 的值,如: ```bash kubectl -n kube-system get secret admin-token-nwphb -o jsonpath={.data.token}|base64 -d ``` 注意我們使用了 base64 對其重新解碼,因為 secret 都是經過 base64 編碼的,如果直接使用 kubectl 中查看到的 `token` 值會認證失敗,詳見 [secret 配置](../guide/secret-configuration.md)。關于 JSONPath 的使用請參考 [JSONPath 手冊](https://kubernetes.io/docs/user-guide/jsonpath/)。 **注意**:關于如何給其它namespace的管理員生成token請參考[使用kubeconfig或token進行用戶身份認證](../guide/auth-with-kubeconfig-or-token.md)。 ## 參考 - [Dashboard log in mechanism #2093](https://github.com/kubernetes/dashboard/issues/2093) - [Accessing Dashboard 1.7.X and above](https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard---1.7.X-and-above) - [Kubernetes dashboard UX for Role-Based Access Control](https://github.com/kubernetes/dashboard/blob/master/docs/design/access-control.md) - [How to sign in kubernetes dashboard? - StackOverflow](https://stackoverflow.com/questions/46664104/how-to-sign-in-kubernetes-dashboard) - [JSONPath 手冊](https://kubernetes.io/docs/user-guide/jsonpath/) - [Kubernetes 中的認證](https://kubernetes.io/docs/admin/authentication/)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看