Skip to content

Commit dd4cb33

Browse files
committed
fix: secret data use base64 en-decode
1 parent 12d5538 commit dd4cb33

File tree

5 files changed

+51
-28
lines changed

5 files changed

+51
-28
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/go-logr/logr v1.3.0
88
github.com/onsi/ginkgo/v2 v2.13.0
99
github.com/onsi/gomega v1.29.0
10-
github.com/zncdata-labs/operator-go v0.3.0
10+
github.com/zncdata-labs/operator-go v0.3.1-0.20240207065046-99c633403e4b
1111
k8s.io/api v0.29.0
1212
k8s.io/apimachinery v0.29.0
1313
k8s.io/client-go v0.29.0

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
118118
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
119119
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
120120
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
121-
github.com/zncdata-labs/operator-go v0.3.0 h1:INrKbnRaAUh3aGPiDF40pqabNgJKRmclEwost06yw5A=
122-
github.com/zncdata-labs/operator-go v0.3.0/go.mod h1:y5EDDKn3tt5X9RiO+xsVAw26Xk65bdO1j3R0w1MA5d4=
121+
github.com/zncdata-labs/operator-go v0.3.1-0.20240207065046-99c633403e4b h1:YjnntAZRmmDDe9eCYdSOZUTqTW3jMz7jK2S5Aqn+3Zw=
122+
github.com/zncdata-labs/operator-go v0.3.1-0.20240207065046-99c633403e4b/go.mod h1:y5EDDKn3tt5X9RiO+xsVAw26Xk65bdO1j3R0w1MA5d4=
123123
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
124124
go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
125125
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=

internal/controller/database.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package controller
33
import (
44
stackv1alpha1 "github.com/zncdata-labs/hive-operator/api/v1alpha1"
55
commonsv1alph1 "github.com/zncdata-labs/operator-go/pkg/apis/commons/v1alpha1"
6+
"github.com/zncdata-labs/operator-go/pkg/util"
67
corev1 "k8s.io/api/core/v1"
78
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
89
"strconv"
@@ -91,9 +92,19 @@ func (d *DatabaseConfiguration) GetCredential(name string) (*DatabaseCredential,
9192
return nil, err
9293
}
9394

95+
username, err := util.Base64[[]byte]{Data: secret.Data[DbUsernameName]}.Decode()
96+
if err != nil {
97+
return nil, err
98+
}
99+
100+
password, err := util.Base64[[]byte]{Data: secret.Data[DbPasswordName]}.Decode()
101+
if err != nil {
102+
return nil, err
103+
}
104+
94105
return &DatabaseCredential{
95-
Username: string(secret.Data[DbUsernameName]),
96-
Password: string(secret.Data[DbPasswordName]),
106+
Username: string(username),
107+
Password: string(password),
97108
}, nil
98109
}
99110

internal/controller/s3.go

+13-6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package controller
33
import (
44
stackv1alpha1 "github.com/zncdata-labs/hive-operator/api/v1alpha1"
55
commonsv1alpha1 "github.com/zncdata-labs/operator-go/pkg/apis/commons/v1alpha1"
6+
"github.com/zncdata-labs/operator-go/pkg/util"
67
corev1 "k8s.io/api/core/v1"
78
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
89
)
@@ -81,14 +82,20 @@ func (s *S3Configuration) GetCredential(name string) (*S3Credential, error) {
8182
Name: name,
8283
},
8384
}
84-
// Get Secret from the reference
8585
if err := s.ResourceClient.Get(secret); err != nil {
8686
return nil, err
8787
}
88-
88+
ak, err := util.Base64[[]byte]{Data: secret.Data[S3AccessKeyName]}.Decode()
89+
if err != nil {
90+
return nil, err
91+
}
92+
sk, err := util.Base64[[]byte]{Data: secret.Data[S3SecretKeyName]}.Decode()
93+
if err != nil {
94+
return nil, err
95+
}
8996
return &S3Credential{
90-
AccessKey: string(secret.Data[S3AccessKeyName]),
91-
SecretKey: string(secret.Data[S3SecretKeyName]),
97+
AccessKey: string(ak),
98+
SecretKey: string(sk),
9299
}, nil
93100
}
94101

@@ -105,11 +112,11 @@ func (s *S3Configuration) GetS3ParamsFromResource() (*S3Params, error) {
105112
credential := &S3Credential{}
106113

107114
if s3BucketCR.Spec.Credential.ExistSecret != "" {
108-
exist, err := s.GetCredential(s3BucketCR.Spec.Credential.ExistSecret)
115+
existCredential, err := s.GetCredential(s3BucketCR.Spec.Credential.ExistSecret)
109116
if err != nil {
110117
return nil, err
111118
}
112-
credential = exist
119+
credential = existCredential
113120
} else {
114121
credential.AccessKey = s3BucketCR.Spec.Credential.AccessKey
115122
credential.SecretKey = s3BucketCR.Spec.Credential.SecretKey

internal/controller/secret.go

+22-17
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package controller
33
import (
44
"context"
55
stackv1alpha1 "github.com/zncdata-labs/hive-operator/api/v1alpha1"
6+
"github.com/zncdata-labs/operator-go/pkg/util"
67
corev1 "k8s.io/api/core/v1"
78
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
89
"k8s.io/apimachinery/pkg/runtime"
@@ -72,7 +73,7 @@ func (r *EnvSecret) Reconcile(ctx context.Context) (ctrl.Result, error) {
7273
}
7374

7475
func (r *EnvSecret) apply(ctx context.Context) (ctrl.Result, error) {
75-
var data = make(map[string][]byte)
76+
var data = make(map[string]string)
7677
if r.s3.Enabled() {
7778
s3Data, err := r.s3SecretData()
7879
if err != nil {
@@ -115,16 +116,16 @@ func (r *EnvSecret) apply(ctx context.Context) (ctrl.Result, error) {
115116
return ctrl.Result{Requeue: false}, nil
116117
}
117118

118-
func (r *EnvSecret) s3SecretData() (map[string][]byte, error) {
119+
func (r *EnvSecret) s3SecretData() (map[string]string, error) {
119120
if r.s3.ExistingS3Bucket() {
120121
params, err := r.s3.GetS3ParamsFromResource()
121122
if err != nil {
122123
return nil, err
123124
}
124-
return map[string][]byte{
125-
"AWS_ACCESS_KEY": []byte(params.AccessKey),
126-
"AWS_SECRET_KEY": []byte(params.SecretKey),
127-
"AWS_DEFAULT_REGION": []byte(params.Region),
125+
return map[string]string{
126+
"AWS_ACCESS_KEY": params.AccessKey,
127+
"AWS_SECRET_KEY": params.SecretKey,
128+
"AWS_DEFAULT_REGION": params.Region,
128129
}, nil
129130
}
130131

@@ -133,23 +134,23 @@ func (r *EnvSecret) s3SecretData() (map[string][]byte, error) {
133134
return nil, err
134135
}
135136

136-
return map[string][]byte{
137-
"AWS_ACCESS_KEY": []byte(params.AccessKey),
138-
"AWS_SECRET_KEY": []byte(params.SecretKey),
139-
"AWS_DEFAULT_REGION": []byte(params.Region),
137+
return map[string]string{
138+
"AWS_ACCESS_KEY": params.AccessKey,
139+
"AWS_SECRET_KEY": params.SecretKey,
140+
"AWS_DEFAULT_REGION": params.Region,
140141
}, nil
141142

142143
}
143144

144145
// databaseValuesFromCR Get database values from the CR.
145-
func (r *EnvSecret) databaseSecretData() (map[string][]byte, error) {
146+
func (r *EnvSecret) databaseSecretData() (map[string]string, error) {
146147

147-
dataBuilder := func(params *DatabaseParams) map[string][]byte {
148+
dataBuilder := func(params *DatabaseParams) map[string]string {
148149
serviceOpts := serviceOptsBuilder(params.Driver, params.Username, params.Password, params.Host, params.Port, params.DbName)
149150

150-
data := map[string][]byte{
151-
"SERVICE_OPTS": []byte(serviceOpts),
152-
"DB_DRIVER": []byte(params.Driver),
151+
data := map[string]string{
152+
"SERVICE_OPTS": serviceOpts,
153+
"DB_DRIVER": params.Driver,
153154
}
154155
if params.Driver == "derby" {
155156
log.Info("Hive metastore is using derby, no need to set database connection info.")
@@ -176,14 +177,18 @@ func (r *EnvSecret) databaseSecretData() (map[string][]byte, error) {
176177
}
177178

178179
// makeSecret Make secret object from data, and set the owner reference.
179-
func (r *EnvSecret) make(data map[string][]byte) (corev1.Secret, error) {
180+
func (r *EnvSecret) make(data map[string]string) (corev1.Secret, error) {
181+
encodedData := make(map[string][]byte)
182+
for k, v := range data {
183+
encodedData[k] = []byte(util.Base64[string]{Data: v}.Encode())
184+
}
180185
obj := corev1.Secret{
181186
ObjectMeta: metav1.ObjectMeta{
182187
Name: HiveEnvSecretName(r.cr),
183188
Namespace: r.NameSpace(),
184189
Labels: r.Labels(),
185190
},
186-
Data: data,
191+
Data: encodedData,
187192
}
188193

189194
if err := ctrl.SetControllerReference(r.cr, &obj, r.scheme); err != nil {

0 commit comments

Comments
 (0)