Ingress
Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give services externally-reachable urls, load balance traffic, terminate SSL, offer name based virtual hosting etc. This resource waits until its status is ready before registering success for create/update, and populating output properties from the current state of the resource. The following conditions are used to determine whether the resource creation has succeeded or failed:
Ingress object exists.
Endpoint objects exist with matching names for each Ingress path (except when Service type is ExternalName).
Ingress entry exists for '.status.loadBalancer.ingress'. If the Ingress has not reached a Ready state after 10 minutes, it will time out and mark the resource update as Failed. You can override the default timeout value by setting the 'customTimeouts' option on the resource.
Example Usage
Create an Ingress with auto-naming
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.kubernetes.networking.k8s.io_v1.Ingress;
import com.pulumi.kubernetes.networking.k8s.io_v1.IngressArgs;
import com.pulumi.kubernetes.meta_v1.inputs.ObjectMetaArgs;
import com.pulumi.kubernetes.networking.k8s.io_v1.inputs.IngressSpecArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var ingress = new Ingress("ingress", IngressArgs.builder()
.metadata(ObjectMetaArgs.builder()
.annotations(Map.of("nginx.ingress.kubernetes.io/rewrite-target", "/"))
.build())
.spec(IngressSpecArgs.builder()
.rules(IngressRuleArgs.builder()
.http(HTTPIngressRuleValueArgs.builder()
.paths(HTTPIngressPathArgs.builder()
.backend(IngressBackendArgs.builder()
.service(IngressServiceBackendArgs.builder()
.name("test")
.port(ServiceBackendPortArgs.builder()
.number(80)
.build())
.build())
.build())
.path("/testpath")
.pathType("Prefix")
.build())
.build())
.build())
.build())
.build());
}
}
Create an Ingress with a user-specified name
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.kubernetes.networking.k8s.io_v1.Ingress;
import com.pulumi.kubernetes.networking.k8s.io_v1.IngressArgs;
import com.pulumi.kubernetes.meta_v1.inputs.ObjectMetaArgs;
import com.pulumi.kubernetes.networking.k8s.io_v1.inputs.IngressSpecArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var ingress = new Ingress("ingress", IngressArgs.builder()
.metadata(ObjectMetaArgs.builder()
.annotations(Map.of("nginx.ingress.kubernetes.io/rewrite-target", "/"))
.name("minimal-ingress")
.build())
.spec(IngressSpecArgs.builder()
.rules(IngressRuleArgs.builder()
.http(HTTPIngressRuleValueArgs.builder()
.paths(HTTPIngressPathArgs.builder()
.backend(IngressBackendArgs.builder()
.service(IngressServiceBackendArgs.builder()
.name("test")
.port(ServiceBackendPortArgs.builder()
.number(80)
.build())
.build())
.build())
.path("/testpath")
.pathType("Prefix")
.build())
.build())
.build())
.build())
.build());
}
}