Skip to content

Commit f9d38b3

Browse files
committed
Add storage CA bundle to registry certs
1 parent 683c279 commit f9d38b3

File tree

1 file changed

+21
-9
lines changed

1 file changed

+21
-9
lines changed

pkg/resource/caconfig.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,28 +70,30 @@ func (gcac *generatorCAConfig) GetName() string {
7070
return defaults.ImageRegistryCertificatesName
7171
}
7272

73-
func (gcac *generatorCAConfig) storageDriver() (storage.Driver, error) {
73+
func (gcac *generatorCAConfig) storageDriver() (storage.Driver, bool, error) {
7474
imageRegistryConfig, err := gcac.imageRegistryConfigLister.Get("cluster")
7575
if errors.IsNotFound(err) {
76-
return nil, nil
76+
return nil, false, nil
7777
} else if err != nil {
78-
return nil, err
78+
return nil, false, err
7979
}
8080

8181
if imageRegistryConfig.Spec.ManagementState == operatorv1.Removed {
8282
// The certificates controller does not need to know about
8383
// storage when the management state is Removed.
84-
return nil, nil
84+
return nil, false, nil
8585
}
8686

8787
driver, err := storage.NewDriver(&imageRegistryConfig.Spec.Storage, gcac.kubeconfig, gcac.storageListers)
8888
if err == storage.ErrStorageNotConfigured || storage.IsMultiStoragesError(err) {
89-
return nil, nil
89+
return nil, false, nil
9090
} else if err != nil {
91-
return nil, err
91+
return nil, false, err
9292
}
9393

94-
return driver, nil
94+
canRedirect := !imageRegistryConfig.Spec.DisableRedirect
95+
96+
return driver, canRedirect, nil
9597
}
9698

9799
func (gcac *generatorCAConfig) expected() (runtime.Object, error) {
@@ -104,6 +106,8 @@ func (gcac *generatorCAConfig) expected() (runtime.Object, error) {
104106
BinaryData: map[string][]byte{},
105107
}
106108

109+
var ownHostnameKeys []string
110+
107111
serviceCA, err := gcac.lister.Get(defaults.ServiceCAName)
108112
if errors.IsNotFound(err) {
109113
klog.V(4).Infof("missing the service CA configmap: %s", err)
@@ -119,7 +123,9 @@ func (gcac *generatorCAConfig) expected() (runtime.Object, error) {
119123
klog.Infof("unable to get the service name to add service-ca.crt")
120124
} else {
121125
for _, internalHostname := range internalHostnames {
122-
cm.Data[strings.Replace(internalHostname, ":", "..", -1)] = cert
126+
key := strings.Replace(internalHostname, ":", "..", -1)
127+
ownHostnameKeys = append(ownHostnameKeys, key)
128+
cm.Data[key] = cert
123129
}
124130
}
125131
} else {
@@ -146,7 +152,7 @@ func (gcac *generatorCAConfig) expected() (runtime.Object, error) {
146152
}
147153
}
148154

149-
driver, err := gcac.storageDriver()
155+
driver, canRedirect, err := gcac.storageDriver()
150156
if err != nil {
151157
return cm, err
152158
}
@@ -158,6 +164,12 @@ func (gcac *generatorCAConfig) expected() (runtime.Object, error) {
158164
if storageCABundle != "" {
159165
klog.V(4).Infof("using storage ca bundle (%d bytes)", len(storageCABundle))
160166
cm.Data["storage-ca-bundle.pem"] = storageCABundle
167+
if canRedirect {
168+
klog.V(4).Infof("injecting storage ca bundle into registry certificates...")
169+
for _, key := range ownHostnameKeys {
170+
cm.Data[key] += "\n" + storageCABundle
171+
}
172+
}
161173
}
162174
}
163175

0 commit comments

Comments
 (0)