美文网首页Kubernetes
kubernetes-dashboard开启http免密登录

kubernetes-dashboard开启http免密登录

作者: 王勇1024 | 来源:发表于2019-12-04 23:59 被阅读0次

    前言

    《使用Kubeadm搭建Kubernetes(1.13.1)集群》 中我们已经学习了如何搭建Kubernetes(1.13.1)集群,并安装了kubernetes-dashboard UI管理工具,并在《创建kube-dashboard管理员》 中学习了如何创建一个管理员账号,并使用token登录kubernetes-dashboard,用于管理Kubernetes集群。

    但实际使用中,每次登录kubernetes-dashboard都要输入token,非常的麻烦。使用token虽然安全,但内网环境很多时候不需要那么高的安全等级,我们就可以考虑开启http免密登录来方便我们的工作。这一节我就和大家一起学习kubernetes-dashboard如何开启http免密登录。

    操作

    《使用Kubeadm搭建Kubernetes(1.13.1)集群》 中我们是通过kubernetes-dashboard.yaml来安装kubernetes-dashboard的,要开启http免密登录,也需要用到这个文件。

    1. 修改Deployment

    • 1.1 增加 9090端口, 原本镜像中就是有9090 非安全端口的,只是yaml文件没有暴露出来
    • 1.2 args 下面 ‘- --auto-generate-certificates’ 注释掉, 前面添加 #
        spec:
          containers:
          - name: kubernetes-dashboard
            image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
            ports:
            - containerPort: 8443
              protocol: TCP
              name: https
            - containerPort: 9090
              protocol: TCP
              name: http
            args:
              # - --auto-generate-certificates
              # Uncomment the following line to manually specify Kubernetes API server Host
              # If not specified, Dashboard will attempt to auto discover the API server and connect
              # to it. Uncomment only if the default does not work.
              # - --apiserver-host=http://my-address:port
    
    • 1.3 修改健康检查规则
      将scheme改为HTTP,port改成9090,否则过一段时间后你就会看到kubernetes-dashboard挂掉了。
            livenessProbe:
              httpGet:
                scheme: HTTP
                path: /
                port: 9090
              initialDelaySeconds: 30
              timeoutSeconds: 30
    

    2. 修改Service

    • 2.1 增加端口,target指向9090

    • 2.2 配置nodeport,方便通过节点ip+nodeport 访问,即输入 k8s节点ip:32000 就可以访问到dashboard

    注意记得添加 ‘ type: NodePort’

    kind: Service
    apiVersion: v1
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
      name: kubernetes-dashboard
      namespace: kube-system
    spec:
      ports:
        - port: 443
          targetPort: 8443
          nodePort: 32001
          name: https
        - port: 80
          targetPort: 9090
          nodePort: 32000
          name: http
      type: NodePort
    
      selector:
        k8s-app: kubernetes-dashboard
    

    3. 绑定管理员角色

    默认情况下,我们访问kubernetes-dashboard时使用的账户是kubernetes-dashboard,但该账户所绑定的角色kubernetes-dashboard-minimal的权限非常有限,访问http://master-host:32000会出现如图片中的提示:

    image.png

    我们可以直接把《创建kube-dashboard管理员》 中创建的cluster-admin角色的权限赋给kubernetes-dashboard,方法是将RoleBinding修改成下面的形式:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: kubernetes-dashboard-minimal
      namespace: kube-system
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
    - kind: ServiceAccount
      name: kubernetes-dashboard
      namespace: kube-system
    

    之后我们在浏览器中访问http://master-host:32000就一切正常了。

    kubernetes-dashboard

    参考文档

    kubernetes dashboard 开启http 免密登陆

    相关文章

      网友评论

        本文标题:kubernetes-dashboard开启http免密登录

        本文链接:https://www.haomeiwen.com/subject/qkyrgctx.html