Delen via


Een clusterbrede proxy configureren in een Azure Red Hat OpenShift-cluster

In dit artikel wordt het proces beschreven voor het inschakelen van een clusterbrede proxy op een Azure Red Hat OpenShift-cluster. Met deze functie kunnen productieomgevingen directe toegang tot internet weigeren en in plaats daarvan een HTTP- of HTTPS-proxy beschikbaar hebben. In dit artikel worden de specifieke configuratiestappen beschreven die nodig zijn voor een Azure Red Hat OpenShift-cluster. Zie de Red Hat-documentatie voor meer informatie over de werking van de proxyfunctie voor het clusterbrede cluster voor het OpenShift Container Platform.

Bij het configureren van een clusterbrede proxy is het belangrijk om inzicht te hebben in de volgende gevolgen:

  • Opnieuw opstarten van knooppunt: Als u de proxy inschakelt, worden knooppunten op rolling wijze opnieuw opgestart, vergelijkbaar met een clusterupdate. Dit is nodig omdat er nieuwe machineconfiguraties worden toegepast.
  • Serviceonderbrekingen: Om serviceonderbrekingen tijdens dit proces te voorkomen, is het van cruciaal belang om de noProxy lijst voor te bereiden zoals beschreven.

Belangrijk

Als u niet voldoet aan de instructies die in dit artikel worden beschreven, kan dit leiden tot onjuiste routering van clusternetwerkverkeer. Dit kan leiden tot problemen met de werkbelasting, zoals het mislukken van het ophalen van installatiekopieƫn.

Bereik van proxyconfiguratie voor het hele cluster

  • OpenShift-workloads: De instructies in dit artikel zijn alleen van toepassing op OpenShift-workloads. Toepassingsworkloads voor proxy's vallen buiten het bereik van dit artikel.
  • OpenShift Container Platform-versies: De proxy voor het hele cluster wordt ondersteund in versies van OpenShift Container Platform die worden beschreven in het ondersteuningsbeleid van Azure Red Hat OpenShift.

Als u de instructies in dit artikel volgt en de noProxy lijst voorbereidt, worden onderbrekingen geminimaliseerd en zorgt u ervoor dat de overgang soepel verloopt wanneer de proxy wordt ingeschakeld.

Vereisten en vrijwaring

Overzicht

  1. Verzamel de vereiste eindpuntwaarden voor gebruik in de noProxy lijst.
  2. Schakel de proxy voor het hele cluster in met behulp van de verzamelde gegevens voor noProxy.
  3. Controleer of de noProxy lijst en de proxy voor het hele cluster zijn geconfigureerd.

De vereiste gegevens verzamelen voor noProxy

  1. Controleer de proxystatus voor het hele cluster door de volgende opdracht uit te voeren:

    oc get proxy cluster -o yaml
    

    De spec velden en status velden moeten leeg zijn, waarin wordt weergegeven dat deze niet is ingeschakeld. Als deze niet leeg is, is deze mogelijk eerder geconfigureerd.

    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: {}
    
  2. Let op het IP-adres van IMDS: 169.254.169.254

  3. Als u geen aangepaste DNS gebruikt, noteert u het IP-adres van Azure DNS: 168.63.129.16

  4. Let op de localhost- en servicedomeinen:

    • localhost
    • 127.0.0.1
    • .svc
    • .cluster.local
  5. Haal de gatewayDomains opdracht op door de volgende opdracht uit te voeren:

    oc get cluster cluster -o jsonpath='{.spec.gatewayDomains}'
    

    Bekijk de volgende voorbeelduitvoer:

    [
        "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
    ]
    
  6. Haal de URL's van uw clusterdomein op.

    Maak de clusterspecifieke URL's voor de API- en toepassingsdomeinen.

    een. Haal het toepassingsdomein op door de volgende opdracht uit te voeren:

    az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "consoleProfile.url" -o tsv
    

    Bekijk de volgende voorbeelduitvoer:

    https://console-openshift-console.apps.xxxxxxxx.westus2.aroapp.io/
    

    Houd alleen het deel beginnend met .apps.xxxxxxxx voor gebruik in de noProxy lijst. Neem de volgvolgende '/' niet op.

    Zie het volgende voorbeeld:

    .apps.xxxxxxxx.westus2.aroapp.io
    

    b. Haal de API-domeinen op.

    Gebruik de uitvoer van de vorige opdracht om .apps te vervangen door api en api-int in de URL om de API-domeinen voor de noProxy lijst te krijgen.

    Zie het volgende voorbeeld:

    api.xxxxxxxx.westus2.aroapp.io
    api-int.xxxxxxxx.westus2.aroapp.io
    
  7. Haal de CIDR-bereiken op.

    een. Haal de addressPrefix subnetten van het werknemersprofiel op door de volgende opdracht uit te voeren:

    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 tsv
    

    Voorbeelduitvoer:

    10.0.1.0/24
    

    b. Haal de addressPrefix op van het masterprofielsubnet door de volgende opdracht uit te voeren:

    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 tsv
    

    Voorbeelduitvoer:

    10.0.0.0/24
    

    Hoofdstuk c. Haal de podCidr opdracht op door de volgende opdracht uit te voeren:

    az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "networkProfile.podCidr" -o tsv
    

    Voorbeelduitvoer:

    10.128.0.0/14
    

    d. Haal de serviceCidr opdracht op door de volgende opdracht uit te voeren:

    az aro show -n <CLUSTER_NAME> -g <RESOURCE_GROUP_NAME> --query "networkProfile.serviceCidr" -o tsv
    

    Voorbeelduitvoer:

    172.30.0.0/16
    
  8. Combineer de verzamelde gegevens in uw noProxy lijst die worden gebruikt voor het bijwerken van het proxyclusterobject in de volgende sectie.

