Skip to content

Commit 442eaf1

Browse files
Merge pull request #75 from stlaz/redeploy_sscs_ptpl
Add redeploy on serving cert and operator pod template change
2 parents 78dd53b + ca7938e commit 442eaf1

File tree

4 files changed

+41
-14
lines changed

4 files changed

+41
-14
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+
secret := c.secrets.Secrets(targetName)
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 := secret.Get(servingCertName, 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/configmap.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func getMetadata(route *routev1.Route) string {
4444

4545
func getMetadataConfigMap(route *routev1.Route) *corev1.ConfigMap {
4646
meta := defaultMeta()
47-
meta.Namespace = machineConfigNamespace
47+
meta.Name = oauthMetadataName
4848
return &corev1.ConfigMap{
4949
ObjectMeta: meta,
5050
Data: map[string]string{

pkg/operator2/operator.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ const (
6767
cliConfigMount = systemConfigPathConfigMaps + "/" + cliConfigNameAndKey
6868
cliConfigPath = cliConfigMount + "/" + cliConfigNameAndKey
6969

70+
oauthMetadataName = systemConfigPrefix + "metadata"
71+
7072
userConfigPath = "/var/config/user"
7173

7274
servicePort = 443
@@ -180,12 +182,7 @@ func (c *authOperator) handleSync(operatorConfig *operatorv1.Authentication) err
180182
}
181183
resourceVersions = append(resourceVersions, route.GetResourceVersion())
182184

183-
serviceCA, err := c.handleServiceCA()
184-
if err != nil {
185-
return err
186-
}
187-
resourceVersions = append(resourceVersions, serviceCA.GetResourceVersion())
188-
185+
// make sure API server sees our metadata as soon as we've got a route with a host
189186
metadata, _, err := resourceapply.ApplyConfigMap(c.configMaps, c.recorder, getMetadataConfigMap(route))
190187
if err != nil {
191188
return err
@@ -198,6 +195,12 @@ func (c *authOperator) handleSync(operatorConfig *operatorv1.Authentication) err
198195
}
199196
resourceVersions = append(resourceVersions, authConfig.GetResourceVersion())
200197

198+
serviceCA, servingCert, err := c.handleServiceCA()
199+
if err != nil {
200+
return err
201+
}
202+
resourceVersions = append(resourceVersions, serviceCA.GetResourceVersion(), servingCert.GetResourceVersion())
203+
201204
service, _, err := resourceapply.ApplyService(c.services, c.recorder, defaultService())
202205
if err != nil {
203206
return err
@@ -235,9 +238,14 @@ func (c *authOperator) handleSync(operatorConfig *operatorv1.Authentication) err
235238
}
236239
resourceVersions = append(resourceVersions, cliConfig.GetResourceVersion())
237240

241+
operatorDeployment, err := c.deployments.Deployments(targetNameOperator).Get(targetNameOperator, metav1.GetOptions{})
242+
if err != nil {
243+
return err
244+
}
245+
resourceVersions = append(resourceVersions, operatorDeployment.GetResourceVersion())
246+
238247
// deployment, have RV of all resources
239248
// TODO use ExpectedDeploymentGeneration func
240-
// TODO we also need the RV for the serving-cert secret (servingCertName)
241249
expectedDeployment := defaultDeployment(
242250
operatorConfig,
243251
syncData,

pkg/operator2/starter.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,12 @@ func RunOperator(ctx *controllercmd.ControllerContext) error {
112112
v1helpers.EnsureOperatorConfigExists(dynamicClient, []byte(resource), gvr)
113113
}
114114

115-
resourceSyncerInformers := v1helpers.NewKubeInformersForNamespaces(kubeClient, targetName, userConfigNamespace)
115+
resourceSyncerInformers := v1helpers.NewKubeInformersForNamespaces(
116+
kubeClient,
117+
targetName,
118+
userConfigNamespace,
119+
machineConfigNamespace,
120+
)
116121

117122
operatorClient := &OperatorClient{
118123
authOperatorConfigInformers,
@@ -127,6 +132,14 @@ func RunOperator(ctx *controllercmd.ControllerContext) error {
127132
ctx.EventRecorder,
128133
)
129134

135+
// add syncing for the OAuth metadata ConfigMap
136+
if err := resourceSyncer.SyncConfigMap(
137+
resourcesynccontroller.ResourceLocation{Namespace: machineConfigNamespace, Name: targetName},
138+
resourcesynccontroller.ResourceLocation{Namespace: targetName, Name: oauthMetadataName},
139+
); err != nil {
140+
return err
141+
}
142+
130143
operator := NewAuthenticationOperator(
131144
*operatorClient,
132145
kubeInformersNamespaced,

0 commit comments

Comments
 (0)