You can scale most services running in Kubernetes from the
command line or in a configuration override. You can set scaling
parameters for Apigee hybrid runtime services in the
overrides.yaml
file.
Service | Implemented As | Scaling |
---|---|---|
Cassandra | ApigeeDatastore (CRD) | See Scaling Cassandra. |
Ingress/LoadBalancer | Deployment | Anthos Service Mesh uses Horizontal Pod Autoscaling (HPAs). |
Logger | DaemonSet | DaemonSets manage replicas of a pod on all nodes, so they scale when you scale the pods themselves. |
MART Apigee Connect Watcher |
ApigeeOrganization (CRD) | To scale via configuration, increase the value of the
Deployment's mart: replicaCountMax: 2 replicaCountMin: 1 watcher: replicaCountMax: 2 replicaCountMin: 1 connectAgent: replicaCountMax: 2 replicaCountMin: 1 These Deployments use a Horizontal Pod Autoscaler for autoscaling. Set
the Deployment object's For more information on setting configuration properties, see Manage runtime plane components. |
Runtime Synchronizer UDCA |
ApigeeEnvironment (CRD) | To scale via configuration, increase the value of the
replicaCountMin property for the udca , synchronizer ,
and/or runtime
stanzas in the overrides file. For example:
synchronizer: replicaCountMax: 10 replicaCountMin: 1 runtime: replicaCountMax: 10 replicaCountMin: 1 udca: replicaCountMax: 10 replicaCountMin: 1 Note: These changes apply to ALL environments in the overrides file. If you wish to customize scaling for each environment see Advanced configurations below. These deployments use a Horizontal Pod Autoscaler for
autoscaling. Set the Deployment object's
For more information on setting configuration properties, see Manage runtime plane components. |
Advanced configurations
In some scenarios, you may need to use advanced scaling options. Example scenarios include:
- Setting different scaling options for each environment. For example, where env1 has
a
minReplica
of 5 and env2 has aminReplica
of 2. - Setting different scaling options for each component within an environment. For example,
where the
udca
component has amaxReplica
of 5 and thesynchronizer
component has amaxReplica
of 2.
The following example shows how to use the kubernetes patch
command to change
the maxReplicas
property for the runtime
component:
- Create environment variables to use with the command:
export ENV=my-environment-name export NAMESPACE=apigee #the namespace where apigee is deployed export COMPONENT=runtime #can be udca or synchronizer export MAX_REPLICAS=2 export MIN_REPLICAS=1
- Apply the patch. Note that this example assumes that
kubectl
is in yourPATH
:kubectl patch apigeeenvironment -n $NAMESPACE \ $(kubectl get apigeeenvironments -n $NAMESPACE -o jsonpath='{.items[?(@.spec.name == "'$ENV'" )]..metadata.name}') \ --patch "$(echo -e "spec:\n components:\n $COMPONENT:\n autoScaler:\n maxReplicas: $MAX_REPLICAS\n minReplicas: $MIN_REPLICAS")" \ --type merge
- Verify the change:
kubectl get hpa -n $NAMESPACE