mirror of
https://github.com/vmware-tanzu/pinniped.git
synced 2026-09-05 15:47:02 +00:00
Configure name of the supervisor default TLS cert secret via ConfigMap
Signed-off-by: Andrew Keesler <akeesler@vmware.com>
This commit is contained in:
committed by
Andrew Keesler
parent
978ecda758
commit
29e0ce5662
@@ -18,12 +18,11 @@ import (
|
||||
"go.pinniped.dev/internal/controllerlib"
|
||||
)
|
||||
|
||||
const SecretNameForDefaultTLSCertificate = "default-tls-certificate" //nolint:gosec // this is not a hardcoded credential
|
||||
|
||||
type tlsCertObserverController struct {
|
||||
issuerTLSCertSetter IssuerTLSCertSetter
|
||||
oidcProviderConfigInformer v1alpha1.OIDCProviderConfigInformer
|
||||
secretInformer corev1informers.SecretInformer
|
||||
issuerTLSCertSetter IssuerTLSCertSetter
|
||||
defaultTLSCertificateSecretName string
|
||||
oidcProviderConfigInformer v1alpha1.OIDCProviderConfigInformer
|
||||
secretInformer corev1informers.SecretInformer
|
||||
}
|
||||
|
||||
type IssuerTLSCertSetter interface {
|
||||
@@ -33,6 +32,7 @@ type IssuerTLSCertSetter interface {
|
||||
|
||||
func NewTLSCertObserverController(
|
||||
issuerTLSCertSetter IssuerTLSCertSetter,
|
||||
defaultTLSCertificateSecretName string,
|
||||
secretInformer corev1informers.SecretInformer,
|
||||
oidcProviderConfigInformer v1alpha1.OIDCProviderConfigInformer,
|
||||
withInformer pinnipedcontroller.WithInformerOptionFunc,
|
||||
@@ -41,9 +41,10 @@ func NewTLSCertObserverController(
|
||||
controllerlib.Config{
|
||||
Name: "tls-certs-observer-controller",
|
||||
Syncer: &tlsCertObserverController{
|
||||
issuerTLSCertSetter: issuerTLSCertSetter,
|
||||
oidcProviderConfigInformer: oidcProviderConfigInformer,
|
||||
secretInformer: secretInformer,
|
||||
issuerTLSCertSetter: issuerTLSCertSetter,
|
||||
defaultTLSCertificateSecretName: defaultTLSCertificateSecretName,
|
||||
oidcProviderConfigInformer: oidcProviderConfigInformer,
|
||||
secretInformer: secretInformer,
|
||||
},
|
||||
},
|
||||
withInformer(
|
||||
@@ -88,7 +89,7 @@ func (c *tlsCertObserverController) Sync(ctx controllerlib.Context) error {
|
||||
klog.InfoS("tlsCertObserverController Sync updated the TLS cert cache", "issuerHostCount", len(issuerHostToTLSCertMap))
|
||||
c.issuerTLSCertSetter.SetIssuerHostToTLSCertMap(issuerHostToTLSCertMap)
|
||||
|
||||
defaultCert, err := c.certFromSecret(ns, SecretNameForDefaultTLSCertificate)
|
||||
defaultCert, err := c.certFromSecret(ns, c.defaultTLSCertificateSecretName)
|
||||
if err != nil {
|
||||
c.issuerTLSCertSetter.SetDefaultTLSCert(nil)
|
||||
} else {
|
||||
|
||||
@@ -42,6 +42,7 @@ func TestTLSCertObserverControllerInformerFilters(t *testing.T) {
|
||||
oidcProviderConfigInformer := pinnipedinformers.NewSharedInformerFactory(nil, 0).Config().V1alpha1().OIDCProviderConfigs()
|
||||
_ = NewTLSCertObserverController(
|
||||
nil,
|
||||
"", // don't care about the secret name for this test
|
||||
secretsInformer,
|
||||
oidcProviderConfigInformer,
|
||||
observableWithInformerOption.WithInformer, // make it possible to observe the behavior of the Filters
|
||||
@@ -115,7 +116,10 @@ func (f *fakeIssuerTLSCertSetter) SetDefaultTLSCert(certificate *tls.Certificate
|
||||
|
||||
func TestTLSCertObserverControllerSync(t *testing.T) {
|
||||
spec.Run(t, "Sync", func(t *testing.T, when spec.G, it spec.S) {
|
||||
const installedInNamespace = "some-namespace"
|
||||
const (
|
||||
installedInNamespace = "some-namespace"
|
||||
defaultTLSSecretName = "some-default-secret-name"
|
||||
)
|
||||
|
||||
var (
|
||||
r *require.Assertions
|
||||
@@ -136,6 +140,7 @@ func TestTLSCertObserverControllerSync(t *testing.T) {
|
||||
// Set this at the last second to allow for injection of server override.
|
||||
subject = NewTLSCertObserverController(
|
||||
issuerTLSCertSetter,
|
||||
defaultTLSSecretName,
|
||||
kubeInformers.Core().V1().Secrets(),
|
||||
pinnipedInformers.Config().V1alpha1().OIDCProviderConfigs(),
|
||||
controllerlib.WithInformer,
|
||||
@@ -324,7 +329,7 @@ func TestTLSCertObserverControllerSync(t *testing.T) {
|
||||
r.Equal(expectedCertificate2, *actualCertificate2)
|
||||
})
|
||||
|
||||
when("there is also a default TLS cert secret called default-tls-certificate", func() {
|
||||
when("there is also a default TLS cert secret with the configured default TLS cert secret name", func() {
|
||||
var (
|
||||
expectedDefaultCertificate tls.Certificate
|
||||
)
|
||||
@@ -338,7 +343,7 @@ func TestTLSCertObserverControllerSync(t *testing.T) {
|
||||
expectedDefaultCertificate, err = tls.X509KeyPair(testCrt, testKey)
|
||||
r.NoError(err)
|
||||
defaultTLSCertSecret := &corev1.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{Name: "default-tls-certificate", Namespace: installedInNamespace},
|
||||
ObjectMeta: metav1.ObjectMeta{Name: defaultTLSSecretName, Namespace: installedInNamespace},
|
||||
Data: map[string][]byte{"tls.crt": testCrt, "tls.key": testKey},
|
||||
}
|
||||
r.NoError(kubeInformerClient.Tracker().Add(defaultTLSCertSecret))
|
||||
|
||||
Reference in New Issue
Block a user