Kubernetes apicibus & dolis: consuetudo errorum paginarum in NGINX Ingress

Kubernetes apicibus & dolis: consuetudo errorum paginarum in NGINX Ingress

In hoc articulo loqui volo de duabus notis NGINX Ingress pertinentibus ad paginas errorum personales ostendendas, necnon limitationes quae in eis existunt et vias ad operandum circa eas pertinent.

1. Mutans default backend

Defalta, NGINX Ingress utitur defalta backend, quae debitam functionem exercet. Hoc significat quod, cum Ingress petens specificans exercitum qui non est in opibus Ingress, sequenti pagina accipimus cum responso 404 codice:

Kubernetes apicibus & dolis: consuetudo errorum paginarum in NGINX Ingress

Sed clientes nostri magis ac saepius veniunt rogantes ut suam paginam ostendant cum logo corporato et aliis amaenitatibus pro vexillo 404. Ad hoc faciendum NGINX Ingress has facultatem constructum- redefine default-backend-service. Transimus forma viscus ut argumentum ad optionem eiusdem nominis namespace/servicename. Ministerium portus debet esse LXXX.

Ad hoc faciendum opus tuum vasculum (instruere) et servitium cum applicatione tua creare (exemplum exsecutionis in YAML ab ingressu repositorii), quod dabitur pro defectu backend.

Hic parva exemplum est:

~$ curl -i -XGET http://sadsdasdas.kube-cloud.my/
HTTP/1.1 404 Not Found
Date: Mon, 11 Mar 2019 05:38:15 GMT
Content-Type: */*
Transfer-Encoding: chunked
Connection: keep-alive

<span>The page you're looking for could not be found.</span>

Omnes ergo ditiones quae explicite non sunt creatae per YAML cum kind: Ingress, cadere in defaltam-backend. In enumeratione supra, haec regio facta est sadsdasdas.

2. HTTP tractantem errores in applicatione utens per default backend

Alia condicio postulata in erroribus HTTP desinentibus (404, 500, 502...) applicationis quae talibus adiunctis non processit (quae pulchrae paginae correspondentes non generantur). Hoc etiam ex desiderio tincidunt ut eidem errori in multiplici applicatione paginarum inserviat.

Ad hanc causam efficiendam in ministri parte opus est:

  1. Praecepta supra a paragrapho de defectu backend sequere;
  2. Clavem addere ad nginx-ingressus configurationem ConfigMap custom-http-errorse.g., cum valore 404,503 (perspicue respondet errori codicibus qui nova regula teguntur).

Effectus expectatus consecutus est: cum applicationis clientis currit et errorem accipit cum codice responsionis 404 vel 503, rogatio automatice redirecta erit ad novum default regressum...

Attamen, cum applicatione explicandi ad defectionem regressionis et consuetudinis http-errores, considerare debes notam magni momenti:

!!! Important The custom backend is expected to return the correct HTTP status code instead of 200. NGINX does not change the response from the custom default backend.

Ita res est, cum petitio redirecta est, caput capitis informationes utiles continebunt cum codice praecedente responsionis et informationis informationis (eorum indicem integrum praesto est. hic).

Hoc significat quod te ipsum oportet cura rectam responsum codice. Ecce exemplum ex documentis quomodo operatur.

Alia applicationes habent diversas default backends

Ut solutionem globalem non pro toto botro, sed solum ad certas applicationes applicat, primum debes versionem Ingress cohibere. Si aequet LXX vel altioremutere Annotationes vernaculas Ingress;

  1. Possumus nolens oboedire default-backend ad quisque Ingress's per annotationes;
  2. Possumus nolens oboedire custom-http-errors ad quisque Ingress's per annotationes.

Quam ob rem Ingress resource simile hoc spectabit:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ .Chart.Name }}-app2
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/custom-http-errors: "404,502"
    nginx.ingress.kubernetes.io/default-backend: error-pages
spec:
  tls:
  - hosts:
    - app2.example.com
    secretName: wildcard-tls
  rules:
  - host: app2.example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: {{ .Chart.Name }}-app2
          servicePort: 80

Hoc in casu, errores 404 et 502 convertentur ad errorum paginas ministerium omnibus capitalibus necessariis.

Π’ prior versiones Ingress non habet haec factura (fatale committere ad 0.23). Et si 2 applicationes omnino diversas in botro tuo currentes habebis, et diversam servitutem defaltam et diversum codicem errorum pro unoquoque eorum dispensando denotare vis, ad hoc habebis utendi operis, quorum duos habemus.

Ingressus <0.23: accedere ad unum

Haec optio simplicior est. Applicatio quae suis paginis inservit, HTML regularem habebimus, quae inspicere caput capitis nescit et in codicibus rectam responsionem reddere. Talis applicatio evolvit cum Ingressu ab domicilio /error-pageset in catalogo ws erit redditus HTML.

Illustration in YAML:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ .Chart.Name }}-app2
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/server-snippet: |
      proxy_intercept_errors on;
      error_page 500 501 502 503 504 @error_pages;
      location @error_pages {
        rewrite ^ /error-pages/other/index.html break;
        proxy_pass http://error-pages.prod.svc.cluster.local;
      }
spec:
  tls:
  - hosts:
    - app2.example.com
    secretName: wildcard-tls
  rules:
  - host: app2.example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: {{ .Chart.Name }}-app2
          servicePort: 80

Ministerium huius instituti debet esse generis ClusterIP.

Eodem tempore, in applicatione ubi errorem processuri sumus, in Ingressu addimus ministratorem snippetum vel configurationem-snippet cum sequenti contento:

nginx.ingress.kubernetes.io    /server-snippet: |
      proxy_intercept_errors on;
      error_page 500 501 502 503 504 @error_pages;
      location @error_pages {
        rewrite ^ /error-pages/ws/index.html break;
        proxy_pass http://error-pages.prod.svc.cluster.local;
      }

Ingress < 0.23: secundo adventu

Optio applicationis quae caput procedere potest... Et generatim haec via rectior est, a consuetudinariis erroribus mutuata. Utens manually (exscriptum) sinet te non mutare occasus globalis.

Gradus sunt huiusmodi. Nos creare eodem deployment cum applicatione quae possunt auscultare ad lacus necessaria et recte respondere. Servo-snippet ad applicationem Ingress cum sequenti contento addere:

nginx.ingress.kubernetes.io    /server-snippet: |
      proxy_intercept_errors off;
      error_page 404 = @custom_404;
      error_page 503 = @custom_503;
      location @custom_404 {
        internal;
        proxy_intercept_errors off;
        proxy_set_header       X-Code             404;
        proxy_set_header       X-Format           $http_accept;
        proxy_set_header       X-Original-URI     $request_uri;
        proxy_set_header       X-Namespace        $namespace;
        proxy_set_header       X-Ingress-Name     $ingress_name;
        proxy_set_header       X-Service-Name     $service_name;
        proxy_set_header       X-Service-Port     $service_port;
        proxy_set_header       Host               $best_http_host;
        rewrite ^ /error-pages/ws/index.html break;
        proxy_pass http://error-pages.prod.svc.cluster.local;
      }
      location @custom_503 {
        internal;
        proxy_intercept_errors off;
        proxy_set_header       X-Code             503;
        proxy_set_header       X-Format           $http_accept;
        proxy_set_header       X-Original-URI     $request_uri;
        proxy_set_header       X-Namespace        $namespace;
        proxy_set_header       X-Ingress-Name     $ingress_name;
        proxy_set_header       X-Service-Name     $service_name;
        proxy_set_header       X-Service-Port     $service_port;
        proxy_set_header       Host               $best_http_host;
        rewrite ^ /error-pages/ws/index.html break;
        proxy_pass http://error-pages.prod.svc.cluster.local;
      }

Ut videre potes, ad quemlibet errorem quem ad processum pertinere volumus, opus est ut nostrum locum faciamus, ubi omnes necessarii capitis inseruntur, ut in "patria" unum. mos-error-pages. Hoc modo varias personas errorum paginas etiam pro singulis locis ac ministris creare possumus.

PS

Aliae ex K8s apicibus & strophis series:

Lege etiam in nostro diario:

Source: www.habr.com