Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit le processus d’activation d’un proxy à l’échelle du cluster sur un cluster Azure Red Hat OpenShift. Cette fonctionnalité permet aux environnements de production de refuser l’accès direct à Internet et d’avoir plutôt un proxy HTTP ou HTTPS disponible. Cet article détaille les étapes de configuration spécifiques nécessaires pour un cluster Azure Red Hat OpenShift. Pour plus d’informations sur le fonctionnement de la fonctionnalité proxy à l’échelle du cluster pour OpenShift Container Platform, consultez la documentation Red Hat.
Lors de la configuration d’un proxy à l’échelle du cluster, il est important de comprendre les impacts suivants :
- Redémarrage du nœud : L’activation du proxy entraîne le redémarrage des nœuds de manière propagée, similaire à une mise à jour de cluster. Cela est nécessaire, car il applique de nouvelles configurations de machine.
-
Interruptions de service : Pour éviter toute interruption de service pendant ce processus, il est essentiel de préparer la
noProxyliste comme décrit.
Important
L’échec de l’adhésion aux instructions décrites dans cet article peut entraîner un routage incorrect du trafic réseau du cluster. Cela peut entraîner des problèmes de charge de travail, tels que des échecs d’extraction d’images.
Étendue de la configuration du proxy à l’échelle du cluster
- Charges de travail OpenShift : Les instructions de cet article s’appliquent uniquement aux charges de travail OpenShift. La mise en proxy des charges de travail d'application n'est pas couverte par cet article.
- Versions d’OpenShift Container Platform : Le proxy à l’échelle du cluster est pris en charge sur les versions d’OpenShift Container Platform décrites dans la stratégie de prise en charge d’Azure Red Hat OpenShift.
En suivant les instructions de cet article et en préparant la noProxy liste, les interruptions sont réduites et garantissent une transition fluide lors de l’activation du proxy.
Conditions préalables et exclusion de responsabilité
- Pour plus d’informations, consultez la documentation OpenShift sur la configuration du proxy à l’échelle du cluster .
- Serveur proxy et certificats : vous êtes censé avoir un serveur proxy et des certificats déjà en place.
- Azure Red Hat OpenShift SRE ne prend pas en charge votre serveur proxy ou vos certificats.
Aperçu
- Rassemblez les valeurs de point de terminaison requises à utiliser dans la
noProxyliste. - Activez le proxy à l’échelle du cluster à l’aide des données collectées pour
noProxy. - Vérifiez que la
noProxyliste et le proxy à l’échelle du cluster ont été correctement configurés.
Collecter les données requises pour noProxy
Vérifiez l’état du proxy à l’échelle du cluster en exécutant la commande suivante :
oc get proxy cluster -o yamlLes champs
specetstatusdoivent être vides, pour indiquer qu’il n’est pas activé. S’il n’est pas vide, il a peut-être été configuré précédemment.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: {}Notez l’adresse IP IMDS :
169.254.169.254Si vous n’utilisez pas de DNS personnalisé, notez l’adresse IP Azure DNS :
168.63.129.16Notez les domaines localhost et de service :
localhost127.0.0.1.svc.cluster.local
Exécutez la commande suivante pour récupérer le
gatewayDomains:oc get cluster cluster -o jsonpath='{.spec.gatewayDomains}'Consultez l’exemple de sortie suivant :
[ "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 ]Obtenez vos URL de domaine de cluster.
Créez les URL spécifiques du cluster pour les domaines d’API et d’application.
a) Obtenez le domaine des applications en exécutant la commande suivante :
az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "consoleProfile.url" -o tsvConsultez l’exemple de sortie suivant :
https://console-openshift-console.apps.xxxxxxxx.westus2.aroapp.io/Conservez uniquement la partie à partir de
.apps.xxxxxxxxpour utilisation dans la listenoProxy. N’incluez pas le « / » de fin.Consultez l’exemple suivant :
.apps.xxxxxxxx.westus2.aroapp.iob. Obtenez les domaines d’API.
À l’aide de la sortie de la commande précédente, remplacez
.appsparapietapi-intdans l’URL pour obtenir les domaines d’API de lanoProxyliste.Consultez l’exemple suivant :
api.xxxxxxxx.westus2.aroapp.io api-int.xxxxxxxx.westus2.aroapp.ioObtenez les plages CIDR.
a) Obtenez les
addressPrefixsous-réseaux du profil d'employé en exécutant la commande suivante :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 tsvExemple de sortie :
10.0.1.0/24b. Obtenez le
addressPrefixdu sous-réseau du profil maître en exécutant la commande suivante :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 tsvExemple de sortie :
10.0.0.0/24v. Obtenez la
podCidren exécutant la commande suivante :az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "networkProfile.podCidr" -o tsvExemple de sortie :
10.128.0.0/14d. Obtenez la
serviceCidren exécutant la commande suivante :az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "networkProfile.serviceCidr" -o tsvExemple de sortie :
172.30.0.0/16Combinez les données collectées dans votre
noProxyliste qui seront utilisées pour mettre à jour l’objet de cluster proxy dans la section suivante.
Activation du proxy à l’échelle du cluster
Créez le
user-ca-bundleconfigmap dans leopenshift-confignamespace pour utiliser le certificat approprié.a) Créez un fichier appelé
user-ca-bundle.yamlavec le contenu suivant et fournissez les valeurs de vos certificats encodés PEM :apiVersion: v1 data: ca-bundle.crt: | <MY_PEM_ENCODED_CERTS> kind: ConfigMap metadata: name: user-ca-bundle namespace: openshift-config-
data.ca-bundle.crt: cette clé de données doit être nommée ca-bundle.crt. -
data.ca-bundle.crt | <MY_PEM_ENCODED_CERTS>: un ou plusieurs certificats X.509 codés en PEM utilisés pour signer le certificat d’identité du proxy. -
metadata.name: nom de carte de configuration référencé à partir de l’objet proxy. -
metadata.namespace: Le config map doit se trouver dans le namespaceopenshift-config.
b. Créez le ConfigMap en exécutant la commande suivante :
oc create -f user-ca-bundle.yamlv. Confirmez la création de
user-ca-bundleConfigMap en exécutant la commande suivante :oc get cm -n openshift-config user-ca-bundle -o yamlConsultez l’exemple de sortie suivant :
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-
Mettez à jour l'objet de cluster proxy en utilisant
oc edit, puis configurez l'objet proxy à l'aide des informations collectées précédemment.a) Exécutez la commande suivante:
oc edit proxy/clusterMettez à jour ou ajoutez les champs suivants :
-
spec.httpProxy: URL de proxy à utiliser pour créer des connexions HTTP à l’extérieur du cluster. Le schéma d’URL doit êtrehttp. -
spec.httpsProxy: URL de proxy à utiliser pour créer des connexions HTTPS à l’extérieur du cluster. -
spec.noProxy: il s’agit de la liste séparée par des virgules des points de terminaison obtenus dans la collection des données requises pour les étapes noProxy ci-dessus. -
spec.trustedCA: une référence au config map dans l'espace de nomsopenshift-configqui contient d'autres certificats d'autorité de certification requis pour la mise en proxy des connexions HTTPS. Notez que la carte de configuration doit déjà exister avant de la référencer ici. Dans ce cas, il s’agit du nom de la carte de configuration créée ci-dessus, qui est user-ca-bundle.
b. Confirmez la configuration en exécutant la commande suivante :
oc get proxy cluster -o yamlConsultez l’exemple de sortie suivant :
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-
Attendez que la nouvelle configuration soit déployée sur tous les nœuds et que les opérateurs du cluster annoncent le bon fonctionnement.
a) Confirmez l’intégrité des nœuds en exécutant la commande suivante :
oc get nodesConsultez l’exemple de sortie suivant :
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. Confirmez l’intégrité de l’opérateur de cluster en exécutant la commande suivante :
oc get coConsultez l’exemple de sortie suivant :
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 10dRemarque
Si vous avez besoin du
user-ca-bundlefichier , il se trouve dans le répertoire suivant (mais il n’est pas nécessaire pour ce processus) :/etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crt
Vérifier la noProxy configuration
Pour vérifier la configuration de votre proxy, vérifiez l’état d’intégrité des opérateurs de cluster. Si le noProxy champ est mal configuré, plusieurs opérateurs de cluster peuvent entrer un Degraded: True état. Cela peut résulter de divers problèmes, notamment, mais pas limités à, ImagePullBack aux erreurs, aux certificats non valides ou aux problèmes de connectivité généraux. En outre, certains opérateurs peuvent rester dans un Progressing: True état en raison de causes sous-jacentes similaires.
Vérifiez l’état des opérateurs de cluster en exécutant la commande suivante :
oc get coInterprétation de la sortie (état sain) : si le
noProxychamp est correctement configuré, la sortie doit ressembler à l’exemple suivant :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 15dRemarque
Le nombre et le type d’opérateurs de cluster peuvent varier. L’exemple tronqué présenté est fourni pour illustrer un état sain pour les opérateurs pris en charge.
Interprétation de la sortie (mal configurée) : si le
noProxychamp est mal configuré, la sortie peut ressembler à l’exemple suivant :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 podsRemarque
Ce qui est montré n’est qu’un exemple tronqué de sortie. D’autres opérateurs de cluster peuvent également signaler un
Degraded: Trueétat avec des erreurs différentes résultant de la mauvaise configuration denoProxy.
Supprimer un proxy à l’échelle du cluster
Pour plus d’informations sur la suppression du proxy à l’échelle du cluster, consultez la documentation Red Hat OpenShift.