mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 23:37:01 +00:00
Merge pull request #13594 from ihmccreery/tokens
Second attempt at GCE tokens behavior to new format
This commit is contained in:
commit
059d762e64
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user