Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add documentation for defining HorizontalPodAutoscaler #2133 #2159

Merged
merged 1 commit into from
Oct 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions documentation/asciidoc/stories/assembly_auto_scaling.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
ifdef::context[:parent-context: {context}]
[id='auto-scaling']
:context: scaling
= Auto Scaling

[role="_abstract"]
Kubernetes includes the `HorizontalPodAutoscaler` which allows StatefulSets or Deployments to be automatically scaled up or
down based upon specified metrics. The Infinispan CR exposes the `.status.scale` sub-resource, which enables `HorizontalPodAutoscaler`
resources to target the Infinispan CR.

Before defining a `HorizontalPodAutoscaler` configuration, consider the types of {brandname} caches that you define. Distributed
and Replicated caches have very different scaling requirements, so defining a `HorizontalPodAutoscaler` for server's running
a combination of these cache types may not be advantageous. For example, defining a `HorizontalPodAutoscaler` that scales
when memory usage reaches a certain percentage will allow overall cache capacity to be increased when defining Distributed
caches as cache entries are spread across pods, however it will not work with replicated cache as every pod hosts all cache
entries. Conversely, configuring a `HorizontalPodAutoscaler` based upon CPU usage will be more beneficial for clusters
with replicated cache as every pod contains all cache entries and so distributing read requests across additional nodes
will allow a greater number of requests to be processed simultaneously.

include::{topics}/proc_configuring_auto_scaling.adoc[leveloffset=+1]

IMPORTANT: HorizontalPodAutoscaler should be removed when upgrading a {brandname} cluster, as the automatic scaling will
cause the upgrade process to enter unexpected state, as the Operator needs to scale the cluster down to 0 pods.

// Restore the parent context.
ifdef::parent-context[:context: {parent-context}]
ifndef::parent-context[:!context:]
1 change: 1 addition & 0 deletions documentation/asciidoc/titles/stories.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ include::{stories}/assembly_network_access.adoc[leveloffset=+1]
include::{stories}/assembly_cross_site_replication.adoc[leveloffset=+1]
include::{stories}/assembly_monitoring.adoc[leveloffset=+1]
include::{stories}/assembly_anti_affinity.adoc[leveloffset=+1]
include::{stories}/assembly_auto_scaling.adoc[leveloffset=+1]
include::{stories}/assembly_cache_cr.adoc[leveloffset=+1]
include::{stories}/assembly_batch_cr.adoc[leveloffset=+1]
include::{stories}/assembly_backing_up_restoring.adoc[leveloffset=+1]
Expand Down
18 changes: 18 additions & 0 deletions documentation/asciidoc/topics/proc_configuring_auto_scaling.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[id='configuring_auto-scaling-{context}']
= Configuring HorizontalPodAutoscaler

[role="_abstract"]
Create a HorizontalPodAutoScaler resource that targets your Infinispan CR.

.Procedure

. Define a `HorizontalPodAutoscaler` resource in the same namespace as your `Infinispan` CR
+
[source,options="nowrap",subs=attributes+]
----
include::yaml/horizontal_pod_autoscaler.yaml[]
----
+
<1> The name of your `Infinispan` CR

NOTE: If using metric resource of type `cpu` or `memory`, you must configure request/limits for this resource in your `Infinispan` CR.
18 changes: 18 additions & 0 deletions documentation/asciidoc/topics/yaml/horizontal_pod_autoscaler.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: infinispan-auto
spec:
scaleTargetRef:
apiVersion: infinispan.org/v1
kind: Infinispan
name: example # <1>
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
Loading