【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
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 这个好,看起来很实用
页:
[1]