Skip to main content
Wildo.ai Coming soon

Environments and services

Give public services secure addresses

Derive public routes and certificate requests from the same environment addresses that the application advertises.

Public hostnames reach their services through ingress and TLS configuration.

Give public services secure addresses

A public application needs addresses that reach the right service and certificates that browsers can trust. Wildo derives public routes from the environment’s hostnames and connects the deployed edge to certificate issuance.

Choose the domain and service names, then make DNS and the deployed edge reachable. The configured edge or certificate controller handles issuance; the operator owns the environment in which it runs.

Example — Put the application and documentation on their own addresses

The application uses app.example.com, documentation uses docs.example.com and the website uses example.com. The same hostname declarations guide the ingress and the addresses given to application consumers.

For engineers

Declare the names and issuer

This fragment belongs in a remote Kubernetes environment. Provider identifiers and registry settings below are illustrative operator choices; the field shape and service-host pattern follow the production descriptor.

publicDomain: 'example.com',
serviceHosts: {
  app: 'app',
  docs: 'docs',
  website: '',
},
remoteProvider: {
  provider: 'scaleway',
  registryEndpoint: 'rg.fr-par.scw.cloud/example',
  acmeEmail: 'operations@example.com',
  tlsIssuer: WildoTlsIssuer.LETSENCRYPT_STAGING,
},

Import WildoTlsIssuer from @wildo-ai/platform-config-lib. Validate DNS and routing with the staging issuer, then select LETSENCRYPT_PROD for browser-trusted issuance. The staging certificate is intentionally not a production trust result.

Use the TLS owner for the selected runtime

The public hostname inputs are shared; certificate ownership differs:

RuntimeTLS owner and issuance inputsWhere certificate state lives
Remote Docker ComposeTraefik discovers the generated container routers, redirects HTTP to HTTPS and uses Let’s Encrypt HTTP-01 with remoteProvider.acmeEmail/letsencrypt/acme.json in the persistent wildo-letsencrypt volume
Remote Kubernetescert-manager uses the selected ClusterIssuer and its ACME registration email; the ingress requests certificates for its routed hostsKubernetes TLS Secrets, referenced by the ingress
Local Kubernetes edgeSeparate self-signed issuer and local wildcard certificateLocal cluster certificate/Secret resources; workstation trust is configured separately

The remote Compose application generator supplies the same resolved service hosts and ACME email to its Traefik template. Preserve its certificate volume across container recreation and make the HTTP challenge reachable. The Kubernetes tlsIssuer staging/production choice shown above does not configure the Compose resolver.

Follow the generated ingress

Wildo’s Kubernetes workflows install Traefik. kubernetes.ingressClass accepts traefik or omission; other controller values are rejected in authored and saved configuration. Application ingress and HTTP-01 challenge routing use that same supported class.

The shared public-host resolver produces ingress routes and advertised runtime endpoints. It rejects hostname collisions. The application ingress template enumerates those hosts, points each at its own service and adds the configured cert-manager.io/cluster-issuer annotation.

A per-ingress TLS secret can cover the hosts enumerated on that ingress. Do not interpret this as one independently generated certificate for every hostname. Remote issuer templates use HTTP-01, while the retained wildcard alternative is not part of that rendering path.

Keep CDN frontends outside the application edge

For a frontend with enabled: true in the environment’s cdn map, Wildo preserves its advertised public URL but removes its self-hosted deployment target and public route. Kubernetes therefore emits no nginx Deployment/Service or ingress route for that frontend; remote Compose emits no corresponding application container or Traefik router. Both consume the same filtered target list.

The CDN must serve that hostname through its own publishing, origin, DNS and TLS setup. Follow the frontend CDN publishing guide for that separate path.

Distinguish the local cluster edge

The local Kubernetes bootstrap applies the separate self-signed issuer and wildcard certificate for its local domain. It does not request a public certificate through the remote HTTP-01 path. Browser trust in that local authority is a separate machine concern; a successfully applied local certificate is not evidence of remote public issuance. Ordinary host-based local development endpoints remain a different topology from the cluster edge.

Keep controller work and operator work distinct

Wildo’s generated inputsEnvironment requirements
Host-to-service routesDNS reaches the deployed edge
Issuer and TLS annotationsCertificate controller and ingress controller are operating
Named certificate secretSuccessful challenge and certificate issuance
WebSocket affinity annotationsAppropriate application/session behavior behind the edge

The ingress template includes host-header pass-through and sticky-cookie routing. It does not add a general edge rate limiter or security-header policy; those belong to the application or the operator’s chosen edge configuration. Generated YAML alone does not establish successful remote issuance.

Building a B2B product or an internal tool?

Wildo is not self-service yet. Tell us what you have in mind and we will say plainly whether it fits, and what happens next.