Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku krok po kroku opisano kompletny proces konfiguracji klastra Valkey w usłudze AKS. Ten proces obejmuje konfigurowanie zmiennych środowiskowych, aprowizowanie podstawowych zasobów platformy Azure (takich jak grupa zasobów, usługa Azure Key Vault i usługa Azure Container Registry (ACR)), tworzenie klastra usługi AKS z zintegrowaną tożsamością obciążenia i zarządzanie wpisami tajnymi. Obejmuje również tworzenie specjalnej puli węzłów dla zadań Valkey oraz sposób importowania obrazów Valkey do prywatnego rejestru. Jeśli wolisz korzystać z infrastruktury jako kodu, przewodnik zawiera alternatywną ścieżkę wdrażania przy użyciu narzędzia Terraform z modułami zweryfikowanymi platformy Azure, zapewniając najlepsze rozwiązania i gotowość produkcyjną.
Aby wdrożyć infrastrukturę przy użyciu narzędzia Terraform, użyjemy modułu zweryfikowanego platformy Azuredla usługi AKS.
Uwaga / Notatka
Jeśli planujesz uruchomić to wdrożenie w środowisku produkcyjnym, zalecamy zapoznanie się z modułem wzorca produkcyjnego usługi AKS dla modułów zweryfikowanych na platformie Azure. Ten moduł jest powiązany z zaleceniami dotyczącymi najlepszych rozwiązań.
Wymagania wstępne
- Jeśli jeszcze tego nie zrobiono, zapoznaj się z omówieniem wdrażania klastra Valkey w usłudze Azure Kubernetes Service (AKS).
- Subskrypcja Azure. Jeśli jej nie masz, utwórz bezpłatne konto.
- Interfejs wiersza polecenia platformy Azure w wersji 2.61.0. Aby zainstalować lub uaktualnić, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
- Helm w wersji 3 lub nowszej. Aby zainstalować, zobacz Instalowanie programu Helm.
-
kubectl, który jest instalowany domyślnie przez usługę Azure Cloud Shell. - Platforma Docker zainstalowana na komputerze lokalnym. Aby zainstalować, zobacz Pobieranie platformy Docker.
Ustawianie zmiennych środowiskowych
Ustaw wymagane zmienne środowiskowe do użycia w tym przewodniku:
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
Tworzenie grupy zasobów
Utwórz grupę zasobów przy użyciu
az group createpolecenia .az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output tablePrzykładowe wyjście:
Location Name ---------- ------------------ eastus myResourceGroup-rg
Tworzenie wystąpienia usługi Azure Key Vault
Utwórz wystąpienie usługi Azure Key Vault przy użyciu
az keyvault createpolecenia . Usługa Azure Key Vault bezpiecznie przechowuje i umożliwia dostęp do wpisów tajnych, takich jak klucze interfejsu API, hasła, certyfikaty lub klucze kryptograficzne.az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output tablePrzykładowe wyjście:
Location Name ResourceGroup ---------- -------------- ------------------ eastus vault-bbbhe-kv myResourceGroup-rg
Tworzenie rejestru Azure Container Registry
Utwórz usługę Azure Container Registry do przechowywania obrazów kontenerów i zarządzania nimi przy użyciu
az acr createpolecenia .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)Przykładowe wyjście:
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
Tworzenie klastra AKS
W tym kroku utworzymy klaster usługi AKS. Włączamy dodatek dostawcy wpisów tajnych usługi Azure Key Vault (azure-keyvault-secrets-provider), który umożliwia klastrowi usługi AKS dostęp do wpisów tajnych przechowywanych w usłudze Azure Key Vault. Włączamy również tożsamość obciążeń roboczych, która umożliwia klastrowi AKS bezpieczny dostęp do innych zasobów Azure.
Utwórz klaster usługi AKS przy użyciu
az aks createpolecenia .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 tablePrzykładowe wyjście:
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
Pobieranie identyfikatora tożsamości i identyfikatora obiektu dostawcy tajemnic Azure Key Vault
Pobierz identyfikator tożsamości oraz identyfikator obiektu utworzony przez dodatek dostawcy sekretów usługi Azure Key Vault przy użyciu polecenia
az aks show.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)
Przypisz rolę tożsamości kubeleta
AcrPullPrzypisz rolę do tożsamości kubelet przyaz role assignment createużyciu polecenia .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 tablePrzykładowe wyjście:
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
Tworzenie puli węzłów dla obciążenia Valkey
W tej sekcji utworzymy pulę węzłów dedykowaną do uruchamiania obciążenia Valkey. Ta pula węzłów ma wyłączone skalowanie automatyczne i jest tworzona z sześcioma węzłami w dwóch strefach dostępności, ponieważ chcemy mieć jedną pomocniczą na jedną podstawową w innej strefie. Repliki są zaplanowane w trzeciej strefie.
Utwórz nową pulę węzłów przy użyciu
az aks nodepool addpolecenia .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 tablePrzykładowe wyjście:
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
Przekazywanie obrazów valkey do usługi Azure Container Registry
W tej sekcji pobierzemy obraz Valkey z usługi Docker Hub i przekażemy go do usługi Azure Container Registry. Ten krok gwarantuje, że obraz jest dostępny w rejestrze prywatnym i może być używany w klastrze usługi AKS. Nie zalecamy korzystania z obrazu publicznego w środowisku produkcyjnym.
Zaimportuj obraz Valkey z usługi Dockerhub i przekaż go do usługi Azure Container Registry przy użyciu
az acr importpolecenia .az acr import \ --name $MY_ACR_REGISTRY \ --source docker.io/valkey/valkey:latest \ --image valkey:latest \ --output table
Klonowanie modułu Terraform
Sklonuj repozytorium git za pomocą modułu 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
Tworzenie pliku zmiennych terraform
Ustaw zmienne Valkey, tworząc
valkey.tfvarsplik z następującą zawartością. Możesz również podać określone zmienne w tym kroku: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" } }
Wdrażanie infrastruktury
Aby wdrożyć infrastrukturę, uruchom polecenia Terraform. W tym kroku ustawiamy wymagane zmienne na potrzeby wdrażania 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"Uwaga / Notatka
W niektórych przypadkach zadania rejestru kontenerów importujące obrazy Valkey do rejestru kontenerów mogą zakończyć się niepowodzeniem. Aby uzyskać więcej informacji, odwiedź container-registry-task. W większości przypadków ponawianie próby rozwiąże problem.
Uruchom następujące polecenie, aby wyeksportować wartości wyjściowe programu Terraform jako zmienne środowiskowe w terminalu, aby użyć ich w następnych krokach:
export MY_ACR_REGISTRY=$(terraform output -raw acr_registry_name) export MY_CLUSTER_NAME=$(terraform output -raw aks_cluster_name)
Następny krok
Współautorzy
Firma Microsoft utrzymuje ten artykuł. Następujący współautorzy pierwotnie to napisali:
- Nelly Kiboi | Inżynier usługi
- Saverio Proto | Główny inżynier środowiska klienta
- Don High | Główny inżynier klienta
- LaBrina Loving | Główny inżynier usługi
- Ken Kilty | Moduł TPM podmiotu zabezpieczeń
- Russell de Pina | Moduł TPM podmiotu zabezpieczeń
- Colin Mixon | Menedżer produktu
- Ketan Chawda | Starszy inżynier klienta
- Naveed Kharadi | Inżynier środowiska klienta
- Erin Schaffer | Content Developer 2