Skip to content

Commit

Permalink
Fix wrong API groups
Browse files Browse the repository at this point in the history
```improvement operator
A bug has been fixed that caused the REST Mapper to rediscover the available API resources very often.
```
  • Loading branch information
timebertt authored and rfranzke committed Aug 20, 2020
1 parent 69d00f1 commit 0a0b553
Show file tree
Hide file tree
Showing 3 changed files with 167 additions and 78 deletions.
1 change: 1 addition & 0 deletions pkg/client/kubernetes/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ func init() {
dnsscheme.AddToScheme,
gardenextensionsscheme.AddToScheme,
resourcesscheme.AddToScheme,
autoscalingscheme.AddToScheme,
hvpav1alpha1.AddToScheme,
druidv1alpha1.AddToScheme,
apiextensionsscheme.AddToScheme,
Expand Down
66 changes: 30 additions & 36 deletions pkg/operation/botanist/controlplane.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,11 @@ import (
hvpav1alpha1 "github.com/gardener/hvpa-controller/api/v1alpha1"
"github.com/sirupsen/logrus"
appsv1 "k8s.io/api/apps/v1"
autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime/serializer"
Expand All @@ -58,6 +58,7 @@ import (
auditv1alpha1 "k8s.io/apiserver/pkg/apis/audit/v1alpha1"
auditv1beta1 "k8s.io/apiserver/pkg/apis/audit/v1beta1"
auditvalidation "k8s.io/apiserver/pkg/apis/audit/validation"
autoscalingv1beta2 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1beta2"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
)
Expand Down Expand Up @@ -1147,38 +1148,33 @@ func (b *Botanist) DeployKubeAPIServer(ctx context.Context) error {
// If HVPA feature gate is enabled then we should delete the old HPA and VPA resources as
// the HVPA controller will create its own for the kube-apiserver deployment.
if hvpaEnabled {
for _, obj := range []struct {
apiGroup string
version string
kind string
name string
}{
{"autoscaling", "v2beta1", "HorizontalPodAutoscaler", v1beta1constants.DeploymentNameKubeAPIServer},
{"autoscaling.k8s.io", "v1beta2", "VerticalPodAutoscaler", v1beta1constants.DeploymentNameKubeAPIServer + "-vpa"},
for _, obj := range []runtime.Object{
&autoscalingv2beta1.HorizontalPodAutoscaler{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: v1beta1constants.DeploymentNameKubeAPIServer,
},
},
&autoscalingv1beta2.VerticalPodAutoscaler{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: v1beta1constants.DeploymentNameKubeAPIServer + "-vpa",
},
},
} {
u := &unstructured.Unstructured{}
u.SetName(obj.name)
u.SetNamespace(b.Shoot.SeedNamespace)
u.SetGroupVersionKind(schema.GroupVersionKind{
Group: obj.apiGroup,
Version: obj.version,
Kind: obj.kind,
})
if err := b.K8sSeedClient.Client().Delete(context.TODO(), u); client.IgnoreNotFound(err) != nil {
if err := b.K8sSeedClient.Client().Delete(ctx, obj); client.IgnoreNotFound(err) != nil {
return err
}
}
} else {
// If HVPA is disabled, delete any HVPA that was already deployed
u := &unstructured.Unstructured{}
u.SetName(v1beta1constants.DeploymentNameKubeAPIServer)
u.SetNamespace(b.Shoot.SeedNamespace)
u.SetGroupVersionKind(schema.GroupVersionKind{
Group: "autoscaling.k8s.io",
Version: "v1alpha1",
Kind: "Hvpa",
})
if err := b.K8sSeedClient.Client().Delete(context.TODO(), u); err != nil {
hvpa := &hvpav1alpha1.Hvpa{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: v1beta1constants.DeploymentNameKubeAPIServer,
},
}
if err := b.K8sSeedClient.Client().Delete(ctx, hvpa); err != nil {
if !apierrors.IsNotFound(err) && !meta.IsNoMatchError(err) {
return err
}
Expand Down Expand Up @@ -1602,15 +1598,13 @@ func (b *Botanist) DeployETCD(ctx context.Context) error {

if !hvpaEnabled {
// If HVPA is disabled, delete any HVPA that was already deployed
u := &unstructured.Unstructured{}
u.SetName(name)
u.SetNamespace(b.Shoot.SeedNamespace)
u.SetGroupVersionKind(schema.GroupVersionKind{
Group: "autoscaling.k8s.io",
Version: "v1alpha1",
Kind: "Hvpa",
})
if err := b.K8sSeedClient.Client().Delete(ctx, u); err != nil {
hvpa := &hvpav1alpha1.Hvpa{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: name,
},
}
if err := b.K8sSeedClient.Client().Delete(ctx, hvpa); err != nil {
if !apierrors.IsNotFound(err) && !meta.IsNoMatchError(err) {
return err
}
Expand Down
178 changes: 136 additions & 42 deletions pkg/operation/botanist/monitoring.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,15 @@ import (
"github.com/gardener/gardener/pkg/utils"
"github.com/gardener/gardener/pkg/utils/secrets"

appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
networkingv1 "k8s.io/api/networking/v1"
rbacv1 "k8s.io/api/rbac/v1"
"k8s.io/apimachinery/pkg/api/meta"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/runtime"
autoscalingv1beta2 "k8s.io/autoscaler/vertical-pod-autoscaler/pkg/apis/autoscaling.k8s.io/v1beta2"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
)
Expand Down Expand Up @@ -413,47 +417,137 @@ func (b *Botanist) DeleteSeedMonitoring(ctx context.Context) error {
return err
}

for _, obj := range []struct {
apiGroup string
version string
kind string
name string
}{
{"", "v1", "ServiceAccount", "kube-state-metrics-seed"},
{"", "v1", "RoleBinding", "kube-state-metrics-seed"},
{"", "v1", "Service", "kube-state-metrics-seed"},
{"apps", "v1", "Deployment", "kube-state-metrics-seed"},
{"autoscaling.k8s.io", "v1beta2", "VerticalPodAutoscaler", "kube-state-metrics-seed-vpa"},

{"", "v1", "Service", "kube-state-metrics"},
{"autoscaling.k8s.io", "v1beta2", "VerticalPodAutoscaler", "kube-state-metrics-vpa"},
{"apps", "v1", "Deployment", "kube-state-metrics"},

{"networking", "v1", "NetworkPolicy", "allow-from-prometheus"},
{"networking", "v1", "NetworkPolicy", "allow-prometheus"},
{"", "v1", "ConfigMap", "prometheus-config"},
{"", "v1", "ConfigMap", "prometheus-rules"},
{"", "v1", "ConfigMap", "blackbox-exporter-config-prometheus"},
{"", "v1", "Secret", "prometheus-basic-auth"},
{"extensions", "v1beta1", "Ingress", "prometheus"},
{"networking", "v1", "Ingress", "prometheus"},
{"autoscaling.k8s.io", "v1beta2", "VerticalPodAutoscaler", "prometheus-vpa"},
{"", "v1", "ServiceAccount", "prometheus"},
{"", "v1", "Service", "prometheus"},
{"", "v1", "Service", "prometheus-web"},
{"apps", "v1", "StatefulSet", "prometheus"},
{"rbac", "v1", "ClusterRoleBinding", "prometheus-" + b.Shoot.SeedNamespace},
{"", "v1", "PersistentVolumeClaim", "prometheus-db-prometheus-0"},
for _, obj := range []runtime.Object{
&corev1.ServiceAccount{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "kube-state-metrics-seed",
},
},
&rbacv1.RoleBinding{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "kube-state-metrics-seed",
},
},
&corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "kube-state-metrics-seed",
},
},
&appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "kube-state-metrics-seed",
},
},
&autoscalingv1beta2.VerticalPodAutoscaler{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "kube-state-metrics-seed-vpa",
},
},

&corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "kube-state-metrics",
},
},
&autoscalingv1beta2.VerticalPodAutoscaler{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "kube-state-metrics-vpa",
},
},
&appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "kube-state-metrics",
},
},

