Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato příručka vás provede celým procesem nastavení pro spuštění clusteru Valkey v AKS. Tento proces zahrnuje konfiguraci proměnných prostředí, zřizování základních prostředků Azure (jako je skupina prostředků, Azure Key Vault a Azure Container Registry (ACR)), vytvoření clusteru AKS s integrovanou identitou úloh a správou tajných kódů. Zahrnuje také vytvoření vyhrazeného fondu uzlů pro úlohy Valkey a postup importu imagí Valkey do privátního registru. Pokud dáváte přednost infrastruktuře jako kódu, průvodce obsahuje alternativní cestu nasazení pomocí Terraformu s ověřenými moduly Azure, což zajišťuje osvědčené postupy a připravenost na produkční prostředí.
K nasazení infrastruktury pomocí Terraformu používáme ověřený modul Azurepro AKS.
Poznámka:
Pokud plánujete toto nasazení spustit v produkčním prostředí, doporučujeme se podívat na modul produkčního modelu AKS pro ověřené moduly Azure. Tento modul je propojený s doporučeními osvědčených postupů.
Požadavky
- Pokud jste to ještě neudělali, projděte si přehled nasazení clusteru Valkey ve službě Azure Kubernetes Service (AKS).
- Předplatné Azure. Pokud žádné nemáte, vytvořte si bezplatný účet.
- Azure CLI verze 2.61.0. Pokud chcete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.
- Helm verze 3 nebo novější Informace o instalaci najdete v části Instalace nástroje Helm.
-
kubectl, kterou Azure Cloud Shell nainstaluje ve výchozím nastavení. - Docker nainstalovaný na místním počítači. Informace o instalaci najdete v tématu Get Docker.
Nastavení proměnných prostředí
Nastavte požadované proměnné prostředí pro použití v tomto průvodci:
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
Vytvoření skupiny zdrojů
Vytvořte skupinu prostředků pomocí příkazu
az group create.az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output tablePříklad výstupu:
Location Name ---------- ------------------ eastus myResourceGroup-rg
Vytvoření instance služby Azure Key Vault
Pomocí příkazu vytvořte instanci
az keyvault createslužby Azure Key Vault. Azure Key Vault bezpečně ukládá tajné kódy, jako jsou klíče rozhraní API, hesla, certifikáty nebo kryptografické klíče.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output tablePříklad výstupu:
Location Name ResourceGroup ---------- -------------- ------------------ eastus vault-bbbhe-kv myResourceGroup-rg
Vytvoření registru služby Azure Container Registry
Pomocí příkazu vytvořte službu Azure Container Registry pro ukládání a správu imagí kontejneru
az acr create.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)Příklad výstupu:
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
Vytvoření clusteru AKS
V tomto kroku vytvoříme cluster AKS. Povolíme doplněk zprostředkovatele tajných kódů služby Azure Key Vault (azure-keyvault-secrets-provider), který clusteru AKS umožní přístup k tajným kódům uloženým ve službě Azure Key Vault. Také povolíme identitu úloh, která clusteru AKS umožňuje zabezpečený přístup k dalším prostředkům Azure.
Vytvořte cluster služby AKS pomocí příkazu
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 tablePříklad výstupu:
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
Získání ID identity a ID objektu pro zprostředkovatele tajných kódů služby Azure Key Vault
Pomocí příkazu
az aks showzískejte ID identity a ID objektu vytvořené doplňkem poskytovatele tajemství služby Azure Key Vault.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 Přiřazení role k identitě kubeletu
Pomocí příkazu
az role assignment createpřiřaďte roliAcrPullidentitě kubelet.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 tablePříklad výstupu:
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
Vytvoření fondu uzlů pro úlohu Valkey
V této části vytvoříme fond uzlů vyhrazený pro provozování úlohy Valkey. Tento fond uzlů má zakázané automatické škálování a je vytvořen se šesti uzly ve dvou zónách dostupnosti, protože chceme mít jeden sekundární uzel pro každý primární uzel v jiné zóně. Repliky jsou naplánovány k provedení ve třetí zóně.
Pomocí příkazu vytvořte nový fond
az aks nodepool adduzlů.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 tablePříklad výstupu:
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
Nahrání imagí Valkey do služby Azure Container Registry
V této části stáhneme image Valkey z Docker Hubu a nahrajeme ji do služby Azure Container Registry. Tento krok zajistí, že je image dostupná ve vašem privátním registru a dá se použít v clusteru AKS. Nedoporučujeme používat veřejnou image v produkčním prostředí.
Importujte image Valkey z Dockerhubu a nahrajte ji do služby Azure Container Registry pomocí
az acr importpříkazu.az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/valkey/valkey:latest \ --image valkey:latest \ --output table
Klonování modulu Terraform
Naklonujte úložiště Git pomocí modulu Terraform.
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
Vytvořte soubor proměnných Terraformu
Nastavte proměnné Valkey vytvořením
valkey.tfvarssouboru s následujícím obsahem. V tomto kroku můžete také zadat konkrétní proměnné :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" } }
Nasazení infrastruktury
Pokud chcete nasadit infrastrukturu, spusťte příkazy Terraformu. V tomto kroku nastavíme požadované proměnné pro nasazení 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"Poznámka:
V některých případech můžou úlohy registru kontejneru, které importuje image Valkey do registru kontejneru, selhat. Další informace naleznete v tématu container-registry-task. Ve většině případů se problém vyřeší opakovaným pokusem.
Spuštěním následujícího příkazu vyexportujte výstupní hodnoty Terraformu jako proměnné prostředí v terminálu, abyste je mohli použít v dalších krocích:
export MY_ACR_REGISTRY=$(terraform output -raw acr_registry_name) export MY_CLUSTER_NAME=$(terraform output -raw aks_cluster_name)
Další krok
Přispěvatelé
Microsoft udržuje tento článek. Následující přispěvatelé ho původně napsali:
- Nelly Kiboi | Servisní technik
- Saverio Proto | Hlavní technik zákaznického prostředí
- Don High | Hlavní zákaznický inženýr
- LaBrina Loving | Vedoucí servisní inženýrka
- Ken Kilty | Hlavní TPM
- Russell de Pina | vedoucí technický programový manažer
- Colin Mixon | Product Manager
- Ketan Chawda | Vedoucí zákaznický inženýr
- Naveed Kharadi | Technik zákaznického prostředí
- Erin Schaffer | Content Developer 2