App Framework usage examples

App Framework configuration examples for supported custom resources and storage providers.

The following examples show App Framework configurations for Standalone, IngestorCluster, ClusterManager, and SearchHeadCluster custom resources across S3, Azure Blob, and GCP storage providers. Each storage provider section contains the same set of configurations, differing mainly in the values for storageType, provider, and endpoint.

Standalone

Deploy a Standalone CR with a remote storage volume, the location of the app archive, and the installation location using scope.

S3 YAML (Standalone.yaml):

CODE
apiVersion: enterprise.splunk.com/v4
kind: Standalone
metadata:
  name: stdln
  finalizers:
  - enterprise.splunk.com/delete-pvc
spec:
  replicas: 1
  appRepo:
    appsRepoPollIntervalSeconds: 600
    defaults:
      volumeName: volume_app_repo
      scope: local
    appSources:
      - name: networkApps
        location: networkAppsLoc/
      - name: authApps
        location: authAppsLoc/
    volumes:
      - name: volume_app_repo
        storageType: s3
        provider: aws
        path: bucket-app-framework/Standalone-us/
        endpoint: https://s3-us-west-2.amazonaws.com
        region: us-west-2
        secretRef: s3-secret

Volume variants for other providers (replace only the volumes stanza):

Azure Blob volumes snippet:

CODE
volumes:
  - name: volume_app_repo
    storageType: blob
    provider: azure
    path: bucket-app-framework/Standalone-us/
    endpoint: https://mystorageaccount.blob.core.windows.net
    secretRef: azureblob-secret

GCP GCS volumes snippet:

CODE
volumes:
  - name: volume_app_repo
    storageType: gcs
    provider: gcp
    path: bucket-app-framework/Standalone-us/
    endpoint: https://storage.googleapis.com
    secretRef: gcs-secret

Apply: kubectl apply -f Standalone.yaml

Ingestor Cluster

Deploy an IngestorCluster CR with a remote storage volume, the location of the app archive, and the installation location using scope.

S3 YAML (IngestorCluster.yaml):

CODE
apiVersion: enterprise.splunk.com/v4
kind: IngestorCluster
metadata:
  name: ic
  finalizers:
  - enterprise.splunk.com/delete-pvc
spec:
  replicas: 1
  appRepo:
    appsRepoPollIntervalSeconds: 600
    defaults:
      volumeName: volume_app_repo
      scope: local
    appSources:
      - name: networkApps
        location: networkAppsLoc/
      - name: authApps
        location: authAppsLoc/
    volumes:
      - name: volume_app_repo
        storageType: s3
        provider: aws
        path: bucket-app-framework/IngestorCluster-us/
        endpoint: https://s3-us-west-2.amazonaws.com
        region: us-west-2
        secretRef: s3-secret

Volume variants for other providers (replace only the volumes stanza):

Azure Blob volumes snippet:

CODE
volumes:
  - name: volume_app_repo
    storageType: blob
    provider: azure
    path: bucket-app-framework/IngestorCluster-us/
    endpoint: https://mystorageaccount.blob.core.windows.net
    secretRef: azureblob-secret

GCP GCS volumes snippet:

CODE
volumes:
  - name: volume_app_repo
    storageType: gcs
    provider: gcp
    path: bucket-app-framework/IngestorCluster-us/
    endpoint: https://storage.googleapis.com
    secretRef: gcs-secret

Apply: kubectl apply -f IngestorCluster.yaml

Indexer Cluster

This example installs apps on the Indexer Cluster and Cluster Manager by deploying a ClusterManager CR with a remote storage volume, the locations of the app archives, and scope values that support both local and cluster app path distribution.

S3 YAML (ClusterManager.yaml):

CODE
apiVersion: enterprise.splunk.com/v4
kind: ClusterManager
metadata:
  name: cm
  finalizers:
  - enterprise.splunk.com/delete-pvc
spec:
  appRepo:
    appsRepoPollIntervalSeconds: 900
    defaults:
      volumeName: volume_app_repo_us
      scope: cluster
    appSources:
      - name: networkApps
        location: networkAppsLoc/
      - name: clusterBase
        location: clusterBaseLoc/
      - name: adminApps
        location: adminAppsLoc/
        scope: local
    volumes:
      - name: volume_app_repo_us
        storageType: s3
        provider: aws
        path: bucket-app-framework/idxcAndCmApps/
        endpoint: https://s3-us-west-2.amazonaws.com
        region: us-west-2
        secretRef: s3-secret

