rancher MinIO helm 安装

MinIO

MinIO是用于高性能,大规模数据基础架构的分布式对象存储服务。这是您自己环境中的AWS S3替代产品。它使用擦除编码来提供高度弹性的存储,可以容忍多达n / 2个节点的故障。它在云,容器,kubernetes和裸机环境上运行。它足够简单,可以在几秒钟内部署,并且可以扩展到100皮塔字节。MinIO适合存储照片,视频,日志文件,备份,VM和容器映像等对象。

MinIO支持分布式模式。在分布式模式下,您可以将多个驱动器(甚至在不同的计算机上)合并到一个对象存储服务器中。

介绍

该图表使用Helm软件包管理器引导在Kubernetes集群上的MinIO部署。

先决条件

  • 启用Beta API的Kubernetes 1.4+已启用默认独立模式。
  • 启用Beta API的Kubernetes 1.5+可以在分布式模式下运行MinIO 。
  • 基础架构中的PV供应商支持。

安装图表

使用以下方法安装此图表:

$ helm install /minio

该命令以默认配置在Kubernetes集群上部署MinIO。的配置部分列出了可以在安装期间配置的参数。

发布名称

在Kubernetes集群中运行的图表实例称为发行版。每个发行版均在集群中由唯一名称标识。安装图表后,Helm会自动分配一个唯一的发行名称。您还可以通过以下方式设置您的首选名称:

$ helm install --name my-release /minio

访问和秘密密钥

默认情况下,将使用预先生成的访问和密钥。要覆盖默认密钥,请将访问密钥和秘密密钥作为参数传递给头盔安装。

$ helm install --set accessKey=myaccesskey,secretKey=mysecretkey \
    /minio

通过Helm更新MinIO配置

ConfigMap允许即使在部署Helm版本时也向容器注入配置数据。

要在版本中部署MinIO服务器配置时对其进行更新,您需要

  1. 使用来检查MinIO图表中的所有可配置值helm inspect values stable/minio
  2. 覆盖minio_server_configYAML格式的文件中的设置,然后像这样传递该文件helm upgrade -f config.yaml stable/minio
  3. 重新启动MinIO服务器,以使更改生效。

您也可以使用来检查版本升级的历史记录helm history my-release。替换my-release为实际的发行名称。

卸载图表

假设您的发行版名为my-release,请使用以下命令将其删除:

$ helm delete my-release

该命令将删除与图表关联的所有Kubernetes组件并删除发行版。

升级图表

您可以使用Helm在实时发行版中更新MinIO版本。假设您的发行版名为my-release,请使用以下命令获取值:

$ helm get values my-release > old_values.yaml

然后使用您要使用的带有MinIO图像标签的文件中的字段image.tag进行更改old_values.yaml。现在使用

$ helm upgrade -f old_values.yaml my-release stable/minio

values.yaml文件中指定了默认升级策略。如果您想使用其他策略,请更新这些字段。

组态

下表列出了MinIO图表的可配置参数及其默认值。

