Commit 9c0e46bd authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #40843 from luomiao/photon-cloud-provider-authentication-update

Automatic merge from submit-queue (batch tested with PRs 41756, 36344, 34259, 40843, 41526) Update Photon Controller cloud provider for authentication support Resolve Issue: [#40755](https://github.com/kubernetes/kubernetes/issues/40755) 1. Update the configuration file for Photon Controller cloud provider 2. Only master nodes can communicate with Photon Controller endpoint 3. Enable support for authentication-enabled Photon Controller endpoint 4. Update NodeAddresses function for query from local node New format of photon controller config file: ``` [Global] target = https://[LOAD_BALANCER_IP]:443 project = [PROJECT ID] overrideIP = true vmID = [LOCAL VM ID] authentication = true ``` This config file will be automatically created by Photon Controller cluster management. If authentication file is set to true, then a pc_login_info file should be placed under /etc/kubernetes with username and password. This file can be created by user directly. Or the user can choose to use kubernetes secret and a handling pod to avoid directly login to master nodes. This usage will be available with Photon Controller 1.2. This is a temporary solution before metadata service becomes available in Photon Controller.
parents 8738e36c 1aa3bba7
...@@ -29,21 +29,21 @@ import ( ...@@ -29,21 +29,21 @@ import (
) )
func configFromEnv() (TestVM string, TestFlavor string, cfg PCConfig, ok bool) { func configFromEnv() (TestVM string, TestFlavor string, cfg PCConfig, ok bool) {
var IgnoreCertificate bool var AuthEnabled bool
var OverrideIP bool var OverrideIP bool
var err error var err error
cfg.Global.CloudTarget = os.Getenv("PHOTON_TARGET") cfg.Global.CloudTarget = os.Getenv("PHOTON_TARGET")
cfg.Global.Tenant = os.Getenv("PHOTON_TENANT")
cfg.Global.Project = os.Getenv("PHOTON_PROJECT") cfg.Global.Project = os.Getenv("PHOTON_PROJECT")
if os.Getenv("PHOTON_IGNORE_CERTIFICATE") != "" { cfg.Global.VMID = os.Getenv("PHOTON_VMID")
IgnoreCertificate, err = strconv.ParseBool(os.Getenv("PHOTON_IGNORE_CERTIFICATE")) if os.Getenv("PHOTON_AUTH_ENABLED") != "" {
AuthEnabled, err = strconv.ParseBool(os.Getenv("PHOTON_AUTH_ENABLED"))
} else { } else {
IgnoreCertificate = false AuthEnabled = false
} }
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
cfg.Global.IgnoreCertificate = IgnoreCertificate cfg.Global.AuthEnabled = AuthEnabled
if os.Getenv("PHOTON_OVERRIDE_IP") != "" { if os.Getenv("PHOTON_OVERRIDE_IP") != "" {
OverrideIP, err = strconv.ParseBool(os.Getenv("PHOTON_OVERRIDE_IP")) OverrideIP, err = strconv.ParseBool(os.Getenv("PHOTON_OVERRIDE_IP"))
} else { } else {
...@@ -65,8 +65,8 @@ func configFromEnv() (TestVM string, TestFlavor string, cfg PCConfig, ok bool) { ...@@ -65,8 +65,8 @@ func configFromEnv() (TestVM string, TestFlavor string, cfg PCConfig, ok bool) {
} }
ok = (cfg.Global.CloudTarget != "" && ok = (cfg.Global.CloudTarget != "" &&
cfg.Global.Tenant != "" &&
cfg.Global.Project != "" && cfg.Global.Project != "" &&
cfg.Global.VMID != "" &&
TestVM != "") TestVM != "")
return return
...@@ -81,10 +81,10 @@ func TestReadConfig(t *testing.T) { ...@@ -81,10 +81,10 @@ func TestReadConfig(t *testing.T) {
cfg, err := readConfig(strings.NewReader(` cfg, err := readConfig(strings.NewReader(`
[Global] [Global]
target = 0.0.0.0 target = 0.0.0.0
ignoreCertificate = true
tenant = tenant
project = project project = project
overrideIP = false overrideIP = true
vmID = vmid
authentication = false
`)) `))
if err != nil { if err != nil {
t.Fatalf("Should succeed when a valid config is provided: %s", err) t.Fatalf("Should succeed when a valid config is provided: %s", err)
...@@ -94,13 +94,13 @@ overrideIP = false ...@@ -94,13 +94,13 @@ overrideIP = false
t.Errorf("incorrect photon target ip: %s", cfg.Global.CloudTarget) t.Errorf("incorrect photon target ip: %s", cfg.Global.CloudTarget)
} }
if cfg.Global.Tenant != "tenant" {
t.Errorf("incorrect tenant: %s", cfg.Global.Tenant)
}
if cfg.Global.Project != "project" { if cfg.Global.Project != "project" {
t.Errorf("incorrect project: %s", cfg.Global.Project) t.Errorf("incorrect project: %s", cfg.Global.Project)
} }
if cfg.Global.VMID != "vmid" {
t.Errorf("incorrect vmid: %s", cfg.Global.VMID)
}
} }
func TestNewPCCloud(t *testing.T) { func TestNewPCCloud(t *testing.T) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment