zoukankan      html  css  js  c++  java
  • 使用Helm部署dashboard(更换默认helm仓库)

     前提:

    本次安装基于Helmchart包安装的,且向外暴露服务的方式为Ingress,所以有以下前提:

    1、部署好了kubernetes

    2、集群已经安装了Ingress-Nginx

    3、安装了helm(可参考下面步骤)

    4、一个已经备案过的域名及对应https证书

    一、helm

    注意:本文针对的是Helm v3,因为v3版本和v2某些命令方面差距蛮大的,不完全兼容。

    helm3移除了tiller,直接通过k8s API Server来管理k8s资源。

    1、安装helm

    官网地址:https://github.com/kubernetes/helm/releases

    下载如下包

     

    或者直接下载

    wget https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz
    tar -zxvf helm-v3.7.2-linux-amd64.tar.gz 
    cd linux-amd64/ 
    cp helm /usr/local/bin/
    chmod a+x  /usr/local/bin/helm
    
    #查看版本
    [root@dannylinux ~]# helm version
    version.BuildInfo{Version:"v3.7.2", GitCommit:"663a896f4a815053445eec4153677ddc24a0a361", GitTreeState:"clean", GoVersion:"go1.16.10"}

    二、配置https证书为secret

    1、上传域名的nginx证书到服务器上

    # 这里假设证书aaa.key和bbb.crt已经上传至路径/usr/local/cert
    cd /usr/local/cert
    # 创建secret到kube
    -system命名空间下 # 之后我们的dashboard也会创建在这个命名空间下,需要依赖这个,所以提前创建 kubectl creat secret tls dashboard-tls --key aaa.key --cert bbb.crt -n kube-system

    三、dashboard安装

    1、helm拉取dashboard的chart

    # 添加helmhub上的dashboard官方repo仓库
    helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
    
    # 更新仓库
    helm repo update
    
    # 查看添加完成后的仓库
    helm repo list
    
    # 查询dashboard的chart
    helm search repo  kubernetes-dashboard
    
    # 新建文件夹用于保存chart
    mkdir dashboard-chart && cd dashboard-chart
    
    # 拉取chart
    helm pull kubernetes-dashboard/kubernetes-dashboard
    
    # 此时会有一个压缩包,解压它
    tar -zxvf kubernetes-dashboard-2.3.0.tgz
    
    # 进入到解压后的文件夹
    cd kubernetes-dashboard

    2、配置dashboard的chart包配置

     注意:以下创建的new-values.yaml是基于values.yaml修改的,即意味着如果需要跟自定义的配置,可以自己参照values.yaml修改配置文件

    新建一个new-values.yaml,内容如下

    注意:以下的host需要换成自己的域名,且secretname需要跟刚刚创建的secret对应起来

    image:
      repository: kubernetesui/dashboard
      tag: v2.0.3
      pullPolicy: IfNotPresent
      pullSecrets: []
    replicaCount: 1
    annotations: {}
    labels: {}
    extraEnv: []
    podAnnotations:
      seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
    nodeSelector: {}
    tolerations: []
    affinity: {}
    
    resources:
      requests:
        cpu: 100m
        memory: 200Mi
      limits:
        cpu: 2
        memory: 200Mi
    protocolHttp: false
    
    service:
      type: ClusterIP
      externalPort: 443
      annotations: {}
      labels: {}
    
    ingress:
      enabled: true
      annotations:
        nginx.ingress.kubernetes.io/secure-backends: "true"
        nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
      paths:
        - /
      customPaths: []
      hosts:
        - xxx.xxx.com # 你的域名
      tls:
        # 注意这个名字要跟前面新建的secret对上
        - secretName: dashboard-tls
          hosts:
            - xxx.xxx.com # 你的域名
    
    metricsScraper:
      enabled: false
      image:
        repository: kubernetesui/metrics-scraper
        tag: v1.0.4
      resources: {}
      containerSecurityContext:
        allowPrivilegeEscalation: false
        readOnlyRootFilesystem: true
        runAsUser: 1001
        runAsGroup: 2001
    
    metrics-server:
      enabled: false
    
    rbac:
      create: true
      clusterRoleMetrics: true
      clusterReadOnlyRole: false
    
    serviceAccount:
      create: true
      name:
    
    livenessProbe:
      initialDelaySeconds: 30
      timeoutSeconds: 30
    
    podDisruptionBudget:
      enabled: false
      minAvailable:
      maxUnavailable:
    
    containerSecurityContext:
      allowPrivilegeEscalation: false
      readOnlyRootFilesystem: true
      runAsUser: 1001
      runAsGroup: 2001
    
    networkPolicy:
      enabled: false

    3、helm执行创建dashboard的release

    # 执行路径在new-values.yaml目录
    helm install . \ 
    -n kubernetes-dashboard \  #指定名称
    --namespace kube-system \  #指定名称空间
    -f new-values.yaml  #指定创建的yaml文件

    4、给dashboard的ServiceAccont授权

    如果不授权,创建后我们刚进去界面,发现什么资源都显示不了,是因为dashboard默认的ServiceAccount并没有权限,所以我们需要给予它授权。
    这里简单起见直接分配cluster- admin 这个集群内置的 ClusterRole 给它。

     创建 rbac-config.yaml 文件:

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

     应用资源文件

    kubectl apply -f rbac-config.yaml 

    5、通过域名访问dashboard

    6、查看token并使用token登陆

    [root@k8s-master kubernetes-dashboard]# kubectl get secret -n kube-system | grep kubernetes-dashboard-token
    kubernetes-dashboard-token-vgp9w                 kubernetes.io/service-account-token   3      22h

     describe一下获取token值

    kubectl describe secret kubernetes-dashboard-token-vgp9w -n kube-system

     复制这一串token

       登录

    7、查看资源界面

     原文:https://www.cnblogs.com/baoshu/p/13326480.html

    好记性不如烂笔头,最难不过坚持
  • 相关阅读:
    python打包exe pyinstaller 简单使用
    加群请回答两个问题,谢谢合作!
    8080_32位汇编-通用寄存器
    学习8086汇编的准备
    HelloWorld生命周期
    我为什么要学习《深入理解计算机系统》这本书?
    MySQL_1.0
    C++命名空间的玩法
    Linux的 7个运行级别
    Linux基础命令2.0
  • 原文地址:https://www.cnblogs.com/dannylinux/p/15794147.html
Copyright © 2011-2022 走看看