Remove Need for SANs in Provided Cert/Key Pair #406
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue: https://issues.redhat.com/browse/PROJQUAY-1737
Changelog: Remove the need for SANs of internal k8s service hosts in provided cert/key pair for Quay.
Docs: quay/quay-docs#157
Testing: There are a few different situations which must be tested:
Route
SERVER_HOSTNAME
Route
hostname, self-signed certsRoute
hostname)Route
hostname and provided certsstatus.conditions
registry.company.com
status.conditions
registry.company.com
registry.company.com
SERVER_HOSTNAME
is unsetSERVER_HOSTNAME
is unsetregistry.company.com
registry.company.com
status.conditions
registry.company.com
Details: Most public key infrastructure cannot generate cert/key pairs for the internal Kubernetes
Service
hostnames (quay.namespace.svc
). Previously, the Operator would reject provided certs which did not include these hostnames as Subject Alternative Names (SANs) because they were believed to be needed for TLS connections within the cluster. This is not the case, so this check is removed.To use a
Route
with the included OpenShift cluster cert/key pair, mark theroute
component asmanaged: false
, includeSERVER_HOSTNAME
as the future generatedRoute
hostname (follows the pattern<route-name>-<namespace>.apps.<cluster>
), then create your ownRoute
which points to the Quay appService
and uses re-encrypt TLS termination, with thedestinationCACertificate
set to the generatedtls.cert
found in theSecret
mounted into the Quay app pods.