App Framework specification fields

Spec field reference for App Framework configuration.

The App Framework configuration supports Standalone, IngestorCluster, ClusterManager, SearchHeadCluster, MonitoringConsole, and LicenseManager custom resources.

Configuring the App Framework requires:

  • Remote Source of Apps: Define the remote storage location, including unique folders, and the path to each folder.
  • Destination of Apps: Define which Custom Resources need to be configured.
  • Scope of Apps: Define if the apps need to be installed and run locally (such as Standalone, Monitoring Console, License Manager and Ingestor Cluster) or cluster-wide (such as Indexer Cluster, and Search Head Cluster.)

Here is a typical App framework configuration in a Custom Resource definition:

CODE
appRepo:
                description: Splunk Enterprise App repository. Specifies remote App
                  location and scope for Splunk App management
                properties:
                  appSources:
                    description: List of App sources on remote storage
                    items:
                      description: AppSourceSpec defines list of App package (*.spl,
                        *.tgz) locations on remote volumes
                      properties:
                        location:
                          description: Location relative to the volume path
                          type: string
                        name:
                          description: Logical name for the set of apps placed in
                            this location. Logical name must be unique to the appRepo
                          type: string
                        scope:
                          description: 'Scope of the App deployment: cluster,  local.
                            Scope determines whether the App(s) is/are installed locally
                            or cluster-wide'
                          type: string
                        volumeName:
                          description: Remote Storage Volume name
                          type: string
                      type: object
                    type: array
                  appsRepoPollIntervalSeconds:
                    description: Interval in seconds to check the Remote Storage for
                      App changes
                    type: integer
                  defaults:
                    description: Defines the default configuration settings for App
                      sources
                    properties:
                      scope:
                        description: 'Scope of the App deployment: cluster, local.
                          Scope determines whether the App(s) is/are installed locally
                          or cluster-wide'
                        type: string
                      volumeName:
                        description: Remote Storage Volume name
                        type: string
                    type: object
                  volumes:
                    description: List of remote storage volumes
                    items:
                      description: VolumeSpec defines remote volume config
                      properties:
                        endpoint:
                          description: Remote volume URI
                          type: string
                        name:
                          description: Remote volume name
                          type: string
                        path:
                          description: Remote volume path
                          type: string
                        provider:
                          description: App Package Remote Store provider. Currently supported providers are aws, minio and azure
                          type: string
                        region:
                          description: Region of the remote storage volume where apps
                            reside. Not required for azure.
                          type: string
                        secretRef:
                          description: Secret object name
                          type: string
                        storageType:
                          description: Remote Storage type. Possible values are s3 (works with aws and minio) or blob (works with azure)
                          type: string
                      type: object
                    type: array
                type: object

appRepo

appRepo is the start of the App Framework specification and contains all the configurations required for App Framework to be successfully configured.

volumes

volumes defines the remote storage configurations.

  • name uniquely identifies the remote storage volume name within a CR.
  • storageType describes the type of remote storage. Currently, s3 and blob are supported.
  • provider describes the remote storage provider. Currently, aws, minio, gcp, and azure are supported. Use s3 with aws or minio; use blob with azure or gcp.
  • endpoint describes the URI/URL of the remote storage endpoint that hosts the apps.
  • secretRef refers to the K8s secret object containing the static remote storage access key. Not required if using IAM role-based credentials.
  • path describes the path (including the folder) of one or more app sources on the remote store.

appSources

appSources defines the name and scope of the appSource, the remote storage volume, and its location.

Note: If an app source name needs to be changed, make sure the name change is persisted across the app framework spec and CR status. The Splunk Operator should automatically update the app path in the CR and on the pod on the next reconciliation.
  • name uniquely identifies the App source configuration within a CR.
  • scope defines the scope of the app to be installed.
    • local scope: apps installed and run locally on the pod referred to by the CR.
    • cluster scope: apps placed onto the configuration management node (Deployer, Cluster Manager) for deployment across the cluster.
    • Cluster scope is only supported on CRs that manage cluster-wide app deployment.
CRD Type Scope support App Framework support Local Scope Install Location Cluster Scope Install Location
ClusterManager cluster, local Yes $SPLUNK_HOME/etc/apps $SPLUNK_HOME/manager/apps
SearchHeadCluster cluster, local Yes $SPLUNK_HOME/etc/apps (deployer) $SPLUNK_HOME/etc/shcluster/apps/ (deployer), $SPLUNK_HOME/etc/apps (peers)
Standalone local Yes $SPLUNK_HOME/etc/apps N/A
LicenseManager local Yes $SPLUNK_HOME/etc/apps N/A
MonitoringConsole local Yes $SPLUNK_HOME/etc/apps N/A
IngestorCluster local Yes $SPLUNK_HOME/etc/apps N/A
IndexerCluster N/A No N/A $SPLUNK_HOME/etc/peer-apps
  • volume refers to the remote storage volume name configured under the volumes stanza.
  • location helps configure the specific appSource present under the path within the volume, containing the apps to be installed.

appsRepoPollIntervalSeconds

If app framework is enabled, the Splunk Operator creates a namespace-scoped configMap named splunk-<namespace>-manual-app-update, which is used to manually trigger app updates. By default, the App Framework polls the remote object storage location for new or changed apps at the appsRepoPollIntervalSeconds interval. To turn off the interval check and manage app updates manually, see the manual initiation of app management topic.