Proxy voor het hele cluster inschakelen

  1. Maak de user-ca-bundle configmap in de openshift-config naamruimte om het juiste certificaat te gebruiken.

    een. Maak een bestand user-ca-bundle.yaml met de volgende inhoud en geef de waarden op van uw MET PEM gecodeerde certificaten:

    apiVersion: v1
    data:
      ca-bundle.crt: |
        <MY_PEM_ENCODED_CERTS>
    kind: ConfigMap
    metadata:
      name: user-ca-bundle
      namespace: openshift-config
    
    • data.ca-bundle.crt: Deze gegevenssleutel moet de naam ca-bundle.crt hebben.
    • data.ca-bundle.crt | <MY_PEM_ENCODED_CERTS>: Een of meer PEM-gecodeerde X.509-certificaten die worden gebruikt om het identiteitscertificaat van de proxy te ondertekenen.
    • metadata.name: De naam van de configuratiekaart waarnaar wordt verwezen vanuit het proxyobject.
    • metadata.namespace: De configuratietoewijzing moet zich in de openshift-config naamruimte bevinden.

    b. Maak de ConfigMap door de volgende opdracht uit te voeren:

    oc create -f user-ca-bundle.yaml
    

    Hoofdstuk c. Bevestig het maken van de user-ca-bundle ConfigMap door de volgende opdracht uit te voeren:

    oc get cm -n openshift-config user-ca-bundle -o yaml
    

    Bekijk de volgende voorbeelduitvoer:

    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
    
  2. Werk het proxyclusterobject bij met behulp van oc editen configureer vervolgens het proxyobject met behulp van de eerder verzamelde informatie.

    een. Voer de volgende opdracht uit:

    oc edit proxy/cluster
    

    Werk de volgende velden bij of voeg deze toe:

    • spec.httpProxy: Een proxy-URL om te gebruiken voor het maken van HTTP-verbindingen buiten de cluster. Het URL-schema moet zijn http.
    • spec.httpsProxy: Een proxy-URL om te gebruiken voor het maken van HTTPS-verbindingen buiten de cluster.
    • spec.noProxy: Dit is de door komma's gescheiden lijst met eindpunten die zijn verkregen in de bovenstaande stappen voor het verzamelen van de vereiste gegevens voor noProxy-stappen .
    • spec.trustedCA: Een verwijzing naar de configuratietoewijzing in de openshift-config naamruimte die andere CA-certificaten bevat die vereist zijn voor het proxyen van HTTPS-verbindingen. Houd er rekening mee dat de configuratiekaart al moet bestaan voordat u ernaar verwijst. In dit geval is dit de naam van de configuratietoewijzing die hierboven is gemaakt. Dit is user-ca-bundle.

    b. Bevestig de configuratie door de volgende opdracht uit te voeren:

    oc get proxy cluster -o yaml
    

    Bekijk de volgende voorbeelduitvoer:

    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
    
  3. Wacht tot de nieuwe machineconfiguratie op alle knooppunten is uitgerold en de clusteroperators een gezonde status rapporteren.

    een. Bevestig de status van het knooppunt door de volgende opdracht uit te voeren:

    oc get nodes
    

    Bekijk de volgende voorbeelduitvoer:

    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+xxxxxxx
    

    b. Bevestig de status van de clusteroperator door de volgende opdracht uit te voeren:

    oc get co
    

    Bekijk de volgende voorbeelduitvoer:

    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      10d
    

    Opmerking

    Als u de user-ca-bundlemap nodig hebt, bevindt deze zich in de volgende map (maar dit is niet vereist voor dit proces):

    /etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crt

Configuratie controleren noProxy

Als u de proxyconfiguratie wilt controleren, controleert u de status van de clusteroperators. Als het noProxy veld onjuist is geconfigureerd, kunnen meerdere clusteroperators een Degraded: True status invoeren. Dit kan het gevolg zijn van verschillende problemen, waaronder, maar niet beperkt tot, ImagePullBack fouten, ongeldige certificaten of algemene verbindingsproblemen. Daarnaast kunnen sommige operators een Progressing: True status hebben vanwege vergelijkbare onderliggende oorzaken.

  1. Controleer de status van de clusteroperators door de volgende opdracht uit te voeren:

    oc get co
    
  2. De uitvoer interpreteren (status in orde): Als het noProxy veld juist is geconfigureerd, moet de uitvoer er ongeveer uitzien als in het volgende voorbeeld:

    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      15d
    

    Opmerking

    Het aantal en het type clusteroperator kunnen variƫren. Het ingekorte voorbeeld dat wordt getoond, dient om een gezonde toestand te illustreren voor ondersteunde operators.

  3. De uitvoer interpreteren (onjuist geconfigureerd): Als het noProxy veld onjuist is geconfigureerd, lijkt de uitvoer mogelijk op het volgende voorbeeld:

    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 pods
    

    Opmerking

    Weergegeven is alleen een afgekapte voorbeelduitvoer. Andere clusteroperators kunnen ook een Degraded: True status melden met verschillende fouten als gevolg van de onjuiste configuratie van noProxy.

Clusterbrede proxy verwijderen

Zie de Red Hat OpenShift-documentatie voor informatie over het verwijderen van de proxy voor het hele cluster.