De Ingress-operator begrijpen | Netwerken (2024)

Een aangepast standaardcertificaat instellen

Als beheerder kunt u een Ingress-controller configureren om een ​​aangepast certificaat te gebruiken door een geheime bron te maken en deIngressControlleraangepaste bron (CR).

Vereisten

  • U moet een certificaat/sleutelpaar hebben in PEM-gecodeerde bestanden, waarbij het certificaat is ondertekend door een vertrouwde certificeringsinstantie of door een particuliere, vertrouwde certificeringsinstantie die u in een aangepaste PKI hebt geconfigureerd.

  • Uw certificaat voldoet aan de volgende eisen:

    • Het certificaat is geldig voor het ingangsdomein.

    • Het certificaat maakt gebruik van desubjectAltNameextensie om een ​​wildcard-domein op te geven, zoals*.apps.ocp4.voorbeeld.com.

  • Je moet eenIngressControllerCR. U kunt de standaardversie gebruiken:

    $ ok--naamruimteopenshift-ingress-operator haalt ingresscontrollers op

    Voorbeelduitvoer

    NAAM LEEFTIJDstandaard 10m

Als u over tussencertificaten beschikt, moeten deze worden opgenomen in hettls.crtbestand met het geheim dat een aangepast standaardcertificaat bevat. Bestelzaken bij het opgeven van een certificaat; vermeld uw tussenliggende certificaat(en) na elk servercertificaat(en).

Procedure

In het volgende wordt ervan uitgegaan dat het aangepaste certificaat en het sleutelpaar zich in detls.crtEntls.sleutelbestanden in de huidige werkmap. Vervang de werkelijke padnamen doortls.crtEntls.sleutel. U kunt ook een andere naam vervangencustom-certs-defaultbij het maken van de geheime bron en het ernaar verwijzen in de IngressController CR.

Deze actie zorgt ervoor dat de Ingress-controller opnieuw wordt geïmplementeerd, met behulp van een rollende implementatiestrategie.

  1. Maak een geheime bron met het aangepaste certificaat in deopenshift-ingangnaamruimte met behulp van detls.crtEntls.sleutelbestanden.

    $ ok--naamruimteopenshift-ingress maak geheime tls custom-certs-default--cert=tls.crt--sleutel=tls.sleutel
  2. Werk de IngressController CR bij zodat deze verwijst naar het nieuwe certificaatgeheim:

    $ oc-patch--type=samenvoegen--naamruimteopenshift-ingress-operator ingresscontrollers/default\ --lapje '{"spec":{"defaultCertificate":{"name":custom-certs-default"}}}'
  3. Controleer of de update effectief was:

    $ echoVraag |\openssl s_client-aansluitenconsole-openshift-console.apps.:443-showcertificaten2>/dev/null |\opensslx509-noout -onderwerp -uitgever -eddateren

    waar:

    Specificeert de basisdomeinnaam voor uw cluster.

    Voorbeelduitvoer

    onderwerp=C = US, ST = NC, L = Raleigh, O = RH, OU = OCP4, CN = *.apps.example.comissuer=C = US, ST = NC, L = Raleigh, O = RH, OU = OCP4, CN = example.comnotAfter=10 mei 08:32:45 2022 GM

    U kunt ook de volgende YAML toepassen om een ​​aangepast standaardcertificaat in te stellen:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: standaardCertificaat: naam: custom-certs-default

    De geheime naam van het certificaat moet overeenkomen met de waarde die wordt gebruikt om de CR bij te werken.

Zodra de IngressController CR is gewijzigd, werkt de Ingress-operator de implementatie van de Ingress-controller bij om het aangepaste certificaat te gebruiken.

Een aangepast standaardcertificaat verwijderen

Als beheerder kunt u een aangepast certificaat verwijderen waarvoor u een Ingress-controller hebt geconfigureerd om te gebruiken.

Vereisten

  • U heeft als gebruiker toegang tot het cluster met decluster-adminrol.

  • U hebt de OpenShift CLI geïnstalleerd (ok).

  • U hebt eerder een aangepast standaardcertificaat geconfigureerd voor de Ingress-controller.

Procedure

  • Om het aangepaste certificaat te verwijderen en het certificaat te herstellen dat bij OpenShift Container Platform wordt geleverd, voert u de volgende opdracht in:

    $ oc-patch-Nopenshift-ingress-operator ingresscontrollers/default\ --typejson-P $'- op: verwijderen\Npad: /spec/defaultCertificate'

    Er kan een vertraging optreden terwijl het cluster de nieuwe certificaatconfiguratie afstemt.

Verificatie

  • Om te bevestigen dat het oorspronkelijke clustercertificaat is hersteld, voert u de volgende opdracht in:

    $ echoVraag |\openssl s_client-aansluitenconsole-openshift-console.apps.:443-showcertificaten2>/dev/null |\opensslx509-noout -onderwerp -uitgever -eddateren

    waar:

    Specificeert de basisdomeinnaam voor uw cluster.

    Voorbeelduitvoer

    subject=CN = *.apps.uitgever=CN = ingress-operator@1620633373notAfter=10 mei 10:44:36 2023 GMT

Automatisch schalen van een Ingress-controller

Schaal een Ingress-controller automatisch om dynamisch te voldoen aan de vereisten voor routeringsprestaties of beschikbaarheid, zoals de vereiste om de doorvoer te verhogen. De volgende procedure biedt een voorbeeld voor het opschalen van de standaardwaardeIngressController.

Vereisten

  1. U hebt de OpenShift CLI (ok) geïnstalleerd.

  2. U heeft als gebruiker toegang tot een OpenShift Container Platform-cluster met decluster-adminrol.

  3. U hebt de Custom Metrics Autoscaler Operator geïnstalleerd.

  4. Je bent in deopenshift-ingress-operatorprojectnaamruimte.

