mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +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:
		@@ -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("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("etcd-pv-capacity", "10Gi", "Size of persistent volume claim to be used for etcd.")
 | 
			
		||||
	return cmd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -140,6 +141,7 @@ func initFederation(cmdOut io.Writer, config util.AdminConfig, cmd *cobra.Comman
 | 
			
		||||
	dnsZoneName := cmdutil.GetFlagString(cmd, "dns-zone-name")
 | 
			
		||||
	image := cmdutil.GetFlagString(cmd, "image")
 | 
			
		||||
	dnsProvider := cmdutil.GetFlagString(cmd, "dns-provider")
 | 
			
		||||
	etcdPVCapacity := cmdutil.GetFlagString(cmd, "etcd-pv-capacity")
 | 
			
		||||
 | 
			
		||||
	hostFactory := config.HostFactory(initFlags.Host, initFlags.Kubeconfig)
 | 
			
		||||
	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
 | 
			
		||||
	// API server's state. This is where federation API server's etcd
 | 
			
		||||
	// stores its data.
 | 
			
		||||
	pvc, err := createPVC(hostClientset, initFlags.FederationSystemNamespace, svc.Name)
 | 
			
		||||
	pvc, err := createPVC(hostClientset, initFlags.FederationSystemNamespace, svc.Name, etcdPVCapacity)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
@@ -353,8 +355,8 @@ func createControllerManagerKubeconfigSecret(clientset *client.Clientset, namesp
 | 
			
		||||
	return util.CreateKubeconfigSecret(clientset, config, namespace, kubeconfigName, false)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func createPVC(clientset *client.Clientset, namespace, svcName string) (*api.PersistentVolumeClaim, error) {
 | 
			
		||||
	capacity, err := resource.ParseQuantity("10Gi")
 | 
			
		||||
func createPVC(clientset *client.Clientset, namespace, svcName, etcdPVCapacity string) (*api.PersistentVolumeClaim, error) {
 | 
			
		||||
	capacity, err := resource.ParseQuantity(etcdPVCapacity)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -76,6 +76,7 @@ func TestInitFederation(t *testing.T) {
 | 
			
		||||
		dnsZoneName        string
 | 
			
		||||
		lbIP               string
 | 
			
		||||
		image              string
 | 
			
		||||
		etcdPVCapacity     string
 | 
			
		||||
		expectedErr        string
 | 
			
		||||
		dnsProvider        string
 | 
			
		||||
	}{
 | 
			
		||||
@@ -86,6 +87,7 @@ func TestInitFederation(t *testing.T) {
 | 
			
		||||
			dnsZoneName:        "example.test.",
 | 
			
		||||
			lbIP:               "10.20.30.40",
 | 
			
		||||
			image:              "example.test/foo:bar",
 | 
			
		||||
			etcdPVCapacity:     "5Gi",
 | 
			
		||||
			expectedErr:        "",
 | 
			
		||||
			dnsProvider:        "test-dns-provider",
 | 
			
		||||
		},
 | 
			
		||||
@@ -96,6 +98,7 @@ func TestInitFederation(t *testing.T) {
 | 
			
		||||
			dnsZoneName:        "example.test.",
 | 
			
		||||
			lbIP:               "10.20.30.40",
 | 
			
		||||
			image:              "example.test/foo:bar",
 | 
			
		||||
			etcdPVCapacity:     "", //test for default value of pvc-size
 | 
			
		||||
			expectedErr:        "",
 | 
			
		||||
			dnsProvider:        "", //test for default value of dns provider
 | 
			
		||||
		},
 | 
			
		||||
@@ -111,7 +114,7 @@ func TestInitFederation(t *testing.T) {
 | 
			
		||||
		} else {
 | 
			
		||||
			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 {
 | 
			
		||||
			t.Fatalf("[%d] unexpected error: %v", i, err)
 | 
			
		||||
		}
 | 
			
		||||
@@ -130,6 +133,9 @@ func TestInitFederation(t *testing.T) {
 | 
			
		||||
		if "" != 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})
 | 
			
		||||
 | 
			
		||||
		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"
 | 
			
		||||
	svcUrlPrefix := "/api/v1/namespaces/federation-system/services"
 | 
			
		||||
	credSecretName := svcName + "-credentials"
 | 
			
		||||
	cmKubeconfigSecretName := federationName + "-controller-manager-kubeconfig"
 | 
			
		||||
	capacity, err := resource.ParseQuantity("10Gi")
 | 
			
		||||
	pvCap := "10Gi"
 | 
			
		||||
	if etcdPVCapacity != "" {
 | 
			
		||||
		pvCap = etcdPVCapacity
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	capacity, err := resource.ParseQuantity(pvCap)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -174,6 +174,7 @@ etcd-config
 | 
			
		||||
etcd-keyfile
 | 
			
		||||
etcd-mutation-timeout
 | 
			
		||||
etcd-prefix
 | 
			
		||||
etcd-pv-capacity
 | 
			
		||||
etcd-quorum-read
 | 
			
		||||
etcd-server
 | 
			
		||||
etcd-servers
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user