Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver processen för att aktivera en klusteromfattande proxy i ett Azure Red Hat OpenShift-kluster. Med den här funktionen kan produktionsmiljöer neka direkt åtkomst till Internet och i stället ha en HTTP- eller HTTPS-proxy tillgänglig. Den här artikeln beskriver de specifika konfigurationssteg som krävs för ett Azure Red Hat OpenShift-kluster. Mer information om hur den klusteromfattande proxyfunktionen fungerar för OpenShift Container Platform finns i Red Hat-dokumentationen.
När du konfigurerar en klusteromfattande proxy är det viktigt att förstå följande effekter:
- Omstart av nod: Om proxyn aktiveras startas noderna om på ett löpande sätt, ungefär som en klusteruppdatering. Detta är nödvändigt eftersom det tillämpar nya datorkonfigurationer.
-
Tjänststörningar: För att undvika avbrott i tjänsten under den här processen är det viktigt att förbereda listan enligt beskrivningen
noProxy.
Viktigt!
Om du inte följer anvisningarna i den här artikeln kan det leda till felaktig routning av klusternätverkstrafik. Detta kan leda till problem med arbetsbelastning, till exempel fel vid bildhämtning.
Omfång för klusteromfattande proxykonfiguration
- OpenShift-arbetsbelastningar: Anvisningarna i den här artikeln gäller endast för OpenShift-arbetsbelastningar. Proxyprogramarbetsbelastningar ligger utanför omfånget för den här artikeln.
- OpenShift Container Platform-versioner: Klusteromfattande proxy stöds i OpenShift Container Platform-versioner som beskrivs i Azure Red Hat OpenShift-supportprincipen.
Om du följer anvisningarna i den här artikeln och förbereder noProxy listan minimeras störningarna och en smidig övergång säkerställs när proxyn aktiveras.
Krav och ansvarsfriskrivning
- Mer information finns i OpenShift-dokumentationen för Att konfigurera den klusteromfattande proxyn .
- Proxyserver och certifikat: Du förväntas redan ha en proxyserver och certifikat på plats.
- Azure Red Hat OpenShift SRE ger inte stöd för proxyservern eller certifikaten.
Översikt
- Samla in de slutpunktsvärden som krävs för användning i
noProxylistan. - Aktivera den klusteromfattande proxyn med hjälp av insamlade data för
noProxy. - Kontrollera att
noProxylistan och den klusteromfattande proxyn har konfigurerats.
Samla in nödvändiga data för noProxy
Kontrollera proxystatusen för hela klustret genom att köra följande kommando:
oc get proxy cluster -o yamlFälten
specochstatusbör vara tomma, vilket visar att det inte är aktiverat. Om den inte är tom kan den ha konfigurerats tidigare.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: {}Observera IMDS IP:
169.254.169.254Om du inte använder anpassad DNS noterar du Azure DNS-IP:en:
168.63.129.16Observera localhost- och tjänstdomänerna:
localhost127.0.0.1.svc.cluster.local
Hämta
gatewayDomainsgenom att köra följande kommando:oc get cluster cluster -o jsonpath='{.spec.gatewayDomains}'Se följande exempelutdata:
[ "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 ]Hämta url:er för klusterdomänen.
Skapa klusterspecifika URL:er för API:et och programdomänerna.
a. Hämta programdomänen genom att köra följande kommando:
az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "consoleProfile.url" -o tsvSe följande exempelutdata:
https://console-openshift-console.apps.xxxxxxxx.westus2.aroapp.io/Behåll endast delen som börjar med
.apps.xxxxxxxxför användning i listannoProxy. Ta inte med avslutande "/".Se följande exempel:
.apps.xxxxxxxx.westus2.aroapp.iob) Hämta API-domänerna.
Använd utdata från föregående kommando och ersätt
.appsmedapiochapi-inti URL:en för att hämta API-domänerna förnoProxylistan.Se följande exempel:
api.xxxxxxxx.westus2.aroapp.io api-int.xxxxxxxx.westus2.aroapp.ioHämta CIDR-intervallen.
a. Hämta
addressPrefixfrån arbetarprofilens undernät genom att köra följande kommando: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 tsvExempel på utdata:
10.0.1.0/24b) Hämta
addressPrefixfrån huvudprofilens undernät genom att köra följande kommando: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 tsvExempel på utdata:
10.0.0.0/24c. Hämta
podCidrgenom att köra följande kommando:az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "networkProfile.podCidr" -o tsvExempel på utdata:
10.128.0.0/14d. Hämta
serviceCidrgenom att köra följande kommando:az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "networkProfile.serviceCidr" -o tsvExempel på utdata:
172.30.0.0/16Kombinera insamlade data i listan
noProxysom ska användas för att uppdatera proxyklusterobjektet i nästa avsnitt.
Aktivera klusteromfattande proxy
Skapa ConfigMap
user-ca-bundlei namnområdetopenshift-configså att rätt certifikat används.a. Skapa en fil
user-ca-bundle.yamlmed namnet med följande innehåll och ange värdena för dina PEM-kodade certifikat:apiVersion: v1 data: ca-bundle.crt: | <MY_PEM_ENCODED_CERTS> kind: ConfigMap metadata: name: user-ca-bundle namespace: openshift-config-
data.ca-bundle.crt: Den här datanyckeln måste ha namnet ca-bundle.crt. -
data.ca-bundle.crt | <MY_PEM_ENCODED_CERTS>: Ett eller flera PEM-kodade X.509-certifikat som används för att signera proxyns identitetscertifikat. -
metadata.name: Namnet på konfigurationskartan som refereras från proxyobjektet. -
metadata.namespace: Konfigurationskartan måste finnas iopenshift-confignamnområdet.
b) Skapa ConfigMap genom att köra följande kommando:
oc create -f user-ca-bundle.yamlc. Bekräfta skapandet av
user-ca-bundleConfigMap genom att köra följande kommando:oc get cm -n openshift-config user-ca-bundle -o yamlSe följande exempelutdata:
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-
Uppdatera proxyklusterobjektet med hjälp av
oc editoch konfigurera sedan proxyobjektet med hjälp av den tidigare insamlade informationen.a. Kör följande kommando:
oc edit proxy/clusterUppdatera eller lägg till följande fält:
-
spec.httpProxy: En proxy-URL som ska användas för att skapa HTTP-anslutningar utanför klustret. URL-schemat måste varahttp. -
spec.httpsProxy: En proxy-URL som ska användas för att skapa HTTPS-anslutningar utanför klustret. -
spec.noProxy: Det här är kommaavgränsad lista över slutpunkter som hämtas i stegen Samla in nödvändiga data för noProxy ovan. -
spec.trustedCA: En referens till konfigurationskartan i namnområdetopenshift-configsom innehåller andra CA-certifikat som krävs för proxykörning av HTTPS-anslutningar. Observera att konfigurationskartan redan måste finnas innan du refererar till den här. I det här fallet är detta namnet på konfigurationskartan som skapades ovan, vilket är user-ca-bundle.
b) Bekräfta konfigurationen genom att köra följande kommando:
oc get proxy cluster -o yamlSe följande exempelutdata:
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-
Vänta tills den nya maskinkonfigurationen distribueras till alla noder och klusteroperatorerna rapporterar att allt är felfritt.
a. Bekräfta nodhälsa genom att köra följande kommando:
oc get nodesSe följande exempelutdata:
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) Bekräfta klusteroperatorns hälsa genom att köra följande kommando:
oc get coSe följande exempelutdata:
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 10dAnmärkning
Om du behöver
user-ca-bundlefinns den i följande katalog (men det krävs inte för den här processen):/etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crt
Verifiera noProxy konfigurationen
Kontrollera proxykonfigurationen genom att kontrollera hälsotillståndet för klusteroperatorerna. Om fältet noProxy är felkonfigurerat kan flera klusteroperatorer ange ett Degraded: True tillstånd. Detta kan bero på olika problem, inklusive, men inte begränsat till, ImagePullBack fel, ogiltiga certifikat eller allmänna anslutningsproblem. Dessutom kan vissa operatorer förbli i ett Progressing: True tillstånd på grund av liknande underliggande orsaker.
Kontrollera statusen för klusteroperatorerna genom att köra följande kommando:
oc get coTolka utdata (felfritt tillstånd): Om fältet
noProxyär korrekt konfigurerat bör utdata likna följande exempel: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 15dAnmärkning
Antalet och typen av klusteroperatorer kan variera. Det trunkerade exemplet som visas är tillhandahållet för att illustrera ett välfungerande tillstånd för stödda operatörer.
Tolka utdata (felkonfigurerad): Om fältet
noProxyär felkonfigurerat kan utdata likna följande exempel: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 podsAnmärkning
Det visas bara ett förkortat exempel på utdata. Andra klusteroperatorer kan också rapportera ett
Degraded: Truetillstånd med olika fel till följd av felkonfigurationen avnoProxy.
Ta bort klusteromfattande proxy
Information om hur du tar bort den klusteromfattande proxyn finns i Red Hat OpenShift-dokumentationen.