Code Monkey home page Code Monkey logo

fury-kubernetes-ingress's People

Contributors

angelbarrera92 avatar beratio avatar bernardhalas avatar deepzima avatar emasacco avatar gitirabassi avatar giusepperotella avatar jnardiello avatar lnovara avatar luigibarbato avatar lzecca78 avatar nandajavarma avatar nutellinoit avatar omissis avatar phisco avatar ralgozino avatar sbruzzese902 avatar smerlos avatar tmiklu avatar vombato avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fury-kubernetes-ingress's Issues

Separate cluster wide resources in different files for deploying multiple ingress in one cluster

Hi everyone ๐Ÿ‘‹ !
I am encountering problems trying to deploying multiple ingress in same cluster. This is mainly because there are several resources collapsed in one file on side (for example in rbac.yml there are both namespaced resources and cluster wide resources), and on the other side, because afaik there is no way to remove a resource with kustomize.
I tried a workaround trying to change resource name with a patchesJson6902 but was unsuccesful.
The best thing for this purpose can be to separate each resource in different file, this should allow to inherit them separately (in case you need) and avoid duplication of cluster-wide resources.
Let me know what you think!

Single controller default backend configuration issue on v1.11.0

Pasting and internal report by @beratio :
We experienced this problem on an EKS cluster v1.21 with Ingress Module v.1.11.0 : when Nginx is used in single mode, ingresses without annotation kubernetes.io/ingress.class: "nginx" are ignored by the controller. So, after a cluster upgrade, services behind those ingresses became unavailable.

Module has IngressClass object configured as default-backend and in theory it should cover ingresses without class specification, but it doesn't.

Searching for it, I found other people had same problem on different Kubernetes cluster versions/providers. It's necessary controlling and updating all ingress resources that lack the notation before upgrading the module.

Since this bug leads to an unexpected disservice, I suggest adding a warning in release docs. So whoever upgrades this module on a cluster using single nginx can be aware of the issue, can check ingress resources and fix them before the upgrade.

updateStrategy in nginx-ingress-controller cannot be zero

Hi!
while we were installing the module version 1.13.1 we had the following problem:

DaemonSet.apps "nginx-ingress-controller-internal" is invalid: spec.updateStrategy.rollingUpdate.maxUnavailable: Invalid value: intstr.IntOrString{Type:0, IntVal:0, StrVal:""}: cannot be 0

What we did was to add the following jsonPatch:

- op: replace
  path: /spec/updateStrategy/rollingUpdate/maxUnavailable
  value: 1

Kubernetes version : EKS 1.22

Split dual-nginx katalog

We could leverage kustomize's nameSuffix to avoid duplicating ingress-nginx deployment manifests.

We should split dual-nginx in nginx-internal and nginx-external while inheriting from ingress-nginx.

cert-manager ServiceMonitor picks up pods that shouldn't

Due to the labels and selector we are using, the ServiceMonitor included with the module is picking up other pods that should not be scrapped for metrics:
image

Pods "CA Injector" and "Webhook" should not be scrapped for metrics.

Improve e2e tests

Current e2e tests are a little flaky, we need to improve them for example testing that cert-manager creates a CA and certificates.

Missing permission for cert-manager-cainjector in v1.13.0

Testing the ugprade to ingress v1.13.0 we found that cert-manager-cainjector logs the following error:

leaderelection.go:330] error retrieving resource lock cert-manager/cert-manager-cainjector-leader-election: configmaps "cert-manager-cainjector-leader-election" is forbidden: User "system:serviceaccount:cert-manager:cert-manager-cainjector" cannot get resource "configmaps" in API group "" in the namespace "cert-manager"

indicating that there's some permission missing, most probably we'll need to add the following snippet to the cert-manager-cainjector:leaderelection role:

  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get"]  # get seems to be enough

We need to check if we missed it somehow or if it is missing also in upstream manifests.

Proposal: let Nginx ingress controller directly logs json

Hi guys,
have you ever thought to let nginx directly log json instead of logging string and then parsing it with fluent?
You can do it with something like (names are just examples)

log_format json_combined escape=json
  '{'
    '"time_local":"$time_local",'
    '"remote_addr":"$remote_addr",'
    '"remote_user":"$remote_user",'
    '"request":"$request",'
    '"status": "$status",'
    '"body_bytes_sent":"$body_bytes_sent",'
    '"request_time":"$request_time",'
    '"http_referrer":"$http_referer",'
    '"http_user_agent":"$http_user_agent"'
  '}';

