梨恐 发表于 2025-11-12 14:45:00

【Kubernetes】使用Helm简化k8s部署、管理

使用Helm简化Kubernetes部署、管理

Helm 是 Kubernetes 的包管理工具,能够简化应用的部署、管理和升级流程。以下是使用 Helm 的基本步骤和常见操作。
先决条件

想成功和正确地使用Helm,需要以下前置条件。

[*]一个 Kubernetes 集群(参考macOS上优雅运行Docker容器)
[*]确定你安装版本的安全配置
[*]安装和配置Helm。
安装Helm

macOS
brew install helmWindows
choco install kubernetes-helmDebian/Ubuntu
sudo apt-get install curl gpg apt-transport-https --yes
curl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
echo "deb https://packages.buildkite.com/helm-linux/helm-debian/any/ any main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm基本概念

概念描述简单类比ChartHelm 的应用包,包含模板和默认配置。nginx.deb 安装包文件RepositoryChart 的存储仓库,用于分发和共享。Ubuntu 的软件源(如 archive.ubuntu.com)Release在集群中运行的 Chart 的一个实例。系统上正在运行的 nginx 进程Values用于覆盖 Chart 中模板默认参数的配置。安装软件时传入的配置参数(如安装路径)Helm的一般操作:

[*]helm search:      搜索chart
[*]helm pull:          下载chart到本地目录查看
[*]helm install:       上传chart到Kubernetes
[*]helm list:        列出已发布的chart
[*]helm uninstall:   卸载一个版本
Bitnami

Bitnami 是一家被 VMware 收购的公司,长期专注于为流行开源软件提供打包好的、跨平台的安装程序。在容器化时代之前,他们就为数百个应用提供了虚拟机镜像、云镜像和原生安装包。
Bitnami是Helm中最常用的仓库之一,提供了许多常用的Kubernetes应用程序的Helm Charts。Helm作为Kubernetes的包管理器,允许用户从Chart repository快速查找和安装软件包。此外,用户可以通过Helm命令获取Bitnami Charts的详细信息。
Bitnami 提供了数百个经过验证的 Chart,涵盖:
数据库
helm install my-postgresql bitnami/postgresql
helm install my-redis bitnami/redis
helm install my-mongodb bitnami/mongodb消息队列与中间件
helm install my-kafka bitnami/kafka
helm install my-rabbitmq bitnami/rabbitmq
helm install my-nginx bitnami/nginx应用框架
helm install my-wordpress bitnami/wordpress
helm install my-joomla bitnami/joomla
helm install my-redmine bitnami/redmine使用Helm部署一个MySQL

这里是没有使用Helm部署数据库MySQL的例子,需要手动管理

[*]创建命名空间
[*]创建本地存储PV和StorageClass
[*]创建MySQL配置ConfigMap
[*]创建MySQL密码Secret
[*]创建MySQL StatefulSet
[*]创建MySQL Service
[*]部署脚本
下面就看看如何用Helm简化部署MySQL
1. 添加Bitnami仓库(若添加过,忽略)

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update2. 创建自定义values文件

创建 mysql-values.yaml 文件:
image:
registry: docker.io
repository: mysql
tag: 8.0.34
pullPolicy: Always

auth:
rootPassword: "root123!"
database: "myapp"
username: "appuser"
password: "app1234!"
replicationUser: "replicator"       # 复制专用用户
replicationPassword: "replica-pass" # 复制用户密码

primary:
persistence:
    enabled: true
    size: 8Gi
    storageClass: "local-path"

resources:
    requests:
      memory: "512Mi"
      cpu: "250m"
    limits:
      memory: "1Gi"
      cpu: "500m"

secondary:
replicaCount: 1
persistence:
    enabled: true
    size: 8Gi
    storageClass: "local-path"
extraEnvVars:
    - name: MYSQL_ROOT_PASSWORD
      value: "root123!"

# 禁用所有辅助功能
volumePermissions:
enabled: false

architecture: "replication"3. 部署MySQL

helm install my-mysql bitnami/mysql -f mysql-values.yaml -n mysql --create-namespace --version=9.14.0验证


[*]进入Pod
kubectl exec -ti my-mysql-primary-0 -n mysql -- /bin/sh
[*]链接主节点/从节点
mysql -h my-mysql-primary.mysql.svc.cluster.local -uroot -p
可以看到只需要3步,就可以部署一个主从复制架构的MySQL,比手动管理是方便太多,这是因为helm封装很多细节,具体查看某个Chart可以把它拉去到本地,查看
helm pull bitnami/mysql --version=9.14.0 --untar引用

java-developer
例子: https://github.com/WilsonPan/java-developer/k8s/helm

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

杭环 发表于 2025-11-19 12:58:24

这个好,看起来很实用
页: [1]
查看完整版本: 【Kubernetes】使用Helm简化k8s部署、管理