Delen via


De infrastructuur maken voor het uitvoeren van een Valkey-cluster in Azure Kubernetes Service (AKS)

In dit artikel maken we de infrastructuurbronnen die nodig zijn om een Valkey-cluster uit te voeren in Azure Kubernetes Service (AKS).

Vereisten

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
    export MY_LOCATION=eastus
    export MY_ACR_REGISTRY=mydnsrandomname$(echo $random)
    export MY_KEYVAULT_NAME=vault-$(echo $random)-kv
    export MY_CLUSTER_NAME=cluster-aks
    export SERVICE_ACCOUNT_NAMESPACE=valkey
    export TENANT_ID=$(az account show --query tenantId --output tsv)
    

Een brongroep maken

  • Maak een resourcegroep met behulp van de az group create opdracht.

    az group create --name $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --output table
    

    Voorbeelduitvoer:

    Location    Name
    ----------  ------------------
    eastus      myResourceGroup-rg
    

Een Azure Key Vault-exemplaar maken

  • Maak een Azure Key Vault-exemplaar met behulp van de az keyvault createopdracht.

    az keyvault create --name $MY_KEYVAULT_NAME --resource-group $MY_RESOURCE_GROUP_NAME --location $MY_LOCATION --enable-rbac-authorization false --output table
    

    Voorbeelduitvoer:

    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 create opdracht.

    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 Azure KeyVault Secret Provider-invoegtoepassing 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.

  1. Maak een AKS-cluster met behulp van de az aks create opdracht.

    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_DS4_v2 \
     --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 table
    

    Voorbeelduitvoer:

    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  efecebf9-8894-46b9-9d68-09bfdadc474a  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  66681ad812cd770001814d32  KubernetesOfficial
    
  2. Haal de id en de object-id op die zijn gemaakt door de Azure KeyVault Secret Provider Addon met behulp van de az aks show opdracht.

    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)
    
    
  3. Wijs de AcrPull rol toe aan de kubelet-identiteit met behulp van de az role assignment create opdracht.

    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 table
    

    Voorbeelduitvoer:

    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  04628c5e-371a-49b8-8462-4ecd7f90a43f  6a9a8328-7257-4db2-8c4f-169687f36556  94fa3265-4ac2-4e19-8516-f3e830642ca8  ServicePrincipal  myResourceGroup-rg  /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/7f951dda-4ed3-4680-a7ca-43fe172d538d  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 wordt gemaakt met zes knooppunten in twee beschikbaarheidszones, omdat we één secundaire per primaire zone willen hebben.

  • Maak een nieuwe knooppuntgroep met behulp van de az aks nodepool add opdracht.

    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_D4s_v3 \
        --node-count 6 \
        --zones 1 2 3 \
        --output table
    

    Voorbeelduitvoer:

    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                        b7aa8e37-ff39-4ec7-bed0-cb37876416cc  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
    

Verbinding maken met het AKS-cluster

  • Configureer kubectl deze om verbinding te maken met uw AKS-cluster met behulp van de az aks get-credentials opdracht.

    az aks get-credentials --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_CLUSTER_NAME --overwrite-existing --output table
    

Valkey-installatiekopieën uploaden naar uw Azure Container Registry

In deze sectie downloaden we de Valkey-installatiekopieën van Dockerhub 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. Het wordt afgeraden om de openbare installatiekopieën in een productieomgeving te gebruiken.

  • Importeer de Valkey-installatiekopieën uit Dockerhub en upload deze met behulp van de az acr import opdracht naar uw Azure Container Registry.

    az acr import \
        --name $MY_ACR_REGISTRY \
        --source docker.io/valkey/valkey:latest  \
        --image valkey:latest \
        --output table
    

Volgende stappen

Medewerkers

Microsoft onderhoudt dit artikel. De volgende inzenders hebben het oorspronkelijk geschreven:

  • Nelly Kiboi | Service Engineer
  • Saverio Proto | Principal Customer Experience Engineer
  • Hoog | Principal Customer Engineer
  • LaBrina Loving | Principal Service Engineer
  • Ken Kilty | Principal TPM
  • Russell de Tina | Principal TPM
  • Colin Mixon | ProductManager
  • Ketan Chawda | Senior klanttechnicus
  • Naveed Kharadi | Klantervaringstechnicus
  • Erin Schaffer | Inhoudsontwikkelaar 2