milvus-logo
LFAI
Home
  • Leitfaden für die Verwaltung

Konfigurieren des S3-Zugriffs nach IAM-Rolle

In diesem Thema wird erläutert, wie Sie den S3-Zugriff nach IAM-Rolle konfigurieren, wenn Sie Milvus mit helm installieren. Weitere Einzelheiten finden Sie unter IAM-Rollen.

Bevor Sie beginnen

Zuordnen einer IAM-Rolle zu einem Kubernetes-Servicekonto

  • Erstellen Sie einen AWS S3-Bucket.

    Lesen Sie die Bucket-Namensregeln und beachten Sie die Namensregeln bei der Benennung Ihres AWS S3-Buckets.

    milvus_bucket_name="milvus-bucket-$(openssl rand -hex 12)"
    
    aws s3api create-bucket --bucket "$milvus_bucket_name" --region 'us-east-2' --acl private  --object-ownership ObjectWriter --create-bucket-configuration LocationConstraint='us-east-2'
    
    
    # Output
    #
    # "Location": "http://milvus-bucket-039dd013c0712f085d60e21f.s3.amazonaws.com/"
    
  • Erstellen Sie eine IAM-Richtlinie zum Lesen und Schreiben von Objekten innerhalb des oben erstellten Buckets. Ersetzen Sie den Bucket-Namen durch Ihren eigenen.

    echo '{
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::<bucket-name>"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:DeleteObject",
            "s3:GetObject",
            "s3:PutObject"
          ],
          "Resource": [
            "arn:aws:s3:::<bucket-name>/*"
          ]
        }
      ]
    }' > milvus-s3-policy.json
    
    aws iam create-policy --policy-name MilvusS3ReadWrite --policy-document file://milvus-s3-policy.json
    
    
    # Get the ARN from the command output as follows:
    # {
    #     "Policy": {
    #         "PolicyName": "MilvusS3ReadWrite",
    #         "PolicyId": "AN5QQVVPM1BVTFlBNkdZT",
    #         "Arn": "arn:aws:iam::12345678901:policy/MilvusS3ReadWrite",
    #         "Path": "/",
    #         "DefaultVersionId": "v1",
    #         "AttachmentCount": 0,
    #         "PermissionsBoundaryUsageCount": 0,
    #         "IsAttachable": true,
    #         "CreateDate": "2023-11-16T06:00:01+00:00",
    #        "UpdateDate": "2023-11-16T06:00:01+00:00"
    #     }
    # }    
    
  • Erstellen Sie eine IAM-Rolle und verknüpfen Sie diese mit einem Kubernetes-Service-Konto. Ersetzen Sie your-account-id durch Ihre Konto-ID.

eksctl create iamserviceaccount --name milvus-s3-access-sa --namespace milvus --cluster milvus-eks-cluster --role-name milvus-s3-access-sa \
    --attach-policy-arn arn:aws:iam::<your-account-id>:policy/MilvusS3ReadWrite --approve

Überprüfen Sie die Einrichtung der Rolle und des Dienstkontos

Siehe dazu IAM-Rollen.

  • Bestätigen Sie, dass die Vertrauensrichtlinie der IAM-Rolle korrekt konfiguriert ist.
aws iam get-role --role-name milvus-s3-access-sa --query Role.AssumeRolePolicyDocument
# An example output is as follows
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:default:my-service-account",
                    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
                }
            }
        }
    ]
}
  • Vergewissern Sie sich, dass die Richtlinie, die Sie in einem früheren Schritt an Ihre Rolle angehängt haben, an die Rolle angehängt ist.
aws iam list-attached-role-policies --role-name milvus-s3-access-sa --query 'AttachedPolicies[].PolicyArn' --output text
# An example output is as follows
arn:aws:iam::12345678901:policy/MilvusS3ReadWrite
  • Zeigen Sie die Standardversion der Richtlinie an.
