UCF Application

A UCF application is the the description of a cloud application created using UCF microservices in UCF application graph specification format.

A UCF application consists of:

  • Basic Information - Application name, description, version

  • Documentation - Detailed documentation on how to build, deploy and interact with the application

  • Dependencies - A list of microservices used in the application and the versions of the microservices to use

  • Components - A list of microservices and other components to add to the application along with their configuration - parameters, secrets, etc.,

  • Connections - A list of connections between different microservices

UCF applications can be built to generate a deployable helm chart using UCF Studio or UCF Application Builder CLI. While building an application, the tools perform multiple validations like microservice parameter value validation, connection validation such as whether connected endpoints are compatible, other requirements satisfaction such as microservice secrets are specified.

List of available microservices and detailed information about microservices can be obtained using the UCF Studio GUI or the UCF Application Builder CLI tool.

Applications can be created based on the information provided by these tools.

Creating an Application

A UCF application can be created manually by writing a YAML in UCF application specification format or using the UCF Studio GUI. For more information, refer to Creating an Application

Sample Application - Visual Format

UCF Studio - Sample Application

Basic Information

Following information about the application is included:

Field

Description

specVersion

The UCF Specification version that the application adheres to. Current specVersion is 2.0.0

name

Application name

description

A short description of the application

version

Application version. Follows semantic versioning https://semver.org/

doc

Path to a file containing detailed documentation for the application

Dependencies

A list of microservices and their versions to use in the application. The format is a list of strings <microservice-type>:<microservice-version>. <microservice-version> can be a fixed version or in the format of NPM version range spec https://github.com/npm/node-semver#ranges

Components

A list of microservices and other components (like configmap) to add to the application along with their configuration. Each component should have:

Field

Description

name

A unique string identifier for the microservice/component so it can be referred to in other places in the application

type

Type of the microservice/component

parameters

An object to set parameter values of the microservice/component. Must follow the parameter schema of the component

secrets

Set secrets on the microservice. For more information refer to Fulfill the secrets in an UCF Application

Connections

Specifies the connections between microservices in the application in the format <microservice-name-with-egress-endpoint>/<egress-endpoint-name>: <microservice-name-with-ingress-endpoint>/<ingress-endpoint-name> or if the egress endpoint supports multiple connections (multi: true) -

<microservice-name-with-egress-endpoint>/<egress-endpoint-name>: [
    <microservice-name-with-ingress-endpoint1>/<ingress-endpoint-name1>,
    <microservice-name-with-ingress-endpoint2>/<ingress-endpoint-name2>
]

Secrets

Specifies the secrets used in the application and their configuration details. For more information refer to the Fulfill the secrets in an UCF Application.

Application Features

UCF applications provides certain features on top of microservices. These include:

  • Vault Agent (vaultAgent) - For Vault Server based Secrets Management. This section contains details on connection & authentication details for Vault. For more information, refer to Using Vault secrets.

  • Certificates (certificates) - For cert-managet based Certificate Management. This section contains details on certificates that should be added to an application. For more information, refer to Using cert-manager Certificate.