Deployment of Applications

Deploy applications to attached clusters using the CLI

This topic describes how to use the CLI to deploy an application to attached clusters within a workspace. To use the Kommander UI to deploy applications, see Customize a workspace’s platform applications.

See Workspace Platform Applications for a list of all applications and those that are enabled by default.

Prerequisites

Before you begin, you must have:

Set the WORKSPACE_NAMESPACE environment variable to the name of the workspace’s namespace where the cluster is attached:

export WORKSPACE_NAMESPACE=<workspace_namespace>

Deploy the application

The list of available applications that can be deployed on the attached cluster can be found here.

  1. Deploy a supported application to your existing attached cluster with an AppDeployment resource.

  2. Within the AppDeployment, define the appRef to specify which App will be deployed:

    cat <<EOF | kubectl apply -f -
    apiVersion: apps.kommander.d2iq.io/v1alpha1
    kind: AppDeployment
    metadata:
      name: cert-manager-0.2.7
      namespace: ${WORKSPACE_NAMESPACE}
    spec:
      appRef:
        name: cert-manager-0.2.7
    EOF
    
  3. Create the resource in the workspace you just created, which instructs Kommander to deploy the AppDeployment to the KommanderClusters in the same workspace.

NOTE: The appRef.name must match the app name from the list of available applications.

Deploy an application with a custom configuration

  1. Provide the name of a ConfigMap in the AppDeployment, which provides custom configuration on top of the default configuration:

    cat <<EOF | kubectl apply -f -
    apiVersion: apps.kommander.d2iq.io/v1alpha1
    kind: AppDeployment
    metadata:
      name: metallb-0.12.2
      namespace: ${WORKSPACE_NAMESPACE}
    spec:
      appRef:
        name: metallb-0.12.2
      configOverrides:
        name: metallb-overrides-attached
    EOF
    
  2. Create the ConfigMap with the name provided in the step above, with the custom configuration:

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: ConfigMap
    metadata:
      namespace: ${WORKSPACE_NAMESPACE}
      name: metallb-overrides-attached
    data:
      values.yaml: |
        configInline:
          address-pools:
          - name: default
            protocol: layer2
            addresses:
            - 172.17.255.150-172.17.255.199
    EOF
    

Kommander waits for the ConfigMap to be present before deploying the AppDeployment to the attached clusters.

Verify applications

The applications are now deployed. Connect to the attached cluster and check the HelmReleases to verify the deployment:

kubectl get helmreleases -n ${WORKSPACE_NAMESPACE}
NAMESPACE               NAME        READY   STATUS                             AGE
workspace-test-vjsfq    metallb     True    Release reconciliation succeeded   7m3s

NOTE: Some of the supported applications have dependencies on other applications. See Workspace Platform Application Dependencies for that table.