Skip to content

Commit 7b96917

Browse files
committed
Update cluster user passwords via systemd
this copies the generated kubeadmin and developer user passwords to `/opt/crc/` which is then used by a systemd service and modifies the needed ocp resources
1 parent 607c11f commit 7b96917

File tree

2 files changed

+5
-30
lines changed

2 files changed

+5
-30
lines changed

pkg/crc/cluster/kubeadmin_password.go

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
"github.com/crc-org/crc/v2/pkg/crc/constants"
1515
"github.com/crc-org/crc/v2/pkg/crc/logging"
16-
"github.com/crc-org/crc/v2/pkg/crc/oc"
16+
"github.com/crc-org/crc/v2/pkg/crc/ssh"
1717
"golang.org/x/crypto/bcrypt"
1818
)
1919

@@ -29,7 +29,7 @@ func GenerateKubeAdminUserPassword() error {
2929
}
3030

3131
// UpdateKubeAdminUserPassword updates the htpasswd secret
32-
func UpdateKubeAdminUserPassword(ctx context.Context, ocConfig oc.Config, newPassword string) error {
32+
func UpdateKubeAdminUserPassword(ctx context.Context, sshRunner *ssh.Runner, newPassword string) error {
3333
if newPassword != "" {
3434
logging.Infof("Overriding password for kubeadmin user")
3535
if err := os.WriteFile(constants.GetKubeAdminPasswordPath(), []byte(strings.TrimSpace(newPassword)), 0600); err != nil {
@@ -41,39 +41,14 @@ func UpdateKubeAdminUserPassword(ctx context.Context, ocConfig oc.Config, newPas
4141
if err != nil {
4242
return fmt.Errorf("Cannot read the kubeadmin user password from file: %w", err)
4343
}
44-
credentials := map[string]string{
45-
"developer": "developer",
46-
"kubeadmin": kubeAdminPassword,
47-
}
4844

49-
if err := WaitForOpenshiftResource(ctx, ocConfig, "secret"); err != nil {
45+
if err := sshRunner.CopyDataPrivileged([]byte(kubeAdminPassword), "/opt/crc/pass_kubeadmin", 0600); err != nil {
5046
return err
5147
}
5248

53-
given, stderr, err := ocConfig.RunOcCommandPrivate("get", "secret", "htpass-secret", "-n", "openshift-config", "-o", `jsonpath="{.data.htpasswd}"`)
54-
if err != nil {
55-
return fmt.Errorf("%s:%v", stderr, err)
56-
}
57-
ok, externals, err := compareHtpasswd(given, credentials)
58-
if err != nil {
49+
if err := sshRunner.CopyDataPrivileged([]byte("developer"), "/opt/crc/pass_developer", 0600); err != nil {
5950
return err
6051
}
61-
if ok {
62-
return nil
63-
}
64-
65-
logging.Infof("Changing the password for the kubeadmin user")
66-
expected, err := getHtpasswd(credentials, externals)
67-
if err != nil {
68-
return err
69-
}
70-
cmdArgs := []string{"patch", "secret", "htpass-secret", "-p",
71-
fmt.Sprintf(`'{"data":{"htpasswd":"%s"}}'`, expected),
72-
"-n", "openshift-config", "--type", "merge"}
73-
_, stderr, err = ocConfig.RunOcCommandPrivate(cmdArgs...)
74-
if err != nil {
75-
return fmt.Errorf("Failed to update kubeadmin password %v: %s", err, stderr)
76-
}
7752
return nil
7853
}
7954

pkg/crc/machine/start.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,7 +563,7 @@ func (client *client) Start(ctx context.Context, startConfig types.StartConfig)
563563
return nil, errors.Wrap(err, "Failed to update pull secret on the disk")
564564
}
565565

566-
if err := cluster.UpdateKubeAdminUserPassword(ctx, ocConfig, startConfig.KubeAdminPassword); err != nil {
566+
if err := cluster.UpdateKubeAdminUserPassword(ctx, sshRunner, startConfig.KubeAdminPassword); err != nil {
567567
return nil, errors.Wrap(err, "Failed to update kubeadmin user password")
568568
}
569569

0 commit comments

Comments
 (0)