k8s应用管理-helm

2021/03/30

k8s应用管理-helm

参考资料

1.helm简介

Helmk是k8s资源的包管理工具,Helm之于Kubernetes好比yum之于RHEL,或者apt-get之于Ubuntu。Helm使用Chart帮助管理应用,Chart就好像RPM一样,里面描述了应用及其依赖关系。

Helm把Kubernetes资源(比如deployments、services或 ingress等)打包到一个chart中,而chart被保存到chart仓库。通过chart仓库可用来存储和分享chart。Helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。

主要概念:

  • helm客户端:命令行客户端工具,负责管理charts、reprepository和release。它通过gPRC API(使用kubectl port-forward将tiller的端口映射到本地,然后再通过映射后的端口跟tiller通信)向tiller发送请求
  • tiller服务端:tiller接收来自helm客户端的请求,并把相关资源的操作发送到Kubernetes,负责管理(安装、查询、升级或删除等)和跟踪Kubernetes资源。为了方便管理,tiller把release的相关信息保存在kubernetes的ConfigMap中。 tiller对外暴露gRPC API,供helm客户端调用
  • Chart:Helm管理的kubernetes资源包称之为Chart,Chart是一个结构相对固定的文件目录,是应用的描述,Chart之间可相互依赖
  • Repository:Helm package存储仓库
  • Release:Chart部署之后的实例,每一次helm install运行后就会生成一个新的release,在k8s中创建出真是运行的资源对象

Helm引入是为了解决哪些问题

  • 1.把yaml作为整体管理
  • 2.实现yaml高效服用
  • 3.使用helm进行应用级别的版本管理

2.helm安装

## 安装Helm包管理器
$ wget https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz
$ tar -zxvf helm-v3.6.3-linux-amd64.tar.gz
$ sudo mv linux-amd64/helm /usr/local/bin/helm

## 验证:
$ helm version 

3.使用helm安装组件示例-ingress-nginx

helm:操作集群依赖kubeconfig,k3s中需要主动导出下kubeconfig环境变量供helm检测使用 https://docs.k3s.io/zh/helm
https://docs.k3s.io/zh/cluster-access

k8s配置

指定k8s集群
这一步非常关键,它是helm与k8s通讯的保证,这一步就是把k8s环境变量KUBECONFIG进行配置
export KUBECONFIG=/root/.kube/config
或者
vim /etc/profile
KUBECONFIG=/root/.kube/config
source /etc/profile

k3s配置

# 集群访问
/etc/rancher/k3s/k3s.yaml 中存储的 kubeconfig 文件用于配置对 Kubernetes 集群的访问。如果你已经安装了上游的 Kubernetes 命令行工具(如 kubectl 或 helm),你需要用正确的 kubeconfig 路径配置它们。这可以通过导出 KUBECONFIG 环境变量或调用 --kubeconfig 命令行标志来完成。有关详细信息,请参阅以下示例。

## 使用 KUBECONFIG 环境变量:
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get pods --all-namespaces
helm ls --all-namespaces

##  或者在命令中指定 kubeconfig 文件的位置:
kubectl --kubeconfig /etc/rancher/k3s/k3s.yaml get pods --all-namespaces
helm --kubeconfig /etc/rancher/k3s/k3s.yaml ls --all-namespaces
helm --kubeconfig /etc/rancher/k3s/k3s.yaml repo add helm-stable https://kubernetes-charts.storage.googleapis.com/
helm --kubeconfig /etc/rancher/k3s/k3s.yaml search repo nginx


# 使用 kubectl 从外部访问集群
将 /etc/rancher/k3s/k3s.yaml 复制到位于集群外部的主机上的 ~/.kube/config。然后,将 server 字段的值替换为你 K3s Server 的 IP 或名称。现在,你可以使用 kubectl 来管理 K3s 集群。

helm配置repo、拉取 安装app

$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
$ helm repo update
$ helm pull ingress-nginx/ingress-nginx
$ tar -zxvf ingress-nginx-4.0.6.tgz

## 修改value参数
$ vim ingress-nginx/values.yaml

## 创建命名空间
$ kubectl create namespace ingress-nginx

## 安装,./ingress-nginx为解压后的包目录
$ helm install ingress-nginx ./ingress-nginx -n ingress-nginx

## 查看安装状态
$ kubectl get po -n ingress-nginx

## 卸载
$ helm uninstall ingress-nginx -n ingress-nginx

helm配置repo,更新仓库、检索应用

管理第三方repo源

  • 官方仓库: https://hub.kubeapps.com/charts/incubator
  • helm repo add aliyuncs https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
  • helm repo add helm https://charts.helm.sh/stable
  • helm repo add bitnami https://charts.bitnami.com/bitnami
  • helm repo add kubernetes https://kubernetes.github.io/ingress-nginx
  • helm repo add azure http://mirror.azure.cn/kubernetes/charts/ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
  • helm repo add elastic https://helm.elastic.co
  • helm repo list
  • helm repo update

下载app,修改value.yml, 安装、卸载示例

helm search repo nginx-ingress
helm pull bitnami/nginx-ingress-controller --version 11.5.4
tar -zxvf
helm install nginx-ingress-controller ./nginx-ingress-controller -n ingress-nginx
helm uninstall nginx-ingress-controller
helm search repo mysql
helm pull helm/mysql --version 1.6.9
tar -zxvf mysql-1.6.9.tgz
kubectl create namespace poc
ll

将 YAML 文件转换为 Helm chart 包

https://bbs.huaweicloud.com/blogs/393667

cat demo.yml  | helmify demochart
helm install demo ./demo -n wds

问题记录

Post Directory

扫码关注公众号:暂无公众号
发送 290992
即可立即永久解锁本站全部文章