Skip to main content

Deployment

Deploying the App Store

Depending on your DNS/Kubernetes Ingress setup, Deploying AI App Store can be as simple as:

$ helm upgrade --install h2oaic h2oaicloud \
--set config.address=https://appstore.<yourdomain> \
--set config.keycloak_address=http://auth.<yourdomain>

This command uses Helm to deploy the App Store in a hello-world style deployment, including all the required dependencies, such as a PostgreSQL database and Keycloak as the OIDC provider, ready to go.

Deploying the App Store onto Minikube or K3s is equally simple.

If you have questions or want to discuss deployments in your environment, please contact sales@h2o.ai.

App Store Server Deployment

The App Store is designed to run as a highly-available replicated Kubernetes Deployment. A Typical deployment consist of the following resources:

  • Service Accounts

    Two service accounts are required for this deployment: One for the App Store itself, and one for Wave apps launched by the App Store.

  • Kubernetes Secrets

    H2O AI Cloud stores sensitive information such as passwords, client secrets, etc. as Kubernetes secrets.

  • Kubernetes Service

    Exposes the App Store frontend. This service needs to be exposed via an Ingress to the end users.

  • DNS/TLS

    The App Store service needs to be exposed under a wildcard DNS entry/TLS cert (e.g., *.wave.h2o.ai). This is because the App Store uses the subdomains for exposing the individual app instances (i.e., <instance>.wave.h2o.ai).

  • ConfigMap

    The main configuration file for App Store server is defined as a TOML file in a Kubernetes ConfigMap.

  • Kubernetes Deployment

    The App Store server can de deployed as a replicated Kubernetes deployment with a single server container in each pod.

  • PostgreSQL

    The App Store server also requires a PostgreSQL database (>=11.0). Even though it is possible to deploy the database directly in Kubernetes (e.g., using the PostgreSQL helm chart), it is recommended to use a hosted cloud service.

  • Persistent Volume or Object Storage Bucket

    The App Store needs a storage for large objects, such as app bundles. For ease of deployment in test environments, the App Store can use a Kubernetes Persistent Volume. The recommended storage is, however, a cloud object storage bucket, such as AWS S3 or Azure Blob Storage.

Wave App Deployment

Each Wave application instance is deployed by the App Store using a helm chart. This helm chart is populated automatically given the values of the app.toml configuration file, as described in the developer guide

Each app is deployed as a 1-pod Kubernetes Deployment with ClusterIP Service and optional Config Map or Persistent Volume Claim(s).

The pod runs a single generic container image with App Store Launcher as the main process. See Overview for details on the Launcher.