Advanced Agent Configuration

Overview

The CloudCasa agent is composed of multiple containers, presided over by an Agent Manager. The Agent Manager acts somewhat like an operator, managing and updating the various agent components as necessary.

Some sites have complex requirements regarding labels, annotations, requests, limits, etc. that must be applied to the agent pods or namespaces. It is necessary to inform the Agent Manager of these, so that they are properly applied when agent components are updated/redeployed.

The Customize agent installation parameters section under Advanced options in the Edit cluster page allows administrators to configure these properties using YAML.

The YAML document for this has the following schema:

common:
  annotations:
  labels:
azure-files-rbac:
  cluster-roles:
    annotations:
    labels:
  cluster-role-bindings:
    annotations:
    labels:
  roles:
    annotations:
    labels:
  role-bindings:
    annotations:
    labels:
  service-accounts:
    annotations:
    labels:
cluster-role-bindings:
  cloudcasa-io:
    annotations:
    labels:
roles:
  data-mover:
    annotations:
    labels:
role-bindings:
  data-mover:
    annotations:
    labels:
service-accounts:
  cloudcasa-io:
    annotations:
    labels:
  data-mover:
    annotations:
    labels:
namespaces:
  cloudcasa-io:
    annotations:
    labels:
    applyToAllTemporaryCloudCasaNamespaces:
deployments:
  kubeagent:
    annotations:
    labels:
  cloudcasa-kubeagent-manager:
    annotations:
    labels:
pods:
  kubeagent:
    annotations:
    labels:
    priorityClass:
  cloudcasa-kubeagent-manager:
    annotations:
    labels:
    priorityClass:
  data-mover:
    annotations:
    labels:
    priorityClass:
  azure-files-mover:
    annotations:
    labels:
    priorityClass:
containers:
  kubeagent:
    securityContext:
    requests:
    limits:
    env:
  kubeagent-backup-helper:
    securityContext:
    requests:
    limits:
    env:
  kubeagentmanager:
    securityContext:
    requests:
    limits:
    env:
  data-mover:
    securityContext:
    env:
  azure-files-mover:
    securityContext:
    requests:
    limits:
    env:
services:
  kubeagent:
    annotations:
    labels:
    portName:
network-policies:
  allow-kubeagent-manager-traffic:
    annotations:
    labels:

Example

An example that simply configures CPU and memory requests and limits for the different agent components is:

containers:
  kubeagent:
    limits:
      cpu: 500m
      memory: 512Mi
    requests:
      cpu: 250m
      memory: 128Mi
  kubeagent-backup-helper:
    limits:
      cpu: 1000m
      memory: 1Gi
    requests:
      cpu: 500m
      memory: 128Mi
  kubeagentmanager:
    limits:
      cpu: 500m
      memory: 128Mi
    requests:
      cpu: 250m
      memory: 64Mi

Notes

  • Users must provide the entire securityContext section.

  • Annotations and labels set in the common section will be overwritten by the values set at the resource level.