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
[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
[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