export policy_arn='arn:aws:iam::12345678901:policy/MilvusS3ReadWrite'
aws iam get-policy --policy-arn $policy_arn
# An example output is as follows
{
    "Policy": {
        "PolicyName": "MilvusS3ReadWrite",
        "PolicyId": "EXAMPLEBIOWGLDEXAMPLE",
        "Arn": "arn:aws:iam::12345678901:policy/MilvusS3ReadWrite",
        "Path": "/",
        "DefaultVersionId": "v2",
        [...]
    }
}
  • Überprüfen Sie den Inhalt der Richtlinie, um sicherzustellen, dass die Richtlinie alle Berechtigungen enthält, die Ihr Pod benötigt. Ersetzen Sie ggf. 1 im folgenden Befehl durch die Version, die in der vorherigen Ausgabe zurückgegeben wurde.
aws iam get-policy-version --policy-arn $policy_arn --version-id v2
# An example output is as follows
{
    "PolicyVersion": {
        "Document": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "s3:GetObject",
                        "s3:PutObject",
                        "s3:ListBucket",
                        "s3:DeleteObject"
                    ],
                    "Resource": [
                        "arn:aws:s3:::<bucket-name>",
                        "arn:aws:s3:::<bucket-name>/*"
                    ]
                }
            ]
        },
        [...]
    }
}
  • Vergewissern Sie sich, dass das Kubernetes-Dienstkonto mit der Rolle vermerkt ist.
kubectl describe serviceaccount milvus-s3-access-sa -n milvus
# An example output is as follows
Name:                milvus-s3-access-sa
Namespace:           milvus
Labels:              app.kubernetes.io/managed-by=eksctl
Annotations:         eks.amazonaws.com/role-arn: arn:aws:iam::12345678901:role/milvus-s3-access-sa
[...]

Milvus bereitstellen

In dieser Anleitung werden wir Milvus Helm Charts verwenden, um einen Milvus-Cluster bereitzustellen. Sie finden die Charts hier.

  • Milvus Helm Chart Repo hinzufügen.
helm repo add milvus https://zilliztech.github.io/milvus-helm/
helm repo update
  • Bereiten Sie die Milvus-Konfigurationsdatei milvus.yaml vor, und ersetzen Sie <bucket-name> durch den Namen des oben erstellten Buckets.
cluster:
  enabled: true

service:
  type: LoadBalancer
  port: 19530
  annotations: 
    service.beta.kubernetes.io/aws-load-balancer-type: external
    service.beta.kubernetes.io/aws-load-balancer-name: milvus-service
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
    service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip

serviceAccount:
  create: false
  name: milvus-s3-access-sa

minio:
  enabled: false

externalS3:
  enabled: true
  host: "s3.us-east-2.amazonaws.com"
  port: "443"
  useSSL: true
  bucketName: "<bucket-name>"
  useIAM: true
  cloudProvider: "aws"
  iamEndpoint: ""

rootCoordinator:
  replicas: 2
  activeStandby:
    enabled: true
  resources: 
    limits:
      cpu: 1
      memory: 2Gi

indexCoordinator:
  replicas: 2
  activeStandby:
    enabled: true
  resources: 
    limits:
      cpu: "0.5"
      memory: 0.5Gi

queryCoordinator:
  replicas: 2
  activeStandby:
    enabled: true
  resources: 
    limits:
      cpu: "0.5"
      memory: 0.5Gi

dataCoordinator:
  replicas: 2
  activeStandby:
    enabled: true
  resources: 
    limits:
      cpu: "0.5"
      memory: 0.5Gi

proxy:
  replicas: 2
  resources: 
    limits:
      cpu: 1
      memory: 2Gi  
  • Installieren Sie Milvus.
helm upgrade --install milvus-demo milvus/milvus -n milvus -f milvus.yaml

Überprüfen Sie die Installation

Bitte lesen Sie Verify-the-installation.

Übersetzt vonDeepLogo

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

War diese Seite hilfreich?