Allgemeine Voraussetzungen für die Bereitstellung von OpenShift in AzureCommon prerequisites for deploying OpenShift in Azure

In diesem Artikel werden allgemeine Voraussetzungen für die Bereitstellung von OpenShift Container Platform oder OKD in Azure beschrieben.This article describes common prerequisites for deploying OpenShift Container Platform or OKD in Azure.

Die Installation von OpenShift verwendet Ansible-Playbooks.The installation of OpenShift uses Ansible playbooks. Ansible stellt die Verbindung zu allen Clusterhosts über Secure Shell (SSH) her, um die Installationsschritte abzuschließen.Ansible uses Secure Shell (SSH) to connect to all cluster hosts to complete installation steps.

Beim Herstellen der SSH-Verbindung mit den Remotehosts kann Ansible kein Kennwort eingeben.When ansible makes the SSH connection to the remote hosts, it can't enter a password. Daher darf dem privaten Schlüssel kein Kennwort (Passphrase) zugeordnet sein. Andernfalls ist die Bereitstellung nicht erfolgreich.For this reason, the private key can't have a password (passphrase) associated with it or deployment fails.

Da die virtuellen Computer (VMs) über Azure Resource Manager-Vorlagen bereitgestellt werden, wird der gleiche öffentliche Schlüssel für den Zugriff auf alle virtuellen Computer verwendet.Because the virtual machines (VMs) deploy via Azure Resource Manager templates, the same public key is used for access to all VMs. Der entsprechende private Schlüssel muss auf dem virtuellen Computer, der auch alle Playbooks ausführt, vorhanden sein.The corresponding private key must be on the VM that executes all the playbooks as well. Aus Sicherheitsgründen wird der private Schlüssel über eine Azure Key Vault-Instanz an den virtuellen Computer übergeben.To perform this action securely, an Azure key vault is used to pass the private key into the VM.

Wenn für Container beständiger Speicher benötigt wird, sind persistente Volumes erforderlich.If there's a need for persistent storage for containers, then persistent volumes are required. OpenShift unterstützt für persistente Volumes virtuelle Azure-Festplatten (VHDs), dazu muss Azure jedoch zunächst als Cloudanbieter konfiguriert werden.OpenShift supports Azure virtual hard disks (VHDs) for persistent volumes, but Azure must first be configured as the cloud provider.

In diesem Modell führt OpenShift folgende Schritte durch:In this model, OpenShift:

  • Erstellen eines VHD-Objekts in einem Azure Storage-Konto oder auf einem verwalteten DatenträgerCreates a VHD object in an Azure storage account or a managed disk.
  • Einbinden der VHD in einen virtuellen Computer und Formatieren des VolumesMounts the VHD to a VM and formats the volume.
  • Einbinden des Volumes in den PodMounts the volume to the pod.

Damit diese Konfiguration funktioniert, muss OpenShift zur Durchführung dieser Aufgaben in Azure berechtigt sein.For this configuration to work, OpenShift needs permissions to perform these tasks in Azure. Für diesen Zweck wird ein Dienstprinzipal verwendet.A service principal is used for this purpose. Der Dienstprinzipal ist ein Sicherheitskonto in Azure Active Directory, dem Berechtigungen für Ressourcen gewährt werden.The service principal is a security account in Azure Active Directory that is granted permissions to resources.

Der Dienstprinzipal benötigt Zugriff auf die Speicherkonten und virtuellen Computer, die den Cluster bilden.The service principal needs to have access to the storage accounts and VMs that make up the cluster. Wenn alle OpenShift-Clusterressourcen in einer einzelnen Ressourcengruppe bereitgestellt werden, können dem Dienstprinzipal Berechtigungen für diese Ressourcengruppe gewährt werden.If all OpenShift cluster resources deploy to a single resource group, the service principal can be granted permissions to that resource group.

