Apps are versions of your application code and infrastructure that can be deployed into a customer cloud account. 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.
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.

What Is An App?

When you first set up Nuon, you will map your existing product into one or more Apps. An App is a fully configured version of your product that can be installed into your customer’s cloud account.

How do you configure an App?

Each App is represented as multiple configuration .toml files and collectively known as a an App Config. Each App consists of the following parts:
  • Sandbox - The base infrastructure layer
  • Runner - The Nuon service that manages the install
  • Inputs - Customer-provided input values
  • Components - Your application and infrastructure

Sandbox

The 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.

Inputs

Inputs allow you to define different inputs that customers can provide to a App. This enables you to create “configuration” knobs that your customers can manage to control your application. 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 Inputs here.

Components

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
Apps allow you to create dependencies between components and expose a rich configuration language to share outputs between components for configuration. You can use variables to configure components with the outputs of other components. Read more about Components here.

READMEs

When running an App in an Install, you often need to document important info. It can also be nice to have some level of programmability, such being able to render a button that will trigger an Action. Additionally, this documentation must be rendered per-Install because certain values — such as URLs — will be different for each Install. App READMEs were introduced to support this. Each App has a readme text field where you can define a Markdown document which will be rendered in the Dashboard for each Install of that App. You can use all valid Markdown, including HTML. You can also use variables, so that the document will be custom-rendered for each Install. See the Using READMEs guide for more details.

App Management

The CLI exposes many operational commands to manage Nuon Apps. To see all available commands, run: nuon apps --help.

App Management Commands

Commands for creating, deleting, and viewing apps. Create a local App directory - Create a directory and name it after your App. This directory will contain your App’s configuration files.
mkdir your-app
cd your-app
Create an App - Create an app with no configuration files. e.g., so you can sync existing config files later. For consistency, use the same name as the directory you created above.
nuon apps create  \
  --name=your-app --no-template
Get an App - Get an app
nuon apps get
List all Apps - List all apps
nuon apps list
Rename - Rename an App
nuon apps rename --name=new-name

Pinning an App

You can pin an App, which will set its ID as a default argument to all app commands. This is helpful to avoid having to pass -a to each command.
nuon apps select
Each example below assumes you have run nuon apps select first.
To show the currently pinned App:
nuon apps current

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:
nuon apps sync
Configs - List all config versions for an app
nuon apps configs
Runner-config - Print the current Runner config
nuon apps runner-config
Sandbox-config - Print the current Sandbox config
nuon apps sandbox-config
Input-config - Print the current Input config
nuon apps 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:
nuon.<your-app>.toml
display_name = "Your App"
description = "your app"