mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 05:27:21 +00:00
Merge pull request #36310 from irfanurrehman/federation-kubefed-todo-1
Automatic merge from submit-queue [Federation] Make federation etcd PVC size configurable This one implements one of the many TODO items pending in the previous set of kubefed PRs. The design doc PR is at https://github.com/kubernetes/kubernetes/pull/34484 cc @kubernetes/sig-cluster-federation @madhusudancs **Release note**: <!-- Steps to write your release note: 1. Use the release-note-* labels to set the release note state (if you have access) 2. Enter your extended release note in the below block; leaving it blank means using the PR title as the release note. If no release note is required, just write `NONE`. --> ``` [Federation] kubefed init now has a new flag, --etcd-pv-capacity, which can be used to configure the persistent volume capacity for etcd. ```
This commit is contained in:
commit
702c33a564
@ -119,6 +119,7 @@ func NewCmdInit(cmdOut io.Writer, config util.AdminConfig) *cobra.Command {
|
|||||||
cmd.Flags().String("dns-zone-name", "", "DNS suffix for this federation. Federated Service DNS names are published with this suffix.")
|
cmd.Flags().String("dns-zone-name", "", "DNS suffix for this federation. Federated Service DNS names are published with this suffix.")
|
||||||
cmd.Flags().String("image", defaultImage, "Image to use for federation API server and controller manager binaries.")
|
cmd.Flags().String("image", defaultImage, "Image to use for federation API server and controller manager binaries.")
|
||||||
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.")
|
||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,6 +141,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
|
|||||||
dnsZoneName := cmdutil.GetFlagString(cmd, "dns-zone-name")
|
dnsZoneName := cmdutil.GetFlagString(cmd, "dns-zone-name")
|
||||||
image := cmdutil.GetFlagString(cmd, "image")
|
image := cmdutil.GetFlagString(cmd, "image")
|
||||||
dnsProvider := cmdutil.GetFlagString(cmd, "dns-provider")
|
dnsProvider := cmdutil.GetFlagString(cmd, "dns-provider")
|
||||||
|
etcdPVCapacity := cmdutil.GetFlagString(cmd, "etcd-pv-capacity")
|
||||||
|
|
||||||
hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig)
|
hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig)
|
||||||
hostClientset, err := hostFactory.ClientSet()
|
hostClientset, err := hostFactory.ClientSet()
|
||||||
@ -188,7 +190,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
|
|||||||
// 5. Create a persistent volume and a claim to store the federation
|
// 5. Create a persistent volume and a claim to store the federation
|
||||||
// API server's state. This is where federation API server's etcd
|
// API server's state. This is where federation API server's etcd
|
||||||
// stores its data.
|
// stores its data.
|
||||||
pvc, err := createPVC(hostClientset, initFlags.FederationSystemNamespace, svc.Name)
|
pvc, err := createPVC(hostClientset, initFlags.FederationSystemNamespace, svc.Name, etcdPVCapacity)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -353,8 +355,8 @@ func createControllerManagerKubeconfigSecret(clientset *client.Clientset, namesp
|
|||||||
return util.CreateKubeconfigSecret(clientset, config, namespace, kubeconfigName, false)
|
return util.CreateKubeconfigSecret(clientset, config, namespace, kubeconfigName, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createPVC(clientset *client.Clientset, namespace, svcName string) (*api.PersistentVolumeClaim, error) {
|
func createPVC(clientset *client.Clientset, namespace, svcName, etcdPVCapacity string) (*api.PersistentVolumeClaim, error) {
|
||||||
capacity, err := resource.ParseQuantity("10Gi")
|
capacity, err := resource.ParseQuantity(etcdPVCapacity)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -76,6 +76,7 @@ func TestInitFederation(t *testing.T) {
|
|||||||
dnsZoneName string
|
dnsZoneName string
|
||||||
lbIP string
|
lbIP string
|
||||||
image string
|
image string
|
||||||
|
etcdPVCapacity string
|
||||||
expectedErr string
|
expectedErr string
|
||||||
dnsProvider string
|
dnsProvider string
|
||||||
}{
|
}{
|
||||||
@ -86,6 +87,7 @@ func TestInitFederation(t *testing.T) {
|
|||||||
dnsZoneName: "example.test.",
|
dnsZoneName: "example.test.",
|
||||||
lbIP: "10.20.30.40",
|
lbIP: "10.20.30.40",
|
||||||
image: "example.test/foo:bar",
|
image: "example.test/foo:bar",
|
||||||
|
etcdPVCapacity: "5Gi",
|
||||||
expectedErr: "",
|
expectedErr: "",
|
||||||
dnsProvider: "test-dns-provider",
|
dnsProvider: "test-dns-provider",
|
||||||
},
|
},
|
||||||
@ -96,6 +98,7 @@ func TestInitFederation(t *testing.T) {
|
|||||||
dnsZoneName: "example.test.",
|
dnsZoneName: "example.test.",
|
||||||
lbIP: "10.20.30.40",
|
lbIP: "10.20.30.40",
|
||||||
image: "example.test/foo:bar",
|
image: "example.test/foo:bar",
|
||||||
|
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
|
||||||
},
|
},
|
||||||
@ -111,7 +114,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)
|
hostFactory, err := fakeInitHostFactory(tc.federation, util.DefaultFederationSystemNamespace, tc.lbIP, tc.dnsZoneName, tc.image, dnsProvider, tc.etcdPVCapacity)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("[%d] unexpected error: %v", i, err)
|
t.Fatalf("[%d] unexpected error: %v", i, err)
|
||||||
}
|
}
|
||||||
@ -130,6 +133,9 @@ func TestInitFederation(t *testing.T) {
|
|||||||
if "" != tc.dnsProvider {
|
if "" != tc.dnsProvider {
|
||||||
cmd.Flags().Set("dns-provider", tc.dnsProvider)
|
cmd.Flags().Set("dns-provider", tc.dnsProvider)
|
||||||
}
|
}
|
||||||
|
if "" != tc.etcdPVCapacity {
|
||||||
|
cmd.Flags().Set("etcd-pv-capacity", tc.etcdPVCapacity)
|
||||||
|
}
|
||||||
cmd.Run(cmd, []string{tc.federation})
|
cmd.Run(cmd, []string{tc.federation})
|
||||||
|
|
||||||
if tc.expectedErr == "" {
|
if tc.expectedErr == "" {
|
||||||
@ -392,12 +398,17 @@ func TestCertsHTTPS(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image, dnsProvider string) (cmdutil.Factory, error) {
|
func fakeInitHostFactory(federationName, namespaceName, ip, dnsZoneName, image, dnsProvider, etcdPVCapacity 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"
|
||||||
cmKubeconfigSecretName := federationName + "-controller-manager-kubeconfig"
|
cmKubeconfigSecretName := federationName + "-controller-manager-kubeconfig"
|
||||||
capacity, err := resource.ParseQuantity("10Gi")
|
pvCap := "10Gi"
|
||||||
|
if etcdPVCapacity != "" {
|
||||||
|
pvCap = etcdPVCapacity
|
||||||
|
}
|
||||||
|
|
||||||
|
capacity, err := resource.ParseQuantity(pvCap)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -174,6 +174,7 @@ etcd-config
|
|||||||
etcd-keyfile
|
etcd-keyfile
|
||||||
etcd-mutation-timeout
|
etcd-mutation-timeout
|
||||||
etcd-prefix
|
etcd-prefix
|
||||||
|
etcd-pv-capacity
|
||||||
etcd-quorum-read
|
etcd-quorum-read
|
||||||
etcd-server
|
etcd-server
|
||||||
etcd-servers
|
etcd-servers
|
||||||
|
Loading…
Reference in New Issue
Block a user