Verification#
The Beyond Defaults page covers the values you send into the chart. This page covers the opposite direction. It shows how a deployer can see what is actually running, including the material the deployment generates on its own, such as service provider signing keys and SAML metadata.
Values in the release#
Render the manifests without installing, to preview the result of your overrides:
helm template <Release.Name> cortex/cortex -f my-values.yaml -n <NAMESPACE>
After an install, inspect the values a release was actually given:
helm get values <Release.Name> -n <NAMESPACE>
See every manifest the release currently has applied, with the defaults and overrides already resolved:
helm get manifest <Release.Name> -n <NAMESPACE>
Secrets and certificates#
The chart and its dependencies generate a number of Kubernetes secrets that hold TLS certificates, SAML signing keys, and credentials. cert-manager issues the service certificates, and CloudNativePG issues the ones for the Registry database. None of this material appears in your values file.
Secret |
Type |
Purpose |
|---|---|---|
|
TLS |
Proxy HTTPS server certificate |
|
TLS |
Discovery HTTPS server certificate |
|
TLS |
Registry HTTPS server certificate |
|
TLS |
LDAP directory TLS certificate |
|
TLS |
Registry Shibboleth service provider signing and encryption certificate |
|
TLS |
Discovery Shibboleth service provider signing and encryption certificate |
|
TLS |
Proxy SATOSA backend certificate, the proxy acting as a service provider |
|
TLS |
Proxy SATOSA frontend certificate, the proxy acting as an identity provider |
|
TLS |
Registry database server certificate |
|
TLS |
Registry database replication certificate |
|
Opaque |
Registry database certificate authority |
|
basic-auth |
Registry database username and password |
|
Opaque |
Registry database password, email account password, and security salt |
|
Opaque |
Proxy state encryption key and user identifier hash salt |
|
Opaque |
LDAP administrator password |
Reading secrets#
Kubernetes stores secret data base64 encoded. To see every key of a secret with its decoded value:
kubectl -n <NAMESPACE> get secret registry-secret \
-o go-template='{{range $k,$v := .data}}{{printf "%s:\n" $k}}{{$v | base64decode}}{{"\n\n"}}{{end}}'
To read a single key, for example the database username and password from the basic-auth secret:
kubectl -n <NAMESPACE> get secret registry-db-credentials -o jsonpath='{.data.username}' | base64 -d; echo
kubectl -n <NAMESPACE> get secret registry-db-credentials -o jsonpath='{.data.password}' | base64 -d; echo
The decoded output includes private keys and passwords in clear text, so run these commands in a private shell and do not share the output.
Checking certificates#
A TLS secret holds the certificate under tls.crt. Decode it and pass it to
openssl to see who it was issued to, who signed it, and how long it is valid.
Reading the certificate is safe, because it is the public half of the pair.
kubectl -n <NAMESPACE> get secret registry-tls -o jsonpath='{.data.tls\.crt}' | base64 -d \
| openssl x509 -noout -subject -issuer -dates -ext subjectAltName
The output shows the subject, which is who the certificate was issued to, the
issuer, which is who signed it, the notBefore and notAfter validity window,
and the DNS names the certificate covers. To check quickly whether a certificate
is still valid:
kubectl -n <NAMESPACE> get secret registry-tls -o jsonpath='{.data.tls\.crt}' | base64 -d \
| openssl x509 -noout -checkend 0 && echo valid || echo expired
Tip
A secret that holds a certificate authority, such as registry-db-ca, keeps its
certificate under ca.crt rather than tls.crt, so read that key instead.
More details on the certificates in general can also be obtained by running the commands below;
kubectl -n <NAMESPACE> get certificate -o wide
kubectl -n <NAMESPACE> describe certificate registry-tls
Tip
The Shibboleth and SATOSA signing certificates (registry-sp-cert,
discovery-sp-cert, satosa-backend-cert, and satosa-frontend-cert) are long lived
and self signed.