In diesem Leitfaden erfahren Sie, wie Sie die Artefakte für die Voraussetzungen erstellen.This guide describes how to create the artifacts associated with the prerequisites.

  • Erstellen Sie einen Schlüsseltresor (Key Vault) zum Verwalten von SSH-Schlüsseln für den OpenShift-Cluster.Create a key vault to manage SSH keys for the OpenShift cluster.
  • Erstellen Sie einen Dienstprinzipal für den Azure-Cloudanbieter.Create a service principal for use by the Azure Cloud Provider.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

Anmelden bei AzureSign in to Azure

Melden Sie sich mit dem Befehl az login bei Ihrem Azure-Abonnement an, und befolgen Sie die Anweisungen auf dem Bildschirm, oder klicken Sie auf Ausprobieren, um Cloud Shell zu verwenden.Sign in to your Azure subscription with the az login command and follow the on-screen directions, or click Try it to use Cloud Shell.

az login

Erstellen einer RessourcengruppeCreate a resource group

Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe.Create a resource group with the az group create command. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden.An Azure resource group is a logical container into which Azure resources are deployed and managed. Sie sollten zum Hosten des Schlüsseltresors eine dedizierte Ressourcengruppe verwenden.You should use a dedicated resource group to host the key vault. Diese Gruppe ist von der Ressourcengruppe getrennt, in der die OpenShift-Clusterressourcen bereitgestellt werden.This group is separate from the resource group into which the OpenShift cluster resources deploy.

Im folgenden Beispiel wird eine Ressourcengruppe namens keyvaultrg am Standort eastus erstellt:The following example creates a resource group named keyvaultrg in the eastus location:

az group create --name keyvaultrg --location eastus

Erstellen eines SchlüsseltresorsCreate a key vault

Erstellen Sie einen Schlüsseltresor zum Speichern der SSH-Schlüssel für den Cluster, indem Sie den Befehl az keyvault create verwenden.Create a key vault to store the SSH keys for the cluster with the az keyvault create command. Der Key Vault-Name muss global eindeutig sein.The key vault name must be globally unique.

Im folgenden Beispiel wird ein Schlüsseltresor namens keyvault in der Ressourcengruppe keyvaultrg erstellt:The following example creates a key vault named keyvault in the keyvaultrg resource group:

az keyvault create --resource-group keyvaultrg --name keyvault \
       --enabled-for-template-deployment true \
       --location eastus

Erstellen eines SSH-SchlüsselsCreate an SSH key

Ein SSH-Schlüssel ist erforderlich, um den Zugriff auf den OpenShift-Cluster zu schützen.An SSH key is needed to secure access to the OpenShift cluster. Erstellen Sie mithilfe des Befehls ssh-keygen (Linux oder Mac OS) ein SSH-Schlüsselpaar:Create an SSH key pair by using the ssh-keygen command (on Linux or macOS):

ssh-keygen -f ~/.ssh/openshift_rsa -t rsa -N ''

Hinweis

Ihr SSH-Schlüsselpaar darf kein Kennwort/keine Passphrase enthalten.Your SSH key pair can't have a password / passphrase.

Weitere Informationen zu SSH-Schlüsseln unter Windows finden Sie unter Verwenden von SSH-Schlüsseln in Windows.For more information on SSH keys on Windows, see How to create SSH keys on Windows. Exportieren Sie den privaten Schlüssel im OpenSSH-Format.Be sure to export the private key in OpenSSH format.

Speichern des privaten SSH-Schlüssels in Azure Key VaultStore the SSH private key in Azure Key Vault

Die OpenShift-Bereitstellung verwendet den erstellten SSH-Schlüssel zum Sicherstellen des Zugriffs auf den OpenShift-Master.The OpenShift deployment uses the SSH key you created to secure access to the OpenShift master. Damit die Bereitstellung den SSH-Schlüssel sicher abrufen kann, speichern Sie den Schlüssel im Key Vault. Verwenden Sie hierzu den folgenden Befehl:To enable the deployment to securely retrieve the SSH key, store the key in Key Vault by using the following command:

az keyvault secret set --vault-name keyvault --name keysecret --file ~/.ssh/openshift_rsa

Erstellen eines DienstprinzipalsCreate a service principal

OpenShift kommuniziert mit Azure unter Verwendung von Benutzername und Kennwort oder eines Dienstprinzipals.OpenShift communicates with Azure by using a username and password or a service principal. Ein Azure-Dienstprinzipal ist eine Sicherheitsidentität, die Sie mit Apps, Diensten und Automatisierungstools wie OpenShift verwenden können.An Azure service principal is a security identity that you can use with apps, services, and automation tools like OpenShift. Sie steuern und definieren die Berechtigungen hinsichtlich der Vorgänge, die der Dienstprinzipal in Azure ausführen können soll.You control and define the permissions as to which operations the service principal can perform in Azure. Es wird empfohlen, die Berechtigungen des Dienstprinzipals auf bestimmte Ressourcengruppen und nicht das gesamte Abonnement festzulegen.It's best to scope the permissions of the service principal to specific resource groups rather than the entire subscription.

Erstellen Sie mit az ad sp create-for-rbac einen Dienstprinzipal, und geben Sie die Anmeldeinformationen aus, die OpenShift benötigt.Create a service principal with az ad sp create-for-rbac and output the credentials that OpenShift needs.

Im folgenden Beispiel wird ein Dienstprinzipal erstellt und mit Berechtigungen vom Typ „Mitwirkender“ für eine Ressourcengruppe namens „openshiftrg“ ausgestattet.The following example creates a service principal and assigns it contributor permissions to a resource group named openshiftrg.

Erstellen Sie zunächst die Ressourcengruppe „openshiftrg“:First, create the resource group named openshiftrg:

az group create -l eastus -n openshiftrg

Erstellen Sie den Dienstprinzipal:Create service principal:

scope=`az group show --name openshiftrg --query id`
az ad sp create-for-rbac --name openshiftsp \
      --role Contributor --password {Strong Password} \
      --scopes $scope

Falls Sie Windows verwenden, führen Sie az group show --name openshiftrg --query id aus, und verwenden Sie die Ausgabe anstelle von „$scope“.If you're using Windows, execute az group show --name openshiftrg --query id and use the output in place of $scope.

Notieren Sie die „appId“-Eigenschaft, die der Befehl zurückgibt:Take note of the appId property returned from the command:

{
  "appId": "11111111-abcd-1234-efgh-111111111111",
  "displayName": "openshiftsp",
  "name": "http://openshiftsp",
  "password": {Strong Password},
  "tenant": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}

Warnung

Achten Sie darauf, ein sicheres Kennwort zu erstellen.Be sure to create a secure password. Befolgen Sie die Anleitung unter Kennwortrichtlinien und -einschränkungen in Azure Active Directory.Follow the Azure AD password rules and restrictions guidance.

Weitere Informationen über Dienstprinzipale finden Sie unter Erstellen eines Azure-Dienstprinzipals mit Azure CLI.For more information on service principals, see Create an Azure service principal with Azure CLI.

Voraussetzungen, die nur die Resource Manager-Vorlage betreffenPrerequisites applicable only to Resource Manager template

Geheimnisse müssen für den privaten SSH-Schlüssel (sshPrivateKey), das Azure AD-Clientgeheimnis (aadClientSecret), das OpenShift-Administratorkennwort (openshiftPassword) und das Kennwort oder den Aktivierungsschlüssel für den Red Hat Subscription Manager (rhsmPasswordOrActivationKey) erstellt werden.Secrets will need to be created for the SSH private key (sshPrivateKey), Azure AD client secret (aadClientSecret), OpenShift admin password (openshiftPassword), and Red Hat Subscription Manager password or activation key (rhsmPasswordOrActivationKey). Wenn darüber hinaus benutzerdefinierte SSL-Zertifikate verwendet werden, müssen sechs zusätzliche Geheimnisse erstellt werden: routingcafile, routingcertfile, routingkeyfile, mastercafile, mastercertfile und masterkeyfile.Additionally, if custom SSL certificates are used, then six additional secrets will need to be created - routingcafile, routingcertfile, routingkeyfile, mastercafile, mastercertfile, and masterkeyfile. Diese Parameter werden weiter unten eingehend erläutert.These parameters will be explained in more detail.