Procedure

  1. Maak een serviceaccount om te authenticeren bij Thanos door de volgende opdracht uit te voeren:

    $ oc maak een serviceaccount aan thanos&&oc beschrijf serviceaccount thanos

    Voorbeelduitvoer

    Naam: thanosNamespace: openshift-ingress-operatorLabels: Annotaties: Afbeeldingsgeheimen: thanos-dockercfg-b4l9sMountable geheimen: thanos-dockercfg-b4l9sTokens: thanos-token-c422qGebeurtenissen: 
  2. Definieer eenTriggerAuthenticatievoorwerp binnen deopenshift-ingress-operatornaamruimte met behulp van het token van het serviceaccount.

    1. Definieer de variabelegeheimdat het geheim bevat door de volgende opdracht uit te voeren:

      $ geheim=$(oc krijg geheim |grepthanos-token |hoofd -N1 |akelig '{ $1 afdrukken }')
    2. Maak deTriggerAuthenticatieobject en geef de waarde van de doorgeheimvariabel naar deTOKENparameter:

      $ oc-procesTOKEN="$geheim" -F-<<EOF| oc toepassen -f -apiVersion: template.openshift.io/v1kind: Templateparameters: - naam: TOKENobjects: - apiVersion: keda.sh/v1alpha1 soort: TriggerAuthentication metadata: naam: keda-trigger-auth-prometheus spec: secretTargetRef: - parameter: bearerTokennaam: \${TOKEN}sleutel: token - parameter: canaam: \${TOKEN}sleutel: ca.crtEOF
  3. Creëer en pas een rol toe voor het lezen van statistieken van Thanos:

    1. Maak een nieuwe rol aan,thanos-metrics-reader.yaml, dat statistieken van pods en knooppunten leest:

      thanos-metrics-reader.yaml

      apiversie: rbac.authorization.k8s.io/v1vriendelijk: Rolmetagegevens: naam: thanos-metrics-lezerreglement:- apiGroepen: - "" bronnen: - peulen - knooppunten werkwoorden: - krijgen- apiGroepen: - metrics.k8s.io bronnen: - peulen - knooppunten werkwoorden: - krijgen - lijst - horloge- apiGroepen: - "" bronnen: - naamruimten werkwoorden: - krijgen
    2. Pas de nieuwe rol toe door de volgende opdracht uit te voeren:

      $ oc van toepassing-Fthanos-metrics-reader.yaml
  4. Voeg de nieuwe rol toe aan het serviceaccount door de volgende opdrachten in te voeren:

    $ oc adm-beleid add-role-to-user thanos-metrics-reader-zdanos--rol-naamruimte=openshift-ingress-operator
    $ oc adm-beleid-Nopenshift-ingress-operator add-cluster-rol-to-user cluster-monitoring-view-zdanos

    Het argumentcluster-rol-aan-gebruiker toevoegenis alleen vereist als u cross-namespace-query's gebruikt. In de volgende stap wordt een query uit deKube-statistiekennaamruimte waarvoor dit argument vereist is.

  5. Maak een nieuweGeschaaldObjectYAML-bestand,ingress-autoscaler.yaml, dat gericht is op de standaardimplementatie van Ingress Controller:

    VoorbeeldGeschaaldObjectdefinitie

    apiversie: keda.sh/v1alpha1vriendelijk: GeschaaldObjectmetagegevens: naam: ingress-scalerspec: schaalDoelRef: (1) apiversie: operator.openshift.io/v1 vriendelijk: IngressController naam: standaard envSourceContainerName: ingress-operator minReplicaCount: 1 maxReplicaCount: 20 (2) cooldownPeriode: 1 pollingInterval: 1 triggers: - type: Prometheus metrischType: Gemiddelde waarde metagegevens: server adres: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091 (3) naamruimte: openshift-ingress-operator (4) metrische naam: 'wees knooppunt-rol' drempelwaarde: '1' vraag: 'sum(kube_node_role{role="worker",service="kube-state-metrics"})' (5) authModes: "toonder" authenticatieRef: naam: keda-trigger-auth-prometheus
    1De aangepaste resource die u target. In dit geval de Ingress-controller.
    2Optioneel: het maximale aantal replica's. Als u dit veld weglaat, wordt het standaardmaximum ingesteld op 100 replica's.
    3Het Thanos-service-eindpunt in deopenploeg-bewakingnaamruimte.
    4De naamruimte van de Ingress-operator.
    5Deze expressie evalueert het aantal werkknooppunten dat aanwezig is in het geïmplementeerde cluster.

    Als u cross-namespace-query's gebruikt, moet u poort 9091 targeten en niet poort 9092 in deserver adresveld. U moet ook over verhoogde rechten beschikken om statistieken van deze poort te lezen.

  6. Pas de aangepaste resourcedefinitie toe door de volgende opdracht uit te voeren:

    $ oc van toepassing-Fingress-autoscaler.yaml

Verificatie

  • Controleer of de standaard Ingress-controller is uitgeschaald zodat deze overeenkomt met de waarde die wordt geretourneerd door dekube-state-metriekenquery door de volgende opdrachten uit te voeren:

    • Gebruik degrepopdracht om in het Ingress Controller YAML-bestand naar replica's te zoeken:

      $ oc krijg ingresscontroller/default-Ojaml |grepreplica's:

      Voorbeelduitvoer

      replica's: 3
    • Haal de peulen in deopenshift-ingangproject:

      $ oc krijg peulen-Nopenshift-ingang

      Voorbeelduitvoer

      NAAM KLAAR STATUS HERSTARTEN AGErouter-default-7b5df44ff-l9pmm 2/2 Actief 0 17hrouter-default-7b5df44ff-s5sl5 2/2 Actief 0 3d22hrouter-default-7b5df44ff-wwsth 2/2 Actief 0 66s

Aanvullende bronnen

  • Monitoring mogelijk maken voor door de gebruiker gedefinieerde projecten

  • De aangepaste autoscaler voor metrische gegevens installeren

  • Inzicht in aangepaste metrische gegevens en autoscaler-trigger-authenticaties

  • De aangepaste autoscaler voor metrische gegevens configureren om OpenShift Container Platform-bewaking te gebruiken

  • Inzicht in hoe u aangepaste autoscalers voor metrische gegevens kunt toevoegen

Een Ingress-controller schalen

Schaal een Ingress-controller handmatig om te voldoen aan de vereisten voor routeringsprestaties of beschikbaarheid, zoals de vereiste om de doorvoer te verhogen.okcommando's worden gebruikt om deIngressControllerbron. De volgende procedure biedt een voorbeeld voor het opschalen van de standaardwaardeIngressController.

Schalen is geen onmiddellijke actie, omdat het tijd kost om het gewenste aantal replica's te maken.

Procedure

  1. Bekijk het huidige aantal beschikbare replica's voor de standaardIngressController:

    $ oc krijg-Nopenshift-ingress-operator ingresscontrollers/default-O jsonpad='{$.status.availableReplicas}'

    Voorbeelduitvoer

    2
  2. Schaal de standaardwaardeIngressControllernaar het gewenste aantal replica's met behulp van deoc-patchcommando. In het volgende voorbeeld wordt de standaard geschaaldIngressControllernaar 3 replica's:

    $ oc-patch-Nopenshift-ingress-operator ingresscontroller/default--lapje '{"spec":{"replica's": 3}}' --type=samenvoegen

    Voorbeelduitvoer

    ingresscontroller.operator.openshift.io/default gepatcht
  3. Controleer of dit de standaard isIngressControllergeschaald naar het aantal replica's dat u hebt opgegeven:

    $ oc krijg-Nopenshift-ingress-operator ingresscontrollers/default-O jsonpad='{$.status.availableReplicas}'

    Voorbeelduitvoer

    3

    U kunt ook de volgende YAML toepassen om een ​​Ingress-controller te schalen naar drie replica's:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: replica's: 3 (1)
    1Als u een ander aantal replica's nodig heeft, wijzigt u dereplica'swaarde.

Logboekregistratie van Ingress-toegang configureren

U kunt de Ingress-controller configureren om toegangslogboeken in te schakelen. Als u clusters heeft die niet veel verkeer ontvangen, kunt u inloggen op een zijspan. Als u clusters met veel verkeer heeft, kunt u logboeken doorsturen naar een aangepast syslog-eindpunt om te voorkomen dat de capaciteit van de logboekstapel wordt overschreden of om te integreren met een logboekinfrastructuur buiten het OpenShift Container Platform. U kunt ook het formaat voor toegangslogboeken opgeven.

Containerregistratie is handig om toegangslogboeken in te schakelen op clusters met weinig verkeer wanneer er geen bestaande Syslog-registratie-infrastructuur bestaat, of voor gebruik op korte termijn bij het diagnosticeren van problemen met de Ingress-controller.

Syslog is nodig voor clusters met veel verkeer waar toegangslogboeken de capaciteit van de OpenShift Logging-stack kunnen overschrijden, of voor omgevingen waar elke logoplossing moet worden geïntegreerd met een bestaande Syslog-loginfrastructuur. De Syslog-gebruiksscenario's kunnen elkaar overlappen.

Vereisten

  • Log in als gebruiker metcluster-adminprivileges.

Procedure

Configureer Ingress-toegangsregistratie naar een zijspan.

  • Om logboekregistratie van Ingress-toegang te configureren, moet u een bestemming opgeven met behulp vanspec.logging.access.destination. Als u het loggen naar een zijspancontainer wilt opgeven, moet u dit opgevenHouder spec.logging.access.destination.type. Het volgende voorbeeld is een Ingress Controller-definitie die zich aanmeldt bij eenHouderbestemming:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: replica's: 2 loggen: toegang: bestemming: type: Houder
  • Wanneer u de Ingress-controller configureert om in te loggen op een zijspan, maakt de operator een container met de naamlogboekenin de Ingress-controllerpod:

    $ ok-Nopenshift-ingress logt deployment.apps/router-default-Clogboeken

    Voorbeelduitvoer

    2020-05-11T19:11:50.135710+00:00 router-default-57dfc6cd95-bpmk6 router-default-57dfc6cd95-bpmk6 haproxy[108]: 174.19.21.82:39654 [11/mei/2020:19:11:50.1 33] openbaar be_http:hello-openshift:hello-openshift/pod:hello-openshift:hello-openshift:10.128.2.12:8080 0/0/1/0/1 200 142 - - --NI 1/1/0/0/ 0 0/0 "KRIJGEN / HTTP/1.1"

