Ingress await semantics are too strict
See original GitHub issueHi
After upgrading to version 3.10.1 We are getting this error on creation of a ingress object
the Kubernetes API server reported that “ingress-system/gateway-default-8i88hdw3” failed to fully initialize or become live: ‘gateway-default-8i88hdw3’ timed out waiting to be Ready Ingress has at least one rule that does not target any Service. Field ‘.spec.rules[].http.paths[].backend.service.name’ may not match any active Service
We are using a default Ingress object without any http rules other then host. This has allowed us to share TLS setting with other Ingress objects. This is suppoted by the nginx controller we use.
var defaultIngress = new Pulumi.Kubernetes.Networking.V1.Ingress(
GetLogicalName("default"), new IngressArgs
{
Metadata = new ObjectMetaArgs
{
Namespace = _namespace.Metadata.Apply(c => c.Name),
Annotations =
{
{ "nginx.ingress.kubernetes.io/ssl-redirect", "false" }
}
},
Spec = new IngressSpecArgs
{
IngressClassName = "nginx",
Tls ={
new IngressTLSArgs
{
Hosts = PublicIpFqdn,
SecretName = _certificate.Apply(c=> c.KubernetesSecretName)!
}
},
Rules = new IngressRuleArgs
{
Host = PublicIpFqdn
}
}
}, new()
{
Parent = this,
DependsOn = _chart.GetChildren()
});
Issue details
Steps to reproduce
- Provision a ingress object without any http rules
Expected: The update to have no breaking changes Actual: Did have a breaking change
Issue Analytics
- State:
- Created 2 years ago
- Comments:8 (5 by maintainers)
Top Results From Across the Web
Configuration keys - HAProxy Ingress
Configuration key Data type Scope Default value
acme‑emails email1,email2,… Global
acme‑endpoint Global
acme‑expiring number of days Global 30
Read more >Inter-Canister Query Calls (Community Consideration) - #37 by ulan ...
I chatted with Ulan about one-shot messaging a bit more. I really like the idea of using them for update calls but for...
Read more >Async/Await - Best Practices in Asynchronous Programming
Async void methods have different error-handling semantics. When an exception is thrown out of an async Task or async Task<T> method, that exception...
Read more >Deployment Graph — Ray 1.13.0 - the Ray documentation
Note: This feature is in Alpha, so APIs are subject to change. ... import InputNode @serve.deployment async def preprocessor(input_data: str): """Simple ...
Read more >await - JavaScript - MDN Web Docs
The await operator is used to wait for a Promise and get its fulfillment value. It can only be used inside an async...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
I am also running into this problem using the AWS ALB Controller + K8S Ingresses.
The ALB controller uses annotations to forward traffic to a specific target group and therefore the backend service name is not an actual K8S service. (see here: https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/ingress/annotations/#traffic-routing)
Here is my use case:
This results in error:
Ingress has at least one rule that does not target any Service. Field '.spec.rules[].http.paths[].backend.service.name' may not match any active Service
because the serviceforward-to-9443
does not exist, it is an AWS ALB Annotation.I renamed the issue to use this as a tracking issue to consider relaxing the constraints currently imposed for ingress await logic. The suggested workaround for the moment is to use the
pulumi.com/skipAwait: "true"
annotation on the affected ingress objects. However, attempts to extract loadbalancer addresses etc. will have to resort to refreshing or polling the ingress object in such cases.