Skip to content

Commit a8f0acb

Browse files
committed
Add CLI flag and config file for s3 bucket lookup type
Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
1 parent 921e502 commit a8f0acb

File tree

10 files changed

+39
-11
lines changed

10 files changed

+39
-11
lines changed

go.mod

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,12 @@ require (
108108
github.com/ipfs/go-log/v2 v2.5.1
109109
github.com/joho/godotenv v1.5.1
110110
github.com/json-iterator/go v1.1.12
111-
github.com/k3s-io/api v0.1.0
111+
github.com/k3s-io/api v0.1.1
112112
github.com/k3s-io/helm-controller v0.16.10
113113
github.com/k3s-io/kine v0.13.14
114114
github.com/klauspost/compress v1.18.0
115115
github.com/libp2p/go-libp2p v0.41.1
116-
github.com/minio/minio-go/v7 v7.0.83
116+
github.com/minio/minio-go/v7 v7.0.91
117117
github.com/moby/sys/userns v0.1.0
118118
github.com/mwitkow/go-http-dialer v0.0.0-20161116154839-378f744fb2b8
119119
github.com/natefinch/lumberjack v2.0.0+incompatible
@@ -268,7 +268,7 @@ require (
268268
github.com/go-openapi/jsonreference v0.21.0 // indirect
269269
github.com/go-openapi/swag v0.23.1 // indirect
270270
github.com/go-sql-driver/mysql v1.9.1 // indirect
271-
github.com/goccy/go-json v0.10.4 // indirect
271+
github.com/goccy/go-json v0.10.5 // indirect
272272
github.com/godbus/dbus/v5 v5.1.0 // indirect
273273
github.com/gofrs/flock v0.8.1 // indirect
274274
github.com/gogo/protobuf v1.3.2 // indirect
@@ -347,6 +347,7 @@ require (
347347
github.com/miekg/pkcs11 v1.1.1 // indirect
348348
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
349349
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
350+
github.com/minio/crc64nvme v1.0.1 // indirect
350351
github.com/minio/highwayhash v1.0.3 // indirect
351352
github.com/minio/md5-simd v1.1.2 // indirect
352353
github.com/minio/sha256-simd v1.0.1 // indirect

go.sum

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -528,8 +528,8 @@ github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
528528
github.com/go-test/deep v1.0.7/go.mod h1:QV8Hv/iy04NyLBxAdO9njL0iVPN1S4d/A3NVv1V36o8=
529529
github.com/go-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0=
530530
github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
531-
github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM=
532-
github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
531+
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
532+
github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
533533
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
534534
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
535535
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
@@ -772,8 +772,8 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV
772772
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
773773
github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
774774
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
775-
github.com/k3s-io/api v0.1.0 h1:YxLb/SXPqcZ/rffxrXwK3x4TfuSDxaapADZJDx3BQ50=
776-
github.com/k3s-io/api v0.1.0/go.mod h1:9aQAaTKBFWO+BpGrMFJk9uZaUhZRrL9aahobcOQQm64=
775+
github.com/k3s-io/api v0.1.1 h1:7ZJnCsRu88yF5MkA2bwJ7hWIRjrgALW8pRkxTXjb54U=
776+
github.com/k3s-io/api v0.1.1/go.mod h1:9aQAaTKBFWO+BpGrMFJk9uZaUhZRrL9aahobcOQQm64=
777777
github.com/k3s-io/cadvisor v0.52.1 h1:KeeADD5no2159ICWnTRTJfExlNbVfhqbo9ohixQ74GM=
778778
github.com/k3s-io/cadvisor v0.52.1/go.mod h1:OAhPcx1nOm5YwMh/JhpUOMKyv1YKLRtS9KgzWPndHmA=
779779
github.com/k3s-io/containerd/v2 v2.0.5-k3s1 h1:bQxBHXObL7pHJ5c2rlTYsQuR+hNhBN7vpN+bX6CwpUk=
@@ -974,13 +974,15 @@ github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4S
974974
github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY=
975975
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
976976
github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE=
977+
github.com/minio/crc64nvme v1.0.1 h1:DHQPrYPdqK7jQG/Ls5CTBZWeex/2FMS3G5XGkycuFrY=
978+
github.com/minio/crc64nvme v1.0.1/go.mod h1:eVfm2fAzLlxMdUGc0EEBGSMmPwmXD5XiNRpnu9J3bvg=
977979
github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
978980
github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q=
979981
github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ=
980982
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
981983
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
982-
github.com/minio/minio-go/v7 v7.0.83 h1:W4Kokksvlz3OKf3OqIlzDNKd4MERlC2oN8YptwJ0+GA=
983-
github.com/minio/minio-go/v7 v7.0.83/go.mod h1:57YXpvc5l3rjPdhqNrDsvVlY0qPI6UTk1bflAe+9doY=
984+
github.com/minio/minio-go/v7 v7.0.91 h1:tWLZnEfo3OZl5PoXQwcwTAPNNrjyWwOh6cbZitW5JQc=
985+
github.com/minio/minio-go/v7 v7.0.91/go.mod h1:uvMUcGrpgeSAAI6+sD3818508nUyMULw94j2Nxku/Go=
984986
github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
985987
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
986988
github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8=

pkg/cli/cmds/etcd_snapshot.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,12 @@ var EtcdSnapshotFlags = []cli.Flag{
111111
Usage: "(db) S3 bucket name",
112112
Destination: &ServerConfig.EtcdS3BucketName,
113113
},
114+
&cli.StringFlag{
115+
Name: "s3-bucket-lookup-type",
116+
Aliases: []string{"etcd-s3-bucket-lookup-type"},
117+
Usage: "(db) S3 bucket lookup type, one of 'auto', 'dns', 'path'; default is 'auto' if not set",
118+
Destination: &ServerConfig.EtcdS3BucketLookupType,
119+
},
114120
&cli.StringFlag{
115121
Name: "s3-region",
116122
Aliases: []string{"etcd-s3-region"},

pkg/cli/cmds/server.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ type Server struct {
105105
EtcdS3SecretKey string
106106
EtcdS3SessionToken string
107107
EtcdS3BucketName string
108+
EtcdS3BucketLookupType string
108109
EtcdS3Region string
109110
EtcdS3Folder string
110111
EtcdS3Proxy string
@@ -463,6 +464,11 @@ var ServerFlags = []cli.Flag{
463464
Usage: "(db) S3 bucket name",
464465
Destination: &ServerConfig.EtcdS3BucketName,
465466
},
467+
&cli.StringFlag{
468+
Name: "etcd-s3-bucket-lookup-type",
469+
Usage: "(db) S3 bucket lookup type, one of 'auto', 'dns', 'path'; default is 'auto' if not set",
470+
Destination: &ServerConfig.EtcdS3BucketLookupType,
471+
},
466472
&cli.StringFlag{
467473
Name: "etcd-s3-region",
468474
Usage: "(db) S3 region / bucket location (optional)",

pkg/cli/etcdsnapshot/etcd_snapshot.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ func commandSetup(app *cli.Context, cfg *cmds.Server) (*etcd.SnapshotRequest, *c
5555
sr.S3 = &config.EtcdS3{
5656
AccessKey: cfg.EtcdS3AccessKey,
5757
Bucket: cfg.EtcdS3BucketName,
58+
BucketLookup: cfg.EtcdS3BucketLookupType,
5859
ConfigSecret: cfg.EtcdS3ConfigSecret,
5960
Endpoint: cfg.EtcdS3Endpoint,
6061
EndpointCA: cfg.EtcdS3EndpointCA,

pkg/cli/server/server.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ func run(app *cli.Context, cfg *cmds.Server, leaderControllers server.CustomCont
200200
serverConfig.ControlConfig.EtcdS3 = &config.EtcdS3{
201201
AccessKey: cfg.EtcdS3AccessKey,
202202
Bucket: cfg.EtcdS3BucketName,
203+
BucketLookup: cfg.EtcdS3BucketLookupType,
203204
ConfigSecret: cfg.EtcdS3ConfigSecret,
204205
Endpoint: cfg.EtcdS3Endpoint,
205206
EndpointCA: cfg.EtcdS3EndpointCA,

pkg/daemons/config/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ type Node struct {
6464
type EtcdS3 struct {
6565
AccessKey string `json:"accessKey,omitempty"`
6666
Bucket string `json:"bucket,omitempty"`
67+
BucketLookup string `json:"bucketLookup,omitempty"`
6768
ConfigSecret string `json:"configSecret,omitempty"`
6869
Endpoint string `json:"endpoint,omitempty"`
6970
EndpointCA string `json:"endpointCA,omitempty"`

pkg/etcd/s3/config_secret.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ func (c *Controller) getConfigFromSecret(secretName string) (*config.EtcdS3, err
4646
etcdS3 := &config.EtcdS3{
4747
AccessKey: string(secret.Data["etcd-s3-access-key"]),
4848
Bucket: string(secret.Data["etcd-s3-bucket"]),
49+
BucketLookup: string(secret.Data["etcd-s3-bucket-lookup-type"]),
4950
Endpoint: defaultEtcdS3.Endpoint,
5051
Folder: string(secret.Data["etcd-s3-folder"]),
5152
Proxy: string(secret.Data["etcd-s3-proxy"]),

pkg/etcd/s3/s3.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ func (c *Controller) GetClient(ctx context.Context, etcdS3 *config.EtcdS3) (*Cli
228228
Secure: !etcdS3.Insecure,
229229
Region: etcdS3.Region,
230230
Transport: tr,
231-
BucketLookup: bucketLookupType(etcdS3.Endpoint),
231+
BucketLookup: bucketLookupType(etcdS3.Endpoint, etcdS3.BucketLookup),
232232
}
233233
mc, err := minio.New(etcdS3.Endpoint, &opt)
234234
if err != nil {
@@ -586,7 +586,14 @@ func loadEndpointCAs(etcdS3EndpointCA string) (*tls.Config, error) {
586586
return nil, errors.New("no certificates loaded from etcd-s3-endpoint-ca")
587587
}
588588

589-
func bucketLookupType(endpoint string) minio.BucketLookupType {
589+
func bucketLookupType(endpoint, lookupType string) minio.BucketLookupType {
590+
switch strings.ToLower(lookupType) {
591+
case "dns":
592+
return minio.BucketLookupDNS
593+
case "path":
594+
return minio.BucketLookupPath
595+
}
596+
590597
if strings.Contains(endpoint, "aliyun") { // backwards compatible with RKE1
591598
return minio.BucketLookupDNS
592599
}

pkg/etcd/snapshot/types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ func (sf *File) FromETCDSnapshotFile(esf *k3s.ETCDSnapshotFile) {
169169
EndpointCA: esf.Spec.S3.EndpointCA,
170170
SkipSSLVerify: esf.Spec.S3.SkipSSLVerify,
171171
Bucket: esf.Spec.S3.Bucket,
172+
BucketLookup: esf.Spec.S3.BucketLookup,
172173
Region: esf.Spec.S3.Region,
173174
Folder: esf.Spec.S3.Prefix,
174175
Insecure: esf.Spec.S3.Insecure,
@@ -243,6 +244,7 @@ func (sf *File) ToETCDSnapshotFile(esf *k3s.ETCDSnapshotFile) {
243244
EndpointCA: sf.S3.EndpointCA,
244245
SkipSSLVerify: sf.S3.SkipSSLVerify,
245246
Bucket: sf.S3.Bucket,
247+
BucketLookup: sf.S3.BucketLookup,
246248
Region: sf.S3.Region,
247249
Prefix: sf.S3.Folder,
248250
Insecure: sf.S3.Insecure,

0 commit comments

Comments
 (0)