Skip to content

Commit 1333086

Browse files
committed
Add redeploy on serving cert and operator pod template change
1 parent f62d700 commit 1333086

File tree

2 files changed

+35
-7
lines changed

2 files changed

+35
-7
lines changed

pkg/operator2/ca.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,19 @@ const (
1515
injectCABundleAnnotationValue = "true"
1616
)
1717

18-
func (c *authOperator) handleServiceCA() (*corev1.ConfigMap, error) {
18+
func (c *authOperator) handleServiceCA() (*corev1.ConfigMap, *corev1.Secret, error) {
1919
cm := c.configMaps.ConfigMaps(targetName)
20+
sscsSecrets := c.secrets.Secrets("openshift-service-cert-signer")
2021
serviceCA, err := cm.Get(serviceCAName, metav1.GetOptions{})
2122
if errors.IsNotFound(err) {
2223
serviceCA, err = cm.Create(defaultServiceCA())
2324
}
2425
if err != nil {
25-
return nil, err
26+
return nil, nil, err
2627
}
2728

2829
if len(serviceCA.Data[serviceCAKey]) == 0 {
29-
return nil, fmt.Errorf("config map has no service ca data: %#v", serviceCA)
30+
return nil, nil, fmt.Errorf("config map has no service ca data: %#v", serviceCA)
3031
}
3132

3233
if err := isValidServiceCA(serviceCA); err != nil {
@@ -36,10 +37,15 @@ func (c *authOperator) handleServiceCA() (*corev1.ConfigMap, error) {
3637
if err := cm.Delete(serviceCA.Name, opts); err != nil && !errors.IsNotFound(err) {
3738
glog.Infof("failed to delete invalid service CA config map: %v", err)
3839
}
39-
return nil, err
40+
return nil, nil, err
4041
}
4142

42-
return serviceCA, nil
43+
servingCert, err := sscsSecrets.Get("service-serving-cert-signer-serving-cert", metav1.GetOptions{})
44+
if err != nil {
45+
return nil, nil, err
46+
}
47+
48+
return serviceCA, servingCert, nil
4349
}
4450

4551
func isValidServiceCA(ca *corev1.ConfigMap) error {

pkg/operator2/operator.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package operator2
22

33
import (
4+
"crypto/sha512"
5+
"encoding/base64"
46
"strings"
57

68
"github.com/golang/glog"
@@ -31,6 +33,9 @@ const (
3133
targetName = "openshift-authentication"
3234
globalConfigName = "cluster"
3335

36+
operatorNamespace = "openshift-authentication-operator"
37+
operatorDeploymentName = "openshift-authentication-operator"
38+
3439
machineConfigNamespace = "openshift-config-managed"
3540
userConfigNamespace = "openshift-config"
3641

@@ -176,11 +181,12 @@ func (c *authOperator) handleSync(operatorConfig *operatorv1.Authentication) err
176181
}
177182
resourceVersions = append(resourceVersions, route.GetResourceVersion())
178183

179-
serviceCA, err := c.handleServiceCA()
184+
serviceCA, servingCert, err := c.handleServiceCA()
180185
if err != nil {
181186
return err
182187
}
183188
resourceVersions = append(resourceVersions, serviceCA.GetResourceVersion())
189+
resourceVersions = append(resourceVersions, servingCert.GetResourceVersion())
184190

185191
metadata, _, err := resourceapply.ApplyConfigMap(c.configMaps, c.recorder, getMetadataConfigMap(route))
186192
if err != nil {
@@ -231,9 +237,14 @@ func (c *authOperator) handleSync(operatorConfig *operatorv1.Authentication) err
231237
}
232238
resourceVersions = append(resourceVersions, cliConfig.GetResourceVersion())
233239

240+
operatorPodTemplateHash, err := c.getOperatorDeploymentPodTemplateHash()
241+
if err != nil {
242+
return err
243+
}
244+
resourceVersions = append(resourceVersions, operatorPodTemplateHash)
245+
234246
// deployment, have RV of all resources
235247
// TODO use ExpectedDeploymentGeneration func
236-
// TODO we also need the RV for the serving-cert secret (servingCertName)
237248
expectedDeployment := defaultDeployment(
238249
operatorConfig,
239250
syncData,
@@ -280,3 +291,14 @@ func getPrefixFilter() controller.Filter {
280291
DeleteFunc: prefix,
281292
}
282293
}
294+
295+
func (c *authOperator) getOperatorDeploymentPodTemplateHash() (string, error) {
296+
deployments := c.deployments.Deployments(operatorNamespace)
297+
operator, err := deployments.Get(operatorDeploymentName, metav1.GetOptions{})
298+
if err != nil {
299+
return "", err
300+
}
301+
302+
templateHash := sha512.Sum512([]byte(operator.Spec.Template.String()))
303+
return base64.RawURLEncoding.EncodeToString(templateHash[:]), nil
304+
}

0 commit comments

Comments
 (0)