App Profiles

App Profiles are templates created with preconfigured services required for Palette Virtual Cluster deployment. App Profiles provide a way to drive consistency across virtual clusters.

You create App Profiles to meet specific types of workloads on your Palette Virtual Clusters. For example, you may want to create an App Profile with Helm Charts, Manifests, and different database applications. You can create as many App Profiles as you need.

Several Services are available to build App Profiles.

Services

These basic Services are available:

  • Container Deployment: Containers are methods of building, packaging, and deploying an application. A container includes the code, run-time, libraries, and all the dependencies required by a containerized workload. Containers are deployed to their target environment. For steps on how to deploy a container in Palette, refer to Container Deployment.

  • Helm: Palette provides out-of-box Helm registries and allows you to add registries. For more information, visit Palette Helm Registry.

  • Manifest: You can construct App Profile layers using raw manifests to provision Kubernetes resources that are unavailable in Palette or Helm Charts. Pack Manifests provide a pass-through mechanism to orchestrate Kubernetes resources in a cluster. For example, specific integrations may require creation of Secrets or Custom Resource Definitions (CRDs). To achieve this, you can attach a Manifest file to the layer.

We encourage you to securely distribute credentials using secrets. You can achieve this by constructing manifests to consume parameters that use references. You can also add a manifest to create your Kubernetes secrets using macros to inject the values. In the App layer, set the environment variables using a Secret reference.

Example

apiVersion: v1
kind: Secret
metadata:
name: mysecret
namespace: {{.spectro.system.apptier.NAMESPACE}}
data:
namespace: "{{.spectro.system.apptier.NAMESPACE}}" # Resolves to a value of the variable defined in App Profile tier parameters.yaml file.
password: "{{.spectro.app.$appDepName-mongodb.PASSWORD}}" # To refer the tier output variables of the top tiers.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myweb
namespace: mywebnamespace
...
spec:
template:
...
containers:
- env:
- name: PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: password

When adding services to App Profiles using manifest files, specify a namespace name to which the resource belongs.

Messaging System Services

These Messaging System services are available for client-server data exchange and monitoring:

  • NATS
  • Kafka

Object Storage Services

MinIO is available as a distributed object storage system.


Database Services

These Database Services are available:

  • MongoDB
  • MySQL
  • PostgreSQl
  • Redis

Variables used in services follow a usage hierarchy. Variable values from the first services you add, which become the first layer in the App Profile stack, can pass to services you add next, which appear higher in the stack. Variable values cannot pass from the top service layers down.

To view the available output variables from lower layers in the stack, type {{.spectro.}} in a text editor.

Resources