mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
Merge pull request #39646 from shashidharatd/federation-misc
Automatic merge from submit-queue (batch tested with PRs 39714, 39646) use etcd2 as storage-backend for federation until federation features are completely tested with etcd3 **What this PR does / why we need it**: move federation etcd to etcd3 **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #39594 **Special notes for your reviewer**: here is the [link](https://github.com/kubernetes/features/issues/44#issuecomment-270772674) to announcement making etcd3 as default **Release note**: ```release-note ```
This commit is contained in:
commit
3888aca8ab
@ -32,6 +32,7 @@ spec:
|
|||||||
- --admission-control={{.FEDERATION_ADMISSION_CONTROL}}
|
- --admission-control={{.FEDERATION_ADMISSION_CONTROL}}
|
||||||
- --token-auth-file=/srv/kubernetes/known-tokens.csv
|
- --token-auth-file=/srv/kubernetes/known-tokens.csv
|
||||||
- --anonymous-auth=false
|
- --anonymous-auth=false
|
||||||
|
- --storage-backend=etcd2
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 443
|
- containerPort: 443
|
||||||
name: https
|
name: https
|
||||||
@ -42,9 +43,9 @@ spec:
|
|||||||
mountPath: /srv/kubernetes/
|
mountPath: /srv/kubernetes/
|
||||||
readOnly: true
|
readOnly: true
|
||||||
- name: etcd
|
- name: etcd
|
||||||
image: quay.io/coreos/etcd:v2.3.3
|
image: gcr.io/google_containers/etcd:3.0.14-alpha.1
|
||||||
command:
|
command:
|
||||||
- /etcd
|
- /usr/local/bin/etcd
|
||||||
- --data-dir
|
- --data-dir
|
||||||
- /var/etcd/data
|
- /var/etcd/data
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
|
@ -123,6 +123,7 @@ func NewCmdInit(cmdOut io.Writer, config util.AdminConfig) *cobra.Command {
|
|||||||
cmd.Flags().String("dns-provider", "google-clouddns", "Dns provider to be used for this deployment.")
|
cmd.Flags().String("dns-provider", "google-clouddns", "Dns provider to be used for this deployment.")
|
||||||
cmd.Flags().String("etcd-pv-capacity", "10Gi", "Size of persistent volume claim to be used for etcd.")
|
cmd.Flags().String("etcd-pv-capacity", "10Gi", "Size of persistent volume claim to be used for etcd.")
|
||||||
cmd.Flags().Bool("dry-run", false, "dry run without sending commands to server.")
|
cmd.Flags().Bool("dry-run", false, "dry run without sending commands to server.")
|
||||||
|
cmd.Flags().String("storage-backend", "etcd2", "The storage backend for persistence. Options: 'etcd2' (default), 'etcd3'.")
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,6 +147,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
|
|||||||
dnsProvider := cmdutil.GetFlagString(cmd, "dns-provider")
|
dnsProvider := cmdutil.GetFlagString(cmd, "dns-provider")
|
||||||
etcdPVCapacity := cmdutil.GetFlagString(cmd, "etcd-pv-capacity")
|
etcdPVCapacity := cmdutil.GetFlagString(cmd, "etcd-pv-capacity")
|
||||||
dryRun := cmdutil.GetDryRunFlag(cmd)
|
dryRun := cmdutil.GetDryRunFlag(cmd)
|
||||||
|
storageBackend := cmdutil.GetFlagString(cmd, "storage-backend")
|
||||||
|
|
||||||
hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig)
|
hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig)
|
||||||
hostClientset, err := hostFactory.ClientSet()
|
hostClientset, err := hostFactory.ClientSet()
|
||||||
@ -212,7 +214,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 6. Create federation API server
|
// 6. Create federation API server
|
||||||
_, err = createAPIServer(hostClientset, initFlags.FederationSystemNamespace, serverName, image, serverCredName, pvc.Name, advertiseAddress, dryRun)
|
_, err = createAPIServer(hostClientset, initFlags.FederationSystemNamespace, serverName, image, serverCredName, pvc.Name, advertiseAddress, storageBackend, dryRun)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -416,7 +418,7 @@ func createPVC(clientset *client.Clientset, namespace, svcName, etcdPVCapacity s
|
|||||||
return clientset.Core().PersistentVolumeClaims(namespace).Create(pvc)
|
return clientset.Core().PersistentVolumeClaims(namespace).Create(pvc)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createAPIServer(clientset *client.Clientset, namespace, name, image, credentialsName, pvcName, advertiseAddress string, dryRun bool) (*extensions.Deployment, error) {
|
func createAPIServer(clientset *client.Clientset, namespace, name, image, credentialsName, pvcName, advertiseAddress, storageBackend string, dryRun bool) (*extensions.Deployment, error) {
|
||||||
command := []string{
|
command := []string{
|
||||||
"/hyperkube",
|
"/hyperkube",
|
||||||
"federation-apiserver",
|
"federation-apiserver",
|
||||||
@ -426,6 +428,7 @@ func createAPIServer(clientset *client.Clientset, namespace, name, image, creden
|
|||||||
"--client-ca-file=/etc/federation/apiserver/ca.crt",
|
"--client-ca-file=/etc/federation/apiserver/ca.crt",
|
||||||
"--tls-cert-file=/etc/federation/apiserver/server.crt",
|
"--tls-cert-file=/etc/federation/apiserver/server.crt",
|
||||||
"--tls-private-key-file=/etc/federation/apiserver/server.key",
|
"--tls-private-key-file=/etc/federation/apiserver/server.key",
|
||||||
|
fmt.Sprintf("--storage-backend=%s", storageBackend),
|
||||||
}
|
}
|
||||||
|
|
||||||
if advertiseAddress != "" {
|
if advertiseAddress != "" {
|
||||||
@ -473,9 +476,9 @@ func createAPIServer(clientset *client.Clientset, namespace, name, image, creden
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "etcd",
|
Name: "etcd",
|
||||||
Image: "quay.io/coreos/etcd:v2.3.3",
|
Image: "gcr.io/google_containers/etcd:3.0.14-alpha.1",
|
||||||
Command: []string{
|
Command: []string{
|
||||||
"/etcd",
|
"/usr/local/bin/etcd",
|
||||||
"--data-dir",
|
"--data-dir",
|
||||||
"/var/etcd/data",
|
"/var/etcd/data",
|
||||||
},
|
},
|
||||||
|
@ -79,6 +79,7 @@ func TestInitFederation(t *testing.T) {
|
|||||||
etcdPVCapacity string
|
etcdPVCapacity string
|
||||||
expectedErr string
|
expectedErr string
|
||||||
dnsProvider string
|
dnsProvider string
|
||||||
|
storageBackend string
|
||||||
dryRun string
|
dryRun string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
@ -91,6 +92,7 @@ func TestInitFederation(t *testing.T) {
|
|||||||
etcdPVCapacity: "5Gi",
|
etcdPVCapacity: "5Gi",
|
||||||
expectedErr: "",
|
expectedErr: "",
|
||||||
dnsProvider: "test-dns-provider",
|
dnsProvider: "test-dns-provider",
|
||||||
|
storageBackend: "etcd2",
|
||||||
dryRun: "",
|
dryRun: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -103,6 +105,7 @@ func TestInitFederation(t *testing.T) {
|
|||||||
etcdPVCapacity: "", //test for default value of pvc-size
|
etcdPVCapacity: "", //test for default value of pvc-size
|
||||||
expectedErr: "",
|
expectedErr: "",
|
||||||
dnsProvider: "", //test for default value of dns provider
|
dnsProvider: "", //test for default value of dns provider
|
||||||
|
storageBackend: "etcd2",
|
||||||
dryRun: "",
|
dryRun: "",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -115,8 +118,22 @@ func TestInitFederation(t *testing.T) {
|
|||||||
etcdPVCapacity: "",
|
etcdPVCapacity: "",
|
||||||
expectedErr: "",
|
expectedErr: "",
|
||||||
dnsProvider: "test-dns-provider",
|
dnsProvider: "test-dns-provider",
|
||||||
|
storageBackend: "etcd2",
|
||||||
dryRun: "valid-run",
|
dryRun: "valid-run",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
federation: "union",
|
||||||
|
kubeconfigGlobal: fakeKubeFiles[0],
|
||||||
|
kubeconfigExplicit: "",
|
||||||
|
dnsZoneName: "example.test.",
|
||||||
|
lbIP: "10.20.30.40",
|
||||||
|
image: "example.test/foo:bar",
|
||||||
|
etcdPVCapacity: "5Gi",
|
||||||
|
expectedErr: "",
|
||||||
|
dnsProvider: "test-dns-provider",
|
||||||
|
storageBackend: "etcd3",
|
||||||
|
dryRun: "",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: implement a negative case for dry run
|
//TODO: implement a negative case for dry run
|
||||||
@ -131,7 +148,7 @@ func TestInitFederation(t *testing.T) {
|
|||||||
} else {
|
} else {
|
||||||
dnsProvider = "google-clouddns" //default value of dns-provider
|
dnsProvider = "google-clouddns" //default value of dns-provider
|
||||||
}
|
}
|
||||||
hostFactory, err := fakeInitHostFactory(tc.federation, util.DefaultFederationSystemNamespace, tc.lbIP, tc.dnsZoneName, tc.image, dnsProvider, tc.etcdPVCapacity)
|
hostFactory, err := fakeInitHostFactory(tc.federation, util.DefaultFederationSystemNamespace, tc.lbIP, tc.dnsZoneName, tc.image, dnsProvider, tc.etcdPVCapacity, tc.storageBackend)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("[%d] unexpected error: %v", i, err)
|
t.Fatalf("[%d] unexpected error: %v", i, err)
|
||||||
}
|
}
|
||||||
@ -147,6 +164,9 @@ func TestInitFederation(t *testing.T) {
|
|||||||
cmd.Flags().Set("host-cluster-context", "substrate")
|
cmd.Flags().Set("host-cluster-context", "substrate")
|
||||||
cmd.Flags().Set("dns-zone-name", tc.dnsZoneName)
|
cmd.Flags().Set("dns-zone-name", tc.dnsZoneName)
|
||||||
cmd.Flags().Set("image", tc.image)
|
cmd.Flags().Set("image", tc.image)
|
||||||
|
if tc.storageBackend != "" {
|
||||||
|
cmd.Flags().Set("storage-backend", tc.storageBackend)
|
||||||
|
}
|
||||||
if tc.dnsProvider != "" {
|
if tc.dnsProvider != "" {
|
||||||
cmd.Flags().Set("dns-provider", tc.dnsProvider)
|
cmd.Flags().Set("dns-provider", tc.dnsProvider)
|
||||||
}
|
}
|
||||||
@ -423,7 +443,7 @@ func TestCertsHTTPS(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image, dnsProvider, etcdPVCapacity string) (cmdutil.Factory, error) {
|
func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image, dnsProvider, etcdPVCapacity, storageProvider string) (cmdutil.Factory, error) {
|
||||||
svcName := federationName + "-apiserver"
|
svcName := federationName + "-apiserver"
|
||||||
svcUrlPrefix := "/api/v1/namespaces/federation-system/services"
|
svcUrlPrefix := "/api/v1/namespaces/federation-system/services"
|
||||||
credSecretName := svcName + "-credentials"
|
credSecretName := svcName + "-credentials"
|
||||||
@ -566,6 +586,7 @@ func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image,
|
|||||||
"--client-ca-file=/etc/federation/apiserver/ca.crt",
|
"--client-ca-file=/etc/federation/apiserver/ca.crt",
|
||||||
"--tls-cert-file=/etc/federation/apiserver/server.crt",
|
"--tls-cert-file=/etc/federation/apiserver/server.crt",
|
||||||
"--tls-private-key-file=/etc/federation/apiserver/server.key",
|
"--tls-private-key-file=/etc/federation/apiserver/server.key",
|
||||||
|
fmt.Sprintf("--storage-backend=%s", storageProvider),
|
||||||
"--advertise-address=" + ip,
|
"--advertise-address=" + ip,
|
||||||
},
|
},
|
||||||
Ports: []v1.ContainerPort{
|
Ports: []v1.ContainerPort{
|
||||||
@ -588,9 +609,9 @@ func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image,
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "etcd",
|
Name: "etcd",
|
||||||
Image: "quay.io/coreos/etcd:v2.3.3",
|
Image: "gcr.io/google_containers/etcd:3.0.14-alpha.1",
|
||||||
Command: []string{
|
Command: []string{
|
||||||
"/etcd",
|
"/usr/local/bin/etcd",
|
||||||
"--data-dir",
|
"--data-dir",
|
||||||
"/var/etcd/data",
|
"/var/etcd/data",
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user