&networkingv1.NetworkPolicy{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "allow-from-prometheus",
},
},
&networkingv1.NetworkPolicy{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "allow-prometheus",
},
},
&corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus-config",
},
},
&corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus-rules",
},
},
&corev1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "blackbox-exporter-config-prometheus",
},
},
&corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus-basic-auth",
},
},
&extensionsv1beta1.Ingress{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus",
},
},
&autoscalingv1beta2.VerticalPodAutoscaler{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus-vpa",
},
},
&corev1.ServiceAccount{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus",
},
},
&corev1.Service{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus-web",
},
},
&appsv1.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus",
},
},
&rbacv1.ClusterRoleBinding{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus-" + b.Shoot.SeedNamespace,
},
},
&corev1.PersistentVolumeClaim{
ObjectMeta: metav1.ObjectMeta{
Namespace: b.Shoot.SeedNamespace,
Name: "prometheus-db-prometheus-0",
},
},
} {
u := &unstructured.Unstructured{}
u.SetName(obj.name)
u.SetNamespace(b.Shoot.SeedNamespace)
u.SetGroupVersionKind(schema.GroupVersionKind{
Group: obj.apiGroup,
Version: obj.version,
Kind: obj.kind,
})
if err := b.K8sSeedClient.Client().Delete(ctx, u); client.IgnoreNotFound(err) != nil && !meta.IsNoMatchError(err) {
if err := b.K8sSeedClient.Client().Delete(ctx, obj); client.IgnoreNotFound(err) != nil && !meta.IsNoMatchError(err) {
return err
}
}
Expand Down

0 comments on commit 0a0b553

Please sign in to comment.