Die Vorlage verweist auf die spezifischen Geheimnisnamen, daher müssen Sie die oben aufgeführten fett formatierten Namen (unter Beachtung der Groß-/Kleinschreibung) verwenden.The template references specific secret names so you must use the bolded names listed above (case sensitive).

Benutzerdefinierte ZertifikateCustom Certificates

Standardmäßig stellt die Vorlage einen OpenShift-Cluster unter Verwendung selbstsignierter Zertifikate für die OpenShift-Webkonsole und die Routingdomäne bereit.By default, the template will deploy an OpenShift cluster using self-signed certificates for the OpenShift web console and the routing domain. Wenn Sie benutzerdefinierte SSL-Zertifikate verwenden möchten, legen Sie „routingCertType“ auf „custom“ und „masterCertType“ auf „custom“ fest.If you want to use custom SSL certificates, set 'routingCertType' to 'custom' and 'masterCertType' to 'custom'. Sie benötigen die CA-, CERT- und Schlüsseldateien im PEM-Format für die Zertifikate.You'll need the CA, Cert, and Key files in .pem format for the certificates. Es ist möglich, benutzerdefinierte Zertifikate für einen, jedoch nicht den anderen Bereich zu verwenden.It is possible to use custom certificates for one but not the other.

Sie müssen diese Dateien in Key Vault-Geheimnissen speichern.You'll need to store these files in Key Vault secrets. Verwenden Sie denselben Schlüsseltresor, den Sie für den privaten Schlüssel verwendet haben.Use the same Key Vault as the one used for the private key. Anstatt sechs zusätzliche Eingaben für die Geheimnisnamen zu erfordern, ist die Vorlage auf spezifische Geheimnisnamen für die SSL-Zertifikatsdateien fest codiert.Rather than require 6 additional inputs for the secret names, the template is hard-coded to use specific secret names for each of the SSL certificate files. Speichern Sie die Zertifikatdaten mit den Informationen aus der folgenden Tabelle.Store the certificate data using the information from the following table.

GeheimnisnameSecret Name ZertifikatsdateiCertificate file
mastercafilemastercafile Master-CA-Dateimaster CA file
mastercertfilemastercertfile Maste-CERT-Dateimaster CERT file
masterkeyfilemasterkeyfile Master-Schlüsseldateimaster Key file
routingcafileroutingcafile Routing-CA-Dateirouting CA file
routingcertfileroutingcertfile Routing-CERT-Dateirouting CERT file
routingkeyfileroutingkeyfile Routing-Schlüsseldateirouting Key file

Erstellen Sie die Geheimnisse mithilfe der Azure-Befehlszeilenschnittstelle.Create the secrets using the Azure CLI. Unten ist ein Beispiel aufgeführt.Below is an example.

az keyvault secret set --vault-name KeyVaultName -n mastercafile --file ~/certificates/masterca.pem

Nächste SchritteNext steps

In diesem Artikel wurden folgende Themen behandelt:This article covered the following topics:

  • Erstellen Sie einen Schlüsseltresor (Key Vault) zum Verwalten von SSH-Schlüsseln für den OpenShift-Cluster.Create a key vault to manage SSH keys for the OpenShift cluster.
  • Erstellen Sie einen Dienstprinzipal für Azure Cloud Solution Provider.Create a service principal for use by the Azure Cloud Solution Provider.

Als Nächstes können Sie einen OpenShift-Cluster bereitstellen:Next, deploy an OpenShift cluster: