mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 05:40:42 +00:00 
			
		
		
		
	GCE tokens behavior to new format
This commit is contained in:
		| @@ -540,10 +540,11 @@ grains: | |||||||
|     - kubernetes-master |     - kubernetes-master | ||||||
|   cloud: gce |   cloud: gce | ||||||
| EOF | EOF | ||||||
|   if ! [[ -z "${PROJECT_ID:-}" ]] && ! [[ -z "${TOKEN_URL:-}" ]] && ! [[ -z "${NODE_NETWORK:-}" ]] ; then |   if ! [[ -z "${PROJECT_ID:-}" ]] && ! [[ -z "${TOKEN_URL:-}" ]] && ! [[ -z "${TOKEN_BODY:-}" ]] && ! [[ -z "${NODE_NETWORK:-}" ]] ; then | ||||||
|     cat <<EOF >/etc/gce.conf |     cat <<EOF >/etc/gce.conf | ||||||
| [global] | [global] | ||||||
| token-url = ${TOKEN_URL} | token-url = ${TOKEN_URL} | ||||||
|  | token-body = ${TOKEN_BODY} | ||||||
| project-id = ${PROJECT_ID} | project-id = ${PROJECT_ID} | ||||||
| network-name = ${NODE_NETWORK} | network-name = ${NODE_NETWORK} | ||||||
| EOF | EOF | ||||||
|   | |||||||
| @@ -61,6 +61,7 @@ type GCECloud struct { | |||||||
| type Config struct { | type Config struct { | ||||||
| 	Global struct { | 	Global struct { | ||||||
| 		TokenURL    string `gcfg:"token-url"` | 		TokenURL    string `gcfg:"token-url"` | ||||||
|  | 		TokenBody   string `gcfg:"token-body"` | ||||||
| 		ProjectID   string `gcfg:"project-id"` | 		ProjectID   string `gcfg:"project-id"` | ||||||
| 		NetworkName string `gcfg:"network-name"` | 		NetworkName string `gcfg:"network-name"` | ||||||
| 	} | 	} | ||||||
| @@ -159,7 +160,7 @@ func newGCECloud(config io.Reader) (*GCECloud, error) { | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		if cfg.Global.TokenURL != "" { | 		if cfg.Global.TokenURL != "" { | ||||||
| 			tokenSource = newAltTokenSource(cfg.Global.TokenURL) | 			tokenSource = newAltTokenSource(cfg.Global.TokenURL, cfg.Global.TokenBody) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	client := oauth2.NewClient(oauth2.NoContext, tokenSource) | 	client := oauth2.NewClient(oauth2.NoContext, tokenSource) | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ package gce_cloud | |||||||
| import ( | import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"k8s.io/kubernetes/pkg/util" | 	"k8s.io/kubernetes/pkg/util" | ||||||
| @@ -59,6 +60,7 @@ func init() { | |||||||
| type altTokenSource struct { | type altTokenSource struct { | ||||||
| 	oauthClient *http.Client | 	oauthClient *http.Client | ||||||
| 	tokenURL    string | 	tokenURL    string | ||||||
|  | 	tokenBody   string | ||||||
| 	throttle    util.RateLimiter | 	throttle    util.RateLimiter | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -73,7 +75,7 @@ func (a *altTokenSource) Token() (*oauth2.Token, error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (a *altTokenSource) token() (*oauth2.Token, error) { | func (a *altTokenSource) token() (*oauth2.Token, error) { | ||||||
| 	req, err := http.NewRequest("GET", a.tokenURL, nil) | 	req, err := http.NewRequest("POST", a.tokenURL, strings.NewReader(a.tokenBody)) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| @@ -86,23 +88,24 @@ func (a *altTokenSource) token() (*oauth2.Token, error) { | |||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	var tok struct { | 	var tok struct { | ||||||
| 		AccessToken       string `json:"accessToken"` | 		AccessToken string    `json:"accessToken"` | ||||||
| 		ExpiryTimeSeconds int64  `json:"expiryTimeSeconds,string"` | 		ExpireTime  time.Time `json:"expireTime"` | ||||||
| 	} | 	} | ||||||
| 	if err := json.NewDecoder(res.Body).Decode(&tok); err != nil { | 	if err := json.NewDecoder(res.Body).Decode(&tok); err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	return &oauth2.Token{ | 	return &oauth2.Token{ | ||||||
| 		AccessToken: tok.AccessToken, | 		AccessToken: tok.AccessToken, | ||||||
| 		Expiry:      time.Unix(tok.ExpiryTimeSeconds, 0), | 		Expiry:      tok.ExpireTime, | ||||||
| 	}, nil | 	}, nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func newAltTokenSource(tokenURL string) oauth2.TokenSource { | func newAltTokenSource(tokenURL, tokenBody string) oauth2.TokenSource { | ||||||
| 	client := oauth2.NewClient(oauth2.NoContext, google.ComputeTokenSource("")) | 	client := oauth2.NewClient(oauth2.NoContext, google.ComputeTokenSource("")) | ||||||
| 	a := &altTokenSource{ | 	a := &altTokenSource{ | ||||||
| 		oauthClient: client, | 		oauthClient: client, | ||||||
| 		tokenURL:    tokenURL, | 		tokenURL:    tokenURL, | ||||||
|  | 		tokenBody:   tokenBody, | ||||||
| 		throttle:    util.NewTokenBucketRateLimiter(tokenURLQPS, tokenURLBurst), | 		throttle:    util.NewTokenBucketRateLimiter(tokenURLQPS, tokenURLBurst), | ||||||
| 	} | 	} | ||||||
| 	return oauth2.ReuseTokenSource(nil, a) | 	return oauth2.ReuseTokenSource(nil, a) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user