Udostępnij za pomocą


Samouczek: Bezpieczne metody wdrażania dla zintegrowanego rozszerzenia rejestru

Te samouczki obejmują różne scenariusze wdrożeń połączonego rozszerzenia rejestru w klastrze Kubernetes obsługiwanym przez Arc. Po zainstalowaniu połączonego rozszerzenia rejestru można synchronizować obrazy z rejestru w chmurze z lokalizacji lokalnych lub zdalnych.

Zanim zaczniesz, poświęć chwilę, aby dowiedzieć się, jak koncepcyjnie działa Kubernetes z obsługą usługi Arc.

Połączony rejestr można bezpiecznie wdrożyć przy użyciu różnych metod szyfrowania. Aby zapewnić pomyślne wdrożenie, postępuj zgodnie z przewodnikiem Szybki start, aby przejrzeć wymagania wstępne i inne istotne informacje. Domyślnie połączony rejestr jest skonfigurowany z protokołem HTTPS, trybem ReadOnly, dystrybucją zaufania i usługą menedżera certyfikatów. W zależności od scenariusza możesz dodać więcej dostosowań i zależności.

Co to jest usługa Cert Manager?

Menedżer certyfikatów rejestru połączonego to usługa, która zarządza certyfikatami TLS dla rozszerzenia połączonego rejestru w klastrze Kubernetes z obsługą Azure Arc. Zapewnia bezpieczną komunikację między połączonym rejestrem a innymi składnikami, obsługując tworzenie, odnawianie i dystrybucję certyfikatów. Tę usługę można zainstalować w ramach wdrożenia połączonego rejestru lub użyć istniejącego menedżera certyfikatów, jeśli jest już zainstalowany w klastrze.

Cert-Manager to dodatek kubernetes typu open source, który automatyzuje zarządzanie i wystawianie certyfikatów TLS z różnych źródeł. Zarządza cyklem życia certyfikatów wystawionych przez pule CA utworzone przy użyciu usługi CA, zachowując ich ważność i odnawiając je przed wygaśnięciem.

Co to jest dystrybucja zaufania?

Dystrybucja zaufania połączonego rejestru odnosi się do procesu bezpiecznego rozdzielania zaufania między usługą rejestru a klientami Kubernetes w ramach klastra. Jest to osiągane przy użyciu urzędu certyfikacji, takiego jak cert-manager, do podpisywania certyfikatów TLS, które są następnie dystrybuowane zarówno do usługi rejestru, jak i klientów. Dzięki temu wszystkie jednostki mogą bezpiecznie uwierzytelniać się nawzajem, zachowując bezpieczne i zaufane środowisko w klastrze Kubernetes.

Wymagania wstępne

Do ukończenia tego samouczka niezbędne są następujące elementy:

  • Postępuj zgodnie z przewodnikiem Quickstart, aby bezpiecznie wdrożyć rozszerzenie połączonego rejestru.

Wdrażanie połączonego rozszerzenia rejestru przy użyciu wstępnie zainstalowanego menedżera certyfikatów

W tym samouczku pokazujemy, jak używać preinstalowanej usługi cert-manager w klastrze. Ta konfiguracja zapewnia kontrolę nad zarządzaniem certyfikatami, umożliwiając wdrożenie połączonego rozszerzenia rejestru z szyfrowaniem, wykonując następujące kroki:

Uruchom polecenie az-k8s-extension-create w quickstart i ustaw parametry cert-manager.enabled=true oraz cert-manager.install=false w taki sposób, aby określić, czy usługa cert-manager jest zainstalowana i włączona:

    az k8s-extension create --cluster-name myarck8scluster \ 
    --cluster-type connectedClusters \ 
    --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \ 
    --config service.clusterIP=192.100.100.1 \ 
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json

Wdrażanie połączonego rozszerzenia rejestru przy użyciu własnego certyfikatu (BYOC)

