Each App allows you to deploy to a single platform, by combining a Sandbox with your application and infrastructure code. This document outlines the supported platforms, and how you can use a platform that is not currently supported by Nuon.

While Nuon has first class support for the following platforms, terraform components can be used to provision any custom resources in a customer’s cloud account.

AWS EKS

Nuon supports running your App via AWS EKS. You can create apps that provision a completely new network (VPC) and k8s cluster, or use an existing customer managed network or cluster (using Inputs).

Nuon maintains the following EKS Sandboxes as GitHub repositories.

AWS EKS Sandbox

AWS EKS with Karpenter Sandbox

To use AWS EKS, configure your App with either of the following:

sandbox.toml
[public_repo]
directory = "."
repo      = "nuonco/aws-eks-sandbox"
branch    = "main"
sandbox.toml
[public_repo]
directory = "."
repo      = "nuonco/aws-eks-karpenter-sandbox"
branch    = "main"

AWS Serverless

If you have a serverless use case, we would love to hear more. Please get in touch.

Azure AKS

If you have an Azure app, customers who are asking for Azure deployments or are trying to sell into the EU, please get in touch.

Custom Infrastructure as Code

You can provision custom IAC resources on any platform using a terraform component.

This is useful for configuring additional resources such as databases, storage buckets and other resources that your application requires.

Supporting Multiple Platforms

You can support deploying your product to multiple platforms, by creating different Apps that reference the same component code.

Supporting Custom Platforms

If you would like to support third party cloud providers that Nuon does not natively support, you can use Inputs and Terraform Components. This is useful for managing things such as third party databases, AI tools, or even CDN providers alongside your application.

For example, if you would like to provision additional resources using a provider such as the Cloudflare Terraform Provider,

First, define an Input to require a customer api token:

nuon.<your-app>.toml
[inputs]
[[inputs.input]]
name         = "cloudflare_api_token"
description  = "Token to use for integrating with Cloudflare."
display_name = "Cloudflare API Token"
required     = true

Second, configure your terraform component to use this api token. This will be set as a terraform variable and can be used to configure the provider.

<your-component>.toml
[[components]]
name   = "cloudflare"
app_id = nuon_app.<your_app>.id
[[components.env_vars]]
name  = "cloudflare_api_token"
value = "{{.nuon.install.inputs.cloudflare_api_token}}"
[[components.vars]]
name  = "CLOUDFLARE_API_TOKEN"
value = "{{.nuon.install.inputs.cloudflare_api_token}}"

In some cases, customizations can be handled using a custom Sandbox, if they do not require a different cloud provider. Read more about customizing Sandboxes here.