Configureer logboekregistratie van Ingress-toegang tot een Syslog-eindpunt.

  • Om logboekregistratie van Ingress-toegang te configureren, moet u een bestemming opgeven met behulp vanspec.logging.access.destination. Als u logboekregistratie naar een Syslog-eindpuntbestemming wilt opgeven, moet u dit opgevenSyslogvoorspec.logging.access.destination.type. Als het bestemmingstype isSyslog, moet u ook een doeleindpunt opgeven met behulp vanspec.logging.access.destination.syslog.endpointen u kunt een faciliteit opgeven met behulp vanspec.logging.access.destination.syslog.facility. Het volgende voorbeeld is een Ingress Controller-definitie die zich aanmeldt bij eenSyslogbestemming:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: replica's: 2 loggen: toegang: bestemming: type: Syslog systeemlog: adres: 1.2.3.4 haven: 10514

    Desysteemlogbestemmingspoort moet UDP zijn.

Configureer Ingress-toegangsregistratie met een specifiek logformaat.

  • U kunt opgevenspec.logging.access.httpLogFormatom het logformaat aan te passen. Het volgende voorbeeld is een Ingress Controller-definitie die zich aanmeldt bij eensysteemlogeindpunt met IP-adres 1.2.3.4 en poort 10514:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: replica's: 2 loggen: toegang: bestemming: type: Syslog systeemlog: adres: 1.2.3.4 haven: 10514 httpLogFormat: '%ci:%cp [%T] % ft %b/%s %B % bq %HM %HU %HV'

Schakel logboekregistratie van Ingress-toegang uit.

  • Als u het loggen van Ingress-toegang wilt uitschakelen, verlaat u ditspec.loggingofspec.logging.accessleeg:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: replica's: 2 loggen: toegang: nul

Laat de Ingress-controller de HAProxy-loglengte wijzigen bij gebruik van een zijspan.

  • Gebruikspec.logging.access.destination.syslog.maxLengthals je gebruiktspec.logging.access.destination.type: Syslog.

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: replica's: 2 loggen: toegang: bestemming: type: Syslog systeemlog: adres: 1.2.3.4 maximale lengte: 4096 haven: 10514
  • Gebruikspec.logging.access.destination.container.maxLengthals je gebruiktspec.logging.access.destination.type: container.

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: replica's: 2 loggen: toegang: bestemming: type: Houder houder: maximale lengte: 8192

Het aantal threads van de Ingress-controller instellen

Een clusterbeheerder kan het aantal threads instellen om het aantal inkomende verbindingen dat een cluster kan verwerken te vergroten. U kunt een bestaande Ingress-controller patchen om het aantal threads te vergroten.

Vereisten

  • In het volgende wordt ervan uitgegaan dat u al een Ingress-controller hebt gemaakt.

Procedure

  • Update de Ingress-controller om het aantal threads te vergroten:

    $ ok-Nopenshift-ingress-operator patch ingresscontroller/default--type=samenvoegen-P '{"spec":{"tuningOptions": {"threadCount": 8}}}'

    Als u een knooppunt hebt dat grote hoeveelheden bronnen kan uitvoeren, kunt u dit configurerenspec.nodePlacement.nodeSelectormet labels die overeenkomen met de capaciteit van het beoogde knooppunt, en configurerenspec.tuningOptions.threadCounttot een passend hoge waarde.

Een Ingress-controller configureren om een ​​interne load balancer te gebruiken

Wanneer u een Ingress-controller op cloudplatforms maakt, wordt de Ingress-controller standaard gepubliceerd door een publieke cloud-load balancer. Als beheerder kunt u een Ingress-controller maken die gebruikmaakt van een interne cloud-load balancer.

Als uw cloudprovider Microsoft Azure is, moet u ten minste één openbare load balancer hebben die naar uw knooppunten verwijst. Als u dat niet doet, verliezen al uw knooppunten de uitgaande connectiviteit met internet.

Als u dedomeinvoor eenIngressController, kunt u de.spec.endpointPublishingStrategy.loadBalancer.scopeparameter nadat de aangepaste resource (CR) is gemaakt.

De Ingress-operator begrijpen | Netwerken (1)

Figuur 1. Diagram van LoadBalancer

In de voorgaande afbeelding ziet u de volgende concepten met betrekking tot de OpenShift Container Platform Ingress LoadBalancerService eindpuntpublicatiestrategie:

  • U kunt de taak extern verdelen met behulp van de load balancer van de cloudprovider, of intern met behulp van de OpenShift Ingress Controller Load Balancer.

  • U kunt het enkele IP-adres van de load balancer en bekendere poorten gebruiken, zoals 8080 en 4200, zoals weergegeven in het cluster dat in de afbeelding wordt weergegeven.

  • Verkeer van de externe load balancer wordt naar de pods geleid en beheerd door de load balancer, zoals weergegeven in het exemplaar van een down-knooppunt. Zie deKubernetes Services-documentatievoor implementatiedetails.

Vereisten

  • Installeer de OpenShift CLI (ok).

  • Log in als gebruiker metcluster-adminprivileges.

Procedure

  1. Creëer eenIngressControlleraangepaste bron (CR) in een bestand met de naam-ingress-controller.yaml, zoals in het volgende voorbeeld:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naamruimte: openshift-ingress-operator naam:  (1)spec: domein:  (2) eindpuntPublishingStrategie: type: LoadBalancerService belastingBalancer: domein: Intern (3)
    1Vervangenmet een naam voor deIngressControllervoorwerp.
    2Specificeer dedomeinvoor de door de verwerkingsverantwoordelijke gepubliceerde applicatie.
    3Geef een waarde op vanInternom een ​​interne load balancer te gebruiken.
  2. Maak de Ingress-controller die in de vorige stap is gedefinieerd door de volgende opdracht uit te voeren:

    $ oc creëren-F-ingress-controller.yaml(1)
    1Vervangenmet de naam van deIngressControllervoorwerp.
  3. Optioneel: Bevestig dat de Ingress-controller is gemaakt door de volgende opdracht uit te voeren:

    $ ok--all-naamruimten=WAARverkrijg ingresscontrollers

Globale toegang configureren voor een Ingress-controller op GCP

Een Ingress-controller die op GCP is gemaakt met een interne load balancer genereert een intern IP-adres voor de service. Een clusterbeheerder kan de globale toegangsoptie opgeven, waarmee clients in elke regio binnen hetzelfde VPC-netwerk en dezelfde rekenregio als de load balancer de werklasten kunnen bereiken die op uw cluster worden uitgevoerd.

Zie de GCP-documentatie voor meer informatiemondiale toegang.

Vereisten

  • U heeft een OpenShift Container Platform-cluster geïmplementeerd op de GCP-infrastructuur.

  • U hebt een Ingress-controller geconfigureerd om een ​​interne load balancer te gebruiken.

  • U hebt de OpenShift CLI geïnstalleerd (ok).

Procedure

  1. Configureer de Ingress Controller-bron om globale toegang toe te staan.

    U kunt ook een Ingress-controller maken en de globale toegangsoptie opgeven.

    1. Configureer de Ingress Controller-bron:

      $ ok-Nopenshift-ingress-operator bewerk ingresscontroller/default
    2. Bewerk het YAML-bestand:

      Steekproefklanttoegangconfiguratie naarGlobaal

       spec: eindpuntPublishingStrategie: belastingBalancer: providerParameters: gcp: klanttoegang: Globaal (1) type: GCP domein: Intern type: LoadBalancerService
      1Setgcp.clientAccessnaarGlobaal.
    3. Sla het bestand op om de wijzigingen toe te passen.

  2. Voer de volgende opdracht uit om te controleren of de service globale toegang toestaat:

    $ ok-Nopenshift-ingress bewerk svc/router-default-Ojaml

    Uit de uitvoer blijkt dat globale toegang is ingeschakeld voor GCP met de annotatie:network.gke.io/internal-load-balancer-allow-global-access.

