以下是一个使用Ansible playbook在Kubernetes上安装Minio的示例,其中明确了PV和PVC,并将values.yaml文件单独挂载:
---
- name: Deploy Minio on Kubernetes using Helm with PV and PVC
hosts: k8s_cluster
become: true
vars:
minio_namespace: default # 定义Minio部署的namespace名称
minio_release_name: my-minio # 定义Helm release名称
storage_class_name: nfs # 指定要使用的存储类别名称
pvc_name: minio-pvc # 定义PVC名称
pv_name: minio-pv # 定义PV名称
tasks:
- name: Create PV for Minio data storage
k8s:
state: present
kind: PersistentVolume
api_version: v1
definition:
apiVersion: v1
kind: PersistentVolume
metadata:
name: "{{ pv_name }}"
spec:
capacity:
storage: "10Gi"
accessModes:
- ReadWriteMany
nfs:
path: /mnt/data/minio
server: x.x.x.x # 替换为您NFS服务器IP地址
persistentVolumeReclaimPolicy : Retain
- name: Create PVC for Minio data storage
k8s:
state: present
namespace : "{{ minio_namespace }}"
kind : PersistentVolumeClaim
definition :
apiVersion : v1
kind : PersistentVolumeClaim
metadata :
name : "{{ pvc_name }}"
spec :
accessModes :
- ReadWriteMany
resources :
requests :
storage : "10Gi"
selector :
matchLabels :
app : my-minio
- name: Install Minio using Helm chart
helm:
name: "{{ minio_release_name }}"
chart_repo: minio/minio
release_namespace: "{{ minio_namespace }}"
chart_version: 9.0.2
state: present
values_files : "minio_values.yaml"
wait : yes
vars:
values_file_path: "/path/to/values.yaml"
- name: Copy Minio values.yaml file to remote host
copy:
src: "{{ values_file_path }}"
dest: "/tmp/minio_values.yaml"
- name: Mount Minio values.yaml file into Helm chart
k8s_raw:
state: present
definition:
apiVersion: v1
kind: Pod
metadata:
name: my-pod-with-minio-chart-and-values-file
namespace : "{{ minio_namespace }}"
spec:
containers:
- name: alpine-container
imagePullPolicy : IfNotPresent
image : alpine
command : ["sh","-c","sleep 3600"]
volumeMounts:
- mountPath:/tmp/minio_values.yaml # 将values文件挂载到容器的/tmp目录下,以便Helm在安装时使用该文件进行配置。
name:minio-values-volume
volumes:
- configMap :
defaultMode : 420
items :
- key : minio_values.yaml
path : minio_values.yaml
name : my-configmap
name:minio-values-volume
说明:
- playbook中定义了以下变量:
minio_namespace(MinIO部署的namespace名称)、minio_release_name(Helm release名称)、storage_class_name(要使用的存储类别名称)、pvc_name(PVC名称)和pv_name(PV名称)。 - playbook中先创建一个名为“minio-pv”的PersistentVolume,然后创建一个名为“minio-pvc”的PersistentVolumeClaim,并将其绑定到指定的PV上。
- 使用Helm安装Minio。在这里,我们使用了values.yaml文件来配置Minio Helm chart。在将该文件传输到远程主机之前,先将其保存到变量
values_file_path中。然后通过copy模块复制该文件到远程主机上。 - playbook中还定义了一个Pod,并将values.yaml文件挂载到容器的/tmp目录下,以便Helm在安装时使用该文件进行配置。
请注意,在运行该playbook之前,请确保您的Kubernetes集群已经正常运行并且已正确设置PV/PVC。




