MinIO 多云对象存储现已在 AWS Marketplace 上市

MinIO 的多云凭据现已得到广泛认可,数百万次部署遍布公有云、私有云和边缘,仅 AWS 上就接近百万次。
我们将 MinIO 添加到 AWS Marketplace 的目标是让客户更容易在最大的公有云中运行 MinIO,并在过程中获得运营和经济效益。
作为领先的云提供商,AWS 在许多多云策略中占据突出地位。
我们对 AWS Marketplace 的方法是有主见的,并且以 Kubernetes 为中心。我们仔细考虑了客户的需求,并开发了一种基于 YAML 的方法,只需点击几下即可实现。
高级用户可以继续自行构建解决方案,但我们认为,对于大多数市场而言,“点击几下即可完成”的方法将提供弹性、安全、可扩展性和运营效率的最佳组合。使用 MinIO Operator 和 Operator Console 管理这些环境的能力将进一步简化 Day 2 操作。
为了为我们的客户提供最简单、最流畅的 MinIO-on-AWS 体验,我们对 220 多种 AWS 实例类型进行了 TCO 分析,以确保我们为您的对象存储选择最佳的基础设施。我们考虑了存储类型、CPU 类型、核心和网络性能等因素,并计算了使用该实例类型作为 MinIO 节点的每 GB 成本。然后,我们在具有最佳 TCO 的实例上将 MinIO 部署为小型集群。这项工作使我们得出结论:在优化性能时,带有 NVMe 的 i3en.12xlarge 系列实例,以及在优化容量时,带有 HDD 的 d3en.12xlarge 系列实例,提供了最佳的 TCO/性能比。
随着存储需求不断增长,我们让客户能够轻松扩展 - 只需以 4 个 AWS 实例的倍数添加 MinIO 集群即可。配置额外的虚拟机以满足您的容量和擦除编码需求,然后根据满足您财务需求的条款购买它们。例如,通过签订三年期预留实例,可以节省高达 58% 的费用,提前付款可以节省更多。由于涉及许多因素,实例定价可能很复杂,如有任何疑问,请随时通过“联系销售”按钮与我们联系以获取帮助。
您可以利用 MinIO 先进的 数据生命周期功能 来启用存储分层 - 并实现比单纯依赖 S3 本身更好的性能和更低的成本!在 i3en.12xlarge 上为 NVMe 配置一个快速的 MinIO 主存储集群,然后分层到在 d3en.12xlarge 上用于 HDD 的更便宜且速度较慢的 MinIO 次级存储集群,最后将性能敏感度最低的数据分层到更便宜的 AWS S3 Glacier。
也存在经济效益。虽然这是一篇技术文章,但您可以在其他地方找到有关 在 AWS 内部运行 MinIO 提供的成本节省、运营节省和避免锁定方面的更多信息。
在 AWS Marketplace 上开始使用 MinIO 多云对象存储
先决条件
您必须在 AWS Marketplace 中为 MinIO 创建订阅,否则由于缺少授权,此设置的自动化将无法工作。
您还必须安装
配置参数
要开始使用,您将需要为您的集群提供三个基本配置参数:在下面输入它们将填充必要的命令,以通过 EKS 部署 MinIO。
步骤 1:设置集群
eksctl create cluster --config-file minio-cluster.yaml
其中 minio-cluster.yaml 文件如下所示
apiVersion: eksctl.io/v1alpha5
availabilityZones:
- us-west-2c
- us-west-2d
- us-west-2b
cloudWatch:
clusterLogging: { }
iam:
vpcResourceControllerPolicy: true
withOIDC: false
kind: ClusterConfig
managedNodeGroups:
- amiFamily: AmazonLinux2
desiredCapacity: 2
maxSize: 2
minSize: 2
disableIMDSv1: false
disablePodIMDS: false
iam:
withAddonPolicies:
albIngress: false
appMesh: false
appMeshPreview: false
autoScaler: false
certManager: false
cloudWatch: false
ebs: false
efs: false
externalDNS: false
fsx: false
imageBuilder: false
xRay: false
instanceSelector: { }
instanceType: m5.xlarge
labels:
alpha.eksctl.io/cluster-name: minio-cluster
alpha.eksctl.io/nodegroup-name: ng-minio-mngt
alpha.min.io/nodegroup-template: template
name: ng-minio-mngt
privateNetworking: false
releaseVersion: ""
securityGroups:
withLocal: null
withShared: null
ssh:
allow: false
publicKeyPath: ""
tags:
alpha.eksctl.io/nodegroup-name: ng-minio-mngt
alpha.eksctl.io/nodegroup-type: managed
volumeIOPS: 3000
volumeSize: 80
volumeThroughput: 125
volumeType: gp3
preBootstrapCommands:
- echo IyEvYmluL2Jhc2gKI3NldCAteAoKbW91bnRfZGV2aWNlKCl7CkRFVklDRT0iL2Rldi8kMSIKVk9MVU1FX05BTUU9JDIKTU9VTlRfUE9JTlQ9JDMKCmZvcm1hdF9kZXZpY2UoKSB7CiAgZWNobyAiRm9ybWF0dGluZyAkREVWSUNFIgogIG1rZnMueGZzIC1pbWF4cGN0PTI1IC1mIC1MICRNT1VOVF9QT0lOVCAkREVWSUNFCn0KY2hlY2tfZGV2aWNlKCkgewogIGlmIFsgLWYgIi9ldGMvc3lzdGVtZC9zeXN0ZW0vJE1PVU5UX1BPSU5ULm1vdW50IiBdOyB0aGVuCiAgICBlY2hvICJEZXZpY2UgJE1PVU5UX1BPSU5UICgkREVWSUNFKSBleGlzdHMiCiAgICBlY2hvICJObyBhY3Rpb25zIHJlcXVpcmVkLi4uIgogIGVsc2UKICAgIGVjaG8gIiRNT1VOVF9QT0lOVC5tb3VudCB3YXMgbm90IGZvdW5kLCBjcmVhdGluZyB2b2x1bWUiCiAgICBmb3JtYXRfZGV2aWNlCiAgZmkKfQpjaGVja19tb3VudCgpIHsKICBpZiBbIC1mICIvZXRjL3N5c3RlbWQvc3lzdGVtLyRNT1VOVF9QT0lOVC5tb3VudCIgXTsgdGhlbgogICAgZWNobyAiRm91bmQgJE1PVU5UX1BPSU5ULm1vdW50IGluIC9ldGMvc3lzdGVtZC9zeXN0ZW0vIgogICAgZWNobyAiTm8gYWN0aW9ucyByZXF1aXJlZC4uLiIKICBlbHNlCiAgICBlY2hvICIkTU9VTlRfUE9JTlQubW91bnQgd2FzIG5vdCBmb3VuZCBpbiAvZXRjL3N5c3RlbWQvc3lzdGVtLyBhZGRpbmcgaXQiCiAgICBta2RpciAtcCAvJE1PVU5UX1BPSU5UCiAgICAKICAgIGVjaG8gIltVbml0XSIgPj4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS8kTU9VTlRfUE9JTlQubW91bnQKICAgIGVjaG8gIkRlc2NyaXB0aW9uPU1vdW50IFN5c3RlbSBCYWNrdXBzIERpcmVjdG9yeSIgPj4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS8kTU9VTlRfUE9JTlQubW91bnQKICAgIGVjaG8gIiIgPj4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS8kTU9VTlRfUE9JTlQubW91bnQKICAgIGVjaG8gIltNb3VudF0iID4+IC9ldGMvc3lzdGVtZC9zeXN0ZW0vJE1PVU5UX1BPSU5ULm1vdW50CiAgICBlY2hvICJXaGF0PUxBQkVMPSRNT1VOVF9QT0lOVCIgPj4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS8kTU9VTlRfUE9JTlQubW91bnQKICAgIGVjaG8gIldoZXJlPS8kTU9VTlRfUE9JTlQiID4+IC9ldGMvc3lzdGVtZC9zeXN0ZW0vJE1PVU5UX1BPSU5ULm1vdW50CiAgICBlY2hvICJUeXBlPXhmcyIgPj4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS8kTU9VTlRfUE9JTlQubW91bnQKICAgIGVjaG8gIk9wdGlvbnM9bm9hdGltZSIgPj4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS8kTU9VTlRfUE9JTlQubW91bnQKICAgIGVjaG8gIiIgPj4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS8kTU9VTlRfUE9JTlQubW91bnQKICAgIGVjaG8gIltJbnN0YWxsXSIgPj4gL2V0Yy9zeXN0ZW1kL3N5c3RlbS8kTU9VTlRfUE9JTlQubW91bnQKICAgIGVjaG8gIldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0IiA+PiAvZXRjL3N5c3RlbWQvc3lzdGVtLyRNT1VOVF9QT0lOVC5tb3VudAoKICAgIHN5c3RlbWN0bCBlbmFibGUgJE1PVU5UX1BPSU5ULm1vdW50CiAgICBzeXN0ZW1jdGwgc3RhcnQgJE1PVU5UX1BPSU5ULm1vdW50CiAgZmkKfQpMQUJFTD0kKGJsa2lkIC1MICRWT0xVTUVfTkFNRSkKY2hlY2tfZGV2aWNlCmNoZWNrX21vdW50CnN5c3RlbWN0bCBkYWVtb24tcmVsb2FkCn0KCmZvciBpIGluIGBsc2JsayAtZCB8IGdyZXAgLXYgTkFNRSB8IGdyZXAgLXYgbnZtZTAgfCBhd2sgJ3twcmludCAkMX0nYDsgZG8KICBtbnRfcG9pbnQ9YGVjaG8gJGkgfCBzZWQgLWUgJ3MvbnZtZS9kaXNrL2cnIC1lICdzL24xLy9nJ2AKICBtb3VudF9kZXZpY2UgJGkgJGkgJG1udF9wb2ludDsKZG9uZQo= | base64 --decode > mount_drives.sh
- chmod +x mount_drives.sh
- ./mount_drives.sh
metadata:
name: minio-cluster
region: us-west-2
version: "1.21"
privateCluster:
enabled: false
skipEndpointCreation: false
vpc:
autoAllocateIPv6: false
cidr: 192.168.0.0/16
clusterEndpoints:
privateAccess: false
publicAccess: true
manageSharedNodeSecurityGroupRules: true
nat:
gateway: Single
步骤 2. 设置所需的角色、策略和连接器
所有这些都限定在名为 minio-cluster
的特定集群中,位于 us-west-2
区域和帐户号 000000000000
中,因此请确保在“配置参数”步骤中更新这些值。
2.1 创建 IAM 策略
aws iam create-policy \
--policy-name minio-eks-minio-cluster-group-scaling \
--policy-document file://iam-policy.json
其中 iam-policy.json 文件如下所示
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Action": [
"eks:DescribeNodegroup",
"eks:ListNodegroups"
],
"Resource": [
"arn:aws:eks:*:000000000000:nodegroup/minio-cluster/*/*",
"arn:aws:eks:us-west-2:000000000000:cluster/minio-cluster"
]
},
{
"Sid": "",
"Effect": "Allow",
"Action": "eks:UpdateNodegroupConfig",
"Resource": [
"arn:aws:eks:*:000000000000:nodegroup/minio-cluster/*/*",
"arn:aws:eks:us-west-2:000000000000:cluster/minio-cluster"
]
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"eks:CreateNodegroup",
"eks:TagResource"
],
"Resource": "arn:aws:eks:us-west-2:000000000000:cluster/minio-cluster"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"iam:PassRole",
"iam:ListAttachedRolePolicies"
],
"Resource": "arn:aws:iam::000000000000:role/eksctl-minio-cluster*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"iam:GetRole"
],
"Resource": "*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:DescribeSubnets",
"autoscaling:Describe*",
"ec2:DescribeLaunchTemplateVersions"
],
"Resource": "*"
},
{
"Sid": "",
"Effect": "Allow",
"Action": [
"ec2:CreateTags"
],
"Resource": "*"
}
}
2.2 创建 OIDC 提供程序
eksctl utils associate-iam-oidc-provider --region=us-west-2 --cluster=minio-cluster --approve
2.3 创建信任 + 角色 + 服务帐户
eksctl create iamserviceaccount \
--name integration-sa \
--namespace minio-operator \
--cluster minio-cluster \
--attach-policy-arn arn:aws:iam::000000000000:policy/minio-eks-minio-cluster-group-scaling \
--approve \
--override-existing-serviceaccounts
步骤 3. 安装 Operator
kubectl apply -k github.com/minio/operator/resources/\?ref\=v4.3.7
3.1 获取 JWT 以登录 Operator UI
kubectl -n minio-operator get secret $(kubectl -n minio-operator get serviceaccount console-sa -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode
步骤 4. 将端口转发到 Operator UI
kubectl -n minio-operator port-forward svc/console 9090
4.1 打开 UI 并创建租户
转到 http://localhost:9090,输入上一步中的 JWT 并创建一个租户。
现在点击“创建租户”。
填写所需的 MinIO 租户大小和存储类型
步骤 5. 注册 MinIO 支持
要获得 24/7 支持,请发送电子邮件至 support@min.io,并附上您的 AWS 账户编号以开始使用。
MinIO 是多云成功的关键
立即开始使用 AWS Marketplace 上的 MinIO。如果您有任何疑问,请发送邮件至 hello@min.io 或加入 Slack 社区。