Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze handleiding begeleidt het volledige installatieproces voor het uitvoeren van een Valkey-cluster op AKS. Dit proces omvat het configureren van omgevingsvariabelen, het inrichten van kernresources van Azure (zoals een resourcegroep, Azure Key Vault en Azure Container Registry (ACR)), het maken van een AKS-cluster met geïntegreerde workloadidentiteit en het beheren van geheimen. Het omvat ook het maken van een toegewezen knooppool voor Valkey-workloads en het importeren van Valkey-afbeeldingen in uw privéregister. Als u de voorkeur geeft aan infrastructuur als code, bevat de handleiding een alternatief implementatiepad met behulp van Terraform met Azure Verified Modules, zodat aanbevolen procedures en productiegereedheid worden gegarandeerd.
Voor het implementeren van de infrastructuur met Behulp van Terraform gebruiken we de azure-geverifieerde modulevoor AKS.
Opmerking
Als u van plan bent om deze implementatie in productie uit te voeren, raden we u aan de AKS-productiepatroonmodule voor gecontroleerde Azure-modules te bekijken. Deze module wordt geleverd in combinatie met best practice-aanbevelingen.
Vereisten
- Als u dat nog niet hebt gedaan, raadpleegt u het overzicht voor het implementeren van een Valkey-cluster in Azure Kubernetes Service (AKS).
- Een Azure-abonnement. Als u nog geen account hebt, kunt u een gratis account maken.
- Azure CLI versie 2.61.0. Zie Install Azure CLI om de Azure CLI te installeren of bij te werken.
- Helm versie 3 of hoger. Zie Helm installeren.
-
kubectl, die de Azure Cloud Shell standaard installeert. - Docker geïnstalleerd op uw lokale computer. Raadpleeg 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_RESOURCE_GROUP_NAME=myResourceGroup-rg-$(echo $random) export MY_LOCATION=centralus export MY_ACR_REGISTRY=mydns$(echo $random) export MY_KEYVAULT_NAME=vault-$(echo $random)-kv export MY_CLUSTER_NAME=cluster-aks
Een brongroep maken
Maak een resourcegroep met behulp van de
az group createopdracht.az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output tableVoorbeelduitvoer:
Location Name ---------- ------------------ eastus myResourceGroup-rg
Een Azure Key Vault-exemplaar maken
Maak een Azure Key Vault-exemplaar met behulp van de
az keyvault createopdracht. Azure Key Vault slaat veilig geheimen op, zoals API-sleutels, wachtwoorden, certificaten of cryptografische sleutels.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output tableVoorbeelduitvoer:
Location Name ResourceGroup ---------- -------------- ------------------ eastus vault-bbbhe-kv myResourceGroup-rg
Een Azure Container Registry maken
Maak een Azure Container Registry om uw containerinstallatiekopieën op te slaan en te beheren met behulp van de
az acr createopdracht.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 --output tsv)Voorbeelduitvoer:
NAME RESOURCE GROUP LOCATION SKU LOGIN SERVER CREATION DATE ADMIN ENABLED -------------------- ------------------ ---------- ------- ------------------------------- -------------------- --------------- mydnsrandomnamebbbhe myResourceGroup-rg eastus Premium mydnsrandomnamebbbhe.azurecr.io 2024-06-11T09:36:43Z True
Een AKS-cluster maken
In deze stap maken we een AKS-cluster. We schakelen de invoegtoepassing Azure Key Vault Secrets-provider (azure-keyvault-secrets-provider) in, waarmee het AKS-cluster toegang heeft tot geheimen die zijn opgeslagen in Azure Key Vault. We schakelen ook workloadidentiteit in, waardoor het AKS-cluster veilig toegang heeft tot andere Azure-resources.
Maak een AKS-cluster met behulp van de
az aks createopdracht.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_D4_v3 \ --node-count 3 \ --auto-upgrade-channel stable \ --node-os-upgrade-channel NodeImage \ --attach-acr ${MY_ACR_REGISTRY} \ --enable-oidc-issuer \ --enable-workload-identity \ --enable-addons azure-keyvault-secrets-provider \ --zones 1 2 3 \ --generate-ssh-keys \ --output tableVoorbeelduitvoer:
Kind KubernetesVersion Location MaxAgentPools Name NodeResourceGroup ProvisioningState ResourceGroup ResourceUid SupportPlan ----------------------------------------------------------------------- -------------------------- ---------------------- ---------------------------------- ------------------------------------ ------------------------- ------------ ---------------------------------------------------------------- ------ ------------------- ---------- --------------- ----------- ---------------------------------------- ------------------- ------------------ ------------------------ ------------------ cluster-ak-myresourcegroup--9b70ac-hhrizake.portal.hcp.eastus.azmk8s.io 1.28.9 False cluster-ak-myResourceGroup--9b70ac a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 False True cluster-ak-myresourcegroup--9b70ac-hhrizake.hcp.eastus.azmk8s.io Base 1.28 eastus 100 cluster-aks MC_myResourceGroup-rg_cluster-aks_eastus Succeeded myResourceGroup-rg b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2 KubernetesOfficial
Ophalen van de identiteit-id en object-id voor de Azure Key Vault Secret provider
Haal de identiteits-id en de object-id op die is gemaakt door de Azure Key Vault Secrets-providerinvoegtoepassing met behulp van de
az aks showopdracht.export userAssignedIdentityID=$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId --output tsv) export userAssignedObjectID=$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --query addonProfiles.azureKeyvaultSecretsProvider.identity.objectId --output tsv)
De AcrPull-rol toewijzen aan de kubelet-identiteit
Wijs de
AcrPullrol toe aan de kubelet-identiteit met behulp van deaz role assignment createopdracht.export KUBELET_IDENTITY=$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --output tsv --query identityProfile.kubeletidentity.objectId) az role assignment create \ --assignee ${KUBELET_IDENTITY} \ --role "AcrPull" \ --scope ${MY_ACR_REGISTRY_ID} \ --output tableVoorbeelduitvoer:
CreatedBy CreatedOn Name PrincipalId PrincipalName PrincipalType ResourceGroup RoleDefinitionId RoleDefinitionName Scope UpdatedBy UpdatedOn ------------------------------------ -------------------------------- ------------------------------------ ------------------------------------ ------------------------------------ ---------------- ------------------ ------------------------------------------------------------------------------------------------------------------------------------------ -------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------ -------------------------------- bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f 2024-06-11T09:41:36.631310+00:00 00aa00aa-bb11-cc22-dd33-44ee44ee44ee aaaaaaaa-bbbb-cccc-1111-222222222222 bbbbbbbb-cccc-dddd-2222-333333333333 ServicePrincipal myResourceGroup-rg /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb AcrPull /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroup-rg/providers/Microsoft.ContainerRegistry/registries/mydnsrandomnamebbbhe bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f 2024-06-11T09:41:36.631310+00:00
Een knooppuntgroep maken voor de Valkey-workload
In deze sectie maken we een knooppuntgroep die is toegewezen aan het uitvoeren van de Valkey-workload. Deze knooppuntgroep heeft automatisch schalen uitgeschakeld en is aangemaakt met zes knooppunten, verdeeld over twee beschikbaarheidszones, omdat we per primaire één secundaire in een andere zone willen hebben. De replica's worden ingepland in de derde zone.
Maak een nieuwe knooppuntgroep met behulp van de
az aks nodepool addopdracht.while [ "$(az aks show --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --output tsv --query provisioningState)" != "Succeeded" ]; do echo "waiting for cluster to be ready"; sleep 10; done az aks nodepool add \ --resource-group $MY_RESOURCE_GROUP_NAME \ --cluster-name $MY_CLUSTER_NAME \ --name valkey \ --node-vm-size Standard_D4_v3 \ --node-count 6 \ --zones 1 2 3 \ --output tableVoorbeelduitvoer:
Count CurrentOrchestratorVersion ETag EnableAutoScaling EnableCustomCaTrust EnableEncryptionAtHost EnableFips EnableNodePublicIp EnableUltraSsd KubeletDiskType MaxPods Mode Name NodeImageVersion OrchestratorVersion OsDiskSizeGb OsDiskType OsSku OsType ProvisioningState ResourceGroup ScaleDownMode TypePropertiesType VmSize WorkloadRuntime ------- ---------------------------- ------------------------------------ ------------------- --------------------- ------------------------ ------------ -------------------- ---------------- ----------------- --------- ------ ------ ---------------------------------------- --------------------- -------------- ------------ ------- -------- ------------------- ------------------ --------------- ----------------------- --------------- ----------------- 6 1.28.9 aaaa0000-bb11-2222-33cc-444444dddddd False False False False False False OS 30 User valkey AKSUbuntu-2204gen2containerd-202405.27.0 1.28 128 Managed Ubuntu Linux Succeeded myResourceGroup-rg Delete VirtualMachineScaleSets Standard_D4s_v3 OCIContainer
Valkey-installatiekopieën uploaden naar uw Azure Container Registry
In deze sectie downloaden we de Valkey-installatiekopieën van Docker Hub en uploaden we 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. We raden af om de openbare image in een productieomgeving te gebruiken.
Importeer de Valkey-image van Docker Hub en push deze met de opdracht
az acr importnaar uw Azure Container Registry.az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/valkey/valkey:latest \ --image valkey:latest \ --output table
De Terraform-module klonen
Kloon de Git-opslagplaats met de Terraform-module.
git clone https://github.com/Azure/terraform-azurerm-avm-res-containerservice-managedcluster.git cd terraform-azurerm-avm-res-containerservice-managedcluster/tree/stateful-workloads/examples/stateful-workloads-valkey
Een Terraform-variabelenbestand maken
Stel Valkey-variabelen in door een
valkey.tfvarsbestand te maken met de volgende inhoud. U kunt in deze stap ook uw specifieke variabelen opgeven:acr_task_content = <<-EOF version: v1.1.0 steps: - cmd: bash echo Waiting 10 seconds the propagation of the Container Registry Data Importer and Data Reader role - cmd: bash sleep 10 - cmd: az login --identity - cmd: az acr import --name $RegistryName --source docker.io/valkey/valkey:latest --image valkey:latest EOF valkey_enabled = true node_pools = { valkey = { name = "valkey" vm_size = "Standard_DS4_v2" node_count = 3 zones = [1, 2, 3] os_type = "Linux" } }
De infrastructuur implementeren
Voer de Terraform-opdrachten uit om de infrastructuur te implementeren. In deze stap stellen we de vereiste variabelen in voor het implementeren van Valkey.
terraform init export MY_RESOURCE_GROUP_NAME=myResourceGroup-rg export MY_LOCATION=centralus SECRET=$(openssl rand -base64 32) export TF_VAR_valkey_password=${SECRET} export TF_VAR_location=${MY_LOCATION} export TF_VAR_resource_group_name=${MY_RESOURCE_GROUP_NAME} terraform apply -var-file="valkey.tfvars"Opmerking
In sommige gevallen kunnen de containerregister-taken die Valkey-afbeeldingen importeren naar het containerregister mislukken. Zie container-registry-task voor meer informatie. In de meeste gevallen wordt het probleem opgelost door het opnieuw te proberen.
Voer de volgende opdracht uit om de Terraform-uitvoerwaarden als omgevingsvariabelen in de terminal te exporteren om deze in de volgende stappen te gebruiken:
export MY_ACR_REGISTRY=$(terraform output -raw acr_registry_name) export MY_CLUSTER_NAME=$(terraform output -raw aks_cluster_name)
Volgende stap
Bijdragers
Microsoft onderhoudt dit artikel. De volgende inzenders hebben het oorspronkelijk geschreven:
- Nelly Kiboi | servicemonteur
- Saverio Proto | Principal Customer Experience Engineer
- Don High | Hoofd Customer Engineer
- LaBrina Loving | Hoofd Service Engineer
- Ken Kilty | Hoofd TPM
- Russell de Pina | Principal TPM
- Colin Mixon | Product Manager
- Ketan Chawda | Senior klanttechnicus
- Naveed Kharadi | Klantervaringstechnicus
- Erin Schaffer | Inhoudsontwikkelaar 2