move StatefulSet to apps/v1
This commit is contained in:
		
							parent
							
								
									cf97ebb2b8
								
							
						
					
					
						commit
						2e185533d8
					
				|  | @ -12,7 +12,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"github.com/sirupsen/logrus" | ||||
| 	"k8s.io/api/apps/v1beta1" | ||||
| 	appsv1 "k8s.io/api/apps/v1" | ||||
| 	v1 "k8s.io/api/core/v1" | ||||
| 	policybeta1 "k8s.io/api/policy/v1beta1" | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
|  | @ -52,7 +52,7 @@ type kubeResources struct { | |||
| 	Services            map[PostgresRole]*v1.Service | ||||
| 	Endpoints           map[PostgresRole]*v1.Endpoints | ||||
| 	Secrets             map[types.UID]*v1.Secret | ||||
| 	Statefulset         *v1beta1.StatefulSet | ||||
| 	Statefulset         *appsv1.StatefulSet | ||||
| 	PodDisruptionBudget *policybeta1.PodDisruptionBudget | ||||
| 	//Pods are treated separately
 | ||||
| 	//PVCs are treated separately
 | ||||
|  | @ -214,7 +214,7 @@ func (c *Cluster) Create() error { | |||
| 
 | ||||
| 		service *v1.Service | ||||
| 		ep      *v1.Endpoints | ||||
| 		ss      *v1beta1.StatefulSet | ||||
| 		ss      *appsv1.StatefulSet | ||||
| 	) | ||||
| 
 | ||||
| 	defer func() { | ||||
|  | @ -315,7 +315,7 @@ func (c *Cluster) Create() error { | |||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) compareStatefulSetWith(statefulSet *v1beta1.StatefulSet) *compareStatefulsetResult { | ||||
| func (c *Cluster) compareStatefulSetWith(statefulSet *appsv1.StatefulSet) *compareStatefulsetResult { | ||||
| 	reasons := make([]string, 0) | ||||
| 	var match, needsRollUpdate, needsReplace bool | ||||
| 
 | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ import ( | |||
| 
 | ||||
| 	"github.com/sirupsen/logrus" | ||||
| 
 | ||||
| 	"k8s.io/api/apps/v1beta1" | ||||
| 	appsv1 "k8s.io/api/apps/v1" | ||||
| 	v1 "k8s.io/api/core/v1" | ||||
| 	policybeta1 "k8s.io/api/policy/v1beta1" | ||||
| 	"k8s.io/apimachinery/pkg/api/resource" | ||||
|  | @ -711,7 +711,7 @@ func makeResources(cpuRequest, memoryRequest, cpuLimit, memoryLimit string) acid | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*v1beta1.StatefulSet, error) { | ||||
| func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.StatefulSet, error) { | ||||
| 
 | ||||
| 	var ( | ||||
| 		err                 error | ||||
|  | @ -917,25 +917,25 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*v1beta1.State | |||
| 	// the operator has domain-specific logic on how to do rolling updates of PG clusters
 | ||||
| 	// so we do not use default rolling updates implemented by stateful sets
 | ||||
| 	// that leaves the legacy "OnDelete" update strategy as the only option
 | ||||
| 	updateStrategy := v1beta1.StatefulSetUpdateStrategy{Type: v1beta1.OnDeleteStatefulSetStrategyType} | ||||
| 	updateStrategy := appsv1.StatefulSetUpdateStrategy{Type: appsv1.OnDeleteStatefulSetStrategyType} | ||||
| 
 | ||||
| 	var podManagementPolicy v1beta1.PodManagementPolicyType | ||||
| 	var podManagementPolicy appsv1.PodManagementPolicyType | ||||
| 	if c.OpConfig.PodManagementPolicy == "ordered_ready" { | ||||
| 		podManagementPolicy = v1beta1.OrderedReadyPodManagement | ||||
| 		podManagementPolicy = appsv1.OrderedReadyPodManagement | ||||
| 	} else if c.OpConfig.PodManagementPolicy == "parallel" { | ||||
| 		podManagementPolicy = v1beta1.ParallelPodManagement | ||||
| 		podManagementPolicy = appsv1.ParallelPodManagement | ||||
| 	} else { | ||||
| 		return nil, fmt.Errorf("could not set the pod management policy to the unknown value: %v", c.OpConfig.PodManagementPolicy) | ||||
| 	} | ||||
| 
 | ||||
| 	statefulSet := &v1beta1.StatefulSet{ | ||||
| 	statefulSet := &appsv1.StatefulSet{ | ||||
| 		ObjectMeta: metav1.ObjectMeta{ | ||||
| 			Name:        c.statefulSetName(), | ||||
| 			Namespace:   c.Namespace, | ||||
| 			Labels:      c.labelsSet(true), | ||||
| 			Annotations: map[string]string{rollingUpdateStatefulsetAnnotationKey: "false"}, | ||||
| 		}, | ||||
| 		Spec: v1beta1.StatefulSetSpec{ | ||||
| 		Spec: appsv1.StatefulSetSpec{ | ||||
| 			Replicas:             &numberOfInstances, | ||||
| 			Selector:             c.labelsSelector(), | ||||
| 			ServiceName:          c.serviceName(Master), | ||||
|  |  | |||
|  | @ -4,12 +4,12 @@ import ( | |||
| 	"fmt" | ||||
| 	"math/rand" | ||||
| 
 | ||||
| 	appsv1 "k8s.io/api/apps/v1" | ||||
| 	v1 "k8s.io/api/core/v1" | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
| 
 | ||||
| 	"github.com/zalando/postgres-operator/pkg/spec" | ||||
| 	"github.com/zalando/postgres-operator/pkg/util" | ||||
| 	"k8s.io/api/apps/v1beta1" | ||||
| ) | ||||
| 
 | ||||
| func (c *Cluster) listPods() ([]v1.Pod, error) { | ||||
|  | @ -205,7 +205,7 @@ func (c *Cluster) MigrateMasterPod(podName spec.NamespacedName) error { | |||
| 	} | ||||
| 	// we must have a statefulset in the cluster for the migration to work
 | ||||
| 	if c.Statefulset == nil { | ||||
| 		var sset *v1beta1.StatefulSet | ||||
| 		var sset *appsv1.StatefulSet | ||||
| 		if sset, err = c.KubeClient.StatefulSets(c.Namespace).Get(c.statefulSetName(), | ||||
| 			metav1.GetOptions{}); err != nil { | ||||
| 			return fmt.Errorf("could not retrieve cluster statefulset: %v", err) | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import ( | |||
| 	"strconv" | ||||
| 	"strings" | ||||
| 
 | ||||
| 	"k8s.io/api/apps/v1beta1" | ||||
| 	appsv1 "k8s.io/api/apps/v1" | ||||
| 	batchv1beta1 "k8s.io/api/batch/v1beta1" | ||||
| 	v1 "k8s.io/api/core/v1" | ||||
| 	policybeta1 "k8s.io/api/policy/v1beta1" | ||||
|  | @ -64,7 +64,7 @@ func (c *Cluster) listResources() error { | |||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) createStatefulSet() (*v1beta1.StatefulSet, error) { | ||||
| func (c *Cluster) createStatefulSet() (*appsv1.StatefulSet, error) { | ||||
| 	c.setProcessName("creating statefulset") | ||||
| 	statefulSetSpec, err := c.generateStatefulSet(&c.Spec) | ||||
| 	if err != nil { | ||||
|  | @ -95,7 +95,7 @@ func getPodIndex(podName string) (int32, error) { | |||
| 	return int32(res), nil | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) preScaleDown(newStatefulSet *v1beta1.StatefulSet) error { | ||||
| func (c *Cluster) preScaleDown(newStatefulSet *appsv1.StatefulSet) error { | ||||
| 	masterPod, err := c.getRolePods(Master) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("could not get master pod: %v", err) | ||||
|  | @ -135,7 +135,7 @@ func (c *Cluster) preScaleDown(newStatefulSet *v1beta1.StatefulSet) error { | |||
| 
 | ||||
| // setRollingUpdateFlagForStatefulSet sets the indicator or the rolling update requirement
 | ||||
| // in the StatefulSet annotation.
 | ||||
| func (c *Cluster) setRollingUpdateFlagForStatefulSet(sset *v1beta1.StatefulSet, val bool) { | ||||
| func (c *Cluster) setRollingUpdateFlagForStatefulSet(sset *appsv1.StatefulSet, val bool) { | ||||
| 	anno := sset.GetAnnotations() | ||||
| 	if anno == nil { | ||||
| 		anno = make(map[string]string) | ||||
|  | @ -160,7 +160,7 @@ func (c *Cluster) applyRollingUpdateFlagforStatefulSet(val bool) error { | |||
| 
 | ||||
| // getRollingUpdateFlagFromStatefulSet returns the value of the rollingUpdate flag from the passed
 | ||||
| // StatefulSet, reverting to the default value in case of errors
 | ||||
| func (c *Cluster) getRollingUpdateFlagFromStatefulSet(sset *v1beta1.StatefulSet, defaultValue bool) (flag bool) { | ||||
| func (c *Cluster) getRollingUpdateFlagFromStatefulSet(sset *appsv1.StatefulSet, defaultValue bool) (flag bool) { | ||||
| 	anno := sset.GetAnnotations() | ||||
| 	flag = defaultValue | ||||
| 
 | ||||
|  | @ -181,7 +181,7 @@ func (c *Cluster) getRollingUpdateFlagFromStatefulSet(sset *v1beta1.StatefulSet, | |||
| // mergeRollingUpdateFlagUsingCache returns the value of the rollingUpdate flag from the passed
 | ||||
| // statefulset, however, the value can be cleared if there is a cached flag in the cluster that
 | ||||
| // is set to false (the discrepancy could be a result of a failed StatefulSet update)
 | ||||
| func (c *Cluster) mergeRollingUpdateFlagUsingCache(runningStatefulSet *v1beta1.StatefulSet) bool { | ||||
| func (c *Cluster) mergeRollingUpdateFlagUsingCache(runningStatefulSet *appsv1.StatefulSet) bool { | ||||
| 	var ( | ||||
| 		cachedStatefulsetExists, clearRollingUpdateFromCache, podsRollingUpdateRequired bool | ||||
| 	) | ||||
|  | @ -207,7 +207,7 @@ func (c *Cluster) mergeRollingUpdateFlagUsingCache(runningStatefulSet *v1beta1.S | |||
| 	return podsRollingUpdateRequired | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) updateStatefulSetAnnotations(annotations map[string]string) (*v1beta1.StatefulSet, error) { | ||||
| func (c *Cluster) updateStatefulSetAnnotations(annotations map[string]string) (*appsv1.StatefulSet, error) { | ||||
| 	c.logger.Debugf("updating statefulset annotations") | ||||
| 	patchData, err := metaAnnotationsPatch(annotations) | ||||
| 	if err != nil { | ||||
|  | @ -223,7 +223,7 @@ func (c *Cluster) updateStatefulSetAnnotations(annotations map[string]string) (* | |||
| 	return result, nil | ||||
| 
 | ||||
| } | ||||
| func (c *Cluster) updateStatefulSet(newStatefulSet *v1beta1.StatefulSet) error { | ||||
| func (c *Cluster) updateStatefulSet(newStatefulSet *appsv1.StatefulSet) error { | ||||
| 	c.setProcessName("updating statefulset") | ||||
| 	if c.Statefulset == nil { | ||||
| 		return fmt.Errorf("there is no statefulset in the cluster") | ||||
|  | @ -264,7 +264,7 @@ func (c *Cluster) updateStatefulSet(newStatefulSet *v1beta1.StatefulSet) error { | |||
| } | ||||
| 
 | ||||
| // replaceStatefulSet deletes an old StatefulSet and creates the new using spec in the PostgreSQL CRD.
 | ||||
| func (c *Cluster) replaceStatefulSet(newStatefulSet *v1beta1.StatefulSet) error { | ||||
| func (c *Cluster) replaceStatefulSet(newStatefulSet *appsv1.StatefulSet) error { | ||||
| 	c.setProcessName("replacing statefulset") | ||||
| 	if c.Statefulset == nil { | ||||
| 		return fmt.Errorf("there is no statefulset in the cluster") | ||||
|  | @ -676,7 +676,7 @@ func (c *Cluster) GetEndpointReplica() *v1.Endpoints { | |||
| } | ||||
| 
 | ||||
| // GetStatefulSet returns cluster's kubernetes StatefulSet
 | ||||
| func (c *Cluster) GetStatefulSet() *v1beta1.StatefulSet { | ||||
| func (c *Cluster) GetStatefulSet() *appsv1.StatefulSet { | ||||
| 	return c.Statefulset | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	acidv1 "github.com/zalando/postgres-operator/pkg/apis/acid.zalan.do/v1" | ||||
| 	"k8s.io/api/apps/v1beta1" | ||||
| 	appsv1 "k8s.io/api/apps/v1" | ||||
| 	"k8s.io/api/core/v1" | ||||
| 	policybeta1 "k8s.io/api/policy/v1beta1" | ||||
| 	"k8s.io/apimachinery/pkg/types" | ||||
|  | @ -60,7 +60,7 @@ type ClusterStatus struct { | |||
| 	ReplicaService      *v1.Service | ||||
| 	MasterEndpoint      *v1.Endpoints | ||||
| 	ReplicaEndpoint     *v1.Endpoints | ||||
| 	StatefulSet         *v1beta1.StatefulSet | ||||
| 	StatefulSet         *appsv1.StatefulSet | ||||
| 	PodDisruptionBudget *policybeta1.PodDisruptionBudget | ||||
| 
 | ||||
| 	CurrentProcess Process | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ import ( | |||
| 	"strings" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"k8s.io/api/apps/v1beta1" | ||||
| 	appsv1 "k8s.io/api/apps/v1" | ||||
| 	v1 "k8s.io/api/core/v1" | ||||
| 	policybeta1 "k8s.io/api/policy/v1beta1" | ||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||
|  | @ -168,7 +168,7 @@ func (c *Cluster) logPDBChanges(old, new *policybeta1.PodDisruptionBudget, isUpd | |||
| 	c.logger.Debugf("diff\n%s\n", util.PrettyDiff(old.Spec, new.Spec)) | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) logStatefulSetChanges(old, new *v1beta1.StatefulSet, isUpdate bool, reasons []string) { | ||||
| func (c *Cluster) logStatefulSetChanges(old, new *appsv1.StatefulSet, isUpdate bool, reasons []string) { | ||||
| 	if isUpdate { | ||||
| 		c.logger.Infof("statefulset %q has been changed", util.NameFromMeta(old.ObjectMeta)) | ||||
| 	} else { | ||||
|  |  | |||
|  | @ -16,8 +16,8 @@ import ( | |||
| 	apiextbeta1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/typed/apiextensions/v1beta1" | ||||
| 	apierrors "k8s.io/apimachinery/pkg/api/errors" | ||||
| 	"k8s.io/client-go/kubernetes" | ||||
| 	"k8s.io/client-go/kubernetes/typed/apps/v1beta1" | ||||
| 	v1core "k8s.io/client-go/kubernetes/typed/core/v1" | ||||
| 	appsv1 "k8s.io/client-go/kubernetes/typed/apps/v1" | ||||
| 	corev1 "k8s.io/client-go/kubernetes/typed/core/v1" | ||||
| 	policyv1beta1 "k8s.io/client-go/kubernetes/typed/policy/v1beta1" | ||||
| 	rbacv1beta1 "k8s.io/client-go/kubernetes/typed/rbac/v1beta1" | ||||
| 	"k8s.io/client-go/rest" | ||||
|  | @ -29,17 +29,17 @@ import ( | |||
| 
 | ||||
| // KubernetesClient describes getters for Kubernetes objects
 | ||||
| type KubernetesClient struct { | ||||
| 	v1core.SecretsGetter | ||||
| 	v1core.ServicesGetter | ||||
| 	v1core.EndpointsGetter | ||||
| 	v1core.PodsGetter | ||||
| 	v1core.PersistentVolumesGetter | ||||
| 	v1core.PersistentVolumeClaimsGetter | ||||
| 	v1core.ConfigMapsGetter | ||||
| 	v1core.NodesGetter | ||||
| 	v1core.NamespacesGetter | ||||
| 	v1core.ServiceAccountsGetter | ||||
| 	v1beta1.StatefulSetsGetter | ||||
| 	corev1.SecretsGetter | ||||
| 	corev1.ServicesGetter | ||||
| 	corev1.EndpointsGetter | ||||
| 	corev1.PodsGetter | ||||
| 	corev1.PersistentVolumesGetter | ||||
| 	corev1.PersistentVolumeClaimsGetter | ||||
| 	corev1.ConfigMapsGetter | ||||
| 	corev1.NodesGetter | ||||
| 	corev1.NamespacesGetter | ||||
| 	corev1.ServiceAccountsGetter | ||||
| 	appsv1.StatefulSetsGetter | ||||
| 	rbacv1beta1.RoleBindingsGetter | ||||
| 	policyv1beta1.PodDisruptionBudgetsGetter | ||||
| 	apiextbeta1.CustomResourceDefinitionsGetter | ||||
|  | @ -50,14 +50,14 @@ type KubernetesClient struct { | |||
| } | ||||
| 
 | ||||
| type mockSecret struct { | ||||
| 	v1core.SecretInterface | ||||
| 	corev1.SecretInterface | ||||
| } | ||||
| 
 | ||||
| type MockSecretGetter struct { | ||||
| } | ||||
| 
 | ||||
| type mockConfigMap struct { | ||||
| 	v1core.ConfigMapInterface | ||||
| 	corev1.ConfigMapInterface | ||||
| } | ||||
| 
 | ||||
| type MockConfigMapsGetter struct { | ||||
|  | @ -101,7 +101,7 @@ func NewFromConfig(cfg *rest.Config) (KubernetesClient, error) { | |||
| 	kubeClient.PersistentVolumesGetter = client.CoreV1() | ||||
| 	kubeClient.NodesGetter = client.CoreV1() | ||||
| 	kubeClient.NamespacesGetter = client.CoreV1() | ||||
| 	kubeClient.StatefulSetsGetter = client.AppsV1beta1() | ||||
| 	kubeClient.StatefulSetsGetter = client.AppsV1() | ||||
| 	kubeClient.PodDisruptionBudgetsGetter = client.PolicyV1beta1() | ||||
| 	kubeClient.RESTClient = client.CoreV1().RESTClient() | ||||
| 	kubeClient.RoleBindingsGetter = client.RbacV1beta1() | ||||
|  | @ -215,12 +215,12 @@ func (c *mockConfigMap) Get(name string, options metav1.GetOptions) (*v1.ConfigM | |||
| } | ||||
| 
 | ||||
| // Secrets to be mocked
 | ||||
| func (c *MockSecretGetter) Secrets(namespace string) v1core.SecretInterface { | ||||
| func (c *MockSecretGetter) Secrets(namespace string) corev1.SecretInterface { | ||||
| 	return &mockSecret{} | ||||
| } | ||||
| 
 | ||||
| // ConfigMaps to be mocked
 | ||||
| func (c *MockConfigMapsGetter) ConfigMaps(namespace string) v1core.ConfigMapInterface { | ||||
| func (c *MockConfigMapsGetter) ConfigMaps(namespace string) corev1.ConfigMapInterface { | ||||
| 	return &mockConfigMap{} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -82,7 +82,7 @@ def request_delete(cluster, path, **kwargs): | |||
| def resource_api_version(resource_type): | ||||
|     return { | ||||
|         'postgresqls': 'apis/acid.zalan.do/v1', | ||||
|         'statefulsets': 'apis/apps/v1beta1', | ||||
|         'statefulsets': 'apis/apps/v1', | ||||
|     }.get(resource_type, 'api/v1') | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue