背景
milvus会将元信息存放在etcd中,文件存放在minio中。如果自建minio,需要随着使用量增加,扩容磁盘较为麻烦。官方也提供了S3云提供商("aws", "gcp", "aliyun")的方式存放文件。本文为阿里云 OSS 存储方式实践。
准备资源
- 阿里云ack集群
- 阿里云OSS bucket
创建阿里云OSS Bucket
创建Bucket milvus-orrn
开启阿里云ACK RRSA功能
阿里云文档地址:www.alibabacloud.com/help/zh/ack…
RRSA功能目前仅支持1.22及以上版本的集群,即ACK标准版、ACK Pro版、ASK标准版和ASK Pro版集群。
启用RRSA功能
- 登录容器服务管理控制台。
- 在控制台左侧导航栏,单击集群。
- 在集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群详情页面,单击基本信息页签,然后在集群信息区域单击RRSA OIDC对应的启用RRSA。
- 在弹出的启用RRSA对话框,单击确定。
在基本信息区域,当集群状态由更新中变为运行中后,表明该集群的RRSA特性已变更完成,RRSA OIDC右侧将显示OIDC提供商的URL链接和ARN信息。
使用RRSA功能
-
安装ack-pod-identity-webhook组件。
a. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理。
b. 在组件管理页面,单击安全页签,找到ack-pod-identity-webhook组件,单击组件右下方的安装。
c. 在提示对话框确认组件信息后,单击确定。
配置权限
创建RAM账号
- 创建ram账号
- 授权sts权限
创建RAM角色
创建一个名为rrsa-role-milvus的RAM角色。
- 使用阿里云账号登录RAM控制台。
- 在左侧导航栏,选择身份管理 > 角色,然后在角色页面,单击创建角色。
- 在创建角色面板,选择可信实体类型为身份提供商,然后单击下一步。
- 在配置角色页面,配置如下角色信息后,单击完成。
本示例配置如下。
| 配置项 | 描述 | 本文示例参数 |
|---|---|---|
| 角色名称 | demo-role-for-rrsa。 | rrsa-role-milvus |
| 备注 | 选填有关该角色的备注信息。 | rrsa-role-milvus |
| 身份提供商类型 | OIDC。 | OIDC |
| 选择身份提供商 | ack-rrsa-<cluster_id>。其中,<cluster_id>为您的集群ID。 | ack-rrsa-c6e78616e09974a7fa143db06d5ccbd53 |
| 限制条件 | oidc:iss:保持默认。 oidc:aud:选择sts.aliyuncs.com。 oidc:sub:条件判定方式选择StringEquals,值的格式为system:serviceaccount:<namespace>:<serviceAccountName> 。 <namespace>:应用所在的命名空间。 <serviceAccountName>:服务账户名称。 根据测试应用的信息,此处需要填入 system:serviceaccount:rrsa-demo:demo-sa。 | oidc:iss oidc-ack-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/c6e78616e09… oidc:aud sts.aliyuncs.com oidc:sub system:serviceaccount:milvus:milvus-serviceaccount |
以下为配置截图:
为RAM角色授权
需授权以下权限:
- bucket(milvus-orrn)读写权限。示例:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "oss:*",
"Resource": [
"acs:oss:*:*:milvus-orrn",
"acs:oss:*:*:milvus-orrn/*"
]
},
{
"Action": [
"oss:Get*",
"oss:List*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
配置namespace
为命名空间(milvus)增加标签pod-identity.alibabacloud.com/injection: 'on'
部署方式
helm方式部署
- 添加chart仓
$ helm repo add milvus https://milvus-io.github.io/milvus-helm/
- 更新chart仓
$ helm repo update
- 部署milvus
helm upgrade --install milvus milvus/milvus -n milvus -f values.yaml
#values.yaml
image:
all:
repository: milvusdb/milvus
tag: v2.2.13
tools:
repository: milvusdb/milvus-config-tool
tag: v0.1.1
serviceAccount:
create: true
name: milvus-serviceaccount
annotations:
pod-identity.alibabacloud.com/role-name: rrsa-role-milvus # 此处为RAM角色名称
standalone:
replicas: 0
extraConfigFiles:
user.yaml: |+
common:
security:
authorizationEnabled: true
proxy:
replicas: 1
rootCoordinator:
replicas: 1
queryCoordinator:
replicas: 1
queryNode:
replicas: 1
indexCoordinator:
replicas: 1
indexNode:
replicas: 1
dataCoordinator:
replicas: 1
dataNode:
replicas: 1
minio:
enabled: false
externalS3:
enabled: true
host: oss-cn-hangzhou-internal.aliyuncs.com #阿里云OSS endpoint地址
port: 443 # 80端口报错,必须使用443
accessKey: LT******************** #阿里云Ram账号ak
secretKey: ********************** #阿里云Ram账号ak
useSSL: true
bucketName: milvus-orrn #阿里云bucket名称
rootPath: "" #根据个人需求填写路径,可不填
useIAM: true #aliyun必须使用IAM方式
cloudProvider: aliyun #配置为aliyun
etcd:
enabled: true
name: etcd
replicaCount: 3
image:
repository: "milvusdb/etcd"
tag: "3.5.5-r2"
persistence:
enabled: true
storageClass: alicloud-nas-cnfs
accessMode: ReadWriteOnce
size: 20Gi
pulsar:
enabled: true
zookeeper:
replicaCount: 1
resources:
requests:
memory: 512Mi
cpu: 50m
limits:
memory: 2048Mi
cpu: 1
volumes:
persistence: true
data:
name: data
size: 20Gi
storageClassName: alicloud-nas-cnfs
configData:
PULSAR_MEM: >
-Xms512m
-Xmx512m
bookkeeper:
replicaCount: 2
volumes:
journal:
name: journal
size: 20Gi
storageClassName: alicloud-nas-cnfs
ledgers:
name: ledgers
size: 20Gi
storageClassName: alicloud-nas-cnfs
resources:
requests:
memory: 512Mi
cpu: 10m
limits:
memory: 2048Mi
cpu: 1
configData:
PULSAR_MEM: >
-Xms512m
-Xmx512m
-XX:MaxDirectMemorySize=512m
autorecovery:
resources:
requests:
memory: 256Mi
cpu: 50m
limits:
memory: 1024Mi
cpu: 1
broker:
component: broker
replicaCount: 1
resources:
requests:
memory: 512Mi
cpu: 20m
limits:
memory: 2048Mi
cpu: 1
configData:
PULSAR_MEM: >
-Xms512m
-Xmx512m
-XX:MaxDirectMemorySize=512m
proxy:
replicaCount: 1
resources:
requests:
memory: 256Mi
cpu: 10m
limits:
memory: 1024Mi
cpu: 1
configData:
PULSAR_MEM: >
-Xms256m -Xmx256m
PULSAR_GC: >
-XX:MaxDirectMemorySize=256m
httpNumThreads: "10"
attu:
enabled: true
name: attu
image:
repository: zilliz/attu
tag: v2.2.7
metrics:
enabled: true
serviceMonitor:
enabled: true
interval: "15s"