W tym samouczku pokazano, jak używać własnego certyfikatu (BYOC) w klastrze. Funkcja BYOC umożliwia korzystanie z własnego certyfikatu publicznego i pary kluczy prywatnych, co zapewnia kontrolę nad zarządzaniem certyfikatami. Ta konfiguracja umożliwia wdrożenie połączonego rozszerzenia rejestru z szyfrowaniem, wykonując podane kroki:

Uwaga

Funkcja BYOC ma zastosowanie dla klientów, którzy mają własny certyfikat, który jest już zaufany przez węzły platformy Kubernetes. Nie zaleca się ręcznego aktualizowania węzłów w celu zaufania certyfikatom.

Postępuj zgodnie z przewodnikiem szybkiego startu i dodaj certyfikat publiczny oraz zmienną ciągu klucza prywatnego wraz z przypisaną do niej wartością.

  1. Utwórz certyfikat SSL z podpisem własnym, używając adresu IP usługi connected-registry jako SAN.
  mkdir /certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/mycert.key -x509 -days 365 -out /certs/mycert.crt -addext "subjectAltName = IP:<service IP>"
  1. Uzyskaj ciągi zakodowane w formacie base64 tych plików certyfikatów
export TLS_CRT=$(cat mycert.crt | base64 -w0) 
export TLS_KEY=$(cat mycert.key | base64 -w0) 
  1. Przykład pliku ustawień chronionych z wpisem tajnym w formacie JSON:

Uwaga

Para certyfikatu publicznego i klucza prywatnego musi być zakodowana w formacie base64 i dodana do pliku ustawień chronionych.

    {
    "connectionString": "[connection string here]",
    "tls.crt": $TLS_CRT,
    "tls.key": $TLS_KEY,
    "tls.cacrt": $TLS_CRT
    } 
  1. Teraz można wdrożyć rozszerzenie połączonego rejestru z szyfrowaniem HTTPS (TLS) przy użyciu certyfikatu publicznego i zarządzania parami kluczy prywatnych, konfigurując zmienne ustawione na cert-manager.enabled=false i cert-manager.install=false. W przypadku tych parametrów menedżer certyfikatów nie jest zainstalowany ani włączony, ponieważ zamiast tego jest używana para certyfikatów publicznych i kluczy prywatnych.

  2. Uruchom polecenie az-k8s-extension-create na potrzeby wdrożenia po edycji pliku ustawień chronionych:

    az k8s-extension create --cluster-name myarck8scluster \
    --cluster-type connectedClusters \  
    --extension-type  Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \
    --config service.clusterIP=192.100.100.1 \
    --config cert-manager.enabled=false \
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json 
    

Wdrażanie połączonego rejestru z wykorzystaniem zarządzania tajnymi wpisami w Kubernetes

W tym samouczku pokazujemy, jak używać sekretu Kubernetes na twoim klastrze. Sekret Kubernetes umożliwia bezpieczne zarządzanie autoryzowanym dostępem między podami w klastrze. Ta konfiguracja umożliwia wdrożenie połączonego rozszerzenia rejestru z szyfrowaniem, wykonując podane kroki:

Postępuj zgodnie z przewodnikiem szybkiego startu i dodaj tajną zmienną TLS Kubernetes oraz parę wartości.

  1. Utwórz certyfikat SSL z podpisem własnym z użyciem adresu IP usługi rejestru połączeń jako SAN
mkdir /certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /certs/mycert.key -x509 -days 365 -out /certs/mycert.crt -addext "subjectAltName = IP:<service IP>"
  1. Uzyskaj ciągi zakodowane w formacie base64 z tych plików certyfikatów
export TLS_CRT=$(cat mycert.crt | base64 -w0) 
export TLS_KEY=$(cat mycert.key | base64 -w0) 
  1. Tworzenie wpisu tajnego k8s
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: k8secret
  type: kubernetes.io/tls
