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.
In diesem Artikel wird der Prozess zum Aktivieren eines clusterweiten Proxys in einem Azure Red Hat OpenShift-Cluster beschrieben. Mit diesem Feature können Produktionsumgebungen direkten Zugriff auf das Internet verweigern und stattdessen über einen HTTP- oder HTTPS-Proxy verfügen. In diesem Artikel werden die spezifischen Konfigurationsschritte beschrieben, die für einen Azure Red Hat OpenShift-Cluster erforderlich sind. Weitere Informationen zur Funktionsweise des clusterweiten Proxyfeatures für die OpenShift-Containerplattform finden Sie in der Red Hat-Dokumentation.
Beim Konfigurieren eines clusterweiten Proxys ist es wichtig, die folgenden Auswirkungen zu verstehen:
- Knotenneustart: Das Aktivieren des Proxys bewirkt, dass Knoten in rollierender Weise neu gestartet werden, ähnlich wie bei einem Clusterupdate. Dies ist erforderlich, da neue Computerkonfigurationen angewendet werden.
-
Dienstunterbrechungen: Um Dienstunterbrechungen während dieses Prozesses zu vermeiden, ist es wichtig, die
noProxyListe wie beschrieben vorzubereiten.
Von Bedeutung
Wenn die in diesem Artikel beschriebenen Anweisungen nicht eingehalten werden, kann dies dazu führen, dass der Clusternetzwerkdatenverkehr nicht ordnungsgemäß weitergeleitet wird. Dies kann zu Arbeitslastproblemen führen, wie beispielsweise Fehler beim Abrufen von Images.
Umfang der clusterweiten Proxykonfiguration
- OpenShift-Workloads: Die Anweisungen in diesem Artikel gelten nur für OpenShift-Workloads. Das Proxying von Anwendungsworkloads ist nicht Gegenstand dieses Artikels.
- OpenShift Container Platform-Versionen: Clusterweiter Proxy wird in OpenShift Container Platform-Versionen unterstützt, die in der Azure Red Hat OpenShift-Unterstützungsrichtlinie beschrieben sind.
Wenn Sie die Anweisungen in diesem Artikel befolgen und die noProxy Liste vorbereiten, werden Unterbrechungen minimiert und ein reibungsloser Übergang beim Aktivieren des Proxys sichergestellt.
Voraussetzungen und Haftungsausschluss
- Weitere Informationen finden Sie in der OpenShift-Dokumentation zum Konfigurieren des clusterweiten Proxys .
- Proxyserver und Zertifikate: Es wird erwartet, dass bereits ein Proxyserver und Zertifikate vorhanden sind.
- Azure Red Hat OpenShift SRE bietet keine Unterstützung für Ihren Proxyserver oder Ihre Zertifikate.
Überblick
- Sammeln Sie die erforderlichen Endpunktwerte für die Verwendung in der
noProxyListe. - Aktivieren Sie den clusterweiten Proxy mithilfe der gesammelten Daten für
noProxy. - Stellen Sie sicher, dass die
noProxyListe und der clusterweite Proxy erfolgreich konfiguriert wurden.
Sammeln der erforderlichen Daten für noProxy
Überprüfen Sie den clusterweiten Proxystatus, indem Sie den folgenden Befehl ausführen:
oc get proxy cluster -o yamlDie Felder
specundstatussollten leer sein und anzeigen, dass sie nicht aktiviert sind. Wenn sie nicht leer ist, wurde sie möglicherweise zuvor konfiguriert.apiVersion: config.openshift.io/v1 kind: Proxy metadata: creationTimestamp: "xxxx-xx-xxTxx:xx:xxZ" generation: name: cluster resourceVersion: uid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx spec: trustedCA: name: "" status: {}Beachten Sie die IMDS-IP:
169.254.169.254Wenn Sie kein benutzerdefiniertes DNS verwenden, beachten Sie die Azure DNS-IP:
168.63.129.16Beachten Sie die Localhost- und Dienstdomänen:
localhost127.0.0.1.svc.cluster.local
Rufen Sie den
gatewayDomainsab, indem Sie den folgenden Befehl ausführen:oc get cluster cluster -o jsonpath='{.spec.gatewayDomains}'Sehen Sie sich die folgende Beispielausgabe an:
[ "agentimagestorews01.blob.core.windows.net", "agentimagestorecus01.blob.core.windows.net", "agentimagestoreeus01.blob.core.windows.net", "agentimagestoreeus01.blob.core.windows.net", "agentimagestoreeas01.blob.core.windows.net", "eastus-shared.prod.warm.ingest.monitor.core.windows.net", "...", // Many other endpoints ]Rufen Sie Ihre Clusterdomänen-URLs ab.
Erstellen Sie die clusterspezifischen URLs für die API und Anwendungsdomänen.
a) Rufen Sie die Anwendungsdomäne ab, indem Sie den folgenden Befehl ausführen:
az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "consoleProfile.url" -o tsvSehen Sie sich die folgende Beispielausgabe an:
https://console-openshift-console.apps.xxxxxxxx.westus2.aroapp.io/Behalten Sie nur den Teil
.apps.xxxxxxxxfür die Verwendung in der ListenoProxybei. Schließen Sie das nachfolgende "/" nicht ein.Sehen Sie sich das folgende Beispiel an:
.apps.xxxxxxxx.westus2.aroapp.iob. Rufen Sie die API-Domänen ab.
Verwenden Sie die Ausgabe des vorherigen Befehls, um
.appsin der URL durchapiundapi-intzu ersetzen und so die API-Domänen für dienoProxy-Liste zu erhalten.Sehen Sie sich das folgende Beispiel an:
api.xxxxxxxx.westus2.aroapp.io api-int.xxxxxxxx.westus2.aroapp.ioRufen Sie die CIDR-Bereiche ab.
a) Rufen Sie die
addressPrefixSubnetze des Arbeitsprofils ab, indem Sie den folgenden Befehl ausführen:SUBNET_ID=$(az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "workerProfiles[].subnetId" -o tsv) az network vnet subnet show --ids "$SUBNET_ID" --query "addressPrefix || [].addressPrefix" -o tsvBeispielausgabe:
10.0.1.0/24b. Rufen Sie das
addressPrefixSubnetz des Masterprofils ab, indem Sie den folgenden Befehl ausführen:SUBNET_ID=$(az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "masterProfile.subnetId" -o tsv) az network vnet subnet show --ids "$SUBNET_ID" --query "addressPrefix" -o tsvBeispielausgabe:
10.0.0.0/24Abschnitt c. Rufen Sie den
podCidrab, indem Sie den folgenden Befehl ausführen:az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "networkProfile.podCidr" -o tsvBeispielausgabe:
10.128.0.0/14d. Rufen Sie den
serviceCidrab, indem Sie den folgenden Befehl ausführen:az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "networkProfile.serviceCidr" -o tsvBeispielausgabe:
172.30.0.0/16Kombinieren Sie die gesammelten Daten in Ihrer
noProxyListe, die zum Aktualisieren des Proxyclusterobjekts im nächsten Abschnitt verwendet werden.
Aktivieren von clusterweitem Proxy
Erstellen Sie die
user-ca-bundleConfigmap imopenshift-configNamespace, um das richtige Zertifikat zu verwenden.a) Erstellen Sie eine Datei, die mit dem folgenden Inhalt aufgerufen wird
user-ca-bundle.yaml, und stellen Sie die Werte Ihrer PEM-codierten Zertifikate bereit:apiVersion: v1 data: ca-bundle.crt: | <MY_PEM_ENCODED_CERTS> kind: ConfigMap metadata: name: user-ca-bundle namespace: openshift-config-
data.ca-bundle.crt: Dieser Datenschlüssel muss den Namen "ca-bundle.crt" haben. -
data.ca-bundle.crt | <MY_PEM_ENCODED_CERTS>: Mindestens ein PEM-codiertes X.509-Zertifikat, das zum Signieren des Identitätszertifikats des Proxys verwendet wird. -
metadata.name: Der vom Proxyobjekt referenzierte Name der Konfigurationsdatei. -
metadata.namespace: Die Konfigurationskarte muss sich imopenshift-configNamensraum befinden.
b. Erstellen Sie die ConfigMap, indem Sie den folgenden Befehl ausführen:
oc create -f user-ca-bundle.yamlAbschnitt c. Bestätigen Sie die Erstellung der
user-ca-bundleConfigMap, indem Sie den folgenden Befehl ausführen:oc get cm -n openshift-config user-ca-bundle -o yamlSehen Sie sich die folgende Beispielausgabe an:
apiVersion: v1 data: ca-bundle.crt: | -----BEGIN CERTIFICATE----- <CERTIFICATE_DATA> -----END CERTIFICATE----- kind: ConfigMap metadata: creationTimestamp: "xxxx-xx-xxTxx:xx:xxZ" name: user-ca-bundle namespace: openshift-config resourceVersion: "xxxxxx" uid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-
Aktualisieren Sie das Proxyclusterobjekt mit Hilfe von
oc edit, und konfigurieren Sie dann das Proxyobjekt mithilfe der zuvor gesammelten Informationen.a) Führen Sie den folgenden Befehl aus:
oc edit proxy/clusterAktualisieren oder Hinzufügen der folgenden Felder:
-
spec.httpProxy: Eine Proxy-URL, die zum Erstellen von HTTP-Verbindungen außerhalb des Clusters verwendet wird. Das URL-Schema musshttpsein. -
spec.httpsProxy: Eine Proxy-URL, die zum Erstellen von HTTPS-Verbindungen außerhalb des Clusters verwendet wird. -
spec.noProxy: Dies wird die kommagetrennte Liste der Endpunkte sein, die in den obigen Schritten 'Erforderliche Daten für noProxy sammeln' abgerufen wurden. -
spec.trustedCA: Ein Verweis auf die Konfigurationszuordnung imopenshift-configNamespace, die andere für die Proxy-HTTPS-Verbindungen erforderliche CA-Zertifikate enthält. Beachten Sie, dass die ConfigMap bereits vorhanden sein muss, bevor darauf hier verwiesen wird. In diesem Fall ist dies der Name der oben erstellten Config-Map, die benutzer-ca-bundle ist.
b. Bestätigen Sie die Konfiguration, indem Sie den folgenden Befehl ausführen:
oc get proxy cluster -o yamlSehen Sie sich die folgende Beispielausgabe an:
apiVersion: config.openshift.io/v1 kind: Proxy metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"config.openshift.io/v1","kind":"Proxy","metadata":{"annotations":{},"name":"cluster"},"spec":{"httpProxy":"http://10.0.0.15:3128","httpsProxy":"https://10.0.0.15:3129","noProxy":"agentimagestorecus01.blob.core.windows.net,agentimagestoreeus01.blob.core.windows.net,agentimagestorewus01.blob.core.windows.net,agentimagestoreweu01.blob.core.windows.net,agentimagestoreeas01.blob.core.windows.net,australiaeast-shared.prod.warm.ingest.monitor.core.windows.net,gcs.prod.monitoring.core.windows.net,gsm1130809042eh.servicebus.windows.net,gsm1130809042xt.blob.core.windows.net,gsm119650579eh.servicebus.windows.net,gsm119650579xt.blob.core.windows.net,gsm810972145eh.servicebus.windows.net,gsm810972145xt.blob.core.windows.net,maupdateaccount.blob.core.windows.net,maupdateaccount2.blob.core.windows.net,maupdateaccount3.blob.core.windows.net,maupdateaccount4.blob.core.windows.net,production.diagnostics.monitoring.core.windows.net,qos.prod.warm.ingest.monitor.core.windows.net,login.microsoftonline.com,management.azure.com,arosvc.azurecr.io,arosvc.australiaeast.data.azurecr.io,imageregistryvmxx7.blob.core.windows.net,.cluster.local,.svc,api-int.vlsi41ah.australiaeast.aroapp.io,localhost,10.0.0.0/8","trustedCA":{"name":"user-ca-bundle"}}} creationTimestamp: "xxxx-xx-xxTxx:xx:xxZ" generation: 17 name: cluster resourceVersion: "xxxxxxx" uid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx spec: httpProxy: http://10.0.0.15:3128 httpsProxy: https://10.0.0.15:3129 noProxy: agentimagestorecus01.blob.core.windows.net,agentimagestoreeus01.blob.core.windows.net,agentimagestorewus01.blob.core.windows.net,agentimagestoreweu01.blob.core.windows.net,agentimagestoreeas01.blob.core.windows.net,australiaeast-shared.prod.warm.ingest.monitor.core.windows.net,gcs.prod.monitoring.core.windows.net,gsm1130809042eh.servicebus.windows.net,gsm1130809042xt.blob.core.windows.net,gsm119650579eh.servicebus.windows.net,gsm119650579xt.blob.core.windows.net,gsm810972145eh.servicebus.windows.net,gsm810972145xt.blob.core.windows.net,maupdateaccount.blob.core.windows.net,maupdateaccount2.blob.core.windows.net,maupdateaccount3.blob.core.windows.net,maupdateaccount4.blob.core.windows.net,production.diagnostics.monitoring.core.windows.net,qos.prod.warm.ingest.monitor.core.windows.net,login.microsoftonline.com,management.azure.com,arosvc.azurecr.io,arosvc.australiaeast.data.azurecr.io,imageregistryvmxx7.blob.core.windows.net,.cluster.local,.svc,api-int.vlsi41ah.australiaeast.aroapp.io,localhost,10.0.0.0/8 trustedCA: name: user-ca-bundle status: httpProxy: http://10.0.0.15:3128 httpsProxy: https://10.0.0.15:3129 noProxy: .cluster.local,.svc,10.0.0.0/8,10.128.0.0/14,127.0.0.0/8,127.0.0.1,169.254.169.254,172.30.0.0/16,agentimagestorecus01.blob.core.windows.net,agentimagestoreeas01.blob.core.windows.net,agentimagestoreeus01.blob.core.windows.net,agentimagestoreweu01.blob.core.windows.net,agentimagestorewus01.blob.core.windows.net,api-int.vlsi41ah.australiaeast.aroapp.io,arosvc.australiaeast.data.azurecr.io,arosvc.azurecr.io,australiaeast-shared.prod.warm.ingest.monitor.core.windows.net,gcs.prod.monitoring.core.windows.net,gsm1130809042eh.servicebus.windows.net,gsm1130809042xt.blob.core.windows.net,gsm119650579eh.servicebus.windows.net,gsm119650579xt.blob.core.windows.net,gsm810972145eh.servicebus.windows.net,gsm810972145xt.blob.core.windows.net,imageregistryvmxx7.blob.core.windows.net,localhost,login.microsoftonline.com,management.azure.com,maupdateaccount.blob.core.windows.net,maupdateaccount2.blob.core.windows.net,maupdateaccount3.blob.core.windows.net,maupdateaccount4.blob.core.windows.net,production.diagnostics.monitoring.core.windows.net,qos.prod.warm.ingest.monitor.core.windows.net-
Warten Sie, bis die neue Maschinenkonfiguration für alle Knoten eingeführt wird und die Clusteroperatoren eine fehlerfreie Meldung machen.
a) Bestätigen Sie den Knotenstatus, indem Sie den folgenden Befehl ausführen:
oc get nodesSehen Sie sich die folgende Beispielausgabe an:
NAME STATUS ROLES AGE VERSION mycluster-master-0 Ready master 10d v1.xx.xx+xxxxxxx mycluster-master-1 Ready master 10d v1.xx.xx+xxxxxxx mycluster-master-2 Ready master 10d v1.xx.xx+xxxxxxx mycluster-worker-australiaeast1-mvzqr Ready worker 10d v1.xx.xx+xxxxxxx mycluster-worker-australiaeast2-l9fgj Ready worker 10d v1.xx.xx+xxxxxxx mycluster-worker-australiaeast3-pz9rw Ready worker 10d v1.xx.xx+xxxxxxxb. Überprüfen Sie die Integrität des Clusteroperators, indem Sie den folgenden Befehl ausführen:
oc get coSehen Sie sich die folgende Beispielausgabe an:
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE aro vxxxxxxxx True False False 10d authentication 4.xx.xx True False False 8m25s cloud-controller-manager 4.xx.xx True False False 10d cloud-credential 4.xx.xx True False False 10d cluster-autoscaler 4.xx.xx True False False 10d ... (Many other components) ... storage 4.xx.xx True False False 10dHinweis
Wenn Sie das
user-ca-bundleVerzeichnis benötigen, befindet es sich im folgenden Verzeichnis (für diesen Prozess ist er jedoch nicht erforderlich):/etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crt
Überprüfen der noProxy Konfiguration
Überprüfen Sie den Integritätsstatus der Clusteroperatoren, um die Proxykonfiguration zu überprüfen. Wenn das noProxy Feld falsch konfiguriert ist, können mehrere Clusteroperatoren einen Degraded: True Zustand eingeben. Dies kann zu verschiedenen Problemen führen, einschließlich, aber nicht beschränkt auf Fehler, ImagePullBack ungültige Zertifikate oder allgemeine Konnektivitätsprobleme. Darüber hinaus können einige Operatoren aufgrund ähnlicher zugrunde liegender Ursachen in einem Progressing: True Zustand verbleiben.
Überprüfen Sie den Status der Clusteroperatoren, indem Sie den folgenden Befehl ausführen:
oc get coInterpretieren der Ausgabe (fehlerfreier Zustand): Wenn das
noProxyFeld ordnungsgemäß konfiguriert ist, sollte die Ausgabe dem folgenden Beispiel ähneln:NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE aro vxxxxxxxx.xx True False False 15d authentication 4.xx.xx True False False 15d cloud-controller-manager 4.xx.xx True False False 15d cloud-credential 4.xx.xx True False False 15dHinweis
Die Anzahl und der Typ der Clusteroperatoren können variieren. Das verkürzte Beispiel wird bereitgestellt, um einen gesunden Zustand für unterstützte Operatoren zu veranschaulichen.
Interpretieren der Ausgabe (falsch konfiguriert): Wenn das
noProxyFeld falsch konfiguriert ist, kann die Ausgabe dem folgenden Beispiel ähneln:NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE aro vxxxxxxxx.xx True False False 45h authentication 4.xx.xx False True True 24h OAuthServerRouteEndpointAccessibleControllerAvailable: Get "https://oauth-openshift.apps.mm6osebam6b03b9df3.eastus2euap.aroapp.io/healthz": Not Found control-plane-machine-set 4.xx.xx True False False 46h SyncLoopRefreshProgressing: Working toward version 4.15.35, 1 replicas available image-registry 4.xx.xx True True False 45h NodeCADaemonProgressing: The daemon set node-ca is deployed Progressing: The deployment has not completed ingress 4.xx.xx True True True 83m The "default" ingress controller reports Degraded=True: DegradedConditions: One or more other status conditions indicate a degraded state: CanaryChecksSucceeding=False (CanaryChecksRepetitiveFailures: Canary route checks for the default ingress controller are failing) machine-config 4.xx.xx False False True 43h Cluster not available for [{operator 4.15.35}]: error during waitForControllerConfigToBeCompleted: [context deadline exceeded, controllerconfig is not completed: status for ControllerConfig machine-config-controller is being reported for 6, expecting it for 13] storage 4.xx.xx True True False 45h AzureFileCSIDriverOperatorCRProgressing: AzureFileDriverControllerServiceControllerProgressing: Waiting for Deployment to deploy pods AzureFileCSIDriverOperatorCRProgressing: AzureFileDriverNodeServiceControllerProgressing: Waiting for DaemonSet to deploy node podsHinweis
Es wird nur eine abgeschnittene Beispielausgabe angezeigt. Andere Clusteroperatoren können ebenfalls einen
Degraded: TrueZustand zusammen mit unterschiedlichen Fehlern melden, die aufgrund der Fehlkonfiguration vonnoProxyauftreten.
Den clusterweiten Proxy entfernen
Informationen zum Entfernen des clusterweiten Proxys finden Sie in der Dokumentation zu Red Hat OpenShift.