Skip to content

Commit

Permalink
Merge pull request #89 from gardener/support-k8s-v1.22
Browse files Browse the repository at this point in the history
Support for Kubernetes v1.22
  • Loading branch information
mandelsoft authored Sep 1, 2021
2 parents d8b93bf + 09e76cd commit d6e989f
Show file tree
Hide file tree
Showing 10 changed files with 724 additions and 28 deletions.
640 changes: 640 additions & 0 deletions charts/cert-management/templates/crds-v1.yaml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: Apache-2.0

{{- if .Values.createCRDs.issuers }}
{{- if and (not (.Capabilities.APIVersions.Has "apiextensions.k8s.io/v1")) .Values.createCRDs.issuers }}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
Expand Down Expand Up @@ -216,7 +216,7 @@ spec:
storage: true
{{- end }}
---
{{- if .Values.createCRDs.certificates }}
{{- if and (not (.Capabilities.APIVersions.Has "apiextensions.k8s.io/v1")) .Values.createCRDs.certificates }}
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
Expand Down
2 changes: 2 additions & 0 deletions cmd/cert-controller-manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (

coordinationv1 "k8s.io/api/coordination/v1"
corev1 "k8s.io/api/core/v1"
networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"

"github.com/gardener/controller-manager-library/pkg/controllermanager"
Expand Down Expand Up @@ -56,6 +57,7 @@ func init() {
MustRegister()

resources.Register(networkingv1beta1.SchemeBuilder)
resources.Register(networkingv1.SchemeBuilder)
resources.Register(corev1.SchemeBuilder)
resources.Register(dnsapi.SchemeBuilder)
resources.Register(v1alpha1.SchemeBuilder)
Expand Down
9 changes: 6 additions & 3 deletions examples/40-ingress-echoheaders.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: Apache-2.0

apiVersion: networking.k8s.io/v1beta1
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: echoheaders
Expand All @@ -22,6 +22,9 @@ spec:
http:
paths:
- backend:
serviceName: echoheaders
servicePort: 80
service:
name: echoheaders
port:
number: 80
path: /
pathType: Prefix
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.16
require (
github.com/ahmetb/gen-crd-api-reference-docs v0.2.0
github.com/emicklei/go-restful v2.11.1+incompatible // indirect
github.com/gardener/controller-manager-library v0.2.1-0.20210824121449-a0a838101d52
github.com/gardener/controller-manager-library v0.2.1-0.20210831082646-8ac5ffdda775
github.com/gardener/external-dns-management v0.7.21
github.com/go-acme/lego/v4 v4.1.3
github.com/go-openapi/spec v0.19.4 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/gardener/controller-manager-library v0.2.1-0.20201009144316-bfa57b871e60/go.mod h1:XMp1tPcX3SP/dMd+3id418f5Cqu44vydeTkBRbW8EvQ=
github.com/gardener/controller-manager-library v0.2.1-0.20210824121449-a0a838101d52 h1:xS8jAUcSpmRj8Axr5cCrMeoTiM1/vIWlNv9Rh1nCD18=
github.com/gardener/controller-manager-library v0.2.1-0.20210824121449-a0a838101d52/go.mod h1:E1Abd/nMB9pbwEiEHPADjsPgbJRJG90WlU28yim2DG4=
github.com/gardener/controller-manager-library v0.2.1-0.20210831082646-8ac5ffdda775 h1:9fvyRE5d4rc7jSfA1WzEdSIRZOgD3pEglibNB6FkMDQ=
github.com/gardener/controller-manager-library v0.2.1-0.20210831082646-8ac5ffdda775/go.mod h1:E1Abd/nMB9pbwEiEHPADjsPgbJRJG90WlU28yim2DG4=
github.com/gardener/external-dns-management v0.7.21 h1:fuRFc2fGs1hkR7CJ3D7IiDplTE5pfuZj+otmTP/YKjc=
github.com/gardener/external-dns-management v0.7.21/go.mod h1:QJM0IUSQhbK25ftg4ZvFHQuGuT7ScX6Xw4hCxO0j0IM=
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
Expand Down
58 changes: 48 additions & 10 deletions pkg/controller/source/ingress/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import (
"fmt"
"strings"

api "k8s.io/api/networking/v1beta1"
networkingv1 "k8s.io/api/networking/v1"
networkingv1beta1 "k8s.io/api/networking/v1beta1"

"github.com/gardener/controller-manager-library/pkg/controllermanager/controller"
"github.com/gardener/controller-manager-library/pkg/logger"
Expand Down Expand Up @@ -44,29 +45,31 @@ func NewIngressSource(_ controller.Interface) (source.CertSource, error) {
func (s *CIngressSource) GetCertsInfo(logger logger.LogContext, obj resources.Object, current *source.CertCurrentState) (*source.CertsInfo, error) {
info := s.NewCertsInfo(logger, obj)

data := obj.Data().(*api.Ingress)
annotValue, _ := resources.GetAnnotation(data, AnnotationPurposeKey)
labelValue, _ := resources.GetLabel(data, DeprecatedLabelNamePurpose)
annotValue, _ := resources.GetAnnotation(obj.Data(), AnnotationPurposeKey)
labelValue, _ := resources.GetLabel(obj.Data(), DeprecatedLabelNamePurpose)
managed := annotValue == AnnotationPurposeValueManaged || labelValue == DeprecatedLabelValueManaged
if !managed || data.Spec.TLS == nil {
tlsDataArray, err := extractTLSData(obj)
if err != nil {
return info, err
}
if !managed || tlsDataArray == nil {
return info, nil
}

cn, _ := resources.GetAnnotation(data, source.AnnotCommonName)
cn, _ := resources.GetAnnotation(obj.Data(), source.AnnotCommonName)
cn = strings.TrimSpace(cn)
var issuer *string
annotatedIssuer, ok := resources.GetAnnotation(data, source.AnnotIssuer)
annotatedIssuer, ok := resources.GetAnnotation(obj.Data(), source.AnnotIssuer)
if ok {
issuer = &annotatedIssuer
}
var err error
for _, tls := range data.Spec.TLS {
for _, tls := range tlsDataArray {
if tls.SecretName == "" {
err = fmt.Errorf("tls entry for hosts %s has no secretName", source.DomainsString(tls.Hosts))
continue
}
var domains []string
dnsnames, ok := resources.GetAnnotation(data, source.AnnotCertDNSNames)
dnsnames, ok := resources.GetAnnotation(obj.Data(), source.AnnotCertDNSNames)
if ok {
if cn != "" {
domains = []string{cn}
Expand All @@ -85,6 +88,41 @@ func (s *CIngressSource) GetCertsInfo(logger logger.LogContext, obj resources.Ob
return info, err
}

type tlsData struct {
SecretName string
Hosts []string
}

func extractTLSData(obj resources.Object) ([]*tlsData, error) {
array := []*tlsData{}
switch data := obj.Data().(type) {
case *networkingv1beta1.Ingress:
if data.Spec.TLS == nil {
return nil, nil
}
for _, item := range data.Spec.TLS {
array = append(array, &tlsData{
SecretName: item.SecretName,
Hosts: item.Hosts,
})
}
return array, nil
case *networkingv1.Ingress:
if data.Spec.TLS == nil {
return nil, nil
}
for _, item := range data.Spec.TLS {
array = append(array, &tlsData{
SecretName: item.SecretName,
Hosts: item.Hosts,
})
}
return array, nil
default:
return nil, fmt.Errorf("unexpected ingress type: %#v", obj.Data())
}
}

func mergeCommonName(cn string, hosts []string) []string {
if cn == "" {
return hosts
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ github.com/evanphx/json-patch/v5
github.com/fatih/color
# github.com/fsnotify/fsnotify v1.4.9
github.com/fsnotify/fsnotify
# github.com/gardener/controller-manager-library v0.2.1-0.20210824121449-a0a838101d52
# github.com/gardener/controller-manager-library v0.2.1-0.20210831082646-8ac5ffdda775
## explicit
github.com/gardener/controller-manager-library/hack
github.com/gardener/controller-manager-library/pkg/certmgmt
Expand Down

0 comments on commit d6e989f

Please sign in to comment.