Skip to content

Commit 0d8af16

Browse files
authored
Merge pull request #828 from l1b0k/release-1.9
Release 1.9
2 parents 85d2aab + 8b052eb commit 0d8af16

File tree

15 files changed

+750
-400
lines changed

15 files changed

+750
-400
lines changed

cmd/terway-controlplane/terway-controlplane.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"os"
2525
"time"
2626

27+
"github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider"
2728
"github.com/samber/lo"
2829
"go.opentelemetry.io/otel"
2930
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
@@ -180,14 +181,16 @@ func main() {
180181
}
181182
}
182183

183-
var providers []credential.Interface
184-
if string(cfg.Credential.AccessKey) != "" && string(cfg.Credential.AccessSecret) != "" {
185-
providers = append(providers, credential.NewAKPairProvider(string(cfg.Credential.AccessKey), string(cfg.Credential.AccessSecret)))
186-
}
187-
providers = append(providers, credential.NewEncryptedCredentialProvider(cfg.CredentialPath, cfg.SecretNamespace, cfg.SecretName))
188-
providers = append(providers, credential.NewMetadataProvider())
184+
prov := provider.NewChainProvider(
185+
provider.NewAccessKeyProvider(string(cfg.Credential.AccessKey), string(cfg.Credential.AccessSecret)),
186+
provider.NewEncryptedFileProvider(provider.EncryptedFileProviderOptions{
187+
FilePath: cfg.CredentialPath,
188+
RefreshPeriod: 30 * time.Minute,
189+
}),
190+
provider.NewECSMetadataProvider(provider.ECSMetadataProviderOptions{}),
191+
)
189192

190-
clientSet, err := credential.NewClientMgr(cfg.RegionID, providers...)
193+
clientSet, err := credential.NewClientMgr(cfg.RegionID, prov)
191194
if err != nil {
192195
panic(err)
193196
}

daemon/builder.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"sync"
1010
"time"
1111

12+
"github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider"
1213
"github.com/samber/lo"
1314
"k8s.io/client-go/util/flowcontrol"
1415

@@ -149,14 +150,16 @@ func (b *NetworkServiceBuilder) setupAliyunClient() error {
149150
}
150151
meta := instance.GetInstanceMeta()
151152

152-
var providers []credential.Interface
153-
if string(b.config.AccessID) != "" && string(b.config.AccessSecret) != "" {
154-
providers = append(providers, credential.NewAKPairProvider(string(b.config.AccessID), string(b.config.AccessSecret)))
155-
}
156-
providers = append(providers, credential.NewEncryptedCredentialProvider(utils.NormalizePath(b.config.CredentialPath), "", ""))
157-
providers = append(providers, credential.NewMetadataProvider())
153+
prov := provider.NewChainProvider(
154+
provider.NewAccessKeyProvider(string(b.config.AccessID), string(b.config.AccessSecret)),
155+
provider.NewEncryptedFileProvider(provider.EncryptedFileProviderOptions{
156+
FilePath: b.config.CredentialPath,
157+
RefreshPeriod: 30 * time.Minute,
158+
}),
159+
provider.NewECSMetadataProvider(provider.ECSMetadataProviderOptions{}),
160+
)
158161

159-
clientSet, err := credential.NewClientMgr(meta.RegionID, providers...)
162+
clientSet, err := credential.NewClientMgr(meta.RegionID, prov)
160163
if err != nil {
161164
return err
162165
}

daemon/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"syscall"
1717
"time"
1818

