Custom Domain Certificates

Draft

Abstract

This proposal introduces a mechanism for Akash Network tenant workloads to obtain SSL/TLS certificates for their configured custom domains, enabling secure HTTPS access to deployments.

Motivation

Currently, Akash Network deployments are accessible via the default ingress subdomain (e.g., *.ingress.akash.pub). To enhance the security and accessbility of deployments, tenants should have the ability to use custom domains with SSL/TLS certificates without relying on third party solutions such as Cloudflare.

Technical Details

Certificate Management (cert-manager)

  • cert-manager is a Kubernetes controller used to automate the management and issuance of TLS certificates.
  • It supports Let’s Encrypt and other certificate authorities.
  • On Akash, cert-manager runs as part of the provider infrastructure and handles certificate issuance for ingress resources.
  • It uses HTTP-01 challenges to validate domain ownership.
  • Users do not directly interact with cert-manager, but it powers the automatic issuance of certs based on deployment configuration and DNS records.

Ingress Controllers

  • Akash uses Kubernetes Ingress controllers (e.g., NGINX Ingress) to route external HTTP(S) traffic to tenant workloads.
  • Ingress resources define rules for routing and TLS termination.
  • The Akash provider manages ingress creation based on the deploy.yml service definitions (expose section).
  • HTTPS routing is enabled by specifying ports 443 and a custom domain in the manifest.

Deployment Manifest

  • The manifest file allows defining services, ports and accepted domains.
  • To use a custom domain:
expose:
- port: 80
to:
- global: true
- port: 443
to:
- global: true
accept:
- "www.example.com"
  • This instructs the provider to create an ingress rule and attempt TLS certificate issuance for the domain.

DNS Configuration

  • DNS setup is critical for domain validation and traffic routing.
  • Tenants must create a CNAME record pointing to their deployment’s ingress endpoint.
    • Example:
    • www.example.com -> deployment123.ingress.provider.akash.network
  • DNS propagation must complete before certificate issuance via Let’s Encrypt can succeed.

Certificate Lifecycle

  • Certificates are automatically requested, issued, and renewed via cert-manager.
  • Tenants do not manually manage TLS certs.
  • Failure to configure DNS correctly will prevent certificate issuance and may fall back to untrusted/self-signed certs.

Implementation

An implementation leveraging cert-manager would simplify the whole solution by simply configuring the ingress with specific annotations that would trigger certificate issuing. A TLS configuration would also need to be added to the Ingress instance created by the hostname operator pointing to the TLS secret with the accepted domains.

cert-manager watches Ingress resources across the Akash Provider cluster. If it observes an Ingress with annotations related to certificate issuing, it will ensure a Certificate resource with the name provided in the tls.secretName field and configured as described on the Ingress exists in the deployment namespace. An example Ingress:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: nameOfClusterIssuer
name: myIngress
namespace: myIngress
spec:
rules:
- host: example.com
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: myservice
port:
number: 80
tls:
- hosts:
- custom.domain.my
secretName: myingress-cert

With this, user workloads will be provided a valid and automatically managed certificate for their custom domains.

Estimated completion: 6/30/2026

Created: 5/13/2025

Last Updated: 7/7/2025

Category: Core

Status: Draft

Authors:

Joao Luna

View next aep

Estimated Completion: 7/15/2026

Tenants/ users of Akash expect to be able to see what amount of allocated resources are being used by their workloads so that they can better manage peak load and also optimize cost/ spend

Experience the Supercloud.