Udostępnij za pośrednictwem


Konfigurowanie kluczy SSH i zarządzanie nimi w węzłach klastra Kubernetes operatora platformy Azure

W tym artykule opisano sposób konfigurowania klucza SSH i zarządzania nim w puli agentów Nexus Kubernetes i węzłach płaszczyzny sterowania. Klucze SSH zapewniają bezpieczną metodę uzyskiwania dostępu do tych węzłów w klastrze.

Wymagania wstępne

Przed kontynuowaniem tego przewodnika z instrukcjami zaleca się wykonanie następujących czynności:

  • Zapoznaj się z przewodnikiem Szybki start dotyczącym klastra Operator Nexus Kubernetes, aby zapoznać się z kompleksowym omówieniem i krokami.
  • Upewnij się, że zostały spełnione określone wymagania wstępne w przewodniku Szybki start, aby zapewnić bezproblemową implementację przewodnika.

Uwaga

W tym przewodniku założono, że masz już istniejący klaster Operator Nexus Kubernetes, który został utworzony przy użyciu przewodnika Szybki start, oraz że masz dostęp do interfejsu wiersza polecenia, szablonu arm lub Bicep używanego w przewodniku Szybki start, aby zaktualizować klucze SSH.

Konfigurowanie kluczy SSH węzła klastra Nexus Nexus Kubernetes

Podczas konfigurowania klastra Kubernetes operatora Nexus należy podać klucze SSH dla węzłów w klastrze. Klucze SSH zapewniają bezpieczną metodę uzyskiwania dostępu do tych węzłów w klastrze.

Istnieje kilka różnych sposobów udostępniania kluczy SSH dla węzłów klastra.

  • Jeśli chcesz użyć tego samego klucza SSH dla wszystkich węzłów w klastrze, podczas tworzenia klastra możesz podać tablicę kluczy publicznych. Te klucze są wstawiane do wszystkich węzłów puli agentów i węzłów płaszczyzny sterowania.
  • Jeśli chcesz użyć różnych kluczy SSH dla różnych pul agentów lub węzłów płaszczyzny sterowania, możesz podać unikatowy klucz publiczny dla każdej puli, dzięki czemu można zarządzać dostępem SSH bardziej szczegółowo, zastępuje to klucze całego klastra. Każda nowa pula agentów zostanie później dodana do klastra bez użycia kluczy całego klastra, jeśli ma klucz, używa podanego klucza.
  • Jeśli podczas tworzenia klastra nie podasz żadnych kluczy SSH, żadne klucze SSH nie zostaną wstawione do węzłów. Oznacza to, że użytkownicy nie mogą połączyć się z węzłami za pomocą protokołu SSH. Klucze SSH można dodać później, aktualizując konfigurację klastra, ale nie można usunąć tych kluczy po dodaniu.

Poniżej przedstawiono zmienne, które należy ustawić, wraz z wartościami domyślnymi przewodnika Szybki start, których można użyć dla niektórych zmiennych.

  • SSH_PUBLIC_KEY — W przypadku kluczy dla całego klastra. Użycie klucza szerokiego klastra z pulą agentów i kluczami płaszczyzny sterowania nie ma żadnego wpływu, ponieważ płaszczyzna sterowania i klucze puli agentów są używane zamiast kluczy całego klastra.
  • CONTROL_PLANE_SSH_PUBLIC_KEY - Dla płaszczyzny sterowania można podać klucze publiczne, które są wstawione do węzłów płaszczyzny sterowania.
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY — Dla każdej puli agentów można podać klucze publiczne wstawione do węzłów w tej puli.
    az networkcloud kubernetescluster create \
      --name "${CLUSTER_NAME}" \
      --resource-group "${RESOURCE_GROUP}" \
      --subscription "${SUBSCRIPTION_ID}" \
      --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
      --location "${LOCATION}" \
      --kubernetes-version "${K8S_VERSION}" \
      --aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
      --admin-username "${ADMIN_USERNAME}" \
      --ssh-key-values "${SSH_PUBLIC_KEY}" \
      --control-plane-node-configuration \
        count="${CONTROL_PLANE_COUNT}" \
        vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
        ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
      --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${INITIAL_AGENT_POOL_SSH_PUBLIC_KEY}']}]"\
      --network-configuration \
        cloud-services-network-id="${CSN_ARM_ID}" \
        cni-network-id="${CNI_ARM_ID}" \
        pod-cidrs="[${POD_CIDR}]" \
        service-cidrs="[${SERVICE_CIDR}]" \
        dns-service-ip="${DNS_SERVICE_IP}"