19+
"github.com/AliyunContainerService/terway/pkg/aliyun/metadata"
1920
"github.com/alexflint/go-filemutex"
2021
"github.com/go-logr/logr"
2122
"k8s.io/apimachinery/pkg/util/wait"
@@ -227,7 +228,7 @@ func runDebugServer(ctx context.Context, wg *sync.WaitGroup, debugSocketListen s
227228
func registerPrometheus() {
228229
prometheus.MustRegister(metric.RPCLatency)
229230
prometheus.MustRegister(metric.OpenAPILatency)
230-
prometheus.MustRegister(metric.MetadataLatency)
231+
prometheus.MustRegister(metadata.MetadataLatency)
231232
// ResourcePool
232233
prometheus.MustRegister(metric.ResourcePoolTotal)
233234
prometheus.MustRegister(metric.ResourcePoolIdle)

examples/maxpods/maxpods.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import (
55
"fmt"
66
"io"
77
"log"
8+
"time"
89

10+
"github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider"
911
"github.com/sirupsen/logrus"
1012
"k8s.io/client-go/util/flowcontrol"
1113

@@ -36,15 +38,17 @@ func main() {
3638
flag.Parse()
3739
log.SetOutput(io.Discard)
3840
logrus.SetOutput(io.Discard)
39-
ins := instance.GetInstanceMeta()
4041

41-
providers := []credential.Interface{
42-
credential.NewAKPairProvider(accessKeyID, accessKeySecret),
43-
credential.NewEncryptedCredentialProvider(credentialPath, "", ""),
44-
credential.NewMetadataProvider(),
45-
}
42+
prov := provider.NewChainProvider(
43+
provider.NewAccessKeyProvider(string(accessKeyID), string(accessKeySecret)),
44+
provider.NewEncryptedFileProvider(provider.EncryptedFileProviderOptions{
45+
FilePath: credentialPath,
46+
RefreshPeriod: 30 * time.Minute,
47+
}),
48+
provider.NewECSMetadataProvider(provider.ECSMetadataProviderOptions{}),
49+
)
4650

47-
c, err := credential.NewClientMgr(ins.RegionID, providers...)
51+
c, err := credential.NewClientMgr(region, prov)
4852
if err != nil {
4953
panic(err)
5054
}

go.mod

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module github.com/AliyunContainerService/terway
33
go 1.21
44

55
require (
6+
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider v0.18.1
67
github.com/Jeffail/gabs/v2 v2.7.0
78
github.com/Microsoft/go-winio v0.6.0
89
github.com/Microsoft/hcsshim v0.9.9
@@ -11,7 +12,6 @@ require (
1112
github.com/boltdb/bolt v1.3.1
1213
github.com/containernetworking/cni v1.1.2
1314
github.com/containernetworking/plugins v1.3.0
14-
github.com/denverdino/aliyungo v0.0.0-20201215054313-f635de23c5e0
1515
github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7
1616
github.com/evanphx/json-patch v5.6.0+incompatible
1717
github.com/go-logr/logr v1.3.0
@@ -63,6 +63,10 @@ require (
6363
atomicgo.dev/cursor v0.1.1 // indirect
6464
atomicgo.dev/keyboard v0.2.9 // indirect
6565
atomicgo.dev/schedule v0.0.2 // indirect
66+
github.com/AliyunContainerService/ack-ram-tool/pkg/ecsmetadata v0.0.7 // indirect
67+
github.com/alibabacloud-go/debug v1.0.1 // indirect
68+
github.com/alibabacloud-go/tea v1.2.2 // indirect
69+
github.com/aliyun/credentials-go v1.4.5 // indirect
6670
github.com/beorn7/perks v1.0.1 // indirect
6771
github.com/blang/semver/v4 v4.0.0 // indirect
6872
github.com/cenkalti/backoff/v4 v4.1.3 // indirect

go.sum

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl
4040
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
4141
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
4242
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
43+
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider v0.18.1 h1:YWDC5K6uH/hUB9iBqNMzcbYw/mpySDyRiMv4auyB7xY=
44+
github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider v0.18.1/go.mod h1:eoheXiZu1MD1WqNrjd6QCzH9eNc564OBZhwmPpIHWfw=
45+
github.com/AliyunContainerService/ack-ram-tool/pkg/ecsmetadata v0.0.7 h1:cBT6x76uGPD6IyNwTQyODnjL55YN/btXLT2QTX0BlaY=
46+
github.com/AliyunContainerService/ack-ram-tool/pkg/ecsmetadata v0.0.7/go.mod h1:QM3VKYNyD5thMEWqKef+uOfpNmZG7RjG7wOsCdavj9w=
4347
github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
4448
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
4549
github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
@@ -105,8 +109,15 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF
105109
github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0=
106110
github.com/alexflint/go-filemutex v1.2.0 h1:1v0TJPDtlhgpW4nJ+GvxCLSlUDC3+gW0CQQvlmfDR/s=
107111
github.com/alexflint/go-filemutex v1.2.0/go.mod h1:mYyQSWvw9Tx2/H2n9qXPb52tTYfE0pZAWcBq5mK025c=
112+
github.com/alibabacloud-go/debug v1.0.0/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
113+
github.com/alibabacloud-go/debug v1.0.1 h1:MsW9SmUtbb1Fnt3ieC6NNZi6aEwrXfDksD4QA6GSbPg=
114+
github.com/alibabacloud-go/debug v1.0.1/go.mod h1:8gfgZCCAC3+SCzjWtY053FrOcd4/qlH6IHTI4QyICOc=
115+
github.com/alibabacloud-go/tea v1.2.2 h1:aTsR6Rl3ANWPfqeQugPglfurloyBJY85eFy7Gc1+8oU=
116+
github.com/alibabacloud-go/tea v1.2.2/go.mod h1:CF3vOzEMAG+bR4WOql8gc2G9H3EkH3ZLAQdpmpXMgwk=
108117
github.com/aliyun/alibaba-cloud-sdk-go v1.63.88 h1:87jNTxliGqU2yB3H09xCd4U3cZCmR4AkOMqWgaluo5Q=
109118
github.com/aliyun/alibaba-cloud-sdk-go v1.63.88/go.mod h1:SOSDHfe1kX91v3W5QiBsWSLqeLxImobbMX1mxrFHsVQ=
119+
github.com/aliyun/credentials-go v1.4.5 h1:O76WYKgdy1oQYYiJkERjlA2dxGuvLRrzuO2ScrtGWSk=
120+
github.com/aliyun/credentials-go v1.4.5/go.mod h1:Jm6d+xIgwJVLVWT561vy67ZRP4lPTQxMbEYRuT2Ti1U=
110121
github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
111122
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
112123
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
@@ -287,8 +298,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
287298
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
288299
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
289300
github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
290-
github.com/denverdino/aliyungo v0.0.0-20201215054313-f635de23c5e0 h1:e1w8ltprC3V935s7qcCVbBukcWixdSPONEjHYRvhX5c=
291-
github.com/denverdino/aliyungo v0.0.0-20201215054313-f635de23c5e0/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
292301
github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
293302
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
294303
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
@@ -921,6 +930,7 @@ golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPh
921930
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
922931
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
923932
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
933+
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
924934
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
925935
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
926936
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -1013,6 +1023,8 @@ golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qx
10131023
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
10141024
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
10151025
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
1026+
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
1027+
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
10161028
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
10171029
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
10181030
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -1036,6 +1048,7 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ
10361048
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
10371049
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
10381050
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
1051+
golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
10391052
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
10401053
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
10411054
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1121,13 +1134,17 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc
11211134
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11221135
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11231136
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1137+
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1138+
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
11241139
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
11251140
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
11261141
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
11271142
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
11281143
golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
11291144
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
11301145
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
1146+
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
1147+
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
11311148
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
11321149
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
11331150
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1142,6 +1159,7 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
11421159
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
11431160
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
11441161
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
1162+
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
11451163
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
11461164
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
11471165
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

pkg/aliyun/credential/ak.go

Lines changed: 0 additions & 30 deletions
This file was deleted.

pkg/aliyun/credential/aliyun_client_mgr.go

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33
package credential
44

55
import (
6-
"errors"
6+
"context"
7+
"fmt"
78
"net/http"
89
"net/url"
910
"os"
1011
"strings"
1112
"sync"
1213
"time"
1314

15+
"github.com/AliyunContainerService/ack-ram-tool/pkg/credentials/provider"
16+
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
1417
"github.com/aliyun/alibaba-cloud-sdk-go/services/eflo"
1518
ctrl "sigs.k8s.io/controller-runtime"
1619

@@ -70,7 +73,7 @@ func clientCfg() *sdk.Config {
7073
type ClientMgr struct {
7174
regionID string
7275

73-
auth Interface
76+
provider provider.CredentialsProvider
7477

7578
// protect things below
7679
sync.RWMutex
@@ -85,12 +88,17 @@ type ClientMgr struct {
8588
ecsDomainOverride string
8689
vpcDomainOverride string
8790
efloDomainOverride string
91+
92+
efloRegionOverride string
93+
94+
endpointType string
8895
}
8996

9097
// NewClientMgr return new aliyun client manager
91-
func NewClientMgr(regionID string, providers ...Interface) (*ClientMgr, error) {
98+
func NewClientMgr(regionID string, providers provider.CredentialsProvider) (*ClientMgr, error) {
9299
mgr := &ClientMgr{
93100
regionID: regionID,
101+
provider: providers,
94102
}
95103

96104
var err error
@@ -106,19 +114,20 @@ func NewClientMgr(regionID string, providers ...Interface) (*ClientMgr, error) {
106114
if err != nil {
107115
return nil, err
108116
}
109-
for _, p := range providers {
110-
c, err := p.Resolve()
111-
if err != nil {
112-
return nil, err
113-
}
114-
if c == nil {
115-
continue
116-
}
117-
mgr.auth = p
118-
break
117+
118+
mgr.efloRegionOverride = os.Getenv("EFLO_REGION_ID")
119+
if mgr.efloRegionOverride == "" {
120+
mgr.efloRegionOverride = regionID
119121
}
120-
if mgr.auth == nil {
121-
return nil, errors.New("unable to found a valid credential provider")
122+
123+
mgr.endpointType = "vpc"
124+
if os.Getenv("ALICLOUD_ENDPOINT_TYPE") != "" {
125+
mgr.endpointType = os.Getenv("ALICLOUD_ENDPOINT_TYPE")
126+
}
127+
128+
_, err = providers.Credentials(context.Background())
129+
if err != nil {
130+
return nil, fmt.Errorf("failed to get credentials: %w", err)
122131
}
123132

124133
return mgr, nil
@@ -172,41 +181,50 @@ func (c *ClientMgr) refreshToken() (bool, error) {
172181
}
173182
}()
174183

175-
cc, err := c.auth.Resolve()
184+
cc, err := c.provider.Credentials(context.Background())
176185
if err != nil {
177186
return false, err
178187
}
179188

180-
c.ecs, err = ecs.NewClientWithOptions(c.regionID, clientCfg(), cc.Credential)
189+
cre := &credentials.StsTokenCredential{
190+
AccessKeyId: cc.AccessKeyId,
191+
AccessKeySecret: cc.AccessKeySecret,
192+
AccessKeyStsToken: cc.SecurityToken,
193+
}
194+
195+
c.ecs, err = ecs.NewClientWithOptions(c.regionID, clientCfg(), cre)
181196
if err != nil {
182197
return false, err
183198
}
184-
c.ecs.SetEndpointRules(c.ecs.EndpointMap, "regional", "vpc")
199+
c.ecs.SetEndpointRules(c.ecs.EndpointMap, "regional", c.endpointType)
185200

186201
if c.ecsDomainOverride != "" {
187202
c.ecs.Domain = c.ecsDomainOverride
188203
}
189204

190-
c.vpc, err = vpc.NewClientWithOptions(c.regionID, clientCfg(), cc.Credential)
205+
c.vpc, err = vpc.NewClientWithOptions(c.regionID, clientCfg(), cre)
191206
if err != nil {
192207
return false, err
193208
}
194-
c.vpc.SetEndpointRules(c.vpc.EndpointMap, "regional", "vpc")
209+
c.vpc.SetEndpointRules(c.vpc.EndpointMap, "regional", c.endpointType)
195210

196211
if c.vpcDomainOverride != "" {
197212
c.vpc.Domain = c.vpcDomainOverride
198213
}
199214

200-
c.eflo, err = eflo.NewClientWithOptions(c.regionID, clientCfg(), cc.Credential)
215+
c.eflo, err = eflo.NewClientWithOptions(c.efloRegionOverride, clientCfg(), cre)
201216
if err != nil {
202217
return false, err
203218
}
204-
c.eflo.SetEndpointRules(c.eflo.EndpointMap, "regional", "vpc")
219+
c.eflo.SetEndpointRules(c.eflo.EndpointMap, "regional", c.endpointType)
205220

206221
if c.efloDomainOverride != "" {
207222
c.eflo.Domain = c.efloDomainOverride
208223
}
209224

225+
if cc.Expiration.IsZero() {
226+
c.expireAt = time.Now().Add(5 * time.Minute)
227+
}
210228
c.expireAt = cc.Expiration
211229
return true, nil
212230
}

0 commit comments

Comments
 (0)