Skip to content

Commit 17d9b86

Browse files
author
mikatong
committed
support pod oidc
1 parent 5e701aa commit 17d9b86

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

tencentcloud/provider.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@ const (
133133
PROVIDER_SHARED_CREDENTIALS_DIR = "TENCENTCLOUD_SHARED_CREDENTIALS_DIR"
134134
PROVIDER_PROFILE = "TENCENTCLOUD_PROFILE"
135135
PROVIDER_CAM_ROLE_NAME = "TENCENTCLOUD_CAM_ROLE_NAME"
136+
POD_OIDC_TKE_REGION = "TKE_REGION"
137+
POD_OIDC_TKE_WEB_IDENTITY_TOKEN_FILE = "TKE_WEB_IDENTITY_TOKEN_FILE"
138+
POD_OIDC_TKE_PROVIDER_ID = "TKE_PROVIDER_ID"
139+
POD_OIDC_TKE_ROLE_ARN = "TKE_ROLE_ARN"
136140
)
137141

138142
const (
@@ -285,6 +289,11 @@ func Provider() *schema.Provider {
285289
},
286290
},
287291
},
292+
"enable_pod_oidc": {
293+
Type: schema.TypeBool,
294+
Optional: true,
295+
Description: "Enable pod oidc.",
296+
},
288297
"assume_role_with_web_identity": {
289298
Type: schema.TypeList,
290299
Optional: true,
@@ -2296,6 +2305,15 @@ func providerConfigure(d *schema.ResourceData) (interface{}, error) {
22962305
}
22972306
}
22982307

2308+
if v, ok := d.GetOkExists("enable_pod_oidc"); ok && v.(bool) {
2309+
if os.Getenv(POD_OIDC_TKE_REGION) != "" && os.Getenv(POD_OIDC_TKE_WEB_IDENTITY_TOKEN_FILE) != "" && os.Getenv(POD_OIDC_TKE_PROVIDER_ID) != "" && os.Getenv(POD_OIDC_TKE_ROLE_ARN) != "" {
2310+
_ = genClientWithPodOidc(&tcClient)
2311+
needSecret = false
2312+
} else {
2313+
return nil, fmt.Errorf("Can not get `TKE_REGION`, `TKE_WEB_IDENTITY_TOKEN_FILE`, `TKE_PROVIDER_ID`, `TKE_ROLE_ARN`. Must config serviceAccountName for pod.\n")
2314+
}
2315+
}
2316+
22992317
if needSecret && (secretId == "" || secretKey == "") {
23002318
return nil, fmt.Errorf("Please set your `secret_id` and `secret_key`.\n")
23012319
}
@@ -2486,3 +2504,21 @@ func getConfigFromProfile(d *schema.ResourceData, ProfileKey string) (interface{
24862504

24872505
return providerConfig[ProfileKey], nil
24882506
}
2507+
2508+
func genClientWithPodOidc(tcClient *TencentCloudClient) error {
2509+
provider, err := sdkcommon.DefaultTkeOIDCRoleArnProvider()
2510+
if err != nil {
2511+
return err
2512+
}
2513+
assumeResp, err := provider.GetCredential()
2514+
if err != nil {
2515+
return err
2516+
}
2517+
tcClient.apiV3Conn.Credential = sdkcommon.NewTokenCredential(
2518+
assumeResp.GetSecretId(),
2519+
assumeResp.GetSecretKey(),
2520+
assumeResp.GetToken(),
2521+
)
2522+
2523+
return nil
2524+
}

0 commit comments

Comments
 (0)