Skip to main content
Support
0
Contact us
Nederlands
Deutsch
Español
Dedicated serversFlexible VPSCloud TechnologyColocationChallenges in ITSectorsCareers
Cloud Compute

With Cloud Compute, you have access anytime and anywhere to a portal through which you can configure your entire IT environment from wherever you are in the world.

Cloud Storage

Reliable access to your files, infrastructure, and applications at all times – with no interruptions or delays. At Worldstream, we offer a variety of storage solutions.

Flexible cloud icon
Flexible cloud
Private cloud icon
Private cloud
Bare metal icon
Bare Metal Compute
Hollow cube icon
Object storage
Hollow cube icon
File storage
Block storage icon
Block storage
Backup storage icon
Backup storage
Need support?

With experienced engineers and an average response time track record on 7 minutes, you can expect a solid technical support solution in next to no time.

All Servers

Choose your Dedicated Server now. Custom or Instant Delivery. Powerhouse servers built for your use case.

Use Cases

Whatever your use case, we’re here to help you find the ideal solution.

Deal servers icon
Deals
AMD servers icon
AMD Processors
AI servers icon
Intel Processors
Hollow cube icon
Virtualisation, Containerisation and Orchestration
Hollow cube icon
Websites and Applications
Hollow cube icon
Gaming and Streaming Infrastructure

24/7/365 support with an average response time of just 7 minutes. Thanks to our own data centers, our engineers can go directly to your server for fast, hands-on assistance. Email or call us anytime.

Smart outsourcing

Some IT creates added value, while other types are supportive. Use that as a starting point for outsourcing.

Cost Efficiency

Complete IT packages may seem like the safe option, but when you consider the costs, other choices often make more sense.

IT flexibility & control

Outsourcing doesn’t mean losing control; it actually provides more flexibility and control.

Cloud repatriation

The cloud is not a final destination: You should continuously evaluate and adjust your cloud environment as needs evolve.

Financial services
Logistics & Transportation
Retail & E-commerce
Media & Entertainment
Tech & Software Development
Security
Managed Service Providers
Need support?

With experienced engineers and an average response time track record on 7 minutes, you can expect a solid technical support solution in next to no time.

Chat with usContact us
About WorldstreamAbout the technologyCasesKnowledge base
About usMeet the teamJobsBecome a resellerCertificationsOur data centersOur networkDDoS ProtectionAMD EPYC serversTechnology PartnersOperating SystemsAll casesEasyTerraDutch Drone CompanyPerfGridArticlesFAQNews and BlogsProducts and Services
Contact us

Call +31 (0) 174 – 712 117

Industriestraat 53, Naaldwijk

Nederlands
Deutsch
Español
0
Dedicated serversFlexible VPSCloud TechnologyColocationChallenges in ITSectorsCareersAbout WorldstreamAbout the technologyCasesKnowledge baseMy Worldstream
Contact
Support
NederlandsDeutschEspañol
  1. HomeHome
  2. Knowledge Base
  3. Containers & Kubernetes
  4. Exposing services with Ingress and automatic TLS via cert-manager

Exposing services with Ingress and automatic TLS via cert-manager

Applies to Any self-managed Kubernetes clusterAudience Platform engineer, developerLast reviewed September 2026

Quick answer

A plain Kubernetes Service gives a set of pods a stable internal address. An Ingress, backed by an ingress controller such as nginx-ingress, adds HTTP(S) routing in front of that: host and path rules, and a single external entry point for many services. Layer cert-manager on top and it requests, renews, and attaches Let's Encrypt TLS certificates to that Ingress automatically, so you're not managing certificates by hand.

This is standard, open-source Kubernetes tooling, not specific to any provider. It works the same way regardless of which infrastructure your cluster runs on, see Self-managed Kubernetes on Worldstream: choosing your infrastructure if you haven't picked that yet.

Service vs. Ingress

A Service gives a stable virtual IP and DNS name to a set of pods selected by label, and load-balances traffic across them. That's enough for internal, pod-to-pod traffic, or for a LoadBalancer-type Service exposing one application externally. It doesn't give you HTTP-aware routing: no host-based rules, no path-based rules, and no shared entry point for multiple applications.

An Ingress resource sits a layer above that. It describes routing rules, "requests for shop.example.com go to the shop Service, requests for api.example.com/v1 go to the api Service", and an ingress controller running in the cluster (nginx-ingress is the most common, but Traefik and others exist too) reads those rules and does the actual routing. One ingress controller, and typically one external load balancer or public IP, can front many applications this way.

A basic Ingress manifest

This routes traffic for shop.example.com to a Service called shop-service on port 80.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: shop-ingress
  namespace: shop
spec:
  ingressClassName: nginx
  rules:
    - host: shop.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: shop-service
                port:
                  number: 80

At this point the Ingress serves plain HTTP. Getting HTTPS working means either attaching a certificate manually or, more sustainably, letting cert-manager handle issuance and renewal.

Adding cert-manager for automatic TLS

cert-manager is a Kubernetes add-on that watches for certificate requests and talks to a certificate authority, most commonly Let's Encrypt, to issue and renew them without manual intervention. It's installed once into the cluster, then configured with an Issuer or ClusterIssuer that describes which CA to use and how to prove domain ownership.

A ClusterIssuer using Let's Encrypt's HTTP-01 challenge, which proves domain ownership by serving a token over plain HTTP through the ingress controller, looks like this:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: platform-team@example.com
    privateKeySecretRef:
      name: letsencrypt-prod-key
    solvers:
      - http01:
          ingress:
            ingressClassName: nginx

With that ClusterIssuer in place, annotate the Ingress and add a tls block naming the secret cert-manager should create and keep up to date. cert-manager watches for this annotation, requests the certificate, and stores it in the named secret, renewing it automatically before it expires.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: shop-ingress
  namespace: shop
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - shop.example.com
      secretName: shop-tls
  rules:
    - host: shop.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: shop-service
                port:
                  number: 80

From here, cert-manager and the ingress controller do the ongoing work between them: the controller routes and terminates TLS, cert-manager keeps the certificate behind it valid. Check the status of a certificate at any point with kubectl get certificate -n shop and kubectl describe certificate shop-tls -n shop, the latter is the quickest way to see why an issuance attempt failed if the secret isn't appearing.

Related articles

  • Self-managed Kubernetes on Worldstream: choosing your infrastructure
  • Kubernetes RBAC basics: users, roles and service accounts
  • Managing Kubernetes applications with Helm
Was this article helpful?

Solid IT. No Surprises

Sparring partner for IT maturity
Eliminating barriers so you can run
Predictable and transparant costs

Contact

  • Industriestraat 53, Naaldwijk
  • Payment Methods
  • Abuse
  • Developers Resources
  • Network Operations Center
  • About us
  • Meet the team
  • Jobs
  • Become a reseller
  • Certifications
  • Our data centers
  • Our network
  • DDoS Protection
  • AMD EPYC servers
  • Technology Partners
  • Operating Systems
  • Overview
  • FAQ
  • Cases
  • News & Blogs
  • Use Cases
Nederlands
Deutsch
Español
Nederlands
Deutsch
Español
  • Legal
  • Disclosure