fed: Add support for etcd image override to kubefed init
This commit is contained in:
@@ -95,7 +95,8 @@ func TestInitFederation(t *testing.T) {
|
||||
lbIP string
|
||||
apiserverServiceType v1.ServiceType
|
||||
advertiseAddress string
|
||||
image string
|
||||
serverImage string
|
||||
etcdImage string
|
||||
etcdPVCapacity string
|
||||
etcdPersistence string
|
||||
expectedErr string
|
||||
@@ -115,7 +116,7 @@ func TestInitFederation(t *testing.T) {
|
||||
dnsZoneName: "example.test.",
|
||||
lbIP: lbIP,
|
||||
apiserverServiceType: v1.ServiceTypeLoadBalancer,
|
||||
image: "example.test/foo:bar",
|
||||
serverImage: "example.test/foo:bar",
|
||||
etcdPVCapacity: "5Gi",
|
||||
etcdPersistence: "true",
|
||||
expectedErr: "",
|
||||
@@ -132,7 +133,7 @@ func TestInitFederation(t *testing.T) {
|
||||
dnsZoneName: "example.test.",
|
||||
lbIP: lbIP,
|
||||
apiserverServiceType: v1.ServiceTypeLoadBalancer,
|
||||
image: "example.test/foo:bar",
|
||||
serverImage: "example.test/foo:bar",
|
||||
etcdPVCapacity: "", //test for default value of pvc-size
|
||||
etcdPersistence: "true",
|
||||
expectedErr: "",
|
||||
@@ -145,7 +146,7 @@ func TestInitFederation(t *testing.T) {
|
||||
dnsZoneName: "example.test.",
|
||||
lbIP: lbIP,
|
||||
apiserverServiceType: v1.ServiceTypeLoadBalancer,
|
||||
image: "example.test/foo:bar",
|
||||
serverImage: "example.test/foo:bar",
|
||||
etcdPVCapacity: "",
|
||||
etcdPersistence: "true",
|
||||
expectedErr: "",
|
||||
@@ -158,7 +159,7 @@ func TestInitFederation(t *testing.T) {
|
||||
dnsZoneName: "example.test.",
|
||||
lbIP: lbIP,
|
||||
apiserverServiceType: v1.ServiceTypeLoadBalancer,
|
||||
image: "example.test/foo:bar",
|
||||
serverImage: "example.test/foo:bar",
|
||||
etcdPVCapacity: "5Gi",
|
||||
etcdPersistence: "false",
|
||||
expectedErr: "",
|
||||
@@ -170,7 +171,7 @@ func TestInitFederation(t *testing.T) {
|
||||
kubeconfigExplicit: "",
|
||||
dnsZoneName: "example.test.",
|
||||
apiserverServiceType: v1.ServiceTypeNodePort,
|
||||
image: "example.test/foo:bar",
|
||||
serverImage: "example.test/foo:bar",
|
||||
etcdPVCapacity: "5Gi",
|
||||
etcdPersistence: "true",
|
||||
expectedErr: "",
|
||||
@@ -183,7 +184,7 @@ func TestInitFederation(t *testing.T) {
|
||||
dnsZoneName: "example.test.",
|
||||
apiserverServiceType: v1.ServiceTypeNodePort,
|
||||
advertiseAddress: nodeIP,
|
||||
image: "example.test/foo:bar",
|
||||
serverImage: "example.test/foo:bar",
|
||||
etcdPVCapacity: "5Gi",
|
||||
etcdPersistence: "true",
|
||||
expectedErr: "",
|
||||
@@ -196,7 +197,8 @@ func TestInitFederation(t *testing.T) {
|
||||
dnsZoneName: "example.test.",
|
||||
apiserverServiceType: v1.ServiceTypeNodePort,
|
||||
advertiseAddress: nodeIP,
|
||||
image: "example.test/foo:bar",
|
||||
serverImage: "example.test/foo:bar",
|
||||
etcdImage: "gcr.io/google_containers/etcd:latest",
|
||||
etcdPVCapacity: "5Gi",
|
||||
etcdPersistence: "true",
|
||||
expectedErr: "",
|
||||
@@ -207,6 +209,8 @@ func TestInitFederation(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
defaultEtcdImage := "gcr.io/google_containers/etcd:3.0.17"
|
||||
|
||||
//TODO: implement a negative case for dry run
|
||||
|
||||
for i, tc := range testCases {
|
||||
@@ -234,7 +238,13 @@ func TestInitFederation(t *testing.T) {
|
||||
}
|
||||
defer os.Remove(tmpDirPath)
|
||||
|
||||
hostFactory, err := fakeInitHostFactory(tc.apiserverServiceType, tc.federation, util.DefaultFederationSystemNamespace, tc.advertiseAddress, tc.lbIP, tc.dnsZoneName, tc.image, tc.dnsProvider, tc.dnsProviderConfig, tc.etcdPersistence, tc.etcdPVCapacity, tc.apiserverArgOverrides, tc.cmArgOverrides, tmpDirPath, tc.apiserverEnableHTTPBasicAuth, tc.apiserverEnableTokenAuth, tc.isRBACAPIAvailable)
|
||||
// If tc.etcdImage is set, setting the etcd image via the flag will be
|
||||
// validated. If not set, the default value will be validated.
|
||||
if tc.etcdImage == "" {
|
||||
tc.etcdImage = defaultEtcdImage
|
||||
}
|
||||
|
||||
hostFactory, err := fakeInitHostFactory(tc.apiserverServiceType, tc.federation, util.DefaultFederationSystemNamespace, tc.advertiseAddress, tc.lbIP, tc.dnsZoneName, tc.serverImage, tc.etcdImage, tc.dnsProvider, tc.dnsProviderConfig, tc.etcdPersistence, tc.etcdPVCapacity, tc.apiserverArgOverrides, tc.cmArgOverrides, tmpDirPath, tc.apiserverEnableHTTPBasicAuth, tc.apiserverEnableTokenAuth, tc.isRBACAPIAvailable)
|
||||
if err != nil {
|
||||
t.Fatalf("[%d] unexpected error: %v", i, err)
|
||||
}
|
||||
@@ -244,12 +254,13 @@ func TestInitFederation(t *testing.T) {
|
||||
t.Fatalf("[%d] unexpected error: %v", i, err)
|
||||
}
|
||||
|
||||
cmd := NewCmdInit(buf, adminConfig, "image")
|
||||
cmd := NewCmdInit(buf, adminConfig, "serverImage", defaultEtcdImage)
|
||||
|
||||
cmd.Flags().Set("kubeconfig", tc.kubeconfigExplicit)
|
||||
cmd.Flags().Set("host-cluster-context", "substrate")
|
||||
cmd.Flags().Set("dns-zone-name", tc.dnsZoneName)
|
||||
cmd.Flags().Set("image", tc.image)
|
||||
cmd.Flags().Set("image", tc.serverImage)
|
||||
cmd.Flags().Set("etcd-image", tc.etcdImage)
|
||||
cmd.Flags().Set("dns-provider", tc.dnsProvider)
|
||||
cmd.Flags().Set("apiserver-arg-overrides", tc.apiserverArgOverrides)
|
||||
cmd.Flags().Set("controllermanager-arg-overrides", tc.cmArgOverrides)
|
||||
@@ -605,7 +616,7 @@ func TestCertsHTTPS(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, namespaceName, advertiseAddress, lbIp, dnsZoneName, image, dnsProvider, dnsProviderConfig, etcdPersistence, etcdPVCapacity, apiserverOverrideArg, cmOverrideArg, tmpDirPath string, apiserverEnableHTTPBasicAuth, apiserverEnableTokenAuth, isRBACAPIAvailable bool) (cmdutil.Factory, error) {
|
||||
func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, namespaceName, advertiseAddress, lbIp, dnsZoneName, serverImage, etcdImage, dnsProvider, dnsProviderConfig, etcdPersistence, etcdPVCapacity, apiserverOverrideArg, cmOverrideArg, tmpDirPath string, apiserverEnableHTTPBasicAuth, apiserverEnableTokenAuth, isRBACAPIAvailable bool) (cmdutil.Factory, error) {
|
||||
svcName := federationName + "-apiserver"
|
||||
svcUrlPrefix := "/api/v1/namespaces/federation-system/services"
|
||||
credSecretName := svcName + "-credentials"
|
||||
@@ -892,7 +903,7 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
|
||||
Containers: []v1.Container{
|
||||
{
|
||||
Name: "apiserver",
|
||||
Image: image,
|
||||
Image: serverImage,
|
||||
Command: apiserverCommand,
|
||||
Ports: []v1.ContainerPort{
|
||||
{
|
||||
@@ -914,7 +925,7 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
|
||||
},
|
||||
{
|
||||
Name: "etcd",
|
||||
Image: "gcr.io/google_containers/etcd:3.0.17",
|
||||
Image: etcdImage,
|
||||
Command: []string{
|
||||
"/usr/local/bin/etcd",
|
||||
"--data-dir",
|
||||
@@ -1009,7 +1020,7 @@ func fakeInitHostFactory(apiserverServiceType v1.ServiceType, federationName, na
|
||||
Containers: []v1.Container{
|
||||
{
|
||||
Name: "controller-manager",
|
||||
Image: image,
|
||||
Image: serverImage,
|
||||
Command: cmCommand,
|
||||
VolumeMounts: []v1.VolumeMount{
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user