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):
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:
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:
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):
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:
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:
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):
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:
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:
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):
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:
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:
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):
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:
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:
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