data:
  ca.crt: $TLS_CRT
  tls.crt: $TLS_CRT
  tls.key: $TLS_KEY
EOF
  1. Przykład pliku ustawień chronionych z wpisem tajnym w formacie JSON:

        { 
        "connectionString": "[connection string here]",
        "tls.secret": “k8secret” 
        } 
    

Teraz możesz wdrożyć rozszerzenie rejestru połączeń z HTTPS (szyfrowaniem TLS) przy użyciu zarządzania tajnymi danymi w Kubernetes, konfigurując zmienne ustawione na cert-manager.enabled=false i cert-manager.install=false. W przypadku tych parametrów menedżer certyfikatów nie jest zainstalowany ani włączony, ponieważ klucz tajny kubernetes jest używany do szyfrowania.

  1. Uruchom polecenie az-k8s-extension-create na potrzeby wdrożenia po edycji pliku ustawień chronionych:

    az k8s-extension create --cluster-name myarck8scluster \
    --cluster-type connectedClusters \  
    --extension-type  Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \
    --config service.clusterIP=192.100.100.1 \
    --config cert-manager.enabled=false \
    --config cert-manager.install=false \ 
    --config-protected-file protected-settings-extension.json 
    

Wdrażanie połączonego rejestru przy użyciu własnej dystrybucji zaufania i wyłączanie domyślnej dystrybucji zaufania połączonego rejestru

W tym samouczku pokazano, jak skonfigurować dystrybucję zaufania w klastrze. Korzystając z własnych par wpisów tajnych lub certyfikatów publicznych i kluczy prywatnych platformy Kubernetes, można wdrożyć połączone rozszerzenie rejestru z szyfrowaniem TLS, nieodłączną dystrybucją zaufania i odrzucić domyślną dystrybucję zaufania połączonego rejestru. Ta konfiguracja umożliwia wdrożenie połączonego rozszerzenia rejestru z szyfrowaniem, wykonując podane kroki:

  1. Postępuj zgodnie z przewodnikiem Szybki start , aby dodać klucz tajny kubernetes lub certyfikat publiczny oraz pary klucz prywatny i wartość w pliku ustawień chronionych w formacie JSON.

  2. Uruchom polecenie az-k8s-extension-create w przewodniku trustDistribution.skipNodeSelector=false

    az k8s-extension create --cluster-name myarck8scluster \ 
    --cluster-type connectedClusters \ 
    --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup \ 
    --config service.clusterIP=192.100.100.1 \
    --config trustDistribution.enabled=false \ 
    --config cert-manager.enabled=false \
    --config cert-manager.install=false \ 
    --config-protected-file <JSON file path> 
    

W przypadku tych parametrów menedżer certyfikatów nie jest zainstalowany ani włączony, a ponadto dystrybucja zaufania połączonego rejestru nie jest wymuszana. Zamiast tego używasz dystrybucji zaufania dostarczonej przez klaster do ustanawiania zaufania między Połączonym rejestrem a węzłami klienta.

Czyszczenie zasobów

Usunięcie wdrożonego rozszerzenia połączonego rejestru powoduje usunięcie odpowiednich zasobników rejestru połączonego i ustawień konfiguracji.

  1. Uruchom polecenie az-k8s-extension-delete, aby usunąć rozszerzenie połączonego rejestru:

    az k8s-extension delete --name myconnectedregistry 
    --cluster-name myarcakscluster \ 
    --resource-group myresourcegroup \ 
    --cluster-type connectedClusters
    
  2. Uruchom polecenie az acr connected-registry delete, aby usunąć rejestr połączeń.

    az acr connected-registry delete --registry myacrregistry \ 
    --name myconnectedregistry \ 
    --resource-group myresourcegroup
    

Usunięcie rozszerzenia rejestru Connected i rejestru Connected powoduje usunięcie wszystkich powiązanych zasobów i konfiguracji.

Następne kroki