Nuon apps are versions of your application code and infrastructure that can be deployed into a customer cloud account. Please refer to the Terraform reference for full configuration options.

Nuon is designed to lift and shift your existing application and infrastructure code, so you can quickly create one or more B.Y.O.C. deployable versions of your product.

In most cases, setting up your app should only take an afternoon.

What Is An App?

When you first setup Nuon, you will map your existing product into one or more apps. A Nuon app is a fully configured version of your product that can be installed into your customer’s cloud account.

Each Nuon app consists of the following parts:

  • sandbox - the base infrastructure layer.
  • runner - the Nuon service that manages the install.
  • inputs - customer provider input values.
  • components - your application and infrastructure.

Nuon is designed so you can lift and shift your existing application and infrastructure into new deployment options. Most Nuon users will create multiple apps, to offer different “flavors” of B.Y.O.C. to their customers.

App Sandbox

The app sandbox is the base layer of each app, and is responsible for setting up any shared infrastructure to configure an install. In most cases, sandboxes consist of the following resources:

  • basic cloud account access and controls (such as IAM on AWS).
  • basic network infrastructure (such as an AWS VPC).
  • compute infrastructure (such as a Kubernetes or ECS cluster).

Read more about sandbox configuration here.

App Inputs

App inputs allow you to define different inputs that customer’s can provide. This enables you to create “configuration” knobs that your customers can manage to control your application.

App inputs are commonly used to:

  • allow users to select regions, and provide access to an account.
  • customize infrastructure versions, such as pinning a kubernetes cluster version.
  • re-use existing infrastructure, such as providing a vpc_id that has been granted access.

Read more about app inputs here.

App Components

App components are used to connect your existing application and infrastructure code to your Nuon app.

Components allow you to:

  • import existing images, or build Dockerfiles and sync these artifacts into customer accounts.
  • deploy helm charts
  • deploy terraform code

Nuon apps allow you to create dependencies between components and exposes a rich configuration language to share outputs between components for configuration. You can use variables to configure components with the outputs of other components.

App Runner

Nuon deploys an app runner into each install, which is responsible for managing the install. This runner performs the following actions:

  • deploys new container artifacts and infrastructure
  • monitors running software
  • manages releases, and updating/deprovisioning parts of the app
  • operations such as logs, and more.

Read more about app runner config here.

App Management

The cli exposes many operational commands to manage apps.

To see all available commands, run: nuon apps --help.

Pinning an App

You can pin an app, which will set it’s ID as a default argument to all app commands. This is helpful to avoid having to pass -a to each command.

Each example below assumes you have run nuon apps select first.

To show the currently pinned app:

App Management Commands

Commands for creating, deleting and viewing apps.

Create an app - create an app and kickstart a config file.

Get an app - get an app

List all apps - list all apps

rename - rename an app

Configuration

You can view various configs for an app, and sync configuration files using the CLI.

sync - sync config files

Sync all config files in the current directory:

Sync a single config file:

configs - list all config versions for an app

export-terraform - export the current application configuration as Terraform JSON.

runner-config - print the current runner config

sandbox-config - print the current sandbox config

input-config - print the current input config

App Metadata

You can add the following metadata to your application, which is used in installers:

  • display_name
  • description

This metadata can be added via a config file or terraform: