Prepare Azure Resources for Kubernetes Edge
This page describes the Azure resources the Kubernetes edge needs, how to set them up, and how to reference them in the Helm values. Complete it before you install the Kubernetes edge on Azure.
The Kubernetes edge doesn’t create or change any Azure resources. It only reads and writes blobs in your Azure Blob Storage container and uses the Key Vault key for encryption. You provide all of these values in your Helm values file; none of them are shared with Ataccama.
Prerequisites checklist
| Resource | Required | Requirements |
|---|---|---|
Blob container in a storage account |
Yes |
Must exist before installation. See Storage account and container. |
RSA key in Azure Key Vault |
Only if result encryption is enabled |
An enabled RSA key that permits the |
Microsoft Entra ID app registration |
Yes |
Has a client secret and the permissions the Kubernetes edge needs. See App registration. |
Storage account and container
The Kubernetes edge uses one blob container in one storage account. On this page, "container" always means an Azure Blob Storage container, not a Kubernetes container. The container holds the results of data quality jobs (profiling results, invalid samples, and anomaly detection results) and temporary job data.
The results stay in the container. When users view them in Ataccama ONE, they’re read from the container by the DQ results reader, decrypted if you enabled result encryption, and sent to the platform over TLS.
Storage account settings
Create a standard general-purpose v2 (StorageV2) storage account with the following settings:
-
Redundancy: Choose locally redundant (LRS), zone-redundant (ZRS), or geo-redundant (GRS) storage based on your durability and disaster recovery requirements. The container holds the only copy of your data quality (DQ) results; Ataccama doesn’t keep one. If the container is lost, the results are no longer available in ONE.
-
Minimum TLS version: 1.2.
-
Anonymous blob access: Disabled.
-
Shared key access: We recommend disabling it. The Kubernetes edge authenticates with Microsoft Entra ID only and doesn’t use account keys, connection strings, or SAS tokens.
-
Hierarchical namespace: Not required.
-
Network access: The storage account must be reachable from the cluster, as the Kubernetes edge connects to it directly rather than through the Ataccama Edge gateway. If you use private endpoints, make sure the cluster can resolve the private DNS name.
Blob container
Create the container before you install the Kubernetes edge. The Kubernetes edge doesn’t create it, and jobs fail if it’s missing.
Every blob name starts with the edge instance name, so several edge instances could share one container. However, we recommend using a separate container for each instance, so that you can limit each instance’s access to its own container.
The Kubernetes edge writes the following blobs and deletes them when they are no longer needed:
| Blob prefix | Written by | Read by | Deleted by |
|---|---|---|---|
|
Plane manager |
Job pods |
Plane manager, after the job finishes |
|
Job pods |
DQ results reader |
DQ results reader, when the results are deleted in ONE |
Don’t configure retention or immutability policies on the container, and don’t apply lifecycle management rules to <edge>/dqstorage/, because they can delete or lock blobs that the Kubernetes edge or ONE still needs.
|
Job requests can be left behind, for example when a job can’t be started or a delete fails.
To clean them up, you can add a lifecycle management rule that deletes blobs under <edge>/executor/data/ after seven days or more.
Choose an age longer than your longest-running job and longer than any period the plane manager might be down.
If a job request is deleted while its job is pending or running, the job fails, and ONE never receives its final status.
Key Vault key
If you enable result encryption (keyManagement.enabled: true), the Kubernetes edge encrypts DQ results before writing them to the container.
It uses envelope encryption, where each result is encrypted with a data key, and the data key is wrapped with the public part of your RSA key.
When the results are read, the data key is unwrapped in Key Vault.
Without result encryption, the results are protected only by Azure Storage encryption at rest.
Create an RSA key with the following properties:
-
Key type: RSA, either software-protected or backed by a hardware security module (HSM), 2048 bits or more.
-
Permitted operations:
wrapKeyandunwrapKey. -
State: Enabled and within its activation and expiration dates.
In the Helm values, reference the key by name only, without a version.
Encrypted results are bound to the tenant, the edge instance name, the Key Vault, and the key name. Changing any of them makes existing results unreadable.
Rotate the Key Vault key
Each result records the key version it was encrypted with, and is decrypted with that version. When you rotate the key:
-
Keep the previous key versions enabled for as long as you need the results encrypted with them. A disabled or deleted version makes those results unreadable.
-
New results use the new version automatically, because each job looks up the current key version when it first writes an encrypted result.
App registration
The Kubernetes edge authenticates to the storage account and the Key Vault with a single Microsoft Entra ID identity, shared by the plane manager, job pods, and the DQ results reader. Create an app registration with a client secret, grant it the permissions listed in Required permissions, and reference it in the Helm values as described in Authentication modes.
Required permissions
The app registration requires the following permissions. How you grant them is up to you: through the built-in roles, custom roles, or direct role assignments.
| Resource | Operations | Azure data actions | Purpose |
|---|---|---|---|
Blobs in the container |
Read, write, delete |
|
Store and read job data and DQ results, and delete them when they are no longer needed. |
Key in the Key Vault |
Get key, unwrap key |
|
Read the public key and unwrap data keys. |
The built-in roles Storage Blob Data Contributor on the container and Key Vault Crypto Service Encryption User on the key cover these operations. If your Key Vault uses access policies instead of Azure RBAC, grant the Get and Unwrap Key key permissions.
No management plane permissions are needed, as the Kubernetes edge doesn’t list or create containers and doesn’t read account keys.
Authentication modes
Set the authentication mode in global.customerResources.azure.auth.type.
Use the clientSecret mode, which is the only supported mode.
See Kubernetes Edge Limitations.
| Mode | What you set up |
|---|---|
|
An app registration with a client secret, stored in a Kubernetes Secret. Rotate the secret before it expires. |
Configure the Helm values
All Azure settings go under global.customerResources in the Helm values.
The chart applies them to every component.
The tenant ID and client ID are set under the selected authentication type; there is no shared azure.auth.clientId key.
If a required value is missing, helm install fails and reports it.
The chart doesn’t check that the resources exist or that the identity has access to them.
Keys in the following table are relative to global.customerResources.
| Key | Description | Required |
|---|---|---|
|
Set to |
Yes |
|
Authentication mode.
Set to |
No |
|
Your Microsoft Entra tenant ID. |
Yes |
|
Client ID of the app registration. |
Yes |
|
Microsoft Entra sign-in endpoint.
Defaults to |
No |
|
Kubernetes Secret that holds the client secret. |
For |
|
Key in that secret that holds the client secret.
Defaults to |
No |
|
Storage account name. |
Yes |
|
Container name. |
Yes |
|
Set to |
No |
|
Key Vault URI, for example |
For result encryption |
|
Name of the RSA key, without a version. |
For result encryption |
Example: client secret
Create a Kubernetes Secret that holds the client secret:
kubectl create secret generic local-edge-azure -n <NAMESPACE> \
--from-literal=ATACCAMA_EDGE_JOB_CUSTOMER_AZURE_CLIENT_SECRET='<CLIENT_SECRET>'
Reference it in the Helm values:
global:
customerResources:
provider: azure
azure:
auth:
type: clientSecret
clientSecret:
tenantId: "<TENANT_ID>"
clientId: "<CLIENT_ID>"
existingSecret: local-edge-azure
resultStorage:
storageAccountName: "<STORAGE_ACCOUNT>"
containerName: "<CONTAINER>"
keyManagement:
enabled: true
keyVaultUri: "https://<VAULT>.vault.azure.net"
keyName: "<RSA_KEY>"
The plane manager, job pods, and the DQ results reader use this one Secret.
Next steps
-
Kubernetes Edge Network Access Requirements — Prepare egress rules from the cluster to your Azure resources, data sources, and the Ataccama Edge gateway.
-
Install a Kubernetes Edge with Helm — Install the chart with the values you configured on this page.
Was this page useful?