Volume variants for other providers (replace only the volumes stanza):

Azure Blob volumes snippet:

CODE
volumes:
  - name: volume_app_repo_us
    storageType: blob
    provider: azure
    path: bucket-app-framework/idxcAndCmApps/
    endpoint: https://mystorageaccount.blob.core.windows.net
    secretRef: azureblob-secret

GCP GCS volumes snippet:

CODE
volumes:
  - name: volume_app_repo_us
    storageType: gcs
    provider: gcp
    path: bucket-app-framework/idxcAndCmApps/
    endpoint: https://storage.googleapis.com
    secretRef: gcs-secret

Apply: kubectl apply -f ClusterManager.yaml

Search Head Cluster

This example installs apps on the Deployer and Search Head Cluster by deploying a SearchHeadCluster CR with a storage volume, the locations of the app archives, and scope values that support both local and cluster app distribution.

S3 YAML (SearchHeadCluster.yaml):

CODE
apiVersion: enterprise.splunk.com/v4
kind: SearchHeadCluster
metadata:
  name: shc
  finalizers:
  - enterprise.splunk.com/delete-pvc
spec:
  replicas: 3
  appRepo:
    appsRepoPollIntervalSeconds: 900
    defaults:
      volumeName: volume_app_repo_us
      scope: cluster
    appSources:
      - name: searchApps
        location: searchAppsLoc/
      - name: machineLearningApps
        location: machineLearningAppsLoc/
      - name: adminApps
        location: adminAppsLoc/
        scope: local
    volumes:
      - name: volume_app_repo_us
        storageType: s3
        provider: aws
        path: bucket-app-framework/shcLoc-us/
        endpoint: https://s3-us-west-2.amazonaws.com
        region: us-west-2
        secretRef: s3-secret

Volume variants for other providers (replace only the volumes stanza):

Azure Blob volumes snippet:

CODE
volumes:
  - name: volume_app_repo_us
    storageType: blob
    provider: azure
    path: bucket-app-framework/shcLoc-us/
    endpoint: https://mystorageaccount.blob.core.windows.net
    secretRef: azureblob-secret

GCP GCS volumes snippet:

CODE
volumes:
  - name: volume_app_repo_us
    storageType: gcs
    provider: gcp
    path: bucket-app-framework/shcLoc-us/
    endpoint: https://storage.googleapis.com
    secretRef: gcs-secret

Apply: kubectl apply -f SearchHeadCluster.yaml

Install apps for both local and cluster scopes

If the same app needs both local and cluster scopes, use the same remote bucket folder in multiple appSources with different scopes. Each name in appSources must be unique, but location can be the same.

S3 YAML (SearchHeadCluster.yaml):

CODE
apiVersion: enterprise.splunk.com/v4
kind: SearchHeadCluster
metadata:
  name: shc
  finalizers:
  - enterprise.splunk.com/delete-pvc
spec:
  replicas: 3
  appRepo:
    appsRepoPollIntervalSeconds: 900
    defaults:
      volumeName: volume_app_repo_us
      scope: cluster
    appSources:
      - name: globalApps-cluster
        location: globalApps/
      - name: globalApps-local
        location: globalApps/
        scope: local
    volumes:
      - name: volume_app_repo_us
        storageType: s3
        provider: aws
        path: bucket-app-framework/shcLoc-us/
        endpoint: https://s3-us-west-2.amazonaws.com
        region: us-west-2
        secretRef: s3-secret

Volume variants for other providers (replace only the volumes stanza):

Azure Blob volumes snippet:

CODE
volumes:
  - name: volume_app_repo_us
    storageType: blob
    provider: azure
    path: bucket-app-framework/shcLoc-us/
    endpoint: https://mystorageaccount.blob.core.windows.net
    secretRef: azureblob-secret

GCP GCS volumes snippet:

CODE
volumes:
  - name: volume_app_repo_us
    storageType: gcs
    provider: gcp
    path: bucket-app-framework/shcLoc-us/
    endpoint: https://storage.googleapis.com
    secretRef: gcs-secret

Apply: kubectl apply -f SearchHeadCluster.yaml