Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
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. Informacje o instalacji znajdziesz tutaj: Get 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 za pomocą polecenia
az keyvault create. 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 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 AKS za pomocą polecenia
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 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
Przypisz rolę
AcrPulldo tożsamości kubeletu za pomocą poleceniaaz 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 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
Utwórz pulę węzłów dla obciążenia Valkey
W tej sekcji utworzymy pulę węzłów przeznaczoną 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
Prześlij obrazy 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 zapewnia, że obraz jest dostępny w prywatnym rejestrze i może być używany w Twoim klastrze 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 | Główny kierownik programu technicznego
- Russell de Pina | Główny kierownik ds. programów technicznych
- Colin Mixon | Menedżer produktu
- Ketan Chawda | Starszy inżynier klienta
- Naveed Kharadi | Inżynier środowiska klienta
- Erin Schaffer | Content Developer 2