Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Tutorials behandeln verschiedene Bereitstellungsszenarien für die Erweiterung der verbundenen Registry in einem Arc-fähigen Kubernetes-Cluster. Nachdem die Erweiterung für die verbundene Registry installiert wurde, können Sie Images aus Ihrer Cloudregistrierung mit lokalen Standorten oder Remotestandorten synchronisieren.
Nehmen Sie sich vor dem Einarbeiten einen Moment Zeit, um zu erfahren, wie Kubernetes mit Arc-Unterstützung konzeptionell funktioniert.
Die verbundene Registry kann mithilfe verschiedener Verschlüsselungsmethoden sicher bereitgestellt werden. Befolgen Sie für eine erfolgreiche Bereitstellung den Schnellstartleitfaden, um Voraussetzungen und andere relevante Informationen zu überprüfen. Standardmäßig ist die verbundene Registry mit HTTPS, ReadOnly-Modus, Verteilung von Vertrauensstellungen und dem Cert Manager-Dienst konfiguriert. Je nach Szenario können Sie weitere Anpassungen und Abhängigkeiten hinzufügen.
Was ist der Cert Manager-Dienst?
Cert Manager für die verbundene Registry ist ein Dienst, der TLS-Zertifikate für die Erweiterung für die verbundene Registry in einem Azure Arc-fähigen Kubernetes-Cluster verwaltet. Er stellt eine sichere Kommunikation zwischen der verbundenen Registry und anderen Komponenten sicher, indem er die Erstellung, Verlängerung und Verteilung von Zertifikaten übernimmt. Dieser Dienst kann im Rahmen der Bereitstellung der verbundenen Registry installiert werden, oder Sie können einen vorhandenen Zertifikat-Manager verwenden, wenn er bereits in Ihrem Cluster installiert ist.
Cert-Manager ist ein Open-Source-Add-On von Kubernetes, das die Verwaltung und Ausstellung von TLS-Zertifikaten aus verschiedenen Quellen automatisiert. Es verwaltet den Lebenszyklus von Zertifikaten, die von Zertifizierungsstellenpools ausgestellt wurden, die mit dem Zertifizierungsstellendienst erstellt wurden, und stellt sicher, dass sie gültig sind und verlängert werden, bevor sie ablaufen.
Was ist Verteilung von Vertrauensstellungen?
Die Verteilung von Vertrauensstellungen der verbundenen Registry bezieht sich auf den Prozess der sicheren Verteilung von Vertrauensstellungen zwischen dem Dienst für die verbundenen Registry und den Kubernetes-Clients in einem Cluster. Dies wird durch die Verwendung einer Zertifizierungsstelle (Certificate Authority, CA) wie Cert Manager erreicht, um TLS-Zertifikate zu signieren, die dann sowohl an den Registrierungsdienst als auch an die Clients verteilt werden. Dadurch werden eine sichere Authentifizierung aller Entitäten untereinander sowie eine sichere und vertrauenswürdige Umgebung innerhalb des Kubernetes-Clusters sichergestellt.
Voraussetzungen
Um die Schritte dieses Tutorials abzuschließen, benötigen Sie Folgendes:
- Befolgen Sie die Schnellstartanleitung, um die Erweiterung für die verbundene Registry sicher bereitzustellen.
Bereitstellen der Erweiterung für die verbundene Registry mit dem vorinstallierten Zertifikat-Manager
In diesem Tutorial wird veranschaulicht, wie Sie einen vorinstallierten Zertifikat-Manager-Dienst für den Cluster verwenden. Mit diesem Setup können Sie die Zertifikatverwaltung steuern, sodass Sie die Erweiterung für die verbundene Registry mit Verschlüsselung bereitstellen können. Führen Sie dazu die hier angegebenen Schritte aus:
Führen Sie den Befehl az-k8s-extension-create in diesem Schnellstart aus, und legen Sie die Parameter cert-manager.enabled=true und cert-manager.install=false fest, um zu ermitteln, ob der Zertifikat-Manager-Dienst installiert und aktiviert ist:
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
Bereitstellen der Erweiterung für die verbundene Registry mithilfe von BYOC (Bring Your Own Certificate)
In diesem Tutorial wird veranschaulicht, wie Sie Ihr eigenes Zertifikat (BYOC) für den Cluster verwenden. BYOC ermöglicht es Ihnen, Ihr eigenes Paar aus öffentlichem Zertifikat und privatem Schlüssel zu verwenden, sodass Sie die Kontrolle über die Zertifikatverwaltung erhalten. Mit diesem Setup können Sie die Erweiterung für die verbundene Registry mit Verschlüsselung bereitstellen, indem Sie die angegebenen Schritte ausführen:
Hinweis
BYOC gilt für Kunden, die ein eigenes Zertifikat verwenden, das von den Kubernetes-Knoten bereits als vertrauenswürdig eingestuft wurde. Es wird nicht empfohlen, die Knoten manuell zu aktualisieren, um die Zertifikate als vertrauenswürdig einzustufen.
Befolgen Sie die Schnellstartanleitung, und fügen Sie die Zeichenfolgenvariable und das Wertpaar für das öffentliche Zertifikat und den privaten Schlüssel hinzu.
- Erstellen eines selbstsignierten SSL-Zertifikats mit der IP-Adresse des Diensts für die verbundene Registry als 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>"
- Abrufen von Base64-codierten Zeichenfolgen dieser Zertifikatdateien
export TLS_CRT=$(cat mycert.crt | base64 -w0)
export TLS_KEY=$(cat mycert.key | base64 -w0)
- Beispiel für die Datei mit geschützten Einstellungen mit Geheimnis im JSON-Format:
Hinweis
Das Paar aus öffentlichem Zertifikat und privatem Schlüssel muss im Base64-Format codiert und der Datei mit geschützten Einstellungen hinzugefügt werden.
{
"connectionString": "[connection string here]",
"tls.crt": $TLS_CRT,
"tls.key": $TLS_KEY,
"tls.cacrt": $TLS_CRT
}
Jetzt können Sie die Erweiterung für die verbundene Registry mit HTTPS (TLS-Verschlüsselung) mithilfe der Verwaltung für Paare aus öffentlichem Zertifikat und privaten Schlüsseln bereitstellen, indem Sie Variablen konfigurieren, die auf
cert-manager.enabled=falseundcert-manager.install=falsefestgelegt sind. Bei diesen Parametern wird der Zertifikat-Manager nicht installiert oder aktiviert, da stattdessen das Paar aus öffentlichem Zertifikat und privatem Schlüssel für die Verschlüsselung verwendet wird.Führen Sie den Befehl az-k8s-extension-create für die Bereitstellung aus, nachdem Sie die Datei mit den geschützten Einstellungen bearbeitet haben:
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
Bereitstellen der verbundenen Registry mit Kubernetes-Geheimnisverwaltung
In diesem Tutorial veranschaulichen wir, wie Sie ein Kubernetes-Geheimnis in Ihrem Cluster verwenden. Ein Kubernetes-Geheimnis ermöglicht es Ihnen, autorisierten Zugriff zwischen Pods innerhalb des Clusters sicher zu verwalten. Mit diesem Setup können Sie die Erweiterung für die verbundene Registry mit Verschlüsselung bereitstellen, indem Sie die angegebenen Schritte ausführen:
Befolgen Sie die Schnellstartanleitung, und fügen Sie die Zeichenfolgenvariable und das Wertpaar für das Kubernetes-TLS-Geheimnis hinzu.
- Erstellen eines selbstsignierten SSL-Zertifikats mit der IP-Adresse des Diensts für die verbundene Registry als 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>"
- Abrufen von Base64-codierten Zeichenfolgen dieser Zertifikatdateien
export TLS_CRT=$(cat mycert.crt | base64 -w0)
export TLS_KEY=$(cat mycert.key | base64 -w0)
- Erstellen eines k8s-Geheimnisses
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
Beispiel für die Datei mit geschützten Einstellungen mit Geheimnis im JSON-Format:
{ "connectionString": "[connection string here]", "tls.secret": “k8secret” }
Jetzt können Sie die Erweiterung für die verbundene Registry mit HTTPS (TLS-Verschlüsselung) mithilfe der Kubernetes-Geheimnisverwaltung bereitstellen, indem Sie Variablen konfigurieren, die auf cert-manager.enabled=false und cert-manager.install=false festgelegt sind. Bei diesen Parametern wird der Zertifikat-Manager nicht installiert oder aktiviert, da stattdessen das Kubernetes-Geheimnis für die Verschlüsselung verwendet wird.
Führen Sie den Befehl az-k8s-extension-create für die Bereitstellung aus, nachdem Sie die Datei mit den geschützten Einstellungen bearbeitet haben:
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
Stellen Sie die verbundene Registry mithilfe Ihrer eigenen Verteilung von Vertrauensstellungen bereit, und deaktivieren Sie die Standardverteilung von Vertrauensstellungen der verbundenen Registry.
In diesem Tutorial wird veranschaulicht, wie Sie die Verteilung von Vertrauensstellungen im Cluster konfigurieren. Während Sie Ihr eigenes Kubernetes-Geheimnis oder Paar aus öffentlichem Zertifikat und privatem Schlüssel verwenden, können Sie die Erweiterung für die verbundene Registry mit TLS-Verschlüsselung und Ihrer inhärenten Verteilung von Vertrauensstellungen bereitstellen und die Standardverteilung von Vertrauensstellungen der verbundenen Registry ablehnen. Mit diesem Setup können Sie die Erweiterung für die verbundene Registry mit Verschlüsselung bereitstellen, indem Sie die angegebenen Schritte ausführen:
Befolgen Sie die Schnellstartanleitung, um entweder das Kubernetes-Geheimnis oder die Paare aus Variablen und Werten für das öffentliche Zertifikat und den privaten Schlüssel in der Datei mit geschützten Einstellungen im JSON-Format hinzuzufügen.
Führen Sie den Befehl az-k8s-extension-create in diesem Schnellstart aus, und legen Sie die Parameter
trustDistribution.enabled=falseundtrustDistribution.skipNodeSelector=falsefest, um die Verteilung der Vertrauensstellungen für die verbundene Registry abzulehnen: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>
Mit diesen Parametern wird der Zertifikat-Manager nicht installiert oder aktiviert. Darüber hinaus wird die Verteilung der Vertrauensstellungen für die verbundene Registry nicht erzwungen. Stattdessen verwenden Sie die vom Cluster bereitgestellte Verteilung der Vertrauensstellungen zum Einrichten der Vertrauensstellung zwischen der verbundenen Registry und den Clientknoten.
Bereinigen von Ressourcen
Durch Löschen der bereitgestellten Erweiterung für die verbundene Registry entfernen Sie die entsprechenden Pods der verbundenen Registry und Konfigurationseinstellungen.
Führen Sie den Befehl az-k8s-extension-delete aus, um die Erweiterung für die verbundene Registry zu löschen:
az k8s-extension delete --name myconnectedregistry --cluster-name myarcakscluster \ --resource-group myresourcegroup \ --cluster-type connectedClustersFühren Sie den Befehl az acr connected-registry delete aus, um die verbundene Registry zu löschen:
az acr connected-registry delete --registry myacrregistry \ --name myconnectedregistry \ --resource-group myresourcegroup
Durch Löschen der Erweiterung für die verbundene Registry und der verbundenen Registry entfernen Sie alle zugehörigen Ressourcen und Konfigurationen.