Zarządzanie kluczami SSH węzła klastra Operator Nexus Kubernetes

Klucze SSH dla węzłów w klastrze Operator Nexus Kubernetes można zarządzać po utworzeniu klastra. Aktualizowanie kluczy SSH jest możliwe, ale usunięcie wszystkich kluczy SSH z węzła klastra nie jest opcją. Zamiast tego wszystkie podane nowe klucze zastąpią wszystkie istniejące klucze.

Aby zaktualizować klucze SSH, możesz zastosować tę samą konfigurację Bicep/ARM używaną podczas początkowego wdrażania przy użyciu nowych kluczy lub użyć interfejsu wiersza polecenia.

Ograniczenia

  • Nie można usunąć kluczy SSH z węzłów klastra. Można je aktualizować tylko przy użyciu nowych kluczy.
  • Jeśli spróbujesz zaktualizować klucz szeroki klastra przy użyciu pustej tablicy, operacja zakończy się pomyślnie, ale istniejące klucze pozostaną niezmienione.
  • Jeśli spróbujesz zaktualizować klucze puli agentów lub płaszczyznę sterowania z pustą tablicą, operacja zakończy się pomyślnie, a zamiast tego zostaną użyte klucze całego klastra.
  • Jeśli spróbujesz zaktualizować klucze dla klastra, który został utworzony bez żadnych kluczy, zostanie dodany nowy klucz, ale nie można go usunąć.

Zanim rozpoczniesz

  • Upewnij się, że masz wymagane uprawnienia do zaktualizowania konfiguracji klastra.
  • Masz nowe klucze SSH, których chcesz użyć dla węzłów klastra.
  • Plik parametrów używany podczas początkowego wdrażania lub zmienne używane w poleceniu interfejsu wiersza polecenia.
  • Aby użyć tego przewodnika, musisz mieć istniejący klaster Operator Nexus Kubernetes, który został utworzony przy użyciu przewodnika Szybki start.

Aktualizowanie kluczy SSH w całym klastrze

Użyj następującego polecenia, aby zaktualizować klucze SSH całego klastra, które są używane dla wszystkich węzłów w klastrze. Istniejące klucze są zastępowane nowymi kluczami.

Uwaga

Działa to tylko wtedy, gdy klaster został utworzony za pomocą kluczy szerokiego klastra. Jeśli klaster został utworzony przy użyciu puli agentów lub kluczy płaszczyzny sterowania, ta operacja nie ma wpływu. Zapoznaj się z kolejnymi sekcjami, aby zaktualizować pulę agentów lub klucze płaszczyzny sterowania.

Interfejs wiersza polecenia platformy Azure do aktualizowania kluczy SSH w całym klastrze

  1. Ustaw zmienną SSH_PUBLIC_KEY przy użyciu nowego klucza SSH.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. Użyj następującego polecenia, aby zaktualizować klucze SSH całego klastra.
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$SSH_PUBLIC_KEY"

Usługi Azure Resource Manager (ARM) i Bicep w celu zaktualizowania kluczy SSH całego klastra

  1. sshPublicKeys Zaktualizuj parametr za kubernetes-deploy-parameters.json pomocą nowego klucza SSH.
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. Ponownie wdróż szablon.

W przypadku szablonu usługi ARM:

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.json --parameters @kubernetes-deploy-parameters.json

Dla Bicep:

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.bicep --parameters @kubernetes-deploy-parameters.json

Aktualizowanie kluczy SSH puli agentów

Użyj następującego polecenia, aby zaktualizować klucze SSH dla określonej puli agentów.

  • Wszystkie węzły w puli agentów zostaną zaktualizowane przy użyciu nowych kluczy.
  • Jeśli pula agentów została utworzona przy użyciu kluczy, nowe klucze zastępują istniejące klucze.
  • Jeśli pula agentów została utworzona bez kluczy, zostaną dodane nowe klucze.
  • Jeśli pula agentów została utworzona przy użyciu kluczy szerokiego klastra, nowe klucze zastępują istniejące klucze.
  • Jeśli spróbujesz zaktualizować klucze dla klastra, który został utworzony bez żadnych kluczy, zostanie dodany nowy klucz, ale nie można go usunąć.
  • Jeśli spróbujesz zaktualizować klucze puli agentów z pustą tablicą, operacja zakończy się pomyślnie, a zamiast tego zostaną użyte klucze całego klastra.

