Kubeapps是一个基于web的UI,用于在Kubernetes集群中部署和管理应用程序。
此文档用于记录kubeapps的安装过程
安装helm
因为安装kubeapps需要使用helm安装  所有先提前安装helm
此前在此文档中使用二进制安装的helm客户端,这次使用脚本安装
安装helm客户端
| 1
2
3
 | [root@k8s-77-36 ~]# curl -LO https://git.io/get_helm.sh
[root@k8s-77-36 ~]# chmod 700 get_helm.sh
[root@k8s-77-36 ~]# ./get_helm.sh
 | 
 
或
| 1
 | [root@k8s-77-36 ~]# curl -L https://git.io/get_helm.sh | bash
 | 
 
安装Helm Tiller
Helm Tiller是Helm的server,Tiller有多种安装方式,比如本地安装(没有尝试过)或以pod形式部署到Kubernetes集群中。本文以pod安装为例
安装helm tiller只需要执行helm init就可以了, 不过镜像默认使用gcr.io/kubernetes-helm/tiller; 仓库默认使用https://kubernetes-charts.storage.googleapis.com。如果服务器不能科学上网可能无法访问相关域名,导致安装出错。可以使用国内的源提供的镜像和站点
| 1
2
 | [root@k8s-77-36 ~]# helm init --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.14.3 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
 | 
 
 注意:tiller的版本一定要与客户端的版本对应 安装tiller之前可以使用helm version查看客户端的版本 
验证安装
确认tiller
| 1
2
 | [root@k8s-77-36 ~]# kubectl get pods -n kube-system |grep tiller
tiller-deploy-9bf6fb76d-2wk4b                 1/1     Running   0          45s
 | 
 
确认helm
| 1
2
3
 | [root@k8s-77-36 ~]# helm version
Client: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.14.1", GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
 | 
 
设置tiller权限
默认的tiller的权限很小,可以给它加大权限
| 1
2
3
 | [root@k8s-77-36 ~]# kubectl create serviceaccount --namespace=kube-system tiller
[root@k8s-77-36 ~]# kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
[root@k8s-77-36 ~]# kubectl patch deploy --namespace=kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
 | 
 
kubeapps安装配置
安装kubeapps
方式一
直接安装
| 1
2
 | [root@k8s-77-36 ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
[root@k8s-77-36 ~]# helm install --name kubeapps --namespace kubeapps bitnami / kubeapps
 | 
 
方式二
修改配置文件安装
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
 | [root@k8s-77-36 ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
[root@k8s-77-36 ~]# helm fetch bitnami/kubeapps
[root@k8s-77-36 ~]# tar -xvf kubeapps-2.0.4.tgz
[root@k8s-77-36 ~]# cd kubeapps/
[root@k8s-77-36 kubeapps]# vim values.yaml
...
#修改成国内站点
  initialRepos:
  - name: stable
    url: https://mirror.azure.cn/kubernetes/charts/
  - name: incubator
    url: http://mirror.azure.cn/kubernetes/charts-incubator/
  - name: bitnami
    url: https://charts.bitnami.com/bitnami
...
[root@k8s-77-36 kubeapps]# helm install --name kubeapps --namespace kubeapps  -f values.yaml bitnami/kubeapps
 | 
 
创建Kubernetes API token
创建token
| 1
2
 | [root@k8s-77-36 kubeapps]# kubectl create serviceaccount kubeapps-operator
[root@k8s-77-36 kubeapps]# kubectl create clusterrolebinding kubeapps-operator --clusterrole=cluster-admin --serviceaccount=default:kubeapps-operator
 | 
 
查看token
| 1
 | [root@k8s-77-36 kubeapps]# kubectl get secret $(kubectl get serviceaccount kubeapps-operator -o jsonpath='{.secrets[].name}') -o jsonpath='{.data.token}' | base64 --decode
 | 
 
创建service
编写service
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
 | [root@k8s-77-36 ~]# vim kubeapps-svc.yml
apiVersion: v1
kind: Service
metadata:
 name: kubeapps-svc
 namespace: kubeapps
 labels:
  app: kubeapps
spec:
 type: NodePort
 ports:
 - port: 8080
   nodePort: 30080
 selector:
  app: kubeapps
 | 
 
部署service
| 1
 | [root@k8s-77-36 ~]# kubectl apply -f kubeapps-svc.yaml
 | 
 
pod都启动后web访问http://172.16.77.36:30080 进行访问
kubeapps卸载
| 1
2
3
 | [root@k8s-77-36 ~]# helm delete --purge kubeapps
[root@k8s-77-36 ~]# kubectl delete crd apprepositories.kubeapps.com
[root@k8s-77-36 ~]# kubectl delete namespace kubeapps #如果此命名空间里仅有kubeapps可进行此操作
 | 
 
注意事项
- 如果是卸载后重新安装,可能会有几个pod提示nginx启动错误 可以用以下办法解决
| 1
2
 | [root@k8s-77-36 ~]# helm install --name kubeapps --namespace kubeapps -f values.yaml  bitnami/kubeapps  --set frontend.image.tag=latest --set dashboard.image.tag=latest
 | 
 
 
    
  
    Author
    dylan
  
  
    LastMod
    
        2019-08-24
        
    
  
  
  
    License
    如需转载请注明文章作者和出处。谢谢!