Het statuscontrole-interval van de Ingress-controller instellen

Een clusterbeheerder kan het interval voor de gezondheidscontrole instellen om te definiëren hoe lang de router wacht tussen twee opeenvolgende gezondheidscontroles. Deze waarde wordt globaal als standaard toegepast op alle routes. De standaardwaarde is 5 seconden.

Vereisten

  • In het volgende wordt ervan uitgegaan dat u al een Ingress-controller hebt gemaakt.

Procedure

  • Update de Ingress-controller om het interval tussen back-end-statuscontroles te wijzigen:

    $ ok-Nopenshift-ingress-operator patch ingresscontroller/default--type=samenvoegen-P '{"spec":{"tuningOptions": {"healthCheckInterval": "8s"}}}'

    Om degezondheidCheckIntervalvoor een enkele route gebruikt u de routeannotatierouter.openshift.io/haproxy.health.check.interval

De standaard Ingress-controller voor uw cluster configureren als intern

U kunt de configurerenstandaardIngress-controller zodat uw cluster intern is door deze te verwijderen en opnieuw te maken.

Als uw cloudprovider Microsoft Azure is, moet u ten minste één openbare load balancer hebben die naar uw knooppunten verwijst. Als u dat niet doet, verliezen al uw knooppunten de uitgaande connectiviteit met internet.

Als u dedomeinvoor eenIngressController, kunt u de.spec.endpointPublishingStrategy.loadBalancer.scopeparameter nadat de aangepaste resource (CR) is gemaakt.

Vereisten

  • Installeer de OpenShift CLI (ok).

  • Log in als gebruiker metcluster-adminprivileges.

Procedure

  1. Configureer destandaardIngress-controller zodat uw cluster intern is door deze te verwijderen en opnieuw te maken.

    $ oc vervangen--kracht --wachten --bestandsnaam-<<EOFapiVersion: operator.openshift.io/v1kind: IngressControllermetadata: naamruimte: openshift-ingress-operatornaam: standaardspecificatie: endpointPublishingStrategy: type: LoadBalancerService loadBalancer: bereik: InternEOF

Het routetoelatingsbeleid configureren

Beheerders en applicatieontwikkelaars kunnen applicaties uitvoeren in meerdere naamruimten met dezelfde domeinnaam. Dit is voor organisaties waar meerdere teams microservices ontwikkelen die op dezelfde hostnaam worden weergegeven.

Het toestaan ​​van claims tussen naamruimten mag alleen worden ingeschakeld voor clusters met vertrouwen tussen naamruimten, anders kan een kwaadwillende gebruiker een hostnaam overnemen. Om deze reden staat het standaardtoegangsbeleid hostnaamclaims in naamruimten niet toe.

Vereisten

  • Clusterbeheerdersrechten.

Procedure

  • Bewerk de.spec.routeToegangveld van deingangscontrollerresourcevariabele met behulp van de volgende opdracht:

    $ ok-Nopenshift-ingress-operator patch ingresscontroller/default--lapje '{"spec":{"routeAdmission":{"namespaceOwnership 'InterNamespaceAllowed'}}}' --type=samenvoegen

    Voorbeeld van configuratie van Ingress-controller

    spec: routeToegang: naamruimteEigendom: InterNamespaceToegestaan...

    U kunt ook de volgende YAML toepassen om het routetoelatingsbeleid te configureren:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: routeToegang: naamruimteEigendom: InterNamespaceToegestaan

Routes met jokertekens gebruiken

De HAProxy Ingress Controller biedt ondersteuning voor wildcard-routes. De Ingress-operator gebruiktwildcardBeleidom de te configurerenROUTER_ALLOW_WILDCARD_ROUTESomgevingsvariabele van de Ingress-controller.

Het standaardgedrag van de Ingress Controller is het toestaan ​​van routes met een jokertekenbeleid vanGeen, dat achterwaarts compatibel is met bestaandeIngressControllerbronnen.

Procedure

  1. Configureer het jokertekenbeleid.

    1. Gebruik de volgende opdracht om hetIngressControllerbron:

      $ oc bewerk IngressController
    2. Onderspec, stel dewildcardBeleidveld naarWildcardsNiet toegestaanofWildcardsToegestaan:

      spec: routeToegang: wildcardBeleid: WildcardsNiet toegestaan # of WildcardsToegestaan

Configuratie van HTTP-header

OpenShift Container Platform biedt verschillende methoden voor het werken met HTTP-headers. Bij het instellen of verwijderen van headers kunt u specifieke velden in de Ingress Controller of een individuele route gebruiken om de headers van aanvragen en antwoorden te wijzigen. U kunt ook bepaalde headers instellen door routeannotaties te gebruiken. De verschillende manieren om headers te configureren kunnen uitdagingen opleveren bij het samenwerken.

U kunt alleen headers instellen of verwijderen binnen eenIngressControllerofRouteCR, je kunt ze niet toevoegen. Als een HTTP-header is ingesteld met een waarde, moet die waarde compleet zijn en hoeft deze in de toekomst niet te worden toegevoegd. In situaties waarin het zinvol is om een ​​header toe te voegen, zoals de X-Forwarded-For header, gebruikt u despec.httpHeaders.forwardedHeaderPolicyveld, in plaats vanspec.httpHeaders.actions.

Volgorde van prioriteit

Wanneer dezelfde HTTP-header zowel in de Ingress Controller als in een route wordt gewijzigd, geeft HAProxy op bepaalde manieren prioriteit aan de acties, afhankelijk van of het een request- of response-header is.

  • Voor HTTP-antwoordheaders worden acties die zijn opgegeven in de Ingress Controller uitgevoerd na de acties die zijn opgegeven in een route. Dit betekent dat de acties die zijn opgegeven in de Ingress Controller voorrang hebben.

  • Voor HTTP-verzoekheaders worden acties die in een route zijn opgegeven, uitgevoerd na de acties die zijn opgegeven in de Ingress-controller. Dit betekent dat de in de route aangegeven acties voorrang hebben.

Een clusterbeheerder stelt bijvoorbeeld de X-Frame-Options-antwoordheader in met de waardeONTKENNENin de Ingress-controller met behulp van de volgende configuratie:

VoorbeeldIngressControllerspec

apiversie: operator.openshift.io/v1vriendelijk: IngressController# ...spec: httpHeaders: acties: antwoord: - naam: X-Frame-opties actie: type: Set set: waarde: ONTKENNEN

Een route-eigenaar stelt dezelfde antwoordheader in die de clusterbeheerder heeft ingesteld in de Ingress-controller, maar met de waardeSAMEORIGINEmet behulp van de volgende configuratie:

VoorbeeldRoutespec

apiversie: route.openshift.io/v1vriendelijk: Route# ...spec: httpHeaders: acties: antwoord: - naam: X-Frame-opties actie: type: Set set: waarde: SAMEORIGINE

Wanneer zowel deIngressControllerspec enRoutespec de X-Frame-Options header configureren, dan zal de waarde die voor deze header op globaal niveau in de Ingress Controller is ingesteld voorrang krijgen, zelfs als een specifieke route frames toestaat.

Deze prioriteitstelling vindt plaats omdat dehaproxy.config-bestand gebruikt de volgende logica, waarbij de Ingress-controller wordt beschouwd als de front-end en individuele routes als de back-end. De headerwaardeONTKENNENtoegepast op de front-endconfiguraties overschrijft dezelfde header met de waardeSAMEORIGINEdat is ingesteld in de backend:

frontend public http-response set-header X-Frame-Options 'DENY'frontend fe_sni http-response set-header X-Frame-Options 'DENY'frontend fe_no_sni http-response set-header X-Frame-Options 'DENY'backend be_secure :openshift-monitoring:alertmanager-main http-response set-header X-Frame-Options 'SAMEORIGIN'

