|
5 | 5 | "context"
|
6 | 6 | "encoding/json"
|
7 | 7 | "fmt"
|
| 8 | + "reflect" |
8 | 9 | "sort"
|
9 | 10 | "strconv"
|
10 | 11 | "strings"
|
@@ -237,6 +238,11 @@ func createTargetConfig(ctx context.Context, c TargetConfigController, recorder
|
237 | 238 | errors = append(errors, fmt.Errorf("%q: %v", "configmap/trusted-ca-bundle", err))
|
238 | 239 | }
|
239 | 240 |
|
| 241 | + err = ensureKubeAPIServerExtensionAuthenticationCA(ctx, c.kubeClient.CoreV1(), recorder) |
| 242 | + if err != nil { |
| 243 | + errors = append(errors, fmt.Errorf("%q: %v", "configmap/extension-apiserver-authentication", err)) |
| 244 | + } |
| 245 | + |
240 | 246 | err = ensureLocalhostRecoverySAToken(ctx, c.kubeClient.CoreV1(), recorder)
|
241 | 247 | if err != nil {
|
242 | 248 | errors = append(errors, fmt.Errorf("%q: %v", "serviceaccount/localhost-recovery-client", err))
|
@@ -507,6 +513,30 @@ func ensureKubeAPIServerTrustedCA(ctx context.Context, client coreclientv1.CoreV
|
507 | 513 | return err
|
508 | 514 | }
|
509 | 515 |
|
| 516 | +func ensureKubeAPIServerExtensionAuthenticationCA(ctx context.Context, client coreclientv1.CoreV1Interface, recorder events.Recorder) error { |
| 517 | + required := resourceread.ReadConfigMapV1OrDie(bindata.MustAsset("assets/kube-apiserver/extension-apiserver-authentication-cm.yaml")) |
| 518 | + cmCLient := client.ConfigMaps("kube-system") |
| 519 | + |
| 520 | + cm, err := cmCLient.Get(ctx, "extension-apiserver-authentication", metav1.GetOptions{}) |
| 521 | + if err != nil { |
| 522 | + // kube-apiserver creates this CM; don't degrade while waiting. |
| 523 | + if apierrors.IsNotFound(err) { |
| 524 | + return nil |
| 525 | + } |
| 526 | + return err |
| 527 | + } |
| 528 | + |
| 529 | + // update if annotations modified by the user |
| 530 | + if !reflect.DeepEqual(cm.Annotations, required.Annotations) { |
| 531 | + cm.Annotations = required.Annotations |
| 532 | + updatedCM, err := cmCLient.Update(ctx, cm, metav1.UpdateOptions{}) |
| 533 | + resourcehelper.ReportUpdateEvent(recorder, updatedCM, err) |
| 534 | + return err |
| 535 | + } |
| 536 | + |
| 537 | + return err |
| 538 | +} |
| 539 | + |
510 | 540 | func ensureLocalhostRecoverySAToken(ctx context.Context, client coreclientv1.CoreV1Interface, recorder events.Recorder) error {
|
511 | 541 | requiredSA := resourceread.ReadServiceAccountV1OrDie(bindata.MustAsset("assets/kube-apiserver/localhost-recovery-sa.yaml"))
|
512 | 542 | requiredToken := resourceread.ReadSecretV1OrDie(bindata.MustAsset("assets/kube-apiserver/localhost-recovery-token.yaml"))
|
|
0 commit comments