Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här guiden går igenom hela installationsprocessen för att köra ett Valkey-kluster på AKS. Den här processen omfattar att konfigurera miljövariabler, etablera grundläggande Azure-resurser (till exempel en resursgrupp, Azure Key Vault och Azure Container Registry (ACR)), skapa ett AKS-kluster med integrerad arbetsbelastningsidentitet och hantera hemligheter. Den omfattar även skapandet av en dedikerad nodpool för Valkey-arbetsbelastningar och hur du importerar Valkey-avbildningar till ditt privata register. Om du föredrar infrastruktur som kod innehåller guiden en alternativ distributionssökväg med Terraform med Azure-verifierade moduler, vilket säkerställer bästa praxis och produktionsberedskap.
För att distribuera infrastrukturen med Terraform använder vi Azure-verifierad modulför AKS.
Anmärkning
Om du planerar att köra den här distributionen i produktion rekommenderar vi att du tittar på modulen AKS-produktionsmönster för Azure-verifierade moduler. Den här modulen levereras tillsammans med rekommendationer för bästa praxis.
Förutsättningar
- Om du inte redan har gjort det läser du Översikt för att distribuera ett Valkey-kluster på Azure Kubernetes Service (AKS).
- En Azure-prenumeration. Om du inte har en skapar du ett kostnadsfritt konto.
- Azure CLI version 2.61.0. Information om hur du installerar eller uppgraderar finns i Installera Azure CLI.
- Helm version 3 eller senare. Information om hur du installerar finns i Installera Helm.
-
kubectl, som Azure Cloud Shell installerar som standard. - Docker installerat på den lokala datorn. Information om hur du installerar finns i Hämta Docker.
Ange miljövariabler
Ange de miljövariabler som krävs för användning i den här guiden:
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
Skapa en resursgrupp
Skapa en resursgrupp med kommandot
az group create.az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output tableExempel på utdata>
Location Name ---------- ------------------ eastus myResourceGroup-rg
Skapa en Azure Key Vault-instans
Skapa en Azure Key Vault-instans med kommandot
az keyvault create. Azure Key Vault lagrar och kommer åt hemligheter som API-nycklar, lösenord, certifikat eller kryptografiska nycklar på ett säkert sätt.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output tableExempel på utdata>
Location Name ResourceGroup ---------- -------------- ------------------ eastus vault-bbbhe-kv myResourceGroup-rg
Skapa ett Azure Container Registry
Skapa ett Azure Container Registry för att lagra och hantera dina containeravbildningar med hjälp av
az acr createkommandot .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)Exempel på utdata>
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
Skapa ett AKS-kluster
I det här steget skapar vi ett AKS-kluster. Vi aktiverar tillägget Azure Key Vault Secrets Provider (azure-keyvault-secrets-provider), som gör att AKS-klustret kan komma åt hemligheter som lagras i Azure Key Vault. Vi aktiverar även arbetsbelastningsidentitet, vilket gör att AKS-klustret kan komma åt andra Azure-resurser på ett säkert sätt.
Skapa ett AKS-kluster med kommandot
az aks create.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 tableExempel på utdata>
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
Hämta identitets-ID och objekt-ID för Azure Key Vault Secrets-providern
Hämta identitets-ID:t och objekt-ID:t som skapats av Azure Key Vault Secrets-providertillägget
az aks showmed hjälp av kommandot .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)
AcrPull Tilldela rollen till kubelet-identiteten
Tilldela rollen
AcrPulltill kubelet-identiteten med kommandotaz role assignment create.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 tableExempel på utdata>
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
Skapa en nodpool för Valkey-arbetsbelastningen
I det här avsnittet skapar vi en nodpool som är dedikerad för att köra Valkey-arbetsbelastningen. Den här nodpoolen har automatisk skalning inaktiverad och skapas med sex noder i två tillgänglighetszoner, eftersom vi vill ha en sekundär per primär i en annan zon. Replikerna schemaläggs i den tredje zonen.
Skapa en ny nodpool med kommandot
az aks nodepool add.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 tableExempel på utdata>
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
Ladda upp Valkey-avbildningar till Azure Container Registry
I det här avsnittet laddar vi ned Valkey-avbildningen från Docker Hub och laddar upp den till Azure Container Registry. Det här steget säkerställer att avbildningen är tillgänglig i ditt privata register och kan användas i AKS-klustret. Vi rekommenderar inte att du använder den offentliga avbildningen i en produktionsmiljö.
Importera Valkey-avbildningen från Dockerhub och ladda upp den till Azure Container Registry med hjälp av
az acr importkommandot .az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/valkey/valkey:latest \ --image valkey:latest \ --output table
Klona modulen för Terraform
Klona git-lagringsplatsen med Terraform-modulen.
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
Skapa en Terraform-variabelfil
Ange Valkey-variabler genom att skapa en
valkey.tfvarsfil med följande innehåll. Du kan också ange dina specifika variabler i det här steget: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" } }
Distribuera infrastrukturen
Om du vill distribuera infrastrukturen kör du Terraform-kommandona. I det här steget anger vi de variabler som krävs för att distribuera 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"Anmärkning
I vissa fall kan de containerregisteruppgifter som importerar Valkey-avbildningar till containerregistret misslyckas. Mer information finns i container-registry-task. I de flesta fall löser ett nytt försök problemet.
Kör följande kommando för att exportera Terraform-utdatavärdena som miljövariabler i terminalen för att använda dem i nästa steg:
export MY_ACR_REGISTRY=$(terraform output -raw acr_registry_name) export MY_CLUSTER_NAME=$(terraform output -raw aks_cluster_name)
Nästa steg
Deltagare
Microsoft ansvarar för denna artikel. Följande deltagare skrev den ursprungligen:
- Nelly Kiboi | Tjänsttekniker
- Saverio Proto | Huvudtekniker för kundupplevelse
- Don High | Huvudkundtekniker
- LaBrina Loving | Huvudtjänsttekniker
- Ken Kilty | Huvudnamn för TPM
- Russell de Pina | Ledande TPM
- Colin Mixon | Produktchef
- Ketan Chawda | Senior kundtekniker
- Naveed Kharadi | Kundupplevelsetekniker
- Erin Schaffer | Innehållsutvecklare 2