Bovendien worden alle acties die zijn gedefinieerd in de Ingress Controller of een route-overschrijvingswaarde ingesteld met behulp van routeannotaties.

Speciale case-headers

Het is niet mogelijk om de volgende headers in te stellen of te verwijderen, of ze zijn onder specifieke omstandigheden toegestaan:

Tabel 2. Configuratieopties voor speciale gevallen
KopnaamConfigureerbaar metIngressControllerspecConfigureerbaar metRoutespecReden van weigeringConfigureerbaar met een andere methode

volmacht

Nee

Nee

DevolmachtHTTP-verzoekheader kan worden gebruikt om kwetsbare CGI-applicaties te exploiteren door de headerwaarde in deHTTP-PROXYomgevingsvariabele. DevolmachtDe HTTP-verzoekheader is ook niet-standaard en gevoelig voor fouten tijdens de configuratie.

Nee

gastheer

Nee

Ja

Wanneer degastheerDe HTTP-verzoekheader wordt ingesteld met behulp van deIngressControllerCR, HAProxy kan mislukken bij het opzoeken van de juiste route.

Nee

strikte transportbeveiliging

Nee

Nee

Destrikte transportbeveiligingDe HTTP-antwoordheader wordt al afgehandeld met behulp van routeannotaties en heeft geen aparte implementatie nodig.

Ja dehaproxy.router.openshift.io/hsts_headerrouteannotatie

koekjeEnset-cookie

Nee

Nee

De cookies die HAProxy instelt, worden gebruikt voor het volgen van sessies om clientverbindingen met bepaalde back-endservers in kaart te brengen. Als u toestaat dat deze headers worden ingesteld, kan dit de sessieaffiniteit van HAProxy verstoren en het eigendom van HAProxy over een cookie beperken.

Ja:

  • dehaproxy.router.openshift.io/disable_cookierouteannotatie

  • dehaproxy.router.openshift.io/cookie_namerouteannotatie

HTTP-verzoek- en antwoordheaders instellen of verwijderen in een Ingress-controller

U kunt bepaalde HTTP-verzoek- en antwoordheaders instellen of verwijderen voor nalevingsdoeleinden of om andere redenen. U kunt deze headers instellen of verwijderen voor alle routes die worden bediend door een Ingress-controller of voor specifieke routes.

U wilt bijvoorbeeld een applicatie die op uw cluster draait migreren om wederzijdse TLS te gebruiken, wat vereist dat uw applicatie controleert op een X-Forwarded-Client-Cert-aanvraagheader, maar de standaard Ingress-controller van het OpenShift Container Platform biedt een X-SSL -Client-Der verzoekheader.

Met de volgende procedure wordt de Ingress-controller aangepast om de X-Forwarded-Client-Cert-verzoekheader in te stellen en de X-SSL-Client-Der-verzoekheader te verwijderen.

Vereisten

  • U hebt de OpenShift CLI geïnstalleerd (ok).

  • U heeft als gebruiker toegang tot een OpenShift Container Platform-cluster met decluster-adminrol.

Procedure

  1. Bewerk de Ingress Controller-bron:

    $ ok-Nopenshift-ingress-operator bewerk ingresscontroller/default
  2. Vervang de X-SSL-Client-Der HTTP-verzoekheader door de X-Forwarded-Client-Cert HTTP-verzoekheader:

    apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: httpHeaders: acties: (1) verzoek: (2) - naam: X-Forwarded-Client-certificaat (3) actie: type: Set (4) set: waarde: "%{+Q}[ssl_c_der,base64]" (5) - naam: X-SSL-Client-Der actie: type: Verwijderen
    1De lijst met acties die u wilt uitvoeren op de HTTP-headers.
    2Het type koptekst dat u wilt wijzigen. In dit geval een verzoekheader.
    3De naam van de koptekst die u wilt wijzigen. Voor een lijst met beschikbare headers die u kunt instellen of verwijderen, zieConfiguratie van HTTP-header.
    4Het type actie dat wordt ondernomen op de koptekst. Dit veld kan de waarde hebbenSetofVerwijderen.
    5Bij het instellen van HTTP-headers moet u eenwaarde. De waarde kan bijvoorbeeld een tekenreeks zijn uit een lijst met beschikbare richtlijnen voor die headerONTKENNEN, of het kan een dynamische waarde zijn die wordt geïnterpreteerd met behulp van de dynamische waardesyntaxis van HAProxy. In dit geval wordt een dynamische waarde toegevoegd.

    Voor het instellen van dynamische headerwaarden voor HTTP-reacties zijn toegestane voorbeeldophaalprogramma's toegestaanres.hdrEnssl_c_der. Voor het instellen van dynamische headerwaarden voor HTTP-verzoeken zijn toegestane voorbeeldophaalprogramma's toegestaanvereist.hdrEnssl_c_der. Zowel de aanvraag- als de respons-dynamische waarden kunnen delagerEnbasis64converters.

  3. Sla het bestand op om de wijzigingen toe te passen.

X-Forwarded-headers gebruiken

U configureert de HAProxy Ingress Controller om een ​​beleid op te geven voor het omgaan met HTTP-headers, inclusiefDoorgestuurdEnX-doorgestuurd-voor. De Ingress-operator gebruikt deHTTP-headersveld om het te configurerenROUTER_SET_FORWARDED_HEADERSomgevingsvariabele van de Ingress-controller.

Procedure

  1. Configureer deHTTP-headersveld voor de Ingress-controller.

    1. Gebruik de volgende opdracht om hetIngressControllerbron:

      $ oc bewerk IngressController
    2. Onderspec, stel deHTTP-headersbeleidsveld naarToevoegen,Vervangen,Indien Geen, ofNooit:

      apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: httpHeaders: doorgestuurdHeaderPolicy: Toevoegen

Voorbeelden van gebruiksscenario's

Als clusterbeheerder kunt u:

  • Configureer een externe proxy die hetX-doorgestuurd-voorheader in elk verzoek voordat u het doorstuurt naar een Ingress-controller.

    Als u de Ingress-controller wilt configureren om de header ongewijzigd door te geven, geeft u denooitbeleid. De Ingress Controller stelt dan nooit de headers in, en applicaties ontvangen alleen de headers die de externe proxy levert.

  • Configureer de Ingress-controller om deX-doorgestuurd-voorheader die uw externe proxy instelt op externe clusterverzoeken via ongewijzigd.

    Om de Ingress-controller te configureren om deX-doorgestuurd-voorheader op interne clusterverzoeken, die niet via de externe proxy gaan, specificeert u deals-geenbeleid. Als bij een HTTP-verzoek de header al is ingesteld via de externe proxy, behoudt de Ingress-controller deze. Als de header ontbreekt omdat het verzoek niet via de proxy is binnengekomen, voegt de Ingress Controller de header toe.

Als applicatieontwikkelaar kunt u:

  • Configureer een applicatiespecifieke externe proxy die deX-doorgestuurd-voorkoptekst.

    Als u een Ingress-controller wilt configureren om de header ongewijzigd door te geven voor de route van een toepassing, zonder het beleid voor andere routes te beïnvloeden, voegt u een annotatie toehaproxy.router.openshift.io/set-forwarded-headers: als-geenofhaproxy.router.openshift.io/set-forwarded-headers: nooitop de route voor de toepassing.

    U kunt dehaproxy.router.openshift.io/set-forwarded-headersannotatie per route, onafhankelijk van de globaal ingestelde waarde voor de Ingress Controller.

HTTP/2 Ingress-connectiviteit inschakelen

U kunt transparante end-to-end HTTP/2-connectiviteit inschakelen in HAProxy. Hiermee kunnen applicatie-eigenaren gebruik maken van HTTP/2-protocolmogelijkheden, waaronder enkele verbinding, headercompressie, binaire streams en meer.

U kunt HTTP/2-connectiviteit inschakelen voor een individuele Ingress-controller of voor het hele cluster.