Interfejs wiersza polecenia platformy Azure do aktualizowania kluczy SSH puli agentów

  1. Ustaw zmienną AGENT_POOL_KEY przy użyciu nowego klucza SSH.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. Użyj następującego polecenia, aby zaktualizować klucze SSH puli agentów.
az networkcloud kubernetescluster agentpool update --agent-pool-name "${CLUSTER_NAME}-nodepool-2" --kubernetes-cluster-name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$AGENT_POOL_KEY"

Szablon usługi Azure ARM i Bicep w celu zaktualizowania kluczy SSH puli agentów

Uwaga

Aktualizowanie pul węzłów utworzonych za pomocą konfiguracji początkowej puli agentów nie jest możliwe w przypadku tej metody, ponieważ nie ma oddzielnego szablonu i pliku parametrów puli agentów. Za pomocą tej metody można zaktualizować tylko klucze puli agentów dla pul utworzonych po utworzeniu klastra. Aby zaktualizować klucze początkowej puli agentów, zapoznaj się z poleceniem interfejsu wiersza polecenia podanym w poprzedniej sekcji. Jeśli początkowa pula agentów została utworzona przy użyciu kluczy szerokiego klastra, a jeśli chcesz zaktualizować klucze dla początkowej puli agentów, możesz zaktualizować klucze całego klastra.

  1. agentPoolSshKeys Zaktualizuj parametr za kubernetes-nodepool-parameters.json pomocą nowego klucza SSH.
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. Ponownie wdróż szablon.

W przypadku szablonu usługi ARM:

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-add-agentpool.json --parameters @kubernetes-nodepool-parameters.json

Dla Bicep:

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-add-agentpool.bicep --parameters @kubernetes-nodepool-parameters.json

Aktualizowanie kluczy SSH płaszczyzny sterowania

Użyj następującego polecenia, aby zaktualizować klucze SSH dla płaszczyzny sterowania.

  • Wszystkie węzły na płaszczyźnie sterowania zostaną zaktualizowane przy użyciu nowych kluczy.
  • Jeśli płaszczyzna sterowania została utworzona przy użyciu kluczy, nowe klucze zastępują istniejące klucze.
  • Jeśli płaszczyzna sterowania została utworzona bez kluczy, zostaną dodane nowe klucze.
  • Jeśli płaszczyzna sterowania została utworzona przy użyciu kluczy szerokiego klastra, nowe klucze zastępują istniejące klucze.
  • Jeśli spróbujesz zaktualizować klucze dla klastra, który został utworzony bez żadnych kluczy, zostanie dodany nowy klucz, ale nie można go usunąć.
  • Jeśli spróbujesz zaktualizować klucze płaszczyzny sterowania z pustą tablicą, operacja zakończy się pomyślnie, a zamiast tego zostaną użyte klucze całego klastra.

Uwaga

Klucze płaszczyzny sterowania można zaktualizować przy użyciu początkowego szablonu wdrożenia i pliku parametrów, ponieważ płaszczyzna sterowania jest częścią klastra. Nie można jednak zaktualizować kluczy puli agentów w taki sam sposób, jak pula agentów jest zasobem podrzędnym, chyba że pula agentów używa kluczy całego klastra.

Interfejs wiersza polecenia platformy Azure do aktualizowania kluczy SSH płaszczyzny sterowania

  1. Ustaw zmienną CONTROL_PLANE_SSH_PUBLIC_KEY przy użyciu nowego klucza SSH.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. Użyj następującego polecenia, aby zaktualizować klucze SSH płaszczyzny sterowania.
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --control-plane-node-configuration ssh-key-values="['$CONTROL_PLANE_SSH_PUBLIC_KEY']"

Szablon usługi Azure ARM i Bicep w celu zaktualizowania kluczy SSH płaszczyzny sterowania

  1. controlPlaneSshKeys Zaktualizuj parametr za kubernetes-deploy-parameters.json pomocą nowego klucza SSH.
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. Ponownie wdróż szablon.

W przypadku szablonu usługi ARM:

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.json --parameters @kubernetes-deploy-parameters.json

Dla Bicep:

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.bicep --parameters @kubernetes-deploy-parameters.json

Następne kroki

Aby zrozumieć, jak skonfigurować klucze SSH i zarządzać nimi w węzłach klastra Operator Nexus Kubernetes, możesz upewnić się, że klaster jest bezpieczny i że można uzyskać dostęp do węzłów, gdy zajdzie potrzeba rozwiązania problemów.