Giter VIP home page Giter VIP logo

component-openshift4-ingress's Introduction

Commodore Component: Openshift 4 Ingress

This is a Commodore Component for Openshift 4 Ingress.

This repository is part of Project Syn. For documentation on Project Syn and this component, see syn.tools.

Documentation

The rendered documentation for this component is available on the Commodore Components Hub.

Documentation for this component is written using Asciidoc and Antora. It can be found in the docs folder. We use the Divio documentation structure to organize our documentation.

Run the make docs-serve command in the root of the project, and then browse to http://localhost:2020 to see a preview of the current state of the documentation.

After writing the documentation, please use the make docs-vale command and correct any warnings raised by the tool.

Contributing and license

This library is licensed under BSD-3-Clause. For information about how to contribute, see CONTRIBUTING.

component-openshift4-ingress's People

Contributors

anothertobi avatar ccremer avatar corvus-ch avatar davidgubler avatar debakelorakel avatar glrf avatar mhutter avatar renovate-bot avatar simu avatar srueg avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

nunojusto

component-openshift4-ingress's Issues

Update component to use `patch-operator.libsonnet` directly

Context

The component currently uses resource-locker.libjsonnet in

local defaultNamespacePatch = resourcelocker.Patch(kube.Namespace('default'), {
metadata: {
labels: {
'network.openshift.io/policy-group': 'hostNetwork',
},
},
});

We should verify whether this patch is still required, and update it to use patch-operator.libsonnet directly if it is still needed.

Support Annotations on Ingress Controller for HTTP/2

Context

In order to enable HTTP/2 on an Ingress Controller, an annotation has to be added to it [1]. This should be supported by the component.

[1] https://docs.openshift.com/container-platform/4.6/networking/ingress-operator.html#nw-http2-haproxy_configuring-ingress

Alternatives

Manually managing an HTTP/2 Ingress Controller or manually enabling HTTP/2 cluster-wide:

oc annotate ingresses.config/cluster ingress.operator.openshift.io/default-enable-http2=true

The component must be tolerant to certificate chains without a newline

If the certificate chain openshift4-ingress/wildcard-certificate/cert does not contain a newline, the deployment on the OpenShift 4 cluster fails, because chain and key are concatenated -----END CERTIFICATE----------BEGIN PRIVATE KEY-----,.

Steps to Reproduce the Problem

  1. Inject a certificate chain WITHOUT a newline at the end -----END CERTIFICATE-----
    secrets:
      customer-apps-tls:
        stringData:
          tls.crt: ?{vaultkv:${cluster:tenant}/${cluster:name}/openshift4-ingress/wildcard-certificate/cert}
  1. Check the OpenShift cluster router secrets
oc -n openshift-ingress get secret router-apps-tls -o jsonpath="{.data.tls\.crt}" | base64 -d
oc -n openshift-authentication get secret v4-0-config-system-router-certs -o jsonpath="{.data.apps\.cluster\.domain\.ch}" | base64 -d | grep "BEGIN PRIVATE KEY"

Actual Behavior

Without a newline this result in -----END CERTIFICATE----------BEGIN PRIVATE KEY-----, which causes several base components not starting or even crashing.

Expected Behavior

The component must either check for a newline at the end of the injected certificate chain and add one if not there.
Or potentially just add always a newline to the chain (untested).

Test the certificate chain ahead could be an other solution to it, but would potentially cause downtime.

It's not acceptable that the user has to check for a newline, because it is high likely this is happening very often and we can't ensure component users read the documentation at such low level.

Dependency Dashboard

This issue provides visibility into Renovate updates and their statuses. Learn more

This repository currently has no open or pending branches.


  • Check this box to trigger a request for Renovate to run again on this repository

Allow to configure secrets required as `defaultCertificate` of ingresses

Context

The property defaultCertificate of an ingress takes the name of a Secret containing the certificate can key to be used by default. As of now, the component does not allow to manage those secretes. The component should allow to configure those secrets. It should also support to use cert-manager to create those secrets.

  openshift4_ingress:
    ingressControllers:
      default:
        defaultCertificate:
          name: ingress-default-cert
      example.com:
        defaultCertificate:
          name: ingress-example-com-cert

    secrets:
      ingress-example-com-cert:
        stringData:
          tls.crt: ?{vaultkv:${cluster:tenant}/${cluster:name}/whildcard-example-com/cert}
          tls.key: ?{vaultkv:${cluster:tenant}/${cluster:name}/whildcard-example-com/key}

    cert_manager_certs:
      ingress-default-cert:
        … # Spec of cert-manager.io/v1/Certificate

Reuse keys in cert_manager_certs as values for spec.secretName of the created Certificate resource by default, but allow users to override that field from the hierarchy, if they really want.

Alternatives

🤷🏼

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.