De infrastructuur maken voor het uitvoeren van een MongoDB-cluster in Azure Kubernetes Service (AKS)
In dit artikel maakt u de vereiste infrastructuurbronnen om een MongoDB-cluster uit te voeren in Azure Kubernetes Service (AKS).
Vereisten
- Bekijk het overzicht voor het implementeren van een MongoDB-cluster op AKS.
- Een Azure-abonnement. Als u nog geen account hebt, kunt u een gratis account maken.
- Azure CLI versie 2.61.0. Zie Azure CLI installeren als u CLI wilt installeren of upgraden.
- Helm versie 3 of hoger. Zie Helm installeren om te installeren.
kubectl
, die Azure Cloud Shell standaard installeert.- Docker geïnstalleerd op uw lokale computer. Zie Docker downloaden om te installeren.
Omgevingsvariabelen instellen
Stel de vereiste omgevingsvariabelen in voor gebruik in deze handleiding:
random=$(echo $RANDOM | tr '[0-9]' '[a-z]')
export MY_LOCATION=australiaeast
export MY_RESOURCE_GROUP_NAME=myResourceGroup-rg-$(echo $MY_LOCATION)
export MY_ACR_REGISTRY=mydnsrandomname$(echo $random)
export MY_IDENTITY_NAME=ua-identity-123
export MY_KEYVAULT_NAME=vault-$(echo $random)-kv
export MY_CLUSTER_NAME=cluster-aks
export SERVICE_ACCOUNT_NAME=mongodb
export SERVICE_ACCOUNT_NAMESPACE=mongodb
export AKS_MONGODB_NAMESPACE=mongodb
export AKS_MONGODB_SECRETS_NAME=cluster-aks-mongodb-secrets
export AKS_MONGODB_CLUSTER_NAME=cluster-aks-mongodb
export AKS_MONGODB_SECRETS_ENCRYPTION_KEY=cluster-aks-mongodb-secrets-mongodb-encryption-key
export AKS_AZURE_SECRETS_NAME=cluster-aks-azure-secrets
export AKS_MONGODB_BACKUP_STORAGE_ACCOUNT_NAME=mongodbsa$(echo $random)
export AKS_MONGODB_BACKUP_STORAGE_CONTAINER_NAME=backups
Een brongroep maken
Maak een resourcegroep met behulp van de
az group create
opdracht.az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output table
Voorbeelduitvoer:
Location Name ------------- -------------------------------- australiaeast myResourceGroup-rg-australiaeast
Een identiteit maken voor toegang tot geheimen in Azure Key Vault
In deze stap maakt u een door de gebruiker toegewezen beheerde identiteit die externe geheimenoperator gebruikt voor toegang tot de MongoDB-wachtwoorden die zijn opgeslagen in Azure Key Vault.
Maak een door de gebruiker toegewezen beheerde identiteit met behulp van de
az identity create
opdracht.az identity create --name $MY_IDENTITY_NAME --resource-group $MY_RESOURCE_GROUP_NAME --output table export MY_IDENTITY_NAME_ID=$(az identity show --name $MY_IDENTITY_NAME -g $MY_RESOURCE_GROUP_NAME --query id -o tsv) export MY_IDENTITY_NAME_PRINCIPAL_ID=$(az identity show --name $MY_IDENTITY_NAME -g $MY_RESOURCE_GROUP_NAME --query principalId -o tsv) export MY_IDENTITY_NAME_CLIENT_ID=$(az identity show --name $MY_IDENTITY_NAME -g $MY_RESOURCE_GROUP_NAME --query clientId -o tsv)
Voorbeelduitvoer:
ClientId Location Name PrincipalId ResourceGroup TenantId ------------------------------------ ------------- --------------- ------------------------------------ -------------------------------- ------------------------------------ 00001111-aaaa-2222-bbbb-3333cccc4444 australiaeast ua-identity-123 aaaaaaaa-bbbb-cccc-1111-222222222222 myResourceGroup-rg-australiaeast aaaabbbb-0000-cccc-1111-dddd2222eeee
Een Azure Key Vault-exemplaar maken
Maak een Azure Key Vault-exemplaar met behulp van de
az keyvault create
opdracht.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output table export KEYVAULTID=$(az keyvault show --name $MY_KEYVAULT_NAME --query "id" --output tsv) export KEYVAULTURL=$(az keyvault show --name $MY_KEYVAULT_NAME --query "properties.vaultUri" --output tsv)
Voorbeelduitvoer:
Location Name ResourceGroup ------------- -------------- -------------------------------- australiaeast vault-cjcfc-kv myResourceGroup-rg-australiaeast
Een Azure Container Registry-exemplaar maken
Maak een Azure Container Registry-exemplaar om uw containerinstallatiekopieën op te slaan en te beheren met behulp van de
az acr create
opdracht.az acr create \ --name ${MY_ACR_REGISTRY} \ --resource-group $MY_RESOURCE_GROUP_NAME \ --sku Premium \ --location $MY_LOCATION \ --admin-enabled true \ --output table export MY_ACR_REGISTRY_ID=$(az acr show --name $MY_ACR_REGISTRY --resource-group $MY_RESOURCE_GROUP_NAME --query id -o tsv)
Voorbeelduitvoer:
NAME RESOURCE GROUP LOCATION SKU LOGIN SERVER CREATION DATE ADMIN ENABLED -------------------- -------------------------------- ------------- ------- ------------------------------- -------------------- --------------- mydnsrandomnamecjcfc myResourceGroup-rg-australiaeast australiaeast Premium mydnsrandomnamecjcfc.azurecr.io 2024-07-01T12:18:34Z True
Een Azure-opslagaccount maken
Maak een Azure-opslagaccount om de MongoDB-back-ups op te slaan met behulp van de
az acr create
opdracht.az storage account create --name $AKS_MONGODB_BACKUP_STORAGE_ACCOUNT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --sku Standard_ZRS --output table az storage container create --name $AKS_MONGODB_BACKUP_STORAGE_CONTAINER_NAME --account-name $AKS_MONGODB_BACKUP_STORAGE_ACCOUNT_NAME --output table export AKS_MONGODB_BACKUP_STORAGE_ACCOUNT_KEY=$(az storage account keys list --account-name $AKS_MONGODB_BACKUP_STORAGE_ACCOUNT_NAME --query "[0].value" -o tsv) az keyvault secret set --vault-name $MY_KEYVAULT_NAME --name AZURE-STORAGE-ACCOUNT-KEY --value $AKS_MONGODB_BACKUP_STORAGE_ACCOUNT_KEY
Voorbeelduitvoer:
AccessTier AllowBlobPublicAccess AllowCrossTenantReplication CreationTime EnableHttpsTrafficOnly Kind Location MinimumTlsVersion Name PrimaryLocation ProvisioningState ResourceGroup StatusOfPrimary ------------ ----------------------- ----------------------------- -------------------------------- ------------------------ --------- ------------- ------------------- -------------- ----------------- ------------------- -------------------------------- ----------------- Hot False False 2024-08-09T07:06:41.727230+00:00 True StorageV2 australiaeast TLS1_0 mongodbsabdibh australiaeast Succeeded myResourceGroup-rg-australiaeast available Created --------- True Name Value ------------------------- ---------------------------------------------------------------------------------------- AZURE-STORAGE-ACCOUNT-KEY xxx4tE3xxxxxxxxxxxxxxxxxxxxxxxxxxxx...
Een AKS-cluster maken
In de volgende stappen maakt u een AKS-cluster met een workloadidentiteit en OIDC-verlener (OpenID Connect) ingeschakeld. De workloadidentiteit geeft het serviceaccount externe geheimenoperator toestemming voor toegang tot de MongoDB-wachtwoorden die zijn opgeslagen in uw sleutelkluis.
Maak een AKS-cluster met behulp van de
az aks create
opdracht.az aks create \ --location $MY_LOCATION \ --name $MY_CLUSTER_NAME \ --tier standard \ --resource-group $MY_RESOURCE_GROUP_NAME \ --network-plugin azure \ --node-vm-size Standard_DS4_v2 \ --node-count 1 \ --nodepool-name systempool \ --nodepool-tags "pool=system" \ --auto-upgrade-channel stable \ --node-os-upgrade-channel NodeImage \ --attach-acr ${MY_ACR_REGISTRY} \ --enable-oidc-issuer \ --enable-workload-identity \ --zones 1 2 3 \ --generate-ssh-keys \ --output table
Voorbeelduitvoer:
AzurePortalFqdn CurrentKubernetesVersion DisableLocalAccounts DnsPrefix EnableRbac Fqdn KubernetesVersion Location MaxAgentPools Name NodeResourceGroup ProvisioningState ResourceGroup ResourceUid SupportPlan ------------------------------------------------------------------------------ -------------------------- ---------------------- ---------------------------------- ------------ ----------------------------------------------------------------------- ------------------- ------------- --------------- ----------- ------------------------------------------------------------- ------------------- -------------------------------- ------------------------ ------------------ cluster-ak-myresourcegroup--83a15f-46qdeqrv.portal.hcp.australiaeast.azmk8s.io 1.28.9 False cluster-ak-myResourceGroup--83a15f True cluster-ak-myresourcegroup--83a15f-46qdeqrv.hcp.australiaeast.azmk8s.io 1.28 australiaeast 100 cluster-aks MC_myResourceGroup-rg-australiaeast_cluster-aks_australiaeast Succeeded myResourceGroup-rg-australiaeast a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 KubernetesOfficial
Voeg een gebruikersknooppuntgroep toe aan de AKSc luster met behulp van de
az aks nodepool add
opdracht. In deze knooppuntgroep worden de MongoDB-pods uitgevoerd.az aks nodepool add \ --resource-group $MY_RESOURCE_GROUP_NAME \ --cluster-name $MY_CLUSTER_NAME \ --name userpool \ --node-vm-size Standard_DS4_v2 \ --node-count 3 \ --zones 1 2 3 \ --mode User \ --output table
Voorbeelduitvoer:
Name OsType KubernetesVersion VmSize Count MaxPods ProvisioningState Mode ---------- -------- ------------------- --------------- ------- --------- ------------------- ------ userpool Linux 1.28 Standard_DS4_v2 3 30 Succeeded User
Haal de URL van de OIDC-verlener op die moet worden gebruikt voor de configuratie van de workloadidentiteit met behulp van de
az aks show
opdracht.export OIDC_URL=$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --query oidcIssuerProfile.issuerUrl -o tsv)
Wijs de
AcrPull
rol toe aan de kubelet-identiteit met behulp van deaz role assignment create
opdracht.export KUBELET_IDENTITY=$(az aks show -g $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME -o tsv --query identityProfile.kubeletidentity.objectId) az role assignment create \ --assignee ${KUBELET_IDENTITY} \ --role "AcrPull" \ --scope ${MY_ACR_REGISTRY_ID} \ --output table
Voorbeelduitvoer:
CreatedBy CreatedOn Name PrincipalId PrincipalName PrincipalType ResourceGroup RoleDefinitionId RoleDefinitionName Scope UpdatedBy UpdatedOn ------------------------------------ -------------------------------- ------------------------------------ ------------------------------------ ------------------------------------ ---------------- -------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------ -------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------ -------------------------------- bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f 2024-07-01T12:23:20.749750+00:00 8247e9bb-bc6b-414f-98a6-4768dbb961ad 9686a88e-25bc-4b4c-b611-d1057a26acdc 0b40421c-343b-4986-b691-980d6154429e ServicePrincipal myResourceGroup-rg-australiaeast /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d AcrPull /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup-rg-australiaeast/providers/Microsoft.ContainerRegistry/registries/mydnsrandomnamecjcfc bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f 2024-07-01T12:23:20.749750+00:00
Verbinding maken met het AKS-cluster
Configureer
kubectl
deze om verbinding te maken met uw AKS-cluster met behulp van deaz aks get-credentials
opdracht.az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --overwrite-existing --output table
Percona-installatiekopieën uploaden naar Azure Container Registry
In deze sectie downloadt u de Percona-installatiekopieën van Docker Hub en uploadt u deze naar Azure Container Registry. Deze stap zorgt ervoor dat de installatiekopieën beschikbaar zijn in uw privéregister en kunnen worden gebruikt in uw AKS-cluster. Het wordt afgeraden om de openbare installatiekopieën in een productieomgeving te gebruiken.
Importeer de Percona-installatiekopieën uit Docker Hub en upload ze naar Azure Container Registry met behulp van de volgende
az acr import
opdrachten:az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/percona/percona-server-mongodb:7.0.8-5 \ --image percona-server-mongodb:7.0.8-5 az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/percona/pmm-client:2.41.2 \ --image pmm-client:2.41.2 az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/percona/percona-backup-mongodb:2.4.1 \ --image percona-backup-mongodb:2.4.1 az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/percona/percona-server-mongodb-operator:1.16.1 \ --image percona-server-mongodb-operator:1.16.1
Volgende stap
Azure Kubernetes Service