Apache Spark Client Snap How-to - Manage Charmed Apache Spark Accounts

Manage Charmed Apache Spark Service Accounts

This is an introduction to the CLI interface for creating, managing and configuring Charmed Apache Spark service accounts.

Charmed Apache Spark service accounts are designed to work seamlessly with the Integration Hub for Apache Spark charm, allowing you to manage Apache Spark configuration using Juju relations. For more information about how to use the configuration hub see the How to guide.

The following commands assume that you have administrative permission on the namespaces (or on the Kubernetes cluster) so that the corresponding resources (such as service accounts, secrets, roles, and role bindings) can be created and deleted.

Create Service Account

In case using another namespace than default, make sure that it already exists in Kubernetes:

$ kubectl create namespace demonamespace
namespace/demonamespace created

Now we can define a service account within the scope of this namespace. In case we have a configuration file with default settings for the account, we can also include those when defining the account. The syntax of the config file is identical to Apache Spark Configuration Properties. For example:

$ echo "spark.kubernetes.deploy-mode=cluster" > /home/demouser/conf/spark-overrides.conf

The command below creates a service account associated with configuration properties provided either via property file or explicit configuration arguments. The flags --primary specifies that the newly created account will be the primary account to be used. (If another primary exists, the latter account primary flag will be set to false.)

spark-client.service-account-registry create --username demouser --namespace demonamespace  --primary --properties-file /home/demouser/conf/spark-overrides.conf  --conf spark.app.name=demo-spark-app-overrides

List all service accounts

To display a list of the service accounts available, and whether they are primary or service accounts:

spark-client.service-account-registry list

Add more entries to Service Account Configuration

To upsert into the existing configuration associated with the account:

spark-client.service-account-registry add-config --username demouser --namespace demonamespace  --properties-file /home/demouser/conf/spark-overrides.conf  --conf spark.app.name=demo-spark-app-overrides

Remove entries from Service Account Configuration

To remove the specified keys from the existing configuration associated with the account:

spark-client.service-account-registry remove-config --username demouser --namespace demonamespace  --conf conf.key1.to.remove --conf conf.key2.to.remove

Print configuration for a given Service Account

To print the configuration for a given service account:

spark-client.service-account-registry get-config --username demouser --namespace demonamespace 

Delete Service Account Configuration

To delete the configurations associated with a given service account:

spark-client.service-account-registry clear-config --username demouser --namespace demonamespace 

Inspect Primary Service Account

To find out which is the primary account, together with related configuration settings:

spark-client.service-account-registry get-primary

Cleanup a Service Account

To delete the service account together with the other resources created, e.g. secrets, role, role-bindings, etc.:

spark-client.service-account-registry delete --username demouser --namespace demonamespace