Docs 菜单
Docs 主页
/ /
MongoDB Atlas Kubernetes Operator

将 Atlas Kubernetes Operator v 1 .x 升级到 v 2 .x

您可以按照此升级步骤从 v1.x Atlas Kubernetes Operator 部署进行升级。 为此,您需要更新现有的 MongoDB 自定义资源规范,因为v2.x中的 YAML 字段名称已更改,所有凭证现在都作为 Kubernetes 密钥传递。 此外,您必须启动一个新的Kubernetes集群,在其中部署Atlas Kubernetes Operator v2.x,然后将对现有MongoDB Atlas数据库实例的管理过渡到这个新的Atlas Kubernetes Operator v2.x 部署。

1

部署这个新集群后,您现在就有了两个 Kubernetes 集群。 以下步骤要求您对每个 Kubernetes 集群运行kubectl命令。 为简化此过程,您可以使用以下命令配置每个 Kubernetes 上下文:

kubectl config set-cluster old --server=https://<OLD_CLUSTER_ULR>
kubectl config set-context old --cluster=old
kubectl config set-cluster new --server=https://<NEW_CLUSTER_ULR>
kubectl config set-context new --cluster=new
2

将以下命令中的<version>占位符替换为所需的 Atlas Kubernetes Operator 版本,然后运行该命令以将 Atlas Kubernetes Operator 部署到新预配的 Kubernetes 集群。

kubectl use-context new
kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-atlas-kubernetes/<version>/deploy/all-in-one.yaml
3

v1.x Atlas Kubernetes Operator 部署中的副本数扩展到“旧” Kubernetes 集群中的0 ,这样它将不再监控和更新关联的 MongoDB Atlas 部署,具体方法是运行:

kubectl use-context old
kubectl scale --replicas=0 deployment.apps/mongodb-atlas-operator -n mongodb-atlas-system
4

更新现有 YAML 定义以与以下示例保持一致,以便它们根据需要引用以下 API 密钥和档案:

CR 部分
云服务提供商
v1.x
v2.x
.spec.alertConfiguration.notifications
APIToken
APITokenRef
DatadogAPIKey
DatadogAPIKeyRef
FlowdockTokenAPI
FlowdockTokenAPIRef
OpsGenieAPIKey
OpsGenieAPIKeyRef
VictorOpsAPIKey
VictorOpsSecretRef
VictorOpsRoutingKey
VictorOpsSecretRef (预计具有两个VictorOps值)
.spec.encryptionAtRest
AWS
AccessKeyID, SecretAccessKey , CustomerMasterKeyID , RoleID
CloudProviderAccessRoles
AZURE
SubscriptionID, KeyVaultName , KeyIdentifier , Secret
secretRef
GCP
ServiceAccountKey, KeyVersionResourceID
secretRef

通过在前面步骤中进行的更新,生成的 CRD 可能类似于以下示例:

apiVersion: atlas.mongodb.com/v1
kind: AtlasProject
metadata:
name: my-project
labels:
app.kubernetes.io/version: 1.6.0
spec:
name: Test Atlas Operator Project
projectIpAccessList:
- cidrBlock: "<Public-CIDR-of-K8s-Cluster>"
comment: "This CIDR is added to your Atlas Project's Access List."
5
  • 如果现有 YAML 定义包含advancedDeploymentSpec ,请将该部分重命名为deploymentSpec

  • 如果现有 YAML 定义包含deploymentSpec ,请更新该部分以与以下deploymentSpec示例保持一致。

  • 如果现有 YAML 定义包含serverlessSpec ,则无需进行任何更改。

通过在前面步骤中进行的更新,生成的 CRD 可能类似于以下示例:

deploymentSpec:
clusterType: REPLICASET
name: advanced-deployment-2
mongoDBMajorVersion: "5.0"
replicationSpecs:
- regionConfigs:
regionName: EASTERN_US
- electableSpecs:
nodeCount: 4
instanceSize: M10
autoScaling:
compute:
scaleDownEnabled: true
enabled: true
minInstanceSize: M10
maxInstanceSize: M20
providerName: GCP
backingProviderName: GCP
priority: 7
regionName: US_EAST_2
- electableSpecs:
nodeCount: 1
instanceSize: M10
autoScaling:
compute:
scaleDownEnabled: true
enabled: true
minInstanceSize: M10
maxInstanceSize: M20
providerName: AWS
backingProviderName: AWS
priority: 6
6

运行以下命令以部署更新的 Atlas Kubernetes Operator 资源:

kubectl use-context new
kubectl apply -f resource.yaml
7

在 Atlas Kubernetes Operator 2 .x 部署中将副本计数设置为1 ,以便新的 Atlas Kubernetes Operator 获取迁移的资源。 因为这些资源在语义上等同于现有的 AKO 1.9 .x 自定义资源,MongoDB Atlas 资源本身不会改变。

8

运行以下命令,验证新部署的自定义资源的状态:

kubectl use-context new
kubectl describe atlasprojects <your-project-name>
kubectl describe atlasdeployments <your-deployment-name>

后退

变更日志