Om het gebruik van HTTP/2 voor de verbinding van de client met HAProxy mogelijk te maken, moet een route een aangepast certificaat specificeren. Een route die het standaardcertificaat gebruikt, kan geen HTTP/2 gebruiken. Deze beperking is nodig om problemen bij het samenvoegen van verbindingen te voorkomen, waarbij de client een verbinding hergebruikt voor verschillende routes die hetzelfde certificaat gebruiken.

De verbinding van HAProxy met de toepassingspod kan HTTP/2 alleen gebruiken voor het opnieuw versleutelen van routes en niet voor aan de rand eindigende of onveilige routes. Deze beperking komt doordat HAProxy Application-Level Protocol Negotiation (ALPN), een TLS-extensie, gebruikt om met de back-end over het gebruik van HTTP/2 te onderhandelen. De implicatie is dat end-to-end HTTP/2 mogelijk is met passthrough en herversleuteling, en niet met onveilige of edge-terminating routes.

Voor het gebruik van WebSockets met een route voor opnieuw versleutelen en met HTTP/2 ingeschakeld op een Ingress-controller is WebSocket-ondersteuning via HTTP/2 vereist. WebSockets via HTTP/2 is een functie van HAProxy 2.4, die momenteel niet wordt ondersteund in OpenShift Container Platform.

Voor niet-passthrough-routes onderhandelt de Ingress Controller over de verbinding met de applicatie, onafhankelijk van de verbinding van de client. Dit betekent dat een client verbinding kan maken met de Ingress-controller en over HTTP/1.1 kan onderhandelen, en dat de Ingress-controller vervolgens verbinding kan maken met de applicatie, over HTTP/2 kan onderhandelen en het verzoek van de HTTP/1.1-client-verbinding kan doorsturen met behulp van de HTTP/2-verbinding naar de applicatie. Dit levert een probleem op als de client vervolgens probeert zijn verbinding te upgraden van HTTP/1.1 naar het WebSocket-protocol, omdat de Ingress-controller WebSocket niet kan doorsturen naar HTTP/2 en zijn HTTP/2-verbinding niet kan upgraden naar WebSocket. Als u dus een toepassing heeft die bedoeld is om WebSocket-verbindingen te accepteren, mag deze niet toestaan ​​dat er over het HTTP/2-protocol wordt onderhandeld, anders kunnen clients niet upgraden naar het WebSocket-protocol.

Procedure

Schakel HTTP/2 in op één enkele Ingress-controller.

  • Om HTTP/2 op een Ingress-controller in te schakelen, voert u hetoc annoterencommando:

    $ ok-Nopenshift-ingress-operator annoteer ingresscontrollers/ ingress.operator.openshift.io/default-enable-http2=WAAR

    Vervangenmet de naam van de Ingress-controller die u wilt annoteren.

Schakel HTTP/2 in op het hele cluster.

  • Om HTTP/2 voor het hele cluster in te schakelen, voert u hetoc annoterencommando:

    $ oc annoteer ingress.config/cluster ingress.operator.openshift.io/default-enable-http2=WAAR

    U kunt ook de volgende YAML toepassen om de annotatie toe te voegen:

    apiversie: config.openshift.io/v1vriendelijk: Binnenkomenmetagegevens: naam: TROS annotaties: ingress.operator.openshift.io/default-enable-http2: "WAAR"

Het PROXY-protocol configureren voor een Ingress-controller

Een clusterbeheerder kan configurerenhet PROXY-protocolwanneer een Ingress-controller gebruikmaakt van deHostnetwerkofNodePortServicetypen eindpuntpublicatiestrategieën. Dankzij het PROXY-protocol kan de load balancer de oorspronkelijke clientadressen behouden voor verbindingen die de Ingress Controller ontvangt. De oorspronkelijke clientadressen zijn handig voor het loggen, filteren en injecteren van HTTP-headers. In de standaardconfiguratie bevatten de verbindingen die de Ingress Controller ontvangt alleen het bronadres dat is gekoppeld aan de load balancer.

Deze functie wordt niet ondersteund in cloudimplementaties. Deze beperking komt doordat wanneer OpenShift Container Platform op een cloudplatform draait en een IngressController specificeert dat een service-load balancer moet worden gebruikt, de Ingress-operator de load balancer-service configureert en het PROXY-protocol inschakelt op basis van de platformvereiste voor het behouden van bronadressen.

U moet zowel OpenShift Container Platform als de externe load balancer configureren om het PROXY-protocol of TCP te gebruiken.

Het PROXY-protocol wordt niet ondersteund voor de standaard Ingress-controller met door het installatieprogramma ingerichte clusters op niet-cloudplatforms die een Keepalived Ingress VIP gebruiken.

Vereisten

  • U hebt een Ingress-controller gemaakt.

Procedure

  1. Bewerk de Ingress Controller-bron:

    $ ok-Nopenshift-ingress-operator bewerk ingresscontroller/default
  2. Stel de PROXY-configuratie in:

    • Als uw Ingress-controller het hostNetwork-eindpuntpublicatiestrategietype gebruikt, stelt u despec.endpointPublishingStrategy.hostNetwork.protocolsubveld naarVOLMACHT:

      Steekproefhostnetwerkconfiguratie naarVOLMACHT

       spec: eindpuntPublishingStrategie: hostnetwerk: protocol: VOLMACHT type: Hostnetwerk
    • Als uw Ingress-controller het NodePortService-eindpuntpublicatiestrategietype gebruikt, stelt u despec.endpointPublishingStrategy.nodePort.protocolsubveld naarVOLMACHT:

      SteekproefknooppuntPoortconfiguratie naarVOLMACHT

       spec: eindpuntPublishingStrategie: knooppuntPoort: protocol: VOLMACHT type: NodePortService

Een alternatief clusterdomein opgeven met behulp van de optie appsDomain

Als clusterbeheerder kunt u een alternatief voor het standaardclusterdomein voor door de gebruiker gemaakte routes opgeven door hetappsDomeinveld. DeappsDomeinveld is een optioneel domein dat OpenShift Container Platform kan gebruiken in plaats van de standaard, die is opgegeven in hetdomeinveld. Als u een alternatief domein opgeeft, overschrijft dit het standaardclusterdomein om de standaardhost voor een nieuwe route te bepalen.

U kunt het DNS-domein voor uw bedrijf bijvoorbeeld gebruiken als het standaarddomein voor routes en inkomend verkeer voor toepassingen die op uw cluster worden uitgevoerd.

Vereisten

  • U hebt een OpenShift Container Platform-cluster geïmplementeerd.

  • Je hebt deokopdrachtregelinterface.

Procedure

  1. Configureer deappsDomeinveld door een alternatief standaarddomein op te geven voor door de gebruiker gemaakte routes.

    1. Bewerk de ingangTROSbron:

      $ oc bewerk ingress.config/cluster-Ojaml
    2. Bewerk het YAML-bestand:

      SteekproefappsDomeinconfiguratie naartest.voorbeeld.com

      apiversie: config.openshift.io/v1vriendelijk: Binnenkomenmetagegevens: naam: TROSspec: domein: apps.voorbeeld.com (1) appsDomein:  (2)
      1Specificeert het standaarddomein. U kunt het standaarddomein na de installatie niet wijzigen.
      2Optioneel: Domein voor OpenShift Container Platform-infrastructuur om te gebruiken voor applicatieroutes. In plaats van het standaardvoorvoegsel,apps, kunt u een alternatief voorvoegsel gebruiken, zoalstest.
  2. Controleer of een bestaande route de domeinnaam bevat die is opgegeven in hetappsDomeinveld door de route bloot te leggen en de wijziging van het routedomein te verifiëren:

    Wacht op deopenshift-apiservervoltooi de rolling updates voordat u de route openbaar maakt.

    1. Geef de route bloot:

      $ oc expose service hallo-openshiftroute.route.openshift.io/hello-openshift zichtbaar

      Voorbeelduitvoer:

      $ oc routes ophalenNAAM HOST/HAVENPAD DIENSTEN HAVENBEËINDIGING WILDCARDhello-openshift hello_openshift-.test.voorbeeld.comhallo-openshift 8080-tcp Geen

