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

MinIO Multi Cloud Object Storage Available on 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 社区