This can simplify the fluentd/fluentbit log flow, and opens a lot of possibilities (i.e. parsing logs from command line)

ServiceMonitor pointing to the incorrect service labels

@lzecca78 spotted and issue while deploying the latest version of this module (cert-manager).

Seems like the serviceMonitor is trying to reach the cert-manager using the incorrect labels.

Current:

---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    app: cert-manager
    app.kubernetes.io/component: cert-manager
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: cert-manager
    app.kubernetes.io/part-of: fury-kubernetes-ingress
    app.kubernetes.io/version: 1.1.0
  name: cert-manager
  namespace: cert-manager
spec:
  endpoints:
  - interval: 30s
    port: metrics
  jobLabel: app
  namespaceSelector:
    matchNames:
    - cert-manager
  selector:
    matchLabels:
      app: cert-manager
      app.kubernetes.io/version: 1.0.1
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: cert-manager
    app.kubernetes.io/component: cert-manager
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: cert-manager
    app.kubernetes.io/part-of: fury-kubernetes-ingress
    app.kubernetes.io/version: 1.1.0
  name: cert-manager
  namespace: cert-manager
spec:
  ports:
  - name: metrics
    port: 9402
    targetPort: metrics
  selector:
    app: cert-manager
    app.kubernetes.io/component: cert-manager
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: cert-manager
    app.kubernetes.io/part-of: fury-kubernetes-ingress

Service has the label app.kubernetes.io/version: 1.1.0 while ServiceMonitor points to: app.kubernetes.io/version: 1.0.1

Add new package external-dns

It would be nice to have the external-dns project as a package of Ingress Module to provide better automatic management of external DNS providers for the created ingresses

Fix alerts annotations

Switch alerts annotations.message to annotations.description in order to make it work with the default Alertmanager template.

Use ports not requiring privileges for nginx ingress controller

The current implementation of the nginx ingress controller we ship listens and binds to port 80 in the container, which can be a issue in clusters with podSecuirityPolicies deployed, we should move to an higher port number not requiring any privilege in order to avoid this kind of issues.

Problem when using `ingressClass` instead of the annotation

Hi team, i found a problem when using the ingressClass field instead of the annotation in an ingress object when using dual nginx.

What happens is that since it's not defined the name of the controller via --controller-class, each one of the controller picks up the ingress and serves it. See https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/

I'm opening a PR to address this and completely remove annotations in favor of ingressClass field.

cluster-autoscaler ClusterRoleBinding needs subject namespace

in this new release every ClusterRoleBinding is missing the subject namespace and so we receive this error:
The ClusterRoleBinding "cert-manager-controller-certificates" is invalid: subjects[0].namespace: Required value

by simply adding the components namespace: cert-manager under the subject field the problem goes away and its possible to apply.
working example:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: cert-manager-controller-challenges
  labels: {}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cert-manager-controller-challenges
subjects:
- kind: ServiceAccount
  name: cert-manager
  namespace: cert-manager

if its a confirmed bug i will open a PR later with the fix, just let me know.

Link to cert-manager docs for the version being used

Hi I've used fury-ingress to deploy cert-manager on IKS (IBM Kubernetes Service) a few notes:

  1. The link to documentation (in your readme) is pointing to latest while you're using cert-manager 0.5. This created confusion for me when setting up the thing.
  2. This is more of an hint. IKS's Ingress doesn't allow multiple ingress resources for a single hostname. In this case using the certmanager.k8s.io/acme-http01-edi-in-place annotation is the solution. Also ingress.bluemix.net/redirect-to-https must be false

ACME Solver Image Reference in Cert-Manager Controller Arguments Conflicts with Distribution Guidelines

The latest versions of cert-manager, include an ACME solver image reference within the cert-manager controller's arguments. This is evident in the deployment configuration:

containers:
  - name: cert-manager-controller
    image: "quay.io/jetstack/cert-manager-controller:v1.14.2"
    imagePullPolicy: IfNotPresent
    args:
    - --v=2
    - --cluster-resource-namespace=$(POD_NAMESPACE)
    - --leader-election-namespace=kube-system
    - --acme-http01-solver-image=quay.io/jetstack/cert-manager-acmesolver:v1.14.2
    - --max-concurrent-challenges=60

The --acme-http01-solver-image argument in the cert-manager controller points to an image on Quay, which may cause issues in environments with restricted external access, particularly during HTTP-01 challenges. It's essential to update this to use an image hosted in the SIGHUP container registry, aligning with distribution guidelines that advocate for a single, unified image registry.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.