HTTP-header-hoofdlettergebruik converteren

HAProxy 2.2 maakt standaard HTTP-headernamen in kleine letters, bijvoorbeeld gewijzigdHost: xyz.comnaarhost: xyz.com. Als oudere toepassingen gevoelig zijn voor het gebruik van hoofdletters in HTTP-headernamen, gebruikt u de Ingress-controllerspec.httpHeaders.headerNameCaseAdjustmentsAPI-veld voor een oplossing om oudere applicaties te huisvesten totdat ze kunnen worden opgelost.

Omdat OpenShift Container Platform HAProxy 2.2 bevat, moet u ervoor zorgen dat u de benodigde configuratie toevoegt met behulp vanspec.httpHeaders.headerNameCaseAdjustmentsvoordat u gaat upgraden.

Vereisten

  • U hebt de OpenShift CLI geïnstalleerd (ok).

  • U heeft als gebruiker toegang tot het cluster met decluster-adminrol.

Procedure

Als clusterbeheerder kunt u de HTTP-header converteren door deoc-patchcommando of door het instellen van deHeaderNameCaseAanpassingenveld in het Ingress Controller YAML-bestand.

  • Geef een HTTP-header op die met een hoofdletter moet worden geschreven door deoc-patchcommando.

    1. Voer deoc-patchopdracht om de HTTP te wijzigengastheerkop naarGastheer:

      $ ok-Nopenshift-ingress-operator patch ingresscontrollers/default--type=samenvoegen--lapje='{"spec":{"httpHeaders":{"headerNameCaseAdjustments":["Host"]}}}'
    2. Annoteer de route van de applicatie:

      $ oc annoteer routes/mijn-applicatie haproxy.router.openshift.io/h1-adjust-case=WAAR

      De Ingress-controller past vervolgens degastheerverzoekheader zoals opgegeven.

  • Geef aanpassingen op met behulp van deHeaderNameCaseAanpassingenveld door het Ingress Controller YAML-bestand te configureren.

    1. In het volgende voorbeeld past Ingress Controller YAML degastheerkop naarGastheervoor HTTP/1-verzoeken naar correct geannoteerde routes:

      Voorbeeld Ingress-controller YAML

      apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: httpHeaders: headerNameCaseAdjustments: - Gastheer
    2. Met de volgende voorbeeldroute worden aanpassingen in hoofdletters en kleine letters van de HTTP-antwoordheader mogelijk gemaakt met behulp van dehaproxy.router.openshift.io/h1-adjust-caseannotatie:

      Voorbeeldroute YAML

      apiversie: route.openshift.io/v1vriendelijk: Routemetagegevens: annotaties: haproxy.router.openshift.io/h1-adjust-case: WAAR (1) naam: mijn aanvraag naamruimte: mijn aanvraagspec: naar: vriendelijk: Dienst naam: mijn aanvraag
      1Sethaproxy.router.openshift.io/h1-adjust-casenaar waar.

Routercompressie gebruiken

U configureert de HAProxy Ingress Controller om routercompressie globaal op te geven voor specifieke MIME-typen. U kunt gebruik maken van demime-typenvariabele om de formaten van MIME-typen te definiëren waarop compressie wordt toegepast. De typen zijn: toepassing, afbeelding, bericht, meervoudig, tekst, video of een aangepast type voorafgegaan door "X-". Zie voor de volledige notatie voor MIME-typen en subtypenRFC1341.

Geheugen dat is toegewezen voor compressie kan van invloed zijn op het maximale aantal verbindingen. Bovendien kan compressie van grote buffers latentie veroorzaken, zoals zware regex of lange lijsten met regex.

Niet alle MIME-typen profiteren van compressie, maar HAProxy gebruikt nog steeds bronnen om te proberen te comprimeren als dit wordt opgedragen. Over het algemeen profiteren tekstformaten, zoals html, css en js, van compressie, maar formaten die al gecomprimeerd zijn, zoals afbeeldingen, audio en video, profiteren weinig in ruil voor de tijd en middelen die aan compressie worden besteed.

Procedure

  1. Configureer dehttpCompressieveld voor de Ingress-controller.

    1. Gebruik de volgende opdracht om hetIngressControllerbron:

      $ oc bewerken-Nopenshift-ingress-operator ingresscontrollers/default
    2. Onderspec, stel dehttpCompressiebeleidsveld naarmime-typenen specificeer een lijst met MIME-typen waarop compressie moet worden toegepast:

      apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naam: standaard naamruimte: openshift-ingress-operatorspec: httpCompressie: mime-typen: - "tekst/html" - "tekst/css; tekenset=utf-8" - "applicatie/json"  ...

Routerstatistieken blootleggen

U kunt de HAProxy-routerstatistieken standaard weergeven in Prometheus-indeling op de standaardstatistiekenpoort, 1936. De externe systemen voor het verzamelen en aggregeren van statistieken, zoals Prometheus, hebben toegang tot de HAProxy-routerstatistieken. U kunt de HAProxy-routerstatistieken in een browser bekijken in de indeling HTML en door komma's gescheiden waarden (CSV).

Vereisten

  • U hebt uw firewall geconfigureerd om toegang te krijgen tot de standaardstatistiekenpoort, 1936.

Procedure

  1. Haal de naam van de routerpod op door de volgende opdracht uit te voeren:

    $ oc krijg peulen-Nopenshift-ingang

    Voorbeelduitvoer

    NAAM KLAAR STATUS HERSTARTEN AGrouter-default-76bfffb66c-46qwp 1/1 Actief 0 11u
  2. Haal de gebruikersnaam en het wachtwoord van de router op, die de router-pod opslaat in de/var/lib/haproxy/conf/metrics-auth/statsGebruikersnaamEn/var/lib/haproxy/conf/metrics-auth/statsPasswordbestanden:

    1. Haal de gebruikersnaam op door de volgende opdracht uit te voeren:

      $ oc rsh katmetrics-auth/statsGebruikersnaam
    2. Haal het wachtwoord op door de volgende opdracht uit te voeren:

      $ oc rsh katmetrics-auth/statsPassword
  3. Haal de IP- en metrische certificaten van de router op door de volgende opdracht uit te voeren:

    $ oc beschrijf pod 
  4. Haal de onbewerkte statistieken op in Prometheus-formaat door de volgende opdracht uit te voeren:

    $ Krul-u: http://:/metrics
  5. Krijg veilig toegang tot de statistieken door de volgende opdracht uit te voeren:

    $ Krul-ugebruiker:wachtwoord https://:/metrics-k
  6. Krijg toegang tot de standaardstatistiekenpoort, 1936, door de volgende opdracht uit te voeren:

    $ Krul-u: http://:/metrics
    Voorbeelduitvoer
    ...# HELP haproxy_backend_connections_total Totaal aantal verbindingen.# TYPE haproxy_backend_connections_total meterhaproxy_backend_connections_total{backend="http",namespace="default",route="hello-route"} 0haproxy_backend_connections_total{backend="http",namespace="default",route="hello-route-alt"} 0haproxy_backend_connections_total{backend= "http",namespace="default",route="hello-route01"} 0...# HELP haproxy_exporter_server_threshold Aantal gevolgde servers en de huidige drempelwaarde.# TYPE haproxy_exporter_server_threshold-meterhaproxy_exporter_server_threshold{type="current"} 11haproxy_exporter_server_threshold{type="limit"} 500...# HELP haproxy_frontend_bytes_in_total Huidig ​​totaal aantal inkomende bytes.# TYPE haproxy_frontend_bytes_in_total meterhaproxy_frontend_bytes_in_total{frontend="fe_no_sni"} 0haproxy_frontend_bytes_in_total{frontend="fe_sni"} 0haproxy_frontend_bytes_in_total{frontend="openbaar"} 119070...# HELP haproxy_server_bytes_in_total Huidig ​​totaal aantal inkomende bytes.# TYPE haproxy_server_bytes_in_total meterhaproxy_server_bytes_in_total{namespace="",pod="",route="",server="fe_no_sni",service=""} 0haproxy_server_bytes_in_total{namespace="",pod="",route="",server="fe_sni" ,service=""} 0haproxy_server_bytes_in_total{namespace="default",pod="docker-registry-5-nk5fz",route="docker-registry",server="10.130.0.89:5000",service="docker-register "} 0haproxy_server_bytes_in_total{namespace="default",pod="hello-rc-vkjqx",route="hello-route",server="10.130.0.90:8080",service="hello-svc-1"} 0...
  7. Start het statistiekenvenster door de volgende URL in een browser in te voeren:

    http://:@:
  8. Optioneel: verkrijg de statistieken in CSV-formaat door de volgende URL in een browser in te voeren:

    http://:@:1936/metrics;csv

HAProxy-foutcoderesponspagina's aanpassen

Als clusterbeheerder kunt u een aangepaste foutcodereactiepagina opgeven voor 503, 404 of beide foutpagina's. De HAProxy-router geeft een 503-foutpagina weer als de toepassingspod niet actief is, of een 404-foutpagina als de gevraagde URL niet bestaat. Als u bijvoorbeeld de antwoordpagina met de 503-foutcode aanpast, wordt de pagina weergegeven wanneer de toepassingspod niet actief is, en wordt de standaard HTTP-antwoordpagina met de 404-foutcode weergegeven door de HAProxy-router voor een onjuiste route of een niet-bestaande route. route.

Aangepaste reactiepagina's voor foutcodes worden gespecificeerd in een configuratiekaart en vervolgens gepatcht naar de Ingress-controller. De configuratietoewijzingssleutels hebben de volgende twee beschikbare bestandsnamen:foutpagina-503.httpEnfoutpagina-404.http.

Aangepaste antwoordpagina's voor HTTP-foutcodes moeten deHAProxy HTTP-foutpaginaconfiguratierichtlijnen. Hier is een voorbeeld van de standaard OpenShift Container Platform HAProxy-routerhttp 503 foutcode antwoordpagina. U kunt de standaardinhoud gebruiken als sjabloon voor het maken van uw eigen aangepaste pagina.

Standaard geeft de HAProxy-router alleen een 503-foutpagina weer als de applicatie niet actief is of als de route onjuist of niet-bestaand is. Dit standaardgedrag is hetzelfde als het gedrag op OpenShift Container Platform 4.8 en eerder. Als er geen configuratietoewijzing is voor het aanpassen van een HTTP-foutcodereactie en u een aangepaste HTTP-foutcodereactiepagina gebruikt, geeft de router standaard een 404- of 503-foutcodereactiepagina weer.

Als u de standaard 503-foutcodepagina van OpenShift Container Platform als sjabloon voor uw aanpassingen gebruikt, vereisen de headers in het bestand een editor die CRLF-regeleinden kan gebruiken.

Procedure

  1. Maak een configuratiekaart met de naammijn-aangepaste-foutcodepagina'sin deopenshift-confignaamruimte:

    $ ok-Nopenshift-config maak configmap mijn-aangepaste-foutcodepagina's\--van bestand=foutpagina-503.http\--van bestand=foutpagina-404.http

    Als u niet het juiste formaat opgeeft voor de aangepaste foutcodereactiepagina, treedt er een storing in de routerpod op. Om deze storing op te lossen, moet u de configuratiekaart verwijderen of corrigeren en de getroffen routerpods verwijderen, zodat ze opnieuw kunnen worden gemaakt met de juiste informatie.

  2. Patch de Ingress-controller zodat deze verwijst naar demijn-aangepaste-foutcodepagina'sconfiguratiekaart op naam:

    $ oc-patch-Nopenshift-ingress-operator ingresscontroller/default--lapje '{"spec":{"httpErrorCodePages":{"name":mijn-aangepaste-foutcodepagina's"}}}' --type=samenvoegen

    De Ingress-operator kopieert hetmijn-aangepaste-foutcodepagina'sconfiguratiekaart van deopenshift-confignaamruimte naar deopenshift-ingangnaamruimte. De Operator benoemt de configuratiekaart volgens het patroon,-foutpagina's, in deopenshift-ingangnaamruimte.

  3. Toon de kopie:

    $ oc krijg cm standaardfoutenpagina's-Nopenshift-ingang

    Voorbeelduitvoer

    NAAM GEGEVENS AGEstandaardfoutenpagina's 2 25s(1)
    1De naam van de voorbeeldconfiguratiekaart isstandaardfoutenomdat destandaardDe aangepaste resource (CR) van Ingress Controller is gepatcht.
  4. Bevestig dat de configuratietoewijzing met de aangepaste foutreactiepagina wordt geactiveerd op het routervolume waar de configuratietoewijzingssleutel de bestandsnaam is met de aangepaste HTTP-foutcodereactie:

    • Voor aangepaste 503 aangepaste HTTP-foutcodereactie:

      $ ok-Nopenshift-ingress rsh kat/var/lib/haproxy/conf/error_code_pages/error-page-503.http
    • Voor aangepaste 404-HTTP aangepaste foutcodereactie:

      $ ok-Nopenshift-ingress rsh kat/var/lib/haproxy/conf/error_code_pages/error-page-404.http

Verificatie

Controleer uw aangepaste HTTP-reactie met foutcode:

  1. Maak een testproject en aanvraag aan:

    $ oc nieuwe projecten testen
    $ oc nieuwe app django-psql-voorbeeld
  2. Voor een aangepaste 503-http-foutcodereactie:

    1. Stop alle peulen voor de toepassing.

    2. Voer de volgende curl-opdracht uit of bezoek de hostnaam van de route in de browser:

      $ Krul-vk
  3. Voor een aangepaste 404-http-foutcodereactie:

    1. Bezoek een niet-bestaande route of een onjuiste route.

    2. Voer de volgende curl-opdracht uit of bezoek de hostnaam van de route in de browser:

      $ Krul-vk
  4. Controleer of defoutbestandattribuut staat correct in dehaproxy.configbestand:

    $ ok-Nopenshift-ingress rsh kat/var/lib/haproxy/conf/haproxy.config |grepfoutbestand

Instellen van de maximale verbindingen van de Ingress Controller

Een clusterbeheerder kan het maximale aantal gelijktijdige verbindingen instellen voor OpenShift-routerimplementaties. U kunt een bestaande Ingress-controller patchen om het maximale aantal verbindingen te vergroten.

Vereisten

  • In het volgende wordt ervan uitgegaan dat u al een Ingress-controller hebt gemaakt

Procedure

  • Update de Ingress-controller om het maximale aantal verbindingen voor HAProxy te wijzigen:

    $ ok-Nopenshift-ingress-operator patch ingresscontroller/default--type=samenvoegen-P '{"spec":{"tuningOptions": {"maxConnections": 7500}}}'

    Als u despec.tuningOptions.maxConnectionswaarde groter is dan de huidige limiet van het besturingssysteem, zal het HAProxy-proces niet starten. Zie de tabel in de sectie 'Ingress Controller-configuratieparameters' voor meer informatie over deze parameter.

De Ingress-operator begrijpen | Netwerken (2024)
Top Articles
Latest Posts
Article information

Author: Carmelo Roob

Last Updated:

Views: 6049

Rating: 4.4 / 5 (45 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Carmelo Roob

Birthday: 1995-01-09

Address: Apt. 915 481 Sipes Cliff, New Gonzalobury, CO 80176

Phone: +6773780339780

Job: Sales Executive

Hobby: Gaming, Jogging, Rugby, Video gaming, Handball, Ice skating, Web surfing

Introduction: My name is Carmelo Roob, I am a modern, handsome, delightful, comfortable, attractive, vast, good person who loves writing and wants to share my knowledge and understanding with you.