参数 描述 默认
nameOverride 提供名称代替 minio ""
fullnameOverride 提供一个名称来代替资源的全名 ""
image.repository 图片库 minio/minio
image.tag MinIO图片标签。可能的值在此处列出。 RELEASE.2020-01-03T19-12-21Z
image.pullPolicy 图片拉出政策 IfNotPresent
mcImage.repository 客户端映像存储库 minio/mc
mcImage.tag mc图片标签。可能的值在此处列出。 RELEASE.2020-01-03T20-33-14Z
mcImage.pullPolicy mc图片拉取政策 IfNotPresent
ingress.enabled 启用入口 false
ingress.labels 入口标签 {}
ingress.annotations 入口注释 {}
ingress.hosts 入口接受的主机名 []
ingress.tls 入口TLS配置 []
mode MinIO服务器模式(standalonedistributed standalone
extraArgs 传递给MinIO服务器的其他命令行参数 []
replicas 节点数(仅适用于MinIO分布式模式)。 4
zones 区域数(仅适用于MinIO分布式模式)。 1
drivesPerNode 每个节点的驱动器数(仅适用于MinIO分布式模式)。 1
existingSecret 具有访问权限和密钥的现有机密的名称。 ""
accessKey 默认访问密钥(5至20个字符) AKIAIOSFODNN7EXAMPLE
secretKey 默认密钥(8到40个字符) wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
certsPath 默认证书路径位置 /etc/minio/certs
configPathmc MinIO客户端的默认配置文件位置-MC /etc/minio/mc
mountPath 永久驱动器的默认安装位置 /export
bucketRoot minio应该在其中服务存储桶的目录。 的价值 .mountPath
clusterDomain 运行Pod的Kubernetes集群的域名。 cluster.local
service.type Kubernetes服务类型 ClusterIP
service.port 提供服务的Kubernetes端口 9000
service.externalIPs 服务外部IP地址 nil
service.annotations 服务注释 {}
serviceAccount.create 切换新服务帐户的创建 true
serviceAccount.name 要创建和/或使用的服务帐户名称 ""
persistence.enabled 使用永久卷存储数据 true
persistence.size 持续批量声明的大小 10Gi
persistence.existingClaim 使用现有的PVC保留数据 nil
persistence.storageClass PVC的存储类别名称 nil
persistence.accessMode ReadWriteOnce或ReadOnly ReadWriteOnce
persistence.subPath 挂载永久卷的子目录(如果已设置) ""
resources CPU /内存资源请求/限制 内存:256Mi,CPU:100m
priorityClassName 吊舱优先级设置 ""
securityContext.enabled 启用以非root用户身份运行容器。注意:如果persistence.enabled=false这样,securityContext将被自动禁用 true
securityContext.runAsUser 容器用户的用户标识 1000
securityContext.runAsGroup 容器用户的组标识 1000
securityContext.fsGroup 容器的持久卷安装的组标识 1000
nodeSelector 吊舱分配的节点标签 {}
affinity 广告连播分配的关联性设置 {}
tolerations 吊舱分配的公差标签 []
podAnnotations 吊舱注释 {}
podLabels 吊舱标签 {}
tls.enabled 为MinIO服务器启用TLS false
tls.certSecret Kubernetes Secretpublic.crtprivate.key文件。 ""
livenessProbe.initialDelaySeconds 启动活力探测之前的延迟 5
livenessProbe.periodSeconds 多久执行一次探测 30
livenessProbe.timeoutSeconds 探测超时时 1
livenessProbe.successThreshold 探针失败的最少连续成功次数将被视为成功。 1
livenessProbe.failureThreshold 成功后将被视为探针的最小连续失败数。 3
readinessProbe.initialDelaySeconds 启动就绪探针之前的延迟 5
readinessProbe.periodSeconds 多久执行一次探测 15
readinessProbe.timeoutSeconds 探测超时时 1
readinessProbe.successThreshold 探针失败的最少连续成功次数将被视为成功。 1
readinessProbe.failureThreshold 成功后将被视为探针的最小连续失败数。 3
defaultBucket.enabled 如果设置为true,则在安装MinIO之后将创建一个存储桶 false
defaultBucket.name 桶名 bucket
defaultBucket.policy 铲斗政策 none
defaultBucket.purge 清除存储桶(如果已存在) false
buckets MinIO安装后要创建的存储桶列表 []
makeBucketJob.annotations Kubernetes Batch的附加注释(make-bucket-job) ""
s3gateway.enabled 将MinIO用作s3网关 false
s3gateway.replicas 要并行运行的s3网关实例数 4
s3gateway.serviceEndpoint S3兼容服务的端点 ""
azuregateway.enabled 使用MinIO作为Azure网关 false
azuregateway.replicas 要并行运行的Azure网关实例数 4
gcsgateway.enabled 将MinIO用作Google Cloud Storage网关 false
gcsgateway.gcsKeyJson 服务帐户密钥的凭证json文件 ""
gcsgateway.projectId Google云端专案ID ""
ossgateway.enabled 将MinIO用作阿里云对象存储服务网关 false
ossgateway.replicas 要并行运行的OSS网关实例数 4
ossgateway.endpointURL OSS服务器端点。 ""
nasgateway.enabled 使用MinIO作为NAS网关 false
nasgateway.replicas PV上并行运行的NAS网关实例数 4
b2gateway.enabled 使用MinIO作为Backblaze B2网关 false
b2gateway.replicas 要并行运行的b2网关实例数 4
environment values.yaml文件中设置MinIO服务器相关的环境变量。MinIO容器在启动时将被传递这些变量。 MINIO_BROWSER: "on"
metrics.serviceMonitor.enabled 设置此项true以为Prometheus运算符创建ServiceMonitor false
metrics.serviceMonitor.additionalLabels 可以使用的其他标签,以便Prometheus可以发现ServiceMonitor {}
metrics.serviceMonitor.namespace 在其中创建ServiceMonitor的可选名称空间 nil
metrics.serviceMonitor.interval 刮擦间隔。如果未设置,则使用Prometheus默认刮擦间隔 nil
metrics.serviceMonitor.scrapeTimeout 刮除超时。如果未设置,则使用Prometheus默认的抓取超时 nil

上面的某些参数映射到MinIO DockerHub映像中定义的env变量。

您可以使用的--set key=value[,key=value]参数指定每个参数helm install。例如,

$ helm install --name my-release \
  --set persistence.size=100Gi \
    /minio

上面的命令部署具有100Gi后备持久卷的MinIO服务器。

或者,您可以提供一个YAML文件,该文件在安装图表时指定参数值。例如,

$ helm install --name my-release -f values.yaml /minio

提示:您可以使用默认值。

分布式MinIO

该图表默认情况下以独立模式配置MinIO服务器。为了在规定MinIO服务器分布式模式,设定的mode领域distributed

$ helm install --set mode=distributed /minio

这将MinIO服务器配置为具有4个节点的分布式模式。要更改分布式MinIO服务器中的节点数,请设置replicas字段,

$ helm install --set mode=distributed,replicas=8 /minio

这将MinIO服务器配置为具有8个节点的分布式模式。请注意,该replicas值应为最小值4,您可以运行的服务器数量没有限制。

您还可以通过添加新区域来扩展现有部署,以下命令将创建总共16个节点,每个区域运行8个节点。

$ helm install --set mode=distributed,replicas=8,zones=2 /minio

适用于分布式MinIO的StatefulSet限制

  1. StatefulSet需要持久存储,因此persistence.enabledmode设置为时,该标志将被忽略distributed
  2. 卸载分布式MinIO版本时,您需要手动删除与StatefulSet关联的卷。

NAS网关

先决条件

NAS网关模式下的MinIO可用于创建由单个PVReadWriteMany模式支持的多个MinIO实例。当前很少有Kubernetes批量插件支持ReadWriteMany模式。要使用Helm图表部署MinIO NAS网关,您需要使用支持的卷插件之一运行持久卷。本文档
概述了在Kubernetes集群中创建NFS PV的步骤。

设置NAS网关MinIO实例

要以NAS网关模式配置MinIO服务器,请将nasgateway.enabled字段设置为true

$ helm install --set nasgateway.enabled=true /minio

这将提供4个由单个存储支持的MinIO NAS网关实例。要更改您的MinIO部署中的实例数,请设置replicas字段,

$ helm install --set nasgateway.enabled=true,nasgateway.replicas=8 /minio

这为MinIO NAS网关提供了8个实例。

坚持不懈

该图表提供了PersistentVolumeClaim并将相应的持久卷安装到默认位置/export。您需要在Kubernetes集群中可用的物理存储才能正常工作。如果您愿意使用emptyDir,请通过以下方式禁用PersistentVolumeClaim:

$ helm install --set persistence.enabled=false /minio

“ emptyDir卷是在将Pod分配给节点时首先创建的,并且只要该Pod在该节点上运行就存在。当出于任何原因从节点删除Pod时,emptyDir中的数据将被永久删除。 ”

现有的PersistentVolume索赔

如果持久卷声明已存在,请在安装期间指定它。

  1. 创建PersistentVolume
  2. 创建PersistentVolumeClaim
  3. 安装图表
$ helm install --set persistence.existingClaim=PVC_NAME /minio

网络政策

要为MinIO启用网络策略,
请安装可实现Kubernetes
NetworkPolicy规范的网络插件,
并将其设置networkPolicy.enabledtrue

对于Kubernetes v1.5和v1.6,还必须通过设置
DefaultDeny名称空间注释来打开NetworkPolicy 。注意:这将对名称空间中的所有Pod强制执行策略:

kubectl annotate namespace default "net.beta.kubernetes.io/network-policy={\"ingress\":{\"isolation\":\"DefaultDeny\"}}"

启用NetworkPolicy后,流量将仅限于端口9000。

要获得更精确的政策,请设置networkPolicy.allowExternal=true。这将
只允许带有生成的客户端标签的Pod连接到MinIO。
该标签将显示在成功安装的输出中。

现有秘密

您可以提供一个预先存在的机密,而不是让此图表为您创建机密,
就像现有的PersistentVolumeClaim。

首先,创建秘密:

$ kubectl create secret generic my-minio-secret --from-literal=accesskey=foobarbaz --from-literal=secretkey=foobarbazqux

然后安装图表,指定要使用现有机密:

$ helm install --set existingSecret=my-minio-secret /minio

秘密中应包含以下字段

  1. accesskey -访问密钥ID
  2. secretkey -秘密钥匙
  3. gcs_key.json-如果您使用的是GCS网关功能,则为GCS密钥。这是可选的。

配置TLS

要为MinIO容器启用TLS,请从CA获取TLS证书或创建自签名证书。在创建/获取证书时,请确保在Kubernetes StatefulSet中(对于分布式MinIO设置)根据标准DNS命名约定设置相应的域名。然后使用创建秘密

$ kubectl create secret generic tls-ssl-minio --from-file=path/to/private.key --from-file=path/to/public.crt

然后安装图表,并指定要使用TLS密码:

$ helm install --set tls.enabled=true,tls.certSecret=tls-ssl-minio /minio

将环境变量传递给MinIO容器

要在通过Helm图表进行部署时将环境变量传递给MinIO容器,请使用以下命令行格式

$ helm install --set environment.MINIO_BROWSER=on,environment.MINIO_DOMAIN=domain-name /minio

您可以使用上述格式添加所需数量的环境变量。只需environment.=set标志下添加即可。

安装后创建存储桶

安装图表,指定要在安装后创建的存储桶:

$ helm install --set buckets[0].name=bucket1,buckets[0].policy=none,buckets[0].purge=false /minio

上面使用的配置参数的说明-

  1. buckets[].name -要创建的存储桶的名称,必须是长度> 0的字符串
  2. buckets[].policy -可以是任何一个|下载|上传|公开
  3. buckets[].purge -如果存储桶已存在,则清除

你可能感兴趣的:(k8s-docker)