Skip to content

Commit 51fc4fc

Browse files
1gtmtamalsaha
andauthored
[cherry-pick] Switch to tls secret from pem in AppBinding (#255) (#297)
/cherry-pick Signed-off-by: Tamal Saha <tamal@appscode.com> Co-authored-by: Tamal Saha <tamal@appscode.com>
1 parent 5a25af3 commit 51fc4fc

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ require (
1212
github.com/pkg/errors v0.9.1
1313
github.com/spf13/cobra v1.0.0
1414
github.com/yudai/gojsondiff v1.0.0
15+
k8s.io/api v0.18.5
1516
k8s.io/apiextensions-apiserver v0.18.5
1617
k8s.io/apimachinery v0.18.5
1718
k8s.io/client-go v12.0.0+incompatible

pkg/backup.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import (
4242
"github.com/codeskyblue/go-sh"
4343
"github.com/pkg/errors"
4444
"github.com/spf13/cobra"
45+
core "k8s.io/api/core/v1"
4546
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
4647
"k8s.io/apimachinery/pkg/util/sets"
4748
"k8s.io/client-go/kubernetes"
@@ -296,11 +297,22 @@ func (opt *mongoOptions) backupMongoDB(targetRef api_v1beta1.TargetRef) (*restic
296297
}
297298

298299
// get certificate secret to get client certificate
299-
data, ok := appBindingSecret.Data[MongoClientPemFileName]
300+
var pemBytes []byte
301+
var ok bool
302+
pemBytes, ok = appBindingSecret.Data[MongoClientPemFileName]
300303
if !ok {
301-
return nil, errors.Wrap(err, "unable to get client certificate from secret.")
304+
crt, ok := appBindingSecret.Data[core.TLSCertKey]
305+
if !ok {
306+
return nil, errors.Wrap(err, "unable to retrieve tls.crt from secret.")
307+
}
308+
key, ok := appBindingSecret.Data[core.TLSPrivateKeyKey]
309+
if !ok {
310+
return nil, errors.Wrap(err, "unable to retrieve tls.key from secret.")
311+
}
312+
pemBytes = append(crt[:], []byte("\n")...)
313+
pemBytes = append(pemBytes, key...)
302314
}
303-
if err := ioutil.WriteFile(filepath.Join(opt.setupOptions.ScratchDir, MongoClientPemFileName), data, os.ModePerm); err != nil {
315+
if err := ioutil.WriteFile(filepath.Join(opt.setupOptions.ScratchDir, MongoClientPemFileName), pemBytes, os.ModePerm); err != nil {
304316
return nil, errors.Wrap(err, "failed to write client certificate")
305317
}
306318
user, err := getSSLUser(filepath.Join(opt.setupOptions.ScratchDir, MongoClientPemFileName))
@@ -313,7 +325,6 @@ func (opt *mongoOptions) backupMongoDB(targetRef api_v1beta1.TargetRef) (*restic
313325
"--authenticationMechanism", "MONGODB-X509",
314326
"--authenticationDatabase", "$external",
315327
}...)
316-
317328
} else {
318329
adminCreds = []interface{}{
319330
"--username", string(appBindingSecret.Data[MongoUserKey]),

pkg/restore.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"github.com/appscode/go/types"
3636
"github.com/pkg/errors"
3737
"github.com/spf13/cobra"
38+
core "k8s.io/api/core/v1"
3839
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3940
"k8s.io/apimachinery/pkg/util/sets"
4041
"k8s.io/client-go/kubernetes"
@@ -227,11 +228,22 @@ func (opt *mongoOptions) restoreMongoDB(targetRef api_v1beta1.TargetRef) (*resti
227228
}
228229

229230
// get certificate secret to get client certificate
230-
data, ok := appBindingSecret.Data[MongoClientPemFileName]
231+
var pemBytes []byte
232+
var ok bool
233+
pemBytes, ok = appBindingSecret.Data[MongoClientPemFileName]
231234
if !ok {
232-
return nil, errors.Wrap(err, "unable to get client certificate from secret.")
235+
crt, ok := appBindingSecret.Data[core.TLSCertKey]
236+
if !ok {
237+
return nil, errors.Wrap(err, "unable to retrieve tls.crt from secret.")
238+
}
239+
key, ok := appBindingSecret.Data[core.TLSPrivateKeyKey]
240+
if !ok {
241+
return nil, errors.Wrap(err, "unable to retrieve tls.key from secret.")
242+
}
243+
pemBytes = append(crt[:], []byte("\n")...)
244+
pemBytes = append(pemBytes, key...)
233245
}
234-
if err := ioutil.WriteFile(filepath.Join(opt.setupOptions.ScratchDir, MongoClientPemFileName), data, os.ModePerm); err != nil {
246+
if err := ioutil.WriteFile(filepath.Join(opt.setupOptions.ScratchDir, MongoClientPemFileName), pemBytes, os.ModePerm); err != nil {
235247
return nil, errors.Wrap(err, "failed to write client certificate")
236248
}
237249
user, err := getSSLUser(filepath.Join(opt.setupOptions.ScratchDir, MongoClientPemFileName))

0 commit comments

Comments
 (0)