Sep 10, 2021

FAQ: OIG12.2.1.4 V10 on OCI – ошибка контроллера NGINX, приводящая к 404 File Not Found (nginx)

Short intro: here you can find a solution for the error with the latest OIG on OCI version (OIG 12.2.1.4 V10) which occurs due to changes in NGINX controller…

Недавно при разворачивании OIG V10 (на текущий момент последняя версия) на OCI я столкнулся с ошибкой, симптомы которой – при обращении к IP Load Balancer’а не найдены все URL типа /console, /identity, /em и прочие, ошибка в браузере выглядит как 404 File not Found (nginx). Ошибка оказалась связана с последними изменениями в NGINX, в результате которых не сработали скрипты. Кстати, предыдущая V9 не будет работать из-за несовместимости версий менеджера пакетов Kubernetes Helm Chart и самой платформы Kubernetes, так что сейчас нужно использовать именно V10. Найденное решение (спасибо Игорю Минееву) – под катом, может кому поможет.


На поде где поднят nginx loadbalancer смотрим логи

> kubectl logs -n nginx nginx-ingress-ingress-nginx-controller-6747cc9cc5-nwlq8

Находим, ошибку

 "Ignoring ingress because of error while validating ingress class" ingress="oigcluster/oigcluster-nginx" error="ingress does not contain a valid IngressClass"

 Связана она с новой версией реализации ingress-nginx контроллера

 https://forum.linuxfoundation.org/discussion/859965/exercise-7-nginx-update-requires-change-to-yaml

 

Смотрим на нашу конфигурацию:

kubectl get ing -n oigcluster -o yaml          ---- находим устаревший синтаксис

 Из логов терраформ находим строку запуска helm для конфигурования конроллера

 helm install oim-ingress /home/opc/idmcli/operator/operator/kubernetes/samples/charts/ingress-per-domain --namespace oigcluster --values /home/opc/idmcli/operator/operator/kubernetes/samples/charts/ingress-per-domain/values.yaml --set wlsDomain.domainUID=oigcluster

 

Редактируем файл  nginx-ingress.yaml в каталоге /home/opc/idmcli/operator/operator/kubernetes/samples/charts/ingress-per-domain/templates

 

# Copyright 2018, 2019, Oracle Corporation and/or its affiliates. All rights reserved.

# Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.

 {{- if eq .Values.type "NGINX" }}

---

apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

  name: {{ .Values.wlsDomain.domainUID }}-nginx

  namespace: {{ .Release.Namespace }}

  labels:

    weblogic.resourceVersion: domain-v2

  annotations:

    kubernetes.io/ingress.class: "nginx"

{{- if eq .Values.tls "SSL" }}

  annotations:

    kubernetes.io/ingress.class: "nginx"

    nginx.ingress.kubernetes.io/proxy-buffer-size: "2000k"

    nginx.ingress.kubernetes.io/configuration-snippet: |

      more_set_input_headers "X-Forwarded-Proto: https";

      more_set_input_headers "WL-Proxy-SSL: true";

    nginx.ingress.kubernetes.io/ingress.allow-http: "false"

{{- end }}

spec:

 rules:

   - http:

       paths:

       - path: /console

         pathType: ImplementationSpecific

         backend:

           service:

             name: '{{ .Values.wlsDomain.domainUID }}-{{ .Values.wlsDomain.adminServerName | lower | replace "_" "-" }}'

             port:

               number: {{ .Values.wlsDomain.adminServerPort }}

       - path: /em

         pathType: ImplementationSpecific

         backend:

           service:

             name: '{{ .Values.wlsDomain.domainUID }}-{{ .Values.wlsDomain.adminServerName | lower | replace "_" "-" }}'

             port:

               number: {{ .Values.wlsDomain.adminServerPort }}

       - path: /soa

         pathType: ImplementationSpecific

         backend:

           service:

             name:  '{{ .Values.wlsDomain.domainUID }}-cluster-{{ .Values.wlsDomain.soaClusterName | lower | replace "_" "-"

 }}'

             port:

               number: {{ .Values.wlsDomain.soaManagedServerPort }}

       - path: /integration

         pathType: ImplementationSpecific

         backend:

           service:

             name:  '{{ .Values.wlsDomain.domainUID }}-cluster-{{ .Values.wlsDomain.soaClusterName | lower | replace "_" "-"

 }}'

             port:

               number:  {{ .Values.wlsDomain.soaManagedServerPort }}

       - path: /soa-infra

         pathType: ImplementationSpecific

         backend:

           service:

             name: '{{ .Values.wlsDomain.domainUID }}-cluster-{{ .Values.wlsDomain.soaClusterName | lower | replace "_" "-"

}}'

             port:

               number: {{ .Values.wlsDomain.soaManagedServerPort }}

       - path: /identity

         pathType: ImplementationSpecific

         backend:

           service:

             name: '{{ .Values.wlsDomain.domainUID }}-cluster-{{ .Values.wlsDomain.oimClusterName | lower | replace "_" "-"

}}'

             port:

               number: {{ .Values.wlsDomain.oimManagedServerPort }}

{{- end }}

 

Далее

helm delete  oim-ingress -n oigcluster

и


helm install oim-ingress /home/opc/idmcli/operator/operator/kubernetes/samples/charts/ingress-per-domain --namespace oigcluster --values /home/opc/idmcli/operator/operator/kubernetes/samples/charts/ingress-per-domain/values.yaml --set wlsDomain.domainUID=oigcluster

P.s. напоминаю, что лабораторная работа по разворачиванию OIG на OCI доступна здесь - https://www.easyoraidm.ru/2021/08/oim12cps4-workshop-oracle-identity.html 

No comments:

Post a Comment