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 deIngressController
aangepaste 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 de
subjectAltName
extensie om een wildcard-domein op te geven, zoals*.apps.ocp4.voorbeeld.com
.
Je moet een
IngressController
CR. 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 het |
Procedure
In het volgende wordt ervan uitgegaan dat het aangepaste certificaat en het sleutelpaar zich in detls.crt
Entls.sleutel
bestanden in de huidige werkmap. Vervang de werkelijke padnamen doortls.crt
Entls.sleutel
. U kunt ook een andere naam vervangencustom-certs-default
bij 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. |
Maak een geheime bron met het aangepaste certificaat in de
openshift-ingang
naamruimte met behulp van detls.crt
Entls.sleutel
bestanden.$ ok--naamruimteopenshift-ingress maak geheime tls custom-certs-default--cert=tls.crt--sleutel=tls.sleutel
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"}}}'
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 de
cluster-admin
rol.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
U hebt de OpenShift CLI (
ok
) geïnstalleerd.U heeft als gebruiker toegang tot een OpenShift Container Platform-cluster met de
cluster-admin
rol.U hebt de Custom Metrics Autoscaler Operator geïnstalleerd.
Je bent in de
openshift-ingress-operator
projectnaamruimte.
Procedure
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: Definieer een
TriggerAuthenticatie
voorwerp binnen deopenshift-ingress-operator
naamruimte met behulp van het token van het serviceaccount.Definieer de variabele
geheim
dat het geheim bevat door de volgende opdracht uit te voeren:$ geheim=$(oc krijg geheim |grepthanos-token |hoofd -N1 |akelig '{ $1 afdrukken }')
Maak de
TriggerAuthenticatie
object en geef de waarde van de doorgeheim
variabel naar deTOKEN
parameter:$ 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
Creëer en pas een rol toe voor het lezen van statistieken van Thanos:
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
Pas de nieuwe rol toe door de volgende opdracht uit te voeren:
$ oc van toepassing-Fthanos-metrics-reader.yaml
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 argument
cluster-rol-aan-gebruiker toevoegen
is alleen vereist als u cross-namespace-query's gebruikt. In de volgende stap wordt een query uit deKube-statistieken
naamruimte waarvoor dit argument vereist is.Maak een nieuwe
GeschaaldObject
YAML-bestand,ingress-autoscaler.yaml
, dat gericht is op de standaardimplementatie van Ingress Controller:Voorbeeld
GeschaaldObject
definitieapiversie: 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
1 De aangepaste resource die u target. In dit geval de Ingress-controller. 2 Optioneel: het maximale aantal replica's. Als u dit veld weglaat, wordt het standaardmaximum ingesteld op 100 replica's. 3 Het Thanos-service-eindpunt in de openploeg-bewaking
naamruimte.4 De naamruimte van de Ingress-operator. 5 Deze 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 de
server adres
veld. U moet ook over verhoogde rechten beschikken om statistieken van deze poort te lezen.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 de
kube-state-metrieken
query door de volgende opdrachten uit te voeren:Gebruik de
grep
opdracht 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 de
openshift-ingang
project:$ 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.ok
commando's worden gebruikt om deIngressController
bron. 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
Bekijk het huidige aantal beschikbare replica's voor de standaard
IngressController
:$ oc krijg-Nopenshift-ingress-operator ingresscontrollers/default-O jsonpad='{$.status.availableReplicas}'
Voorbeelduitvoer
2
Schaal de standaardwaarde
IngressController
naar het gewenste aantal replica's met behulp van deoc-patch
commando. In het volgende voorbeeld wordt de standaard geschaaldIngressController
naar 3 replica's:$ oc-patch-Nopenshift-ingress-operator ingresscontroller/default--lapje '{"spec":{"replica's": 3}}' --type=samenvoegen
Voorbeelduitvoer
ingresscontroller.operator.openshift.io/default gepatcht
Controleer of dit de standaard is
IngressController
geschaald 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)
1 Als u een ander aantal replica's nodig heeft, wijzigt u de replica's
waarde.
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 met
cluster-admin
privileges.
Procedure
Configureer Ingress-toegangsregistratie naar een zijspan.
Om logboekregistratie van Ingress-toegang te configureren, moet u een bestemming opgeven met behulp van
spec.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 eenHouder
bestemming: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 naam
logboeken
in 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 van
spec.logging.access.destination
. Als u logboekregistratie naar een Syslog-eindpuntbestemming wilt opgeven, moet u dit opgevenSyslog
voorspec.logging.access.destination.type
. Als het bestemmingstype isSyslog
, moet u ook een doeleindpunt opgeven met behulp vanspec.logging.access.destination.syslog.endpoint
en 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 eenSyslog
bestemming: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
De
systeemlog
bestemmingspoort moet UDP zijn.
Configureer Ingress-toegangsregistratie met een specifiek logformaat.
U kunt opgeven
spec.logging.access.httpLogFormat
om het logformaat aan te passen. Het volgende voorbeeld is een Ingress Controller-definitie die zich aanmeldt bij eensysteemlog
eindpunt 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 dit
spec.logging
ofspec.logging.access
leeg: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.
Gebruik
spec.logging.access.destination.syslog.maxLength
als 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
Gebruik
spec.logging.access.destination.container.maxLength
als 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 configureren
spec.nodePlacement.nodeSelector
met labels die overeenkomen met de capaciteit van het beoogde knooppunt, en configurerenspec.tuningOptions.threadCount
tot 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 de |
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 met
cluster-admin
privileges.
Procedure
Creëer een
IngressController
aangepaste bron (CR) in een bestand met de naam
, zoals in het volgende voorbeeld:-ingress-controller.yaml apiversie: operator.openshift.io/v1vriendelijk: IngressControllermetagegevens: naamruimte: openshift-ingress-operator naam:
(1)spec: domein: (2) eindpuntPublishingStrategie: type: LoadBalancerService belastingBalancer: domein: Intern (3) 1 Vervangen
met een naam voor deIngressController
voorwerp.2 Specificeer de domein
voor de door de verwerkingsverantwoordelijke gepubliceerde applicatie.3 Geef een waarde op van Intern
om een interne load balancer te gebruiken.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) 1 Vervangen
met de naam van deIngressController
voorwerp.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
Configureer de Ingress Controller-bron om globale toegang toe te staan.
U kunt ook een Ingress-controller maken en de globale toegangsoptie opgeven.
Configureer de Ingress Controller-bron:
$ ok-Nopenshift-ingress-operator bewerk ingresscontroller/default
Bewerk het YAML-bestand:
Steekproef
klanttoegang
configuratie naarGlobaal
spec: eindpuntPublishingStrategie: belastingBalancer: providerParameters: gcp: klanttoegang: Globaal (1) type: GCP domein: Intern type: LoadBalancerService
1 Set gcp.clientAccess
naarGlobaal
.Sla het bestand op om de wijzigingen toe te passen.
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 de
gezondheidCheckInterval
voor 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 configurerenstandaard
Ingress-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 de |
Vereisten
Installeer de OpenShift CLI (
ok
).Log in als gebruiker met
cluster-admin
privileges.
Procedure
Configureer de
standaard
Ingress-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.routeToegang
veld van deingangscontroller
resourcevariabele 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 gebruiktwildcardBeleid
om de te configurerenROUTER_ALLOW_WILDCARD_ROUTES
omgevingsvariabele van de Ingress-controller.
Het standaardgedrag van de Ingress Controller is het toestaan van routes met een jokertekenbeleid vanGeen
, dat achterwaarts compatibel is met bestaandeIngressController
bronnen.
Procedure
Configureer het jokertekenbeleid.
Gebruik de volgende opdracht om het
IngressController
bron:$ oc bewerk IngressController
Onder
spec
, stel dewildcardBeleid
veld naarWildcardsNiet toegestaan
ofWildcardsToegestaan
: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 een |
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 waardeONTKENNEN
in de Ingress-controller met behulp van de volgende configuratie:
VoorbeeldIngressController
spec
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 waardeSAMEORIGINE
met behulp van de volgende configuratie:
VoorbeeldRoute
spec
apiversie: route.openshift.io/v1vriendelijk: Route# ...spec: httpHeaders: acties: antwoord: - naam: X-Frame-opties actie: type: Set set: waarde: SAMEORIGINE
Wanneer zowel deIngressController
spec enRoute
spec 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 headerwaardeONTKENNEN
toegepast op de front-endconfiguraties overschrijft dezelfde header met de waardeSAMEORIGINE
dat 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:
Kopnaam | Configureerbaar metIngressController spec | Configureerbaar metRoute spec | Reden van weigering | Configureerbaar met een andere methode |
---|---|---|---|---|
| Nee | Nee | De | Nee |
| Nee | Ja | Wanneer de | Nee |
| Nee | Nee | De | Ja de |
| 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:
|
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 de
cluster-admin
rol.
Procedure
Bewerk de Ingress Controller-bron:
$ ok-Nopenshift-ingress-operator bewerk ingresscontroller/default
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
1 De lijst met acties die u wilt uitvoeren op de HTTP-headers. 2 Het type koptekst dat u wilt wijzigen. In dit geval een verzoekheader. 3 De naam van de koptekst die u wilt wijzigen. Voor een lijst met beschikbare headers die u kunt instellen of verwijderen, zieConfiguratie van HTTP-header. 4 Het type actie dat wordt ondernomen op de koptekst. Dit veld kan de waarde hebben Set
ofVerwijderen
.5 Bij het instellen van HTTP-headers moet u een waarde
. 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 toegestaan
res.hdr
Enssl_c_der
. Voor het instellen van dynamische headerwaarden voor HTTP-verzoeken zijn toegestane voorbeeldophaalprogramma's toegestaanvereist.hdr
Enssl_c_der
. Zowel de aanvraag- als de respons-dynamische waarden kunnen delager
Enbasis64
converters.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, inclusiefDoorgestuurd
EnX-doorgestuurd-voor
. De Ingress-operator gebruikt deHTTP-headers
veld om het te configurerenROUTER_SET_FORWARDED_HEADERS
omgevingsvariabele van de Ingress-controller.
Procedure
Configureer de
HTTP-headers
veld voor de Ingress-controller.Gebruik de volgende opdracht om het
IngressController
bron:$ oc bewerk IngressController
Onder
spec
, stel deHTTP-headers
beleidsveld 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 het
X-doorgestuurd-voor
header 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 de
nooit
beleid. 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 de
X-doorgestuurd-voor
header die uw externe proxy instelt op externe clusterverzoeken via ongewijzigd.Om de Ingress-controller te configureren om de
X-doorgestuurd-voor
header op interne clusterverzoeken, die niet via de externe proxy gaan, specificeert u deals-geen
beleid. 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 de
X-doorgestuurd-voor
koptekst.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 toe
haproxy.router.openshift.io/set-forwarded-headers: als-geen
ofhaproxy.router.openshift.io/set-forwarded-headers: nooit
op de route voor de toepassing.U kunt de
haproxy.router.openshift.io/set-forwarded-headers
annotatie 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 het
oc annoteren
commando:$ ok-Nopenshift-ingress-operator annoteer ingresscontrollers/
ingress.operator.openshift.io/default-enable-http2=WAAR Vervangen
met 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 het
oc annoteren
commando:$ 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 deHostnetwerk
ofNodePortService
typen 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
Bewerk de Ingress Controller-bron:
$ ok-Nopenshift-ingress-operator bewerk ingresscontroller/default
Stel de PROXY-configuratie in:
Als uw Ingress-controller het hostNetwork-eindpuntpublicatiestrategietype gebruikt, stelt u de
spec.endpointPublishingStrategy.hostNetwork.protocol
subveld naarVOLMACHT
:Steekproef
hostnetwerk
configuratie naarVOLMACHT
spec: eindpuntPublishingStrategie: hostnetwerk: protocol: VOLMACHT type: Hostnetwerk
Als uw Ingress-controller het NodePortService-eindpuntpublicatiestrategietype gebruikt, stelt u de
spec.endpointPublishingStrategy.nodePort.protocol
subveld naarVOLMACHT
:Steekproef
knooppuntPoort
configuratie 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 hetappsDomein
veld. DeappsDomein
veld is een optioneel domein dat OpenShift Container Platform kan gebruiken in plaats van de standaard, die is opgegeven in hetdomein
veld. 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 de
ok
opdrachtregelinterface.
Procedure
Configureer de
appsDomein
veld door een alternatief standaarddomein op te geven voor door de gebruiker gemaakte routes.Bewerk de ingang
TROS
bron:$ oc bewerk ingress.config/cluster-Ojaml
Bewerk het YAML-bestand:
Steekproef
appsDomein
configuratie naartest.voorbeeld.com
apiversie: config.openshift.io/v1vriendelijk: Binnenkomenmetagegevens: naam: TROSspec: domein: apps.voorbeeld.com (1) appsDomein:
(2) 1 Specificeert het standaarddomein. U kunt het standaarddomein na de installatie niet wijzigen. 2 Optioneel: Domein voor OpenShift Container Platform-infrastructuur om te gebruiken voor applicatieroutes. In plaats van het standaardvoorvoegsel, apps
, kunt u een alternatief voorvoegsel gebruiken, zoalstest
.
Controleer of een bestaande route de domeinnaam bevat die is opgegeven in het
appsDomein
veld door de route bloot te leggen en de wijziging van het routedomein te verifiëren:Wacht op de
openshift-apiserver
voltooi de rolling updates voordat u de route openbaar maakt.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.com
naarhost: xyz.com
. Als oudere toepassingen gevoelig zijn voor het gebruik van hoofdletters in HTTP-headernamen, gebruikt u de Ingress-controllerspec.httpHeaders.headerNameCaseAdjustments
API-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 van |
Vereisten
U hebt de OpenShift CLI geïnstalleerd (
ok
).U heeft als gebruiker toegang tot het cluster met de
cluster-admin
rol.
Procedure
Als clusterbeheerder kunt u de HTTP-header converteren door deoc-patch
commando of door het instellen van deHeaderNameCaseAanpassingen
veld in het Ingress Controller YAML-bestand.
Geef een HTTP-header op die met een hoofdletter moet worden geschreven door de
oc-patch
commando.Voer de
oc-patch
opdracht om de HTTP te wijzigengastheer
kop naarGastheer
:$ ok-Nopenshift-ingress-operator patch ingresscontrollers/default--type=samenvoegen--lapje='{"spec":{"httpHeaders":{"headerNameCaseAdjustments":["Host"]}}}'
Annoteer de route van de applicatie:
$ oc annoteer routes/mijn-applicatie haproxy.router.openshift.io/h1-adjust-case=WAAR
De Ingress-controller past vervolgens de
gastheer
verzoekheader zoals opgegeven.
Geef aanpassingen op met behulp van de
HeaderNameCaseAanpassingen
veld door het Ingress Controller YAML-bestand te configureren.In het volgende voorbeeld past Ingress Controller YAML de
gastheer
kop naarGastheer
voor 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
Met de volgende voorbeeldroute worden aanpassingen in hoofdletters en kleine letters van de HTTP-antwoordheader mogelijk gemaakt met behulp van de
haproxy.router.openshift.io/h1-adjust-case
annotatie: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
1 Set haproxy.router.openshift.io/h1-adjust-case
naar 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-typen
variabele 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
Configureer de
httpCompressie
veld voor de Ingress-controller.Gebruik de volgende opdracht om het
IngressController
bron:$ oc bewerken-Nopenshift-ingress-operator ingresscontrollers/default
Onder
spec
, stel dehttpCompressie
beleidsveld naarmime-typen
en 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
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
Haal de gebruikersnaam en het wachtwoord van de router op, die de router-pod opslaat in de
/var/lib/haproxy/conf/metrics-auth/statsGebruikersnaam
En/var/lib/haproxy/conf/metrics-auth/statsPassword
bestanden:Haal de gebruikersnaam op door de volgende opdracht uit te voeren:
$ oc rsh
katmetrics-auth/statsGebruikersnaam Haal het wachtwoord op door de volgende opdracht uit te voeren:
$ oc rsh
katmetrics-auth/statsPassword
Haal de IP- en metrische certificaten van de router op door de volgende opdracht uit te voeren:
$ oc beschrijf pod
Haal de onbewerkte statistieken op in Prometheus-formaat door de volgende opdracht uit te voeren:
$ Krul-u
: http:// : /metrics Krijg veilig toegang tot de statistieken door de volgende opdracht uit te voeren:
$ Krul-ugebruiker:wachtwoord https://
: /metrics-k 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...
Start het statistiekenvenster door de volgende URL in een browser in te voeren:
http://
: @ : 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.http
Enfoutpagina-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
Maak een configuratiekaart met de naam
mijn-aangepaste-foutcodepagina's
in deopenshift-config
naamruimte:$ 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.
Patch de Ingress-controller zodat deze verwijst naar de
mijn-aangepaste-foutcodepagina's
configuratiekaart op naam:$ oc-patch-Nopenshift-ingress-operator ingresscontroller/default--lapje '{"spec":{"httpErrorCodePages":{"name":mijn-aangepaste-foutcodepagina's"}}}' --type=samenvoegen
De Ingress-operator kopieert het
mijn-aangepaste-foutcodepagina's
configuratiekaart van deopenshift-config
naamruimte naar deopenshift-ingang
naamruimte. De Operator benoemt de configuratiekaart volgens het patroon,
, in de-foutpagina's openshift-ingang
naamruimte.Toon de kopie:
$ oc krijg cm standaardfoutenpagina's-Nopenshift-ingang
Voorbeelduitvoer
NAAM GEGEVENS AGEstandaardfoutenpagina's 2 25s(1)
1 De naam van de voorbeeldconfiguratiekaart is standaardfouten
omdat destandaard
De aangepaste resource (CR) van Ingress Controller is gepatcht.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:
Maak een testproject en aanvraag aan:
$ oc nieuwe projecten testen
$ oc nieuwe app django-psql-voorbeeld
Voor een aangepaste 503-http-foutcodereactie:
Stop alle peulen voor de toepassing.
Voer de volgende curl-opdracht uit of bezoek de hostnaam van de route in de browser:
$ Krul-vk
Voor een aangepaste 404-http-foutcodereactie:
Bezoek een niet-bestaande route of een onjuiste route.
Voer de volgende curl-opdracht uit of bezoek de hostnaam van de route in de browser:
$ Krul-vk
Controleer of de
foutbestand
attribuut staat correct in dehaproxy.config
bestand:$ 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 de
spec.tuningOptions.maxConnections
waarde 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.