Gateway HTTP01: Make docs better, only enable gateway solver if gateway API is found

Signed-off-by: Jake Sanders <i@am.so-aweso.me>
This commit is contained in:
Jake Sanders
2021-08-02 14:06:23 +01:00
parent 34a844b150
commit b38869b551
9 changed files with 103 additions and 87 deletions
+23 -14
View File
@@ -230,18 +230,29 @@ func buildControllerContext(ctx context.Context, opts *options.ControllerOptions
return nil, nil, fmt.Errorf("error creating kubernetes client: %s", err.Error())
}
// check if the gateway API CRDs are available
var gatewayAvailable bool
d := cl.Discovery()
resources, err := d.ServerResourcesForGroupVersion(gwapi.GroupVersion.String())
switch {
case apierrors.IsNotFound(err):
gatewayAvailable = false
log.Info("the Gateway API CRDs do not seem to be present, cert-manager will keep retrying watching for them")
case err != nil:
return nil, nil, fmt.Errorf("while checking if the Gateway API CRD is installed: %s", err.Error())
case len(resources.APIResources) == 0:
gatewayAvailable = false
log.Info("the Gateway API CRDs do not seem to be present, cert-manager will keep retrying watching for them")
default:
gatewayAvailable = true
}
// cert-manager will try watching the Gateway resources with an exponential
// back-off, which allows the user to install the CRDs after cert-manager
// itself. Let's let the user know that the CRDs have not been found yet.
if opts.EnabledControllers().Has(shimgw.ControllerName) {
d := cl.Discovery()
resources, err := d.ServerResourcesForGroupVersion(gwapi.GroupVersion.String())
switch {
case apierrors.IsNotFound(err):
log.Info("the Gateway API CRDs do not seem to be present, cert-manager will keep retrying watching for them")
case err != nil:
return nil, nil, fmt.Errorf("while checking if the Gateway API CRD is installed: %s", err.Error())
case len(resources.APIResources) == 0:
if !gatewayAvailable {
log.Info("the Gateway API CRDs do not seem to be present, cert-manager will keep retrying watching for them")
}
}
@@ -307,12 +318,10 @@ func buildControllerContext(ctx context.Context, opts *options.ControllerOptions
KubeSharedInformerFactory: kubeSharedInformerFactory,
SharedInformerFactory: sharedInformerFactory,
GWShared: gwSharedInformerFactory,
// TODO (@jakexks) / code reviewer: should this be automatically enabled or disabled based on discovering the gateway
// api or a flag?
GatewaySolverEnabled: true,
Namespace: opts.Namespace,
Clock: clock.RealClock{},
Metrics: metrics.New(log, clock.RealClock{}),
GatewaySolverEnabled: gatewayAvailable,
Namespace: opts.Namespace,
Clock: clock.RealClock{},
Metrics: metrics.New(log, clock.RealClock{}),
ACMEOptions: controller.ACMEOptions{
HTTP01SolverImage: opts.ACMEHTTP01SolverImage,
HTTP01SolverResourceRequestCPU: HTTP01SolverResourceRequestCPU,
+17 -17
View File
@@ -389,7 +389,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -906,7 +906,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -937,7 +937,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -1454,7 +1454,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -1863,7 +1863,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -2380,7 +2380,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP.
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -2411,7 +2411,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -2928,7 +2928,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -3338,7 +3338,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -3855,7 +3855,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -3865,7 +3865,7 @@ spec:
description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
type: string
ingressTemplate:
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -4403,7 +4403,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -4813,7 +4813,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -5330,7 +5330,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -5340,7 +5340,7 @@ spec:
description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
type: string
ingressTemplate:
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -5361,7 +5361,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -5878,7 +5878,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
+17 -17
View File
@@ -423,7 +423,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -940,7 +940,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -971,7 +971,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -1488,7 +1488,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -2109,7 +2109,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -2626,7 +2626,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP.
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -2657,7 +2657,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -3174,7 +3174,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -3797,7 +3797,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -4314,7 +4314,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -4324,7 +4324,7 @@ spec:
description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
type: string
ingressTemplate:
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -4862,7 +4862,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -5485,7 +5485,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -6002,7 +6002,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -6012,7 +6012,7 @@ spec:
description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
type: string
ingressTemplate:
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -6033,7 +6033,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -6550,7 +6550,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
+17 -17
View File
@@ -423,7 +423,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -940,7 +940,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -971,7 +971,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -1488,7 +1488,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -2109,7 +2109,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -2626,7 +2626,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP.
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -2657,7 +2657,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -3174,7 +3174,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -3797,7 +3797,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -4314,7 +4314,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -4324,7 +4324,7 @@ spec:
description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
type: string
ingressTemplate:
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -4862,7 +4862,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
@@ -5485,7 +5485,7 @@ spec:
additionalProperties:
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -6002,7 +6002,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
ingress:
description: The ingress based HTTP01 challenge solver will solve challenges by creating or modifying Ingress resources in order to route requests for '/.well-known/acme-challenge/XYZ' to 'challenge solver' pods that are provisioned by cert-manager for each Challenge to be completed.
@@ -6012,7 +6012,7 @@ spec:
description: The ingress class to use when creating Ingress resources to solve ACME challenges that use this challenge solver. Only one of 'class' or 'name' may be specified.
type: string
ingressTemplate:
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges
description: Optional ingress template used to configure the ACME challenge solver ingress used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -6033,7 +6033,7 @@ spec:
description: The name of the ingress resource that should have ACME challenge solving routes inserted into it in order to solve HTTP01 challenges. This is typically used in conjunction with ingress controllers like ingress-gce, which maintains a 1:1 mapping between external IPs and ingress resources.
type: string
podTemplate:
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges
description: Optional pod template used to configure the ACME challenge solver pods used for HTTP01 challenges.
type: object
properties:
metadata:
@@ -6550,7 +6550,7 @@ spec:
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
type: string
serviceType:
description: Optional service type for Kubernetes solver service
description: Optional service type for Kubernetes solver service. Supported values are NodePort or ClusterIP (default).
type: string
selector:
description: Selector selects a set of DNSNames on the Certificate resource that should be solved using this challenge solver. If not specified, the solver will be treated as the 'default' solver with the lowest priority, i.e. if any other solver has a more specific match, it will be used instead.
+8 -6
View File
@@ -198,6 +198,7 @@ type CertificateDNSNameSelector struct {
// Typically this is accomplished through creating 'routes' of some description
// that configure ingress controllers to direct traffic to 'solver pods', which
// are responsible for responding to the ACME server's HTTP requests.
// Only one of Ingress / Gateway can be specified.
type ACMEChallengeSolverHTTP01 struct {
// The ingress based HTTP01 challenge solver will solve challenges by
// creating or modifying Ingress resources in order to route requests for
@@ -213,7 +214,8 @@ type ACMEChallengeSolverHTTP01 struct {
}
type ACMEChallengeSolverHTTP01Ingress struct {
// Optional service type for Kubernetes solver service
// Optional service type for Kubernetes solver service. Supported values
// are NodePort or ClusterIP (default).
// +optional
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
@@ -232,12 +234,12 @@ type ACMEChallengeSolverHTTP01Ingress struct {
Name string `json:"name,omitempty"`
// Optional pod template used to configure the ACME challenge solver pods
// used for HTTP01 challenges
// used for HTTP01 challenges.
// +optional
PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"`
// Optional ingress template used to configure the ACME challenge solver
// ingress used for HTTP01 challenges
// ingress used for HTTP01 challenges.
// +optional
IngressTemplate *ACMEChallengeSolverHTTP01IngressTemplate `json:"ingressTemplate,omitempty"`
}
@@ -245,17 +247,17 @@ type ACMEChallengeSolverHTTP01Ingress struct {
// The ACMEChallengeSolverHTTP01Gateway solver will create HTTPRoute objects for a Gateway class
// routing to an ACME challenge solver pod.
type ACMEChallengeSolverHTTP01Gateway struct {
// Optional service type for Kubernetes solver service
// Optional service type for Kubernetes solver service. Supported values
// are NodePort or ClusterIP (default).
// +optional
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
// The labels to set on HTTPRoute resources to solve ACME
// challenges that use this challenge solver.
// +optional
Labels map[string]string `json:"labels,omitempty"`
// Optional pod template used to configure the ACME challenge solver pods
// used for HTTP01 challenges
// used for HTTP01 challenges.
// +optional
PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"`
}
+7 -5
View File
@@ -197,6 +197,7 @@ type CertificateDNSNameSelector struct {
// Typically this is accomplished through creating 'routes' of some description
// that configure ingress controllers to direct traffic to 'solver pods', which
// are responsible for responding to the ACME server's HTTP requests.
// Only one of Ingress / Gateway can be specified.
type ACMEChallengeSolverHTTP01 struct {
// The ingress based HTTP01 challenge solver will solve challenges by
// creating or modifying Ingress resources in order to route requests for
@@ -212,7 +213,8 @@ type ACMEChallengeSolverHTTP01 struct {
}
type ACMEChallengeSolverHTTP01Ingress struct {
// Optional service type for Kubernetes solver service
// Optional service type for Kubernetes solver service. Supported values
// are NodePort or ClusterIP (default).
// +optional
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
@@ -231,7 +233,7 @@ type ACMEChallengeSolverHTTP01Ingress struct {
Name string `json:"name,omitempty"`
// Optional pod template used to configure the ACME challenge solver pods
// used for HTTP01 challenges
// used for HTTP01 challenges.
// +optional
PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"`
@@ -242,17 +244,17 @@ type ACMEChallengeSolverHTTP01Ingress struct {
}
type ACMEChallengeSolverHTTP01Gateway struct {
// Optional service type for Kubernetes solver service
// Optional service type for Kubernetes solver service. Supported values
// are NodePort or ClusterIP (default).
// +optional
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
// The labels to set on HTTPRoute resources to solve ACME
// challenges that use this challenge solver.
// +optional
Labels map[string]string `json:"labels,omitempty"`
// Optional pod template used to configure the ACME challenge solver pods
// used for HTTP01 challenges
// used for HTTP01 challenges.
// +optional
PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"`
}
+7 -5
View File
@@ -197,6 +197,7 @@ type CertificateDNSNameSelector struct {
// Typically this is accomplished through creating 'routes' of some description
// that configure ingress controllers to direct traffic to 'solver pods', which
// are responsible for responding to the ACME server's HTTP requests.
// Only one of Ingress / Gateway can be specified.
type ACMEChallengeSolverHTTP01 struct {
// The ingress based HTTP01 challenge solver will solve challenges by
// creating or modifying Ingress resources in order to route requests for
@@ -212,7 +213,8 @@ type ACMEChallengeSolverHTTP01 struct {
}
type ACMEChallengeSolverHTTP01Ingress struct {
// Optional service type for Kubernetes solver service
// Optional service type for Kubernetes solver service. Supported values
// are NodePort or ClusterIP (default).
// +optional
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
@@ -231,7 +233,7 @@ type ACMEChallengeSolverHTTP01Ingress struct {
Name string `json:"name,omitempty"`
// Optional pod template used to configure the ACME challenge solver pods
// used for HTTP01 challenges
// used for HTTP01 challenges.
// +optional
PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"`
@@ -242,17 +244,17 @@ type ACMEChallengeSolverHTTP01Ingress struct {
}
type ACMEChallengeSolverHTTP01Gateway struct {
// Optional service type for Kubernetes solver service
// Optional service type for Kubernetes solver service. Supported values
// are NodePort or ClusterIP.
// +optional
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
// The labels to set on HTTPRoute resources to solve ACME
// challenges that use this challenge solver.
// +optional
Labels map[string]string `json:"labels,omitempty"`
// Optional pod template used to configure the ACME challenge solver pods
// used for HTTP01 challenges
// used for HTTP01 challenges.
// +optional
PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"`
}
+6 -5
View File
@@ -212,7 +212,8 @@ type ACMEChallengeSolverHTTP01 struct {
}
type ACMEChallengeSolverHTTP01Ingress struct {
// Optional service type for Kubernetes solver service
// Optional service type for Kubernetes solver service. Supported values
// are NodePort or ClusterIP (default).
// +optional
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
@@ -236,23 +237,23 @@ type ACMEChallengeSolverHTTP01Ingress struct {
PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"`
// Optional ingress template used to configure the ACME challenge solver
// ingress used for HTTP01 challenges
// ingress used for HTTP01 challenges.
// +optional
IngressTemplate *ACMEChallengeSolverHTTP01IngressTemplate `json:"ingressTemplate,omitempty"`
}
type ACMEChallengeSolverHTTP01Gateway struct {
// Optional service type for Kubernetes solver service
// Optional service type for Kubernetes solver service. Supported values
// are NodePort or ClusterIP (default).
// +optional
ServiceType corev1.ServiceType `json:"serviceType,omitempty"`
// The labels to set on HTTPRoute resources to solve ACME
// challenges that use this challenge solver.
// +optional
Labels map[string]string `json:"labels,omitempty"`
// Optional pod template used to configure the ACME challenge solver pods
// used for HTTP01 challenges
// used for HTTP01 challenges.
// +optional
PodTemplate *ACMEChallengeSolverHTTP01IngressPodTemplate `json:"podTemplate,omitempty"`
}
+1 -1
View File
@@ -59,7 +59,7 @@ func (s *Solver) ensureGatewayHTTPRoute(ctx context.Context, ch *cmacme.Challeng
return nil, err
}
return nil, fmt.Errorf("not implemented")
return httpRoute, nil
}
func (s *Solver) getGatewayHTTPRoute(ctx context.Context, ch *cmacme.Challenge) (*gwapi.HTTPRoute, error) {