From da6b5098c0842adf91621729a0ae326b9c7e12cc Mon Sep 17 00:00:00 2001 From: Muhammad Raisul Islam Evan <92814653+Evanraisul@users.noreply.github.com> Date: Wed, 25 Sep 2024 16:49:30 +0600 Subject: [PATCH] Add Memcached doc (#671) * Started Quickstart Signed-off-by: Muhammad Raisul Islam Evan * QuickStart Done & started Concepts Memcached Signed-off-by: Muhammad Raisul Islam Evan * Memcached concepts, custom config & rbac Signed-off-by: Muhammad Raisul Islam Evan * Fix CLI private-registry Monitoring Signed-off-by: Muhammad Raisul Islam Evan * Add Ops Request Version-update & overview images Signed-off-by: Muhammad Raisul Islam Evan * Add Version-update Horizontal & Vertical Scaling Signed-off-by: Muhammad Raisul Islam Evan * Add Reconfiguration Signed-off-by: Muhammad Raisul Islam Evan * Update and fixed Reconfiguration Signed-off-by: Muhammad Raisul Islam Evan * Add Memcached Autoscaler Compute Signed-off-by: Muhammad Raisul Islam Evan * FIx Error Signed-off-by: Muhammad Raisul Islam Evan * Fix links Signed-off-by: Muhammad Raisul Islam Evan * Fixed Error Signed-off-by: Muhammad Raisul Islam Evan * Fix docs Signed-off-by: Muhammad Raisul Islam Evan * Fix Memcached quickstart image Signed-off-by: Muhammad Raisul Islam Evan * Fix Memcached issue Signed-off-by: Muhammad Raisul Islam Evan * Fix prometheus operator Signed-off-by: Muhammad Raisul Islam Evan * Fix issuses Signed-off-by: Muhammad Raisul Islam Evan * Fix autoscaling file Signed-off-by: Muhammad Raisul Islam Evan * Fix Autoscaler Signed-off-by: Muhammad Raisul Islam Evan * Change according to Review Signed-off-by: Muhammad Raisul Islam Evan * Fixed Links Signed-off-by: Muhammad Raisul Islam Evan * Update Name Signed-off-by: Muhammad Raisul Islam Evan * Fix elasticsearch update for terminationPolicy > deletionPolicy Signed-off-by: raihankhan --------- Signed-off-by: Muhammad Raisul Islam Evan Signed-off-by: raihankhan Co-authored-by: raihankhan --- .../memcached-autoscaler-compute.yaml | 24 + .../memcached/auto-scaler/memcached.yaml | 20 + .../{mc-custom.yaml => custom-memcached.yaml} | 3 +- .../custom-config/mc-configuration.yaml | 10 + .../monitoring/builtin-prom-memcd.yaml | 30 +- ...{coreos-prom-memcd.yaml => memcached.yaml} | 2 +- .../memcached/quickstart/demo-v1.yaml | 2 +- .../memcached/quickstart/demo-v1alpha2.yaml | 2 +- .../reconfigure/apply-config-reconfigure.yaml | 13 + .../config-secret-reconfigure.yaml | 12 + .../reconfigure/memcached-config.yaml | 11 + .../memcached/scaling/horizontal-scaling.yaml | 12 + .../scaling/memcached-horizontal.yaml | 20 + .../memcached/scaling/memcached-vertical.yaml | 20 + .../memcached/scaling/vertical-scaling.yaml | 18 + .../memcached/update-version/memcached.yaml | 20 + .../opsrequest-version-update.yaml | 11 + .../builtin-prometheus/prom-config.yaml | 68 --- .../monitoring/coreos-operator/demo-0.yaml | 108 ---- .../monitoring/coreos-operator/demo-1.yaml | 68 --- .../operator/builtin-prom-memcached.yaml | 34 ++ .../monitoring/operator/prom-config.yaml | 70 --- .../concepts/elasticsearch-dashboard/index.md | 16 +- .../elasticsearch-dashboard/kibana/index.md | 2 +- .../kibana/yamls/es-cluster-dashboard.yaml | 2 +- .../opensearch-dashboards/index.md | 2 +- .../yamls/os-cluster-dashboard.yaml | 2 +- .../overview/elasticsearch/index.md | 32 +- .../quickstart/overview/opensearch/index.md | 28 +- docs/guides/memcached/README.md | 38 +- docs/guides/memcached/autoscaler/_index.md | 10 + .../memcached/autoscaler/compute/_index.md | 10 + .../autoscaler/compute/compute-autoscale.md | 341 +++++++++++++ .../memcached/autoscaler/compute/overview.md | 55 ++ docs/guides/memcached/cli/cli.md | 33 +- docs/guides/memcached/concepts/appbinding.md | 99 ++-- .../concepts/memcached-autoscaler.md | 84 ++++ .../concepts/memcached-opsrequest.md | 292 +++++++++++ .../{catalog.md => memcached-version.md} | 31 +- docs/guides/memcached/concepts/memcached.md | 53 +- .../_index.md | 2 +- .../using-config-file.md | 119 ++--- .../custom-rbac/using-custom-rbac.md | 59 ++- docs/guides/memcached/monitoring/overview.md | 45 +- .../monitoring/using-builtin-prometheus.md | 62 ++- .../monitoring/using-prometheus-operator.md | 221 +++++--- .../using-private-registry.md | 45 +- .../guides/memcached/quickstart/quickstart.md | 405 ++++++++------- docs/guides/memcached/reconfigure/_index.md | 10 + docs/guides/memcached/reconfigure/overview.md | 54 ++ .../memcached/reconfigure/reconfigure.md | 472 ++++++++++++++++++ docs/guides/memcached/scaling/_index.md | 10 + .../scaling/horizontal-scaling/_index.md | 10 + .../horizontal-scaling/horizontal-scaling.md | 169 +++++++ .../scaling/horizontal-scaling/overview.md | 54 ++ .../scaling/vertical-scaling/_index.md | 10 + .../scaling/vertical-scaling/overview.md | 52 ++ .../vertical-scaling/vertical-scaling.md | 196 ++++++++ .../guides/memcached/update-version/_index.md | 10 + .../memcached/update-version/overview.md | 54 ++ .../update-version/update-version.md | 166 ++++++ .../memcached-autoscaling-compute.png | Bin 0 -> 73540 bytes .../memcached-horizontal-scaling.png | Bin 0 -> 78079 bytes docs/images/memcached/memcached-lifecycle.png | Bin 68355 -> 99582 bytes .../memcached/memcached-reconfigure.png | Bin 0 -> 77826 bytes .../memcached/memcached-version-update.png | Bin 0 -> 77625 bytes .../memcached/memcached-vertical-scaling.png | Bin 0 -> 77982 bytes 67 files changed, 3009 insertions(+), 924 deletions(-) create mode 100644 docs/examples/memcached/auto-scaler/memcached-autoscaler-compute.yaml create mode 100644 docs/examples/memcached/auto-scaler/memcached.yaml rename docs/examples/memcached/custom-config/{mc-custom.yaml => custom-memcached.yaml} (88%) create mode 100644 docs/examples/memcached/custom-config/mc-configuration.yaml rename docs/examples/memcached/monitoring/{coreos-prom-memcd.yaml => memcached.yaml} (97%) create mode 100644 docs/examples/memcached/reconfigure/apply-config-reconfigure.yaml create mode 100644 docs/examples/memcached/reconfigure/config-secret-reconfigure.yaml create mode 100644 docs/examples/memcached/reconfigure/memcached-config.yaml create mode 100644 docs/examples/memcached/scaling/horizontal-scaling.yaml create mode 100644 docs/examples/memcached/scaling/memcached-horizontal.yaml create mode 100644 docs/examples/memcached/scaling/memcached-vertical.yaml create mode 100644 docs/examples/memcached/scaling/vertical-scaling.yaml create mode 100644 docs/examples/memcached/update-version/memcached.yaml create mode 100644 docs/examples/memcached/update-version/opsrequest-version-update.yaml delete mode 100644 docs/examples/monitoring/builtin-prometheus/prom-config.yaml delete mode 100644 docs/examples/monitoring/coreos-operator/demo-0.yaml delete mode 100644 docs/examples/monitoring/coreos-operator/demo-1.yaml create mode 100644 docs/examples/monitoring/operator/builtin-prom-memcached.yaml delete mode 100644 docs/examples/monitoring/operator/prom-config.yaml create mode 100644 docs/guides/memcached/autoscaler/_index.md create mode 100644 docs/guides/memcached/autoscaler/compute/_index.md create mode 100644 docs/guides/memcached/autoscaler/compute/compute-autoscale.md create mode 100644 docs/guides/memcached/autoscaler/compute/overview.md create mode 100644 docs/guides/memcached/concepts/memcached-autoscaler.md create mode 100644 docs/guides/memcached/concepts/memcached-opsrequest.md rename docs/guides/memcached/concepts/{catalog.md => memcached-version.md} (74%) rename docs/guides/memcached/{configuration => custom-configuration}/_index.md (83%) rename docs/guides/memcached/{configuration => custom-configuration}/using-config-file.md (68%) create mode 100644 docs/guides/memcached/reconfigure/_index.md create mode 100644 docs/guides/memcached/reconfigure/overview.md create mode 100644 docs/guides/memcached/reconfigure/reconfigure.md create mode 100644 docs/guides/memcached/scaling/_index.md create mode 100644 docs/guides/memcached/scaling/horizontal-scaling/_index.md create mode 100644 docs/guides/memcached/scaling/horizontal-scaling/horizontal-scaling.md create mode 100644 docs/guides/memcached/scaling/horizontal-scaling/overview.md create mode 100644 docs/guides/memcached/scaling/vertical-scaling/_index.md create mode 100644 docs/guides/memcached/scaling/vertical-scaling/overview.md create mode 100644 docs/guides/memcached/scaling/vertical-scaling/vertical-scaling.md create mode 100644 docs/guides/memcached/update-version/_index.md create mode 100644 docs/guides/memcached/update-version/overview.md create mode 100644 docs/guides/memcached/update-version/update-version.md create mode 100644 docs/images/memcached/memcached-autoscaling-compute.png create mode 100644 docs/images/memcached/memcached-horizontal-scaling.png create mode 100644 docs/images/memcached/memcached-reconfigure.png create mode 100644 docs/images/memcached/memcached-version-update.png create mode 100644 docs/images/memcached/memcached-vertical-scaling.png diff --git a/docs/examples/memcached/auto-scaler/memcached-autoscaler-compute.yaml b/docs/examples/memcached/auto-scaler/memcached-autoscaler-compute.yaml new file mode 100644 index 0000000000..7f8ef5eec2 --- /dev/null +++ b/docs/examples/memcached/auto-scaler/memcached-autoscaler-compute.yaml @@ -0,0 +1,24 @@ +apiVersion: autoscaling.kubedb.com/v1alpha1 +kind: MemcachedAutoscaler +metadata: + name: mc-autoscaler + namespace: demo +spec: + databaseRef: + name: mc-autoscaler-compute + opsRequestOptions: + timeout: 3m + apply: IfReady + compute: + memcached: + trigger: "On" + podLifeTimeThreshold: 1m + resourceDiffPercentage: 20 + minAllowed: + cpu: 400m + memory: 400Mi + maxAllowed: + cpu: 1 + memory: 1Gi + controlledResources: ["cpu", "memory"] + containerControlledValues: "RequestsAndLimits" \ No newline at end of file diff --git a/docs/examples/memcached/auto-scaler/memcached.yaml b/docs/examples/memcached/auto-scaler/memcached.yaml new file mode 100644 index 0000000000..814deed916 --- /dev/null +++ b/docs/examples/memcached/auto-scaler/memcached.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: mc-autoscaler-compute + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 100m + memory: 100Mi + requests: + cpu: 100m + memory: 100Mi + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/memcached/custom-config/mc-custom.yaml b/docs/examples/memcached/custom-config/custom-memcached.yaml similarity index 88% rename from docs/examples/memcached/custom-config/mc-custom.yaml rename to docs/examples/memcached/custom-config/custom-memcached.yaml index 74c4786df8..17c561c7ae 100644 --- a/docs/examples/memcached/custom-config/mc-custom.yaml +++ b/docs/examples/memcached/custom-config/custom-memcached.yaml @@ -7,7 +7,7 @@ spec: replicas: 1 version: "1.6.22" configSecret: - name: mc-custom-config + name: mc-configuration podTemplate: spec: containers: @@ -19,3 +19,4 @@ spec: requests: cpu: 250m memory: 64Mi + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/memcached/custom-config/mc-configuration.yaml b/docs/examples/memcached/custom-config/mc-configuration.yaml new file mode 100644 index 0000000000..7d1f82a297 --- /dev/null +++ b/docs/examples/memcached/custom-config/mc-configuration.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +stringData: + memcached.conf: | + --conn-limit=500 + --memory-limit=512 +kind: Secret +metadata: + name: mc-configuration + namespace: demo + resourceVersion: "4505" \ No newline at end of file diff --git a/docs/examples/memcached/monitoring/builtin-prom-memcd.yaml b/docs/examples/memcached/monitoring/builtin-prom-memcd.yaml index 2b28e70826..14b873961c 100644 --- a/docs/examples/memcached/monitoring/builtin-prom-memcd.yaml +++ b/docs/examples/memcached/monitoring/builtin-prom-memcd.yaml @@ -10,13 +10,25 @@ spec: podTemplate: spec: containers: - - name: memcached - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 250m - memory: 64Mi + - name: memcached + resources: + limits: + cpu: 500m + memory: 256Mi + requests: + cpu: 500m + memory: 256Mi monitor: - agent: prometheus.io/builtin + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + exporter: + resources: + requests: + memory: 512Mi + cpu: 200m + limits: + memory: 512Mi + cpu: 250m \ No newline at end of file diff --git a/docs/examples/memcached/monitoring/coreos-prom-memcd.yaml b/docs/examples/memcached/monitoring/memcached.yaml similarity index 97% rename from docs/examples/memcached/monitoring/coreos-prom-memcd.yaml rename to docs/examples/memcached/monitoring/memcached.yaml index c714368ea1..6de478dca0 100644 --- a/docs/examples/memcached/monitoring/coreos-prom-memcd.yaml +++ b/docs/examples/memcached/monitoring/memcached.yaml @@ -4,7 +4,7 @@ metadata: name: coreos-prom-memcd namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" deletionPolicy: WipeOut podTemplate: diff --git a/docs/examples/memcached/quickstart/demo-v1.yaml b/docs/examples/memcached/quickstart/demo-v1.yaml index 0a1cde5727..c376609c1d 100644 --- a/docs/examples/memcached/quickstart/demo-v1.yaml +++ b/docs/examples/memcached/quickstart/demo-v1.yaml @@ -4,7 +4,7 @@ metadata: name: memcd-quickstart namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" podTemplate: spec: diff --git a/docs/examples/memcached/quickstart/demo-v1alpha2.yaml b/docs/examples/memcached/quickstart/demo-v1alpha2.yaml index e884ce699a..5513864248 100644 --- a/docs/examples/memcached/quickstart/demo-v1alpha2.yaml +++ b/docs/examples/memcached/quickstart/demo-v1alpha2.yaml @@ -4,7 +4,7 @@ metadata: name: memcd-quickstart namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" podTemplate: spec: diff --git a/docs/examples/memcached/reconfigure/apply-config-reconfigure.yaml b/docs/examples/memcached/reconfigure/apply-config-reconfigure.yaml new file mode 100644 index 0000000000..d03dd8a0c9 --- /dev/null +++ b/docs/examples/memcached/reconfigure/apply-config-reconfigure.yaml @@ -0,0 +1,13 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-reconfig + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: memcd-quickstart + configuration: + applyConfig: + memcached.conf: | + --conn-limit=3000 diff --git a/docs/examples/memcached/reconfigure/config-secret-reconfigure.yaml b/docs/examples/memcached/reconfigure/config-secret-reconfigure.yaml new file mode 100644 index 0000000000..cb72ce761c --- /dev/null +++ b/docs/examples/memcached/reconfigure/config-secret-reconfigure.yaml @@ -0,0 +1,12 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-reconfig + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: memcd-quickstart + configuration: + configSecret: + name: new-configuration diff --git a/docs/examples/memcached/reconfigure/memcached-config.yaml b/docs/examples/memcached/reconfigure/memcached-config.yaml new file mode 100644 index 0000000000..df88d5b121 --- /dev/null +++ b/docs/examples/memcached/reconfigure/memcached-config.yaml @@ -0,0 +1,11 @@ +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: memcd-quickstart + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + configSecret: + name: mc-configuration + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/memcached/scaling/horizontal-scaling.yaml b/docs/examples/memcached/scaling/horizontal-scaling.yaml new file mode 100644 index 0000000000..d070c94cb9 --- /dev/null +++ b/docs/examples/memcached/scaling/horizontal-scaling.yaml @@ -0,0 +1,12 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-horizontal-up + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: memcd-quickstart + horizontalScaling: + replicas: 5 + \ No newline at end of file diff --git a/docs/examples/memcached/scaling/memcached-horizontal.yaml b/docs/examples/memcached/scaling/memcached-horizontal.yaml new file mode 100644 index 0000000000..d18ccc91a5 --- /dev/null +++ b/docs/examples/memcached/scaling/memcached-horizontal.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: memcd-quickstart + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 128Mi + deletionPolicy: WipeOut diff --git a/docs/examples/memcached/scaling/memcached-vertical.yaml b/docs/examples/memcached/scaling/memcached-vertical.yaml new file mode 100644 index 0000000000..f8a72856c6 --- /dev/null +++ b/docs/examples/memcached/scaling/memcached-vertical.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: memcd-quickstart + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 128Mi + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/examples/memcached/scaling/vertical-scaling.yaml b/docs/examples/memcached/scaling/vertical-scaling.yaml new file mode 100644 index 0000000000..4be8166b0e --- /dev/null +++ b/docs/examples/memcached/scaling/vertical-scaling.yaml @@ -0,0 +1,18 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcached-mc + namespace: demo +spec: + type: VerticalScaling + databaseRef: + name: memcd-quickstart + verticalScaling: + memcached: + resources: + requests: + memory: "400Mi" + cpu: "500m" + limits: + memory: "400Mi" + cpu: "500m" \ No newline at end of file diff --git a/docs/examples/memcached/update-version/memcached.yaml b/docs/examples/memcached/update-version/memcached.yaml new file mode 100644 index 0000000000..0298f85437 --- /dev/null +++ b/docs/examples/memcached/update-version/memcached.yaml @@ -0,0 +1,20 @@ +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: memcd-quickstart + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 250m + memory: 64Mi + deletionPolicy: WipeOut diff --git a/docs/examples/memcached/update-version/opsrequest-version-update.yaml b/docs/examples/memcached/update-version/opsrequest-version-update.yaml new file mode 100644 index 0000000000..98cf5e32df --- /dev/null +++ b/docs/examples/memcached/update-version/opsrequest-version-update.yaml @@ -0,0 +1,11 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: update-memcd + namespace: demo +spec: + type: UpdateVersion + databaseRef: + name: memcd-quickstart + updateVersion: + targetVersion: 1.6.29 \ No newline at end of file diff --git a/docs/examples/monitoring/builtin-prometheus/prom-config.yaml b/docs/examples/monitoring/builtin-prometheus/prom-config.yaml deleted file mode 100644 index 45aee6317a..0000000000 --- a/docs/examples/monitoring/builtin-prometheus/prom-config.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: prometheus-config - labels: - app: prometheus-demo - namespace: monitoring -data: - prometheus.yml: |- - global: - scrape_interval: 5s - evaluation_interval: 5s - scrape_configs: - - job_name: 'kubedb-databases' - honor_labels: true - scheme: http - kubernetes_sd_configs: - - role: endpoints - # by default Prometheus server select all Kubernetes services as possible target. - # relabel_config is used to filter only desired endpoints - relabel_configs: - # keep only those services that has "prometheus.io/scrape","prometheus.io/path" and "prometheus.io/port" anootations - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape, __meta_kubernetes_service_annotation_prometheus_io_port] - separator: ; - regex: true;(.*) - action: keep - # currently KubeDB supported databases uses only "http" scheme to export metrics. so, drop any service that uses "https" scheme. - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] - action: drop - regex: https - # only keep the stats services created by KubeDB for monitoring purpose which has "-stats" suffix - - source_labels: [__meta_kubernetes_service_name] - separator: ; - regex: (.*-stats) - action: keep - # service created by KubeDB will have "app.kubernetes.io/name" and "app.kubernetes.io/instance" annotations. keep only those services that have these annotations. - - source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_name] - separator: ; - regex: (.*) - action: keep - # read the metric path from "prometheus.io/path: " annotation - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] - action: replace - target_label: __metrics_path__ - regex: (.+) - # read the port from "prometheus.io/port: " annotation and update scraping address accordingly - - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] - action: replace - target_label: __address__ - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: $1:$2 - # add service namespace as label to the scraped metrics - - source_labels: [__meta_kubernetes_namespace] - separator: ; - regex: (.*) - target_label: namespace - replacement: $1 - action: replace - # add service name as a label to the scraped metrics - - source_labels: [__meta_kubernetes_service_name] - separator: ; - regex: (.*) - target_label: service - replacement: $1 - action: replace - # add stats service's labels to the scraped metrics - - action: labelmap - regex: __meta_kubernetes_service_label_(.+) diff --git a/docs/examples/monitoring/coreos-operator/demo-0.yaml b/docs/examples/monitoring/coreos-operator/demo-0.yaml deleted file mode 100644 index 242438057d..0000000000 --- a/docs/examples/monitoring/coreos-operator/demo-0.yaml +++ /dev/null @@ -1,108 +0,0 @@ -apiVersion: v1 -kind: Namespace -metadata: - name: demo -spec: - finalizers: - - kubernetes ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: prometheus-operator -rules: -- apiGroups: - - extensions - resources: - - thirdpartyresources - verbs: - - "*" -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - "*" -- apiGroups: - - monitoring.coreos.com - resources: - - alertmanagers - - prometheuses - - servicemonitors - verbs: - - "*" -- apiGroups: - - apps - resources: - - statefulsets - verbs: ["*"] -- apiGroups: [""] - resources: - - configmaps - - secrets - verbs: ["*"] -- apiGroups: [""] - resources: - - pods - verbs: ["list", "delete"] -- apiGroups: [""] - resources: - - services - - endpoints - verbs: ["get", "create", "update"] -- apiGroups: [""] - resources: - - nodes - verbs: ["list", "watch"] -- apiGroups: [""] - resources: - - namespaces - verbs: ["list"] ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: prometheus-operator - namespace: demo ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: prometheus-operator -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: prometheus-operator -subjects: -- kind: ServiceAccount - name: prometheus-operator - namespace: demo ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: prometheus-operator - namespace: demo - labels: - operator: prometheus -spec: - replicas: 1 - selector: - matchLabels: - operator: prometheus - template: - metadata: - labels: - operator: prometheus - spec: - serviceAccountName: prometheus-operator - containers: - - name: prometheus-operator - image: quay.io/coreos/prometheus-operator:v0.16.0 - resources: - requests: - cpu: 100m - memory: 1Gi - limits: - cpu: 200m - memory: 100Mi diff --git a/docs/examples/monitoring/coreos-operator/demo-1.yaml b/docs/examples/monitoring/coreos-operator/demo-1.yaml deleted file mode 100644 index 97bb53a2b0..0000000000 --- a/docs/examples/monitoring/coreos-operator/demo-1.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: prometheus -rules: -- apiGroups: [""] - resources: - - nodes - - services - - endpoints - - pods - verbs: ["get", "list", "watch"] -- apiGroups: [""] - resources: - - configmaps - verbs: ["get"] -- nonResourceURLs: ["/metrics"] - verbs: ["get"] ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: prometheus - namespace: demo ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: prometheus -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: prometheus -subjects: -- kind: ServiceAccount - name: prometheus - namespace: demo ---- -apiVersion: monitoring.coreos.com/v1 -kind: Prometheus -metadata: - name: prometheus - namespace: demo -spec: - serviceAccountName: prometheus - serviceMonitorSelector: - matchLabels: - app: kubedb - version: v1.7.0 - resources: - requests: - memory: 400Mi ---- -apiVersion: v1 -kind: Service -metadata: - name: prometheus - namespace: demo -spec: - type: LoadBalancer - ports: - - name: web - nodePort: 30900 - port: 9090 - protocol: TCP - targetPort: web - selector: - prometheus: prometheus diff --git a/docs/examples/monitoring/operator/builtin-prom-memcached.yaml b/docs/examples/monitoring/operator/builtin-prom-memcached.yaml new file mode 100644 index 0000000000..14b873961c --- /dev/null +++ b/docs/examples/monitoring/operator/builtin-prom-memcached.yaml @@ -0,0 +1,34 @@ +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: builtin-prom-memcd + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + deletionPolicy: WipeOut + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 500m + memory: 256Mi + requests: + cpu: 500m + memory: 256Mi + monitor: + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + exporter: + resources: + requests: + memory: 512Mi + cpu: 200m + limits: + memory: 512Mi + cpu: 250m \ No newline at end of file diff --git a/docs/examples/monitoring/operator/prom-config.yaml b/docs/examples/monitoring/operator/prom-config.yaml deleted file mode 100644 index 87ca3250a7..0000000000 --- a/docs/examples/monitoring/operator/prom-config.yaml +++ /dev/null @@ -1,70 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: kubedb-operator-prom-config - labels: - app: kubedb - namespace: monitoring -data: - prometheus.yml: |- - global: - scrape_interval: 30s - scrape_timeout: 10s - evaluation_interval: 30s - scrape_configs: - - job_name: kubedb-operator - kubernetes_sd_configs: - - role: endpoints - # we have to provide certificate to establish tls secure connection - tls_config: - # public certificate of the extension apiserver that has been mounted in "/etc/prometheus/secret/" directory of prometheus server - ca_file: /etc/prometheus/secret/kubedb-operator-apiserver-cert/tls.crt - # dns name for which the certificate is valid - server_name: kubedb-operator.kube-system.svc - # bearer_token_file is required for authorizing prometheus server to extension apiserver - bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - # by default Prometheus server select all Kubernetes services as possible target. - # relabel_config is used to filter only desired endpoints - relabel_configs: - # keep only those services that has "prometheus.io/scrape: true" anootation. - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape] - regex: true - action: keep - # keep only those services that has "app: kubedb" label - - source_labels: [__meta_kubernetes_service_label_app] - regex: kubedb - action: keep - # keep only those services that has endpoint named "api" - - source_labels: [__meta_kubernetes_endpoint_port_name] - regex: api - action: keep - # read the metric path from "prometheus.io/path: " annotation - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path] - regex: (.+) - target_label: __metrics_path__ - action: replace - # read the scraping scheme from "prometheus.io/scheme: " annotation - - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme] - action: replace - target_label: __scheme__ - regex: (https?) - # read the port from "prometheus.io/port: " annotation and update scraping address accordingly - - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port] - action: replace - target_label: __address__ - regex: ([^:]+)(?::\d+)?;(\d+) - replacement: $1:$2 - # add service namespace as label to the scraped metrics - - source_labels: [__meta_kubernetes_namespace] - separator: ; - regex: (.*) - target_label: namespace - replacement: $1 - action: replace - # add service name as label to the scraped metrics - - source_labels: [__meta_kubernetes_service_name] - separator: ; - regex: (.*) - target_label: service - replacement: $1 - action: replace diff --git a/docs/guides/elasticsearch/concepts/elasticsearch-dashboard/index.md b/docs/guides/elasticsearch/concepts/elasticsearch-dashboard/index.md index 5845f0bfe6..b8adaad15c 100644 --- a/docs/guides/elasticsearch/concepts/elasticsearch-dashboard/index.md +++ b/docs/guides/elasticsearch/concepts/elasticsearch-dashboard/index.md @@ -41,12 +41,14 @@ spec: name: es-cluster podTemplate: spec: - resources: - limits: - memory: 1.5Gi - requests: - cpu: 500m - memory: 1.5Gi + containers: + - name: elasticsearch + resources: + limits: + memory: 1.5Gi + requests: + cpu: 500m + memory: 1.5Gi serviceTemplates: - alias: primary spec: @@ -56,7 +58,7 @@ spec: certificates: - alias: database-client secretName: es-cluster-client-cert - terminationPolicy: WipeOut + deletionPolicy: WipeOut ``` diff --git a/docs/guides/elasticsearch/elasticsearch-dashboard/kibana/index.md b/docs/guides/elasticsearch/elasticsearch-dashboard/kibana/index.md index 1b9f7d4b95..263a464684 100644 --- a/docs/guides/elasticsearch/elasticsearch-dashboard/kibana/index.md +++ b/docs/guides/elasticsearch/elasticsearch-dashboard/kibana/index.md @@ -429,7 +429,7 @@ spec: enableSSL: true databaseRef: name: es-cluster - terminationPolicy: WipeOut + deletionPolicy: WipeOut ``` > Note: Elasticsearch Database and Elasticsearch dashboard should have to be deployed in the same namespace. In this tutorial, we use demo namespace for both cases. diff --git a/docs/guides/elasticsearch/elasticsearch-dashboard/kibana/yamls/es-cluster-dashboard.yaml b/docs/guides/elasticsearch/elasticsearch-dashboard/kibana/yamls/es-cluster-dashboard.yaml index 2e7ed29694..d6757a9257 100644 --- a/docs/guides/elasticsearch/elasticsearch-dashboard/kibana/yamls/es-cluster-dashboard.yaml +++ b/docs/guides/elasticsearch/elasticsearch-dashboard/kibana/yamls/es-cluster-dashboard.yaml @@ -7,4 +7,4 @@ spec: enableSSL: true databaseRef: name: es-cluster - terminationPolicy: WipeOut \ No newline at end of file + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/guides/elasticsearch/elasticsearch-dashboard/opensearch-dashboards/index.md b/docs/guides/elasticsearch/elasticsearch-dashboard/opensearch-dashboards/index.md index ef370c2f16..de7a4c857b 100644 --- a/docs/guides/elasticsearch/elasticsearch-dashboard/opensearch-dashboards/index.md +++ b/docs/guides/elasticsearch/elasticsearch-dashboard/opensearch-dashboards/index.md @@ -417,7 +417,7 @@ spec: enableSSL: true databaseRef: name: os-cluster - terminationPolicy: WipeOut + deletionPolicy: WipeOut ``` > Note: OpenSearch Database and OpenSearch dashboard should have to be deployed in the same namespace. In this tutorial, we use `demo` namespace for both cases. diff --git a/docs/guides/elasticsearch/elasticsearch-dashboard/opensearch-dashboards/yamls/os-cluster-dashboard.yaml b/docs/guides/elasticsearch/elasticsearch-dashboard/opensearch-dashboards/yamls/os-cluster-dashboard.yaml index d844bffee6..0fb8d6a977 100644 --- a/docs/guides/elasticsearch/elasticsearch-dashboard/opensearch-dashboards/yamls/os-cluster-dashboard.yaml +++ b/docs/guides/elasticsearch/elasticsearch-dashboard/opensearch-dashboards/yamls/os-cluster-dashboard.yaml @@ -7,4 +7,4 @@ spec: enableSSL: true databaseRef: name: os-cluster - terminationPolicy: WipeOut \ No newline at end of file + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/guides/elasticsearch/quickstart/overview/elasticsearch/index.md b/docs/guides/elasticsearch/quickstart/overview/elasticsearch/index.md index f9c08b6638..755ade6dfd 100644 --- a/docs/guides/elasticsearch/quickstart/overview/elasticsearch/index.md +++ b/docs/guides/elasticsearch/quickstart/overview/elasticsearch/index.md @@ -169,40 +169,14 @@ $ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" > elasticsearch.kubedb.com/es-quickstart created ``` -```yaml -apiVersion: kubedb.com/v1alpha2 -kind: Elasticsearch -metadata: - name: es-quickstart - namespace: demo -spec: - version: xpack-8.2.3 - enableSSL: true - replicas: 3 - storageType: Durable - storage: - storageClassName: "standard" - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - terminationPolicy: Delete -``` - -```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/elasticsearch/quickstart/overview/elasticsearch/yamls/elasticsearch-v1alpha2.yaml -elasticsearch.kubedb.com/es-quickstart created -``` - Here, -- `spec.version` - is the name of the ElasticsearchVersion CR. Here, an Elasticsearch of version `8.2.0` will be created with `x-pack` security plugin. +- `spec.version` - is the name of the ElasticsearchVersion CR. Here, an Elasticsearch of version `8.2.3` will be created with `x-pack` security plugin. - `spec.enableSSL` - specifies whether the HTTP layer is secured with certificates or not. - `spec.replicas` - specifies the number of Elasticsearch nodes. - `spec.storageType` - specifies the type of storage that will be used for Elasticsearch database. It can be `Durable` or `Ephemeral`. The default value of this field is `Durable`. If `Ephemeral` is used then KubeDB will create the Elasticsearch database using `EmptyDir` volume. In this case, you don't have to specify `spec.storage` field. This is useful for testing purposes. - `spec.storage` specifies the StorageClass of PVC dynamically allocated to store data for this database. This storage spec will be passed to the StatefulSet created by the KubeDB operator to run database pods. You can specify any StorageClass available in your cluster with appropriate resource requests. If you don't specify `spec.storageType: Ephemeral`, then this field is required. -- `spec.terminationPolicy` or `spec.deletionPolicy` specifies what KubeDB should do when a user try to delete Elasticsearch CR. Termination policy `Delete` will delete the database pods, secret and PVC when the Elasticsearch CR is deleted. +- `spec.deletionPolicy` or `spec.deletionPolicy` specifies what KubeDB should do when a user try to delete Elasticsearch CR. Termination policy `Delete` will delete the database pods, secret and PVC when the Elasticsearch CR is deleted. > Note: `spec.storage` section is used to create PVC for database pod. It will create PVC with storage size specified in the `storage.resources.requests` field. Don't specify `limits` here. PVC does not get resized automatically. @@ -657,7 +631,7 @@ namespace "demo" deleted If you are just testing some basic functionalities, you might want to avoid additional hassles due to some safety features that are great for the production environment. You can follow these tips to avoid them. 1. **Use `storageType: Ephemeral`**. Databases are precious. You might not want to lose your data in your production environment if the database pod fails. So, we recommend to use `spec.storageType: Durable` and provide storage spec in `spec.storage` section. For testing purposes, you can just use `spec.storageType: Ephemeral`. KubeDB will use [emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) for storage. You will not require to provide `spec.storage` section. -2. **Use `terminationPolicy: WipeOut`**. It is nice to be able to resume the database from the previous one. So, we preserve all your `PVCs` and auth `Secrets`. If you don't want to resume the database, you can just use `spec.terminationPolicy: WipeOut`. It will clean up every resouce that was created with the Elasticsearch CR. For more details, please visit [here](/docs/guides/elasticsearch/concepts/elasticsearch/index.md#specterminationpolicy). +2. **Use `deletionPolicy: WipeOut`**. It is nice to be able to resume the database from the previous one. So, we preserve all your `PVCs` and auth `Secrets`. If you don't want to resume the database, you can just use `spec.deletionPolicy: WipeOut`. It will clean up every resouce that was created with the Elasticsearch CR. For more details, please visit [here](/docs/guides/elasticsearch/concepts/elasticsearch/index.md#specdeletionPolicy). ## Next Steps diff --git a/docs/guides/elasticsearch/quickstart/overview/opensearch/index.md b/docs/guides/elasticsearch/quickstart/overview/opensearch/index.md index bda71bbf17..100e49a854 100644 --- a/docs/guides/elasticsearch/quickstart/overview/opensearch/index.md +++ b/docs/guides/elasticsearch/quickstart/overview/opensearch/index.md @@ -164,32 +164,6 @@ $ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" > elasticsearch.kubedb.com/es-quickstart created ``` -```yaml -apiVersion: kubedb.com/v1alpha2 -kind: Elasticsearch -metadata: - name: sample-opensearch - namespace: demo -spec: - version: opensearch-2.8.0 - enableSSL: true - replicas: 3 - storageType: Durable - storage: - storageClassName: "standard" - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - terminationPolicy: DoNotTerminate -``` - -```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/guides/elasticsearch/quickstart/overview/opensearch/yamls/opensearch-v1alpha2.yaml -elasticsearch.kubedb.com/es-quickstart created -``` - Here, - `spec.version` - is the name of the ElasticsearchVersion CR. Here, we are using `opensearch-2.8.0` version. @@ -197,7 +171,7 @@ Here, - `spec.replicas` - specifies the number of OpenSearch nodes. - `spec.storageType` - specifies the type of storage that will be used for OpenSearch database. It can be `Durable` or `Ephemeral`. The default value of this field is `Durable`. If `Ephemeral` is used then KubeDB will create the OpenSearch database using `EmptyDir` volume. In this case, you don't have to specify `spec.storage` field. This is useful for testing purposes. - `spec.storage` specifies the StorageClass of PVC dynamically allocated to store data for this database. This storage spec will be passed to the StatefulSet created by the KubeDB operator to run database pods. You can specify any StorageClass available in your cluster with appropriate resource requests. If you don't specify `spec.storageType: Ephemeral`, then this field is required. -- `spec.terminationPolicy` or `spec.deletionPolicy` specifies what KubeDB should do when a user try to delete the operation of Elasticsearch CR. Termination policy `DoNotTerminate` prevents a user from deleting this object if the admission webhook is enabled. +- `spec.deletionPolicy` or `spec.deletionPolicy` specifies what KubeDB should do when a user try to delete the operation of Elasticsearch CR. Termination policy `DoNotTerminate` prevents a user from deleting this object if the admission webhook is enabled. > Note: `spec.storage` section is used to create PVC for database pod. It will create PVC with storage size specified in the `storage.resources.requests` field. Don't specify `limits` here. PVC does not get resized automatically. diff --git a/docs/guides/memcached/README.md b/docs/guides/memcached/README.md index ec1bc7b3cc..3c8e416161 100644 --- a/docs/guides/memcached/README.md +++ b/docs/guides/memcached/README.md @@ -17,18 +17,32 @@ aliases: ## Supported Memcached Features -| Features | Availability | -| ---------------------------- | :----------: | -| Clustering | ✗ | -| Persistent Volume | ✗ | -| Instant Backup | ✗ | -| Scheduled Backup | ✗ | -| Initialize using Snapshot | ✗ | -| Initialize using Script | ✗ | -| Custom Configuration | ✓ | -| Using Custom docker image | ✓ | -| Builtin Prometheus Discovery | ✓ | -| Using Prometheus operator | ✓ | +| Features | Availability | +| ------------------------------------ | :----------: | +| Clustering | ✗ | +| Persistent Volume | ✗ | +| Instant Backup | ✗ | +| Scheduled Backup | ✗ | +| Initialize using Snapshot | ✗ | +| Initialize using Script | ✗ | +| Multiple Memcached Versions | ✓ | +| Custom Configuration | ✓ | +| Externally manageable Auth Secret | ✗ | +| Reconfigurable Health Checker | ✓ | +| Using Custom docker image | ✓ | +| Builtin Prometheus Discovery | ✓ | +| Using Prometheus operator | ✓ | +| Automated Version Update | ✓ | +| Automated Vertical Scaling | ✓ | +| Automated Horizontal Scaling | ✓ | +| Automated db-configure Reconfiguration | ✓ | +| TLS: Add, Remove, Update, Rotate ( Cert Manager ) |✗| +| Automated Volume Expansion | ✗ | +| Autoscaling (Vertically) | ✓ | +| Grafana Dashboard | ✓ | +| Alert Dashboard | ✗ | + + ## Life Cycle of a Memcached Object diff --git a/docs/guides/memcached/autoscaler/_index.md b/docs/guides/memcached/autoscaler/_index.md new file mode 100644 index 0000000000..58da1969e7 --- /dev/null +++ b/docs/guides/memcached/autoscaler/_index.md @@ -0,0 +1,10 @@ +--- +title: Autoscaling +menu: + docs_{{ .version }}: + identifier: auto-scaling + name: Autoscaling + parent: mc-memcached-guides + weight: 47 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/memcached/autoscaler/compute/_index.md b/docs/guides/memcached/autoscaler/compute/_index.md new file mode 100644 index 0000000000..49b6502d63 --- /dev/null +++ b/docs/guides/memcached/autoscaler/compute/_index.md @@ -0,0 +1,10 @@ +--- +title: Compute Autoscaling +menu: + docs_{{ .version }}: + identifier: compute-auto-scaling + name: Compute Autoscaling + parent: auto-scaling + weight: 46 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/memcached/autoscaler/compute/compute-autoscale.md b/docs/guides/memcached/autoscaler/compute/compute-autoscale.md new file mode 100644 index 0000000000..995346166a --- /dev/null +++ b/docs/guides/memcached/autoscaler/compute/compute-autoscale.md @@ -0,0 +1,341 @@ +--- +title: Memcached Autoscaling +menu: + docs_{{ .version }}: + identifier: mc-auto-scaling + name: Compute Autoscaler + parent: compute-auto-scaling + weight: 15 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Autoscaling the Compute Resource of a Memcached Database + +This guide will show you how to use `KubeDB` to autoscale compute resources i.e. cpu and memory of a Memcached database. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. + +- Install `KubeDB` Provisioner, Ops-manager and Autoscaler operator in your cluster following the steps [here](/docs/setup/README.md). + +- Install `Metrics Server` from [here](https://github.com/kubernetes-sigs/metrics-server#installation) + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedAutoscaler](/docs/guides/memcached/concepts/memcached-autoscaler.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + - [Compute Resource Autoscaling Overview](/docs/guides/memcached/autoscaler/compute/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/memcached](/docs/examples/memcached) directory of [kubedb/docs](https://github.com/kubedb/docs) repository. + +## Autoscaling of Memcached Database + +Here, we are going to deploy a `Memcached` database using a supported version by `KubeDB` operator. Then we are going to apply `MemcachedAutoscaler` to set up autoscaling. + +#### Deploy Memcached Database + +In this section, we are going to deploy a Memcached database with version `1.6.22`. Then, in the next section we will set up autoscaling for this database using `MemcachedAutoscaler` CRD. Below is the YAML of the `Memcached` CR that we are going to create: + +```yaml +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: mc-autoscaler-compute + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 100m + memory: 100Mi + requests: + cpu: 100m + memory: 100Mi + deletionPolicy: WipeOut +``` + +Let's create the `Memcached` CRO we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/autoscaler/compute/mc-compute-autoscaler.yaml +Memcached.kubedb.com/mc-compute-autoscaler created +``` + +Now, wait until `mc-compute-autoscaler` has status `Ready`. i.e, + +```bash +$ kubectl get mc -n demo +NAME VERSION STATUS AGE +mc-autoscaler-compute 1.6.22 Ready 2m +``` + +Let's check the Pod containers resources, + +```bash +$ kubectl get pod -n demo mc-autoscaler-compute-0 -o json | jq '.spec.containers[].resources' +{ + "limits": { + "cpu": "100m", + "memory": "100Mi" + }, + "requests": { + "cpu": "100m", + "memory": "100Mi" + } +} +``` + +Let's check the Memcached resources, +```bash +$ kubectl get Memcached -n demo mc-autoscaler-compute -o json | jq '.spec.podTemplate.spec.containers[] | select(.name == "memcached") | .resources' +{ + "limits": { + "cpu": "100m", + "memory": "100Mi" + }, + "requests": { + "cpu": "100m", + "memory": "100Mi" + } +} +``` + +You can see from the above outputs that the resources are same as the one we have assigned while deploying the Memcached. + +We are now ready to apply the `MemcachedAutoscaler` CRO to set up autoscaling for this database. + +### Compute Resource Autoscaling + +Here, we are going to set up compute (cpu and memory) autoscaling using a MemcachedAutoscaler Object. + +#### Create MemcachedAutoscaler Object + +In order to set up compute resource autoscaling for this database, we have to create a `MemcachedAutoscaler` CRO with our desired configuration. Below is the YAML of the `MemcachedAutoscaler` object that we are going to create: + +```yaml +apiVersion: autoscaling.kubedb.com/v1alpha1 +kind: MemcachedAutoscaler +metadata: + name: mc-autoscaler + namespace: demo +spec: + databaseRef: + name: mc-autoscaler-compute + opsRequestOptions: + timeout: 3m + apply: IfReady + compute: + memcached: + trigger: "On" + podLifeTimeThreshold: 1m + resourceDiffPercentage: 20 + minAllowed: + cpu: 400m + memory: 400Mi + maxAllowed: + cpu: 1 + memory: 1Gi + controlledResources: ["cpu", "memory"] + containerControlledValues: "RequestsAndLimits" +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing compute resource autoscaling on `mc-compute-autoscaler` database. +- `spec.compute.memcached.trigger` specifies that compute resource autoscaling is enabled for this database. +- `spec.compute.memcached.podLifeTimeThreshold` specifies the minimum lifetime for at least one of the pod to initiate a vertical scaling. +- `spec.compute.memcached.resourceDiffPercentage` specifies the minimum resource difference in percentage. The default is 10%. + If the difference between current & recommended resource is less than ResourceDiffPercentage, Autoscaler Operator will ignore the updating. +- `spec.compute.memcached.minAllowed` specifies the minimum allowed resources for the database. +- `spec.compute.memcached.maxAllowed` specifies the maximum allowed resources for the database. +- `spec.compute.memcached.controlledResources` specifies the resources that are controlled by the autoscaler. +- `spec.compute.memcahced.containerControlledValues` specifies which resource values should be controlled. The default is "RequestsAndLimits". +- `spec.opsRequestOptions` contains the options to pass to the created OpsRequest. It has 2 fields. Know more about them here : [timeout](/docs/guides/memcached/concepts/memcached-opsrequest.md#spectimeout), [apply](/docs/guides/memcached/concepts/memcached-opsrequest.md#specapply). + +Let's create the `MemcachedAutoscaler` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/autoscaling/compute/mc-compute-autoscaler.yaml +Memcachedautoscaler.autoscaling.kubedb.com/rd-as created +``` + +#### Verify Autoscaling is set up successfully + +Let's check that the `Memcachedautoscaler` resource is created successfully, + +```bash +$ kubectl get memcachedautoscaler -n demo +NAME AGE +mc-autoscaler 16m + +$ kubectl describe memcachedautoscaler mc-autoscaler -n demo +Name: mc-autoscaler +Namespace: demo +Labels: +Annotations: +API Version: autoscaling.kubedb.com/v1alpha1 +Kind: MemcachedAutoscaler +Metadata: + Creation Timestamp: 2024-09-10T12:55:35Z + Generation: 1 + Owner References: + API Version: kubedb.com/v1 + Block Owner Deletion: true + Controller: true + Kind: Memcached + Name: mc-autoscaler-compute + UID: 56a15163-0f8b-4f35-8cd9-ae9bd0976ea7 + Resource Version: 105259 + UID: 2ef29276-dc47-4b2d-8995-ad5114b419f3 +Spec: + Compute: + Memcached: + Container Controlled Values: RequestsAndLimits + Controlled Resources: + cpu + memory + Max Allowed: + Cpu: 1 + Memory: 1Gi + Min Allowed: + Cpu: 400m + Memory: 400Mi + Pod Life Time Threshold: 1m + Resource Diff Percentage: 20 + Trigger: On + Database Ref: + Name: mc-autoscaler-compute + Ops Request Options: + Apply: IfReady + Timeout: 3m +Status: + Checkpoints: + Cpu Histogram: + Bucket Weights: + Index: 0 + Weight: 10000 + Reference Timestamp: 2024-09-10T13:10:00Z + Total Weight: 0.42972012872296605 + First Sample Start: 2024-09-10T13:08:51Z + Last Sample Start: 2024-09-10T13:12:00Z + Last Update Time: 2024-09-10T13:12:04Z + Memory Histogram: + Reference Timestamp: 2024-09-10T13:15:00Z + Ref: + Container Name: memcached + Vpa Object Name: mc-autoscaler-compute + Total Samples Count: 4 + Version: v3 + Conditions: + Last Transition Time: 2024-09-10T13:10:04Z + Message: Successfully created MemcachedOpsRequest demo/mcops-mc-autoscaler-compute-p1usdl + Observed Generation: 1 + Reason: CreateOpsRequest + Status: True + Type: CreateOpsRequest + Vpas: + Conditions: + Last Transition Time: 2024-09-10T13:09:04Z + Status: True + Type: RecommendationProvided + Recommendation: + Container Recommendations: + Container Name: memcached + Lower Bound: + Cpu: 400m + Memory: 400Mi + Target: + Cpu: 400m + Memory: 400Mi + Uncapped Target: + Cpu: 100m + Memory: 262144k + Upper Bound: + Cpu: 1 + Memory: 1Gi + Vpa Name: mc-autoscaler-compute +Events: +``` +So, the `Memcachedautoscaler` resource is created successfully. + +you can see in the `Status.VPAs.Recommendation` section, that recommendation has been generated for our database. Our autoscaler operator continuously watches the recommendation generated and creates an `Memcachedopsrequest` based on the recommendations, if the database pods are needed to scaled up or down. + +Let's watch the `Memcachedopsrequest` in the demo namespace to see if any `Memcachedopsrequest` object is created. After some time you'll see that a `Memcachedopsrequest` will be created based on the recommendation. + +```bash +$ watch kubectl get memcachedopsrequest -n demo +Every 2.0s: kubectl get memcachedopsrequest -n demo +NAME TYPE STATUS AGE +mcops-mc-autoscaler-compute-p1usdl VerticalScaling Progressing 10s +``` + +Let's wait for the ops request to become successful. + +```bash +$ watch kubectl get memcachedopsrequest -n demo +Every 2.0s: kubectl get memcachedopsrequest -n demo +NAME TYPE STATUS AGE +mcops-mc-autoscaler-compute-p1usdl VerticalScaling Successful 1m +``` + +We can see from the above output that the `memcachedOpsRequest` has succeeded. + + +```bash +$ kubectl get pod -n demo mc-autoscaler-compute-0 -o json | jq '.spec.containers[].resources' +{ + "limits": { + "cpu": "400m", + "memory": "400Mi" + }, + "requests": { + "cpu": "400m", + "memory": "400Mi" + } +} + +$ kubectl get Memcached -n demo mc-autoscaler-compute -o json | jq '.spec.podTemplate.spec.containers[] | select(.name == "memcached") | .resources' +{ + "limits": { + "cpu": "400m", + "memory": "400Mi" + }, + "requests": { + "cpu": "400m", + "memory": "400Mi" + } +} +``` + +The above output verifies that we have successfully auto-scaled the resources of the Memcached database. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl patch -n demo mc/mc-autoscaler-compute -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +memcached.kubedb.com/mc-autoscaler-compute patched + +$ kubectl delete mc -n demo mc-autoscaler-compute +memcached.kubedb.com "mc-autoscaler-compute" deleted + +$ kubectl delete memcachedautoscaler -n demo mc-autoscaler +memcachedautoscaler.autoscaling.kubedb.com "mc-autoscaler" deleted +``` \ No newline at end of file diff --git a/docs/guides/memcached/autoscaler/compute/overview.md b/docs/guides/memcached/autoscaler/compute/overview.md new file mode 100644 index 0000000000..8e2567be19 --- /dev/null +++ b/docs/guides/memcached/autoscaler/compute/overview.md @@ -0,0 +1,55 @@ +--- +title: Memcached Compute Autoscaling Overview +menu: + docs_{{ .version }}: + identifier: mc-auto-scaling-overview + name: Overview + parent: compute-auto-scaling + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Memcached Compute Resource Autoscaling + +This guide will give an overview on how KubeDB Autoscaler operator autoscales the database compute resources i.e. cpu and memory using `Memcachedautoscaler` crd. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedAutoscaler](/docs/guides/memcached/concepts/memcached-autoscaler.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + +## How Compute Autoscaling Works + +The following diagram shows how KubeDB Autoscaler operator autoscales the resources of `Memcached` database components. Open the image in a new tab to see the enlarged version. + +
+  Compute Auto Scaling process of Memcached +
Fig: Compute Auto Scaling process of Memcached
+
+ +The Auto Scaling process consists of the following steps: + +1. At first, user creates a `Memcached` Custom Resource Object (CRO). + +2. `KubeDB` Provisioner operator watches the `Memcached` CRO. + +3. When the operator finds a `Memcached` CRO, it creates required number of `PetSets` and related necessary stuff like secrets, services, etc. + +4. Then, in order to set up autoscaling of the `Memcached` database the user creates a `MemcachedAutoscaler` CRO with desired configuration. + +5. `KubeDB` Autoscaler operator watches the `MemcachedAutoscaler` CRO. + +6. `KubeDB` Autoscaler operator generates recommendation using the modified version of kubernetes [official recommender](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler/pkg/recommender) for the database, as specified in the `MemcachedAutoscaler` CRO. + +7. If the generated recommendation doesn't match the current resources of the database, then `KubeDB` Autoscaler operator creates a `MemcachedOpsRequest` CRO to scale the database to match the recommendation generated. + +8. `KubeDB` Ops-manager operator watches the `MemcachedOpsRequest` CRO. + +9. Then the `KubeDB` ops-manager operator will scale the database component vertically as specified on the `MemcachedOpsRequest` CRO. + +In the next docs, we are going to show a step-by-step guide on Autoscaling of various Memcached database components using `MemcachedAutoscaler` CRD. diff --git a/docs/guides/memcached/cli/cli.md b/docs/guides/memcached/cli/cli.md index f37d98cd14..05c607ed37 100644 --- a/docs/guides/memcached/cli/cli.md +++ b/docs/guides/memcached/cli/cli.md @@ -47,10 +47,10 @@ cat memcached-demo.yaml | kubectl create -f - ```bash $ kubectl get memcached NAME VERSION STATUS AGE -memcached-demo 1.6.22 Running 40s -memcached-dev 1.6.22 Running 40s -memcached-prod 1.6.22 Running 40s -memcached-qa 1.6.22 Running 40s +memcached-demo 1.6.22 Running 40s +memcached-dev 1.6.22 Running 40s +memcached-prod 1.6.22 Running 40s +memcached-qa 1.6.22 Running 40s ``` To get YAML of an object, use `--output=yaml` flag. @@ -85,7 +85,7 @@ spec: requests: cpu: 250m memory: 64Mi - replicas: 3 + replicas: 1 deletionPolicy: Halt version: 1.6.22 status: @@ -103,11 +103,11 @@ To list all KubeDB objects, use following command: ```bash $ kubectl get all -o wide -NAME VERSION STATUS AGE -mc/memcached-demo 1.6.22 Running 3h -mc/memcached-dev 1.6.22 Running 3h -mc/memcached-prod 1.6.22 Running 3h -mc/memcached-qa 1.6.22 Running 3h +NAME VERSION STATUS AGE +mc/memcached-demo 1.6.22 Running 3h +mc/memcached-dev 1.6.22 Running 3h +mc/memcached-prod 1.6.22 Running 3h +mc/memcached-qa 1.6.22 Running 3h ``` Flag `--output=wide` is used to print additional information. @@ -122,7 +122,7 @@ You can print labels with objects. The following command will list all Memcached ```bash $ kubectl get mc --show-labels NAME VERSION STATUS AGE LABELS -memcached-demo 1.6.22 Running 2m kubedb=cli-demo +memcached-demo 1.6.22 Running 2m kubedb=cli-demo ``` To print only object name, run the following command: @@ -146,7 +146,7 @@ Namespace: default CreationTimestamp: Thu, 04 Oct 2018 11:58:57 +0600 Labels: kubedb=cli-demo Annotations: -Replicas: 3 total +Replicas: 1 total Status: Running Deployment: @@ -156,8 +156,8 @@ Deployment: app.kubernetes.io/name=memcacheds.kubedb.com app.kubernetes.io/instance=memcached-demo Annotations: deployment.kubernetes.io/revision=1 - Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable - Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed + Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable + Pods Status: 1 Running / 0 Waiting / 0 Succeeded / 0 Failed Service: Name: memcached-demo @@ -185,7 +185,7 @@ Events: `kubectl dba describe` command provides following basic information about a Memcached server. -- Deployment +- Petset - Service - Monitoring system (If available) @@ -239,7 +239,7 @@ Various fields of a KubeDB object can't be edited using `edit` command. The foll - apiVersion - kind -- metadata.name +- metadata.name - metadata.namespace - status @@ -295,4 +295,5 @@ $ kubectl delete memcached ## Next Steps - Learn how to use KubeDB to run a Memcached server [here](/docs/guides/memcached/README.md). +- Learn how to use custom configuration in Memcached with KubeDB [here](/docs/guides/memcached/custom-configuration/using-config-file.md) - Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). diff --git a/docs/guides/memcached/concepts/appbinding.md b/docs/guides/memcached/concepts/appbinding.md index ea0e31af57..414c1e0bcb 100644 --- a/docs/guides/memcached/concepts/appbinding.md +++ b/docs/guides/memcached/concepts/appbinding.md @@ -29,40 +29,35 @@ Like any official Kubernetes resource, an `AppBinding` has `TypeMeta`, `ObjectMe An `AppBinding` object created by `KubeDB` for PostgreSQL database is shown below, ```yaml -apiVersion: appcatalog.appscode.com/v1alpha1 -kind: AppBinding -metadata: - name: quick-postgres - namespace: demo - labels: - app.kubernetes.io/component: database - app.kubernetes.io/instance: quick-postgres - app.kubernetes.io/managed-by: kubedb.com - app.kubernetes.io/name: postgres - app.kubernetes.io/version: "10.2"-v2 - app.kubernetes.io/name: postgreses.kubedb.com - app.kubernetes.io/instance: quick-postgres -spec: - type: kubedb.com/postgres - secret: - name: quick-postgres-auth - clientConfig: - service: - name: quick-postgres - path: / - port: 5432 - query: sslmode=disable - scheme: postgresql - secretTransforms: - - renameKey: - from: POSTGRES_USER - to: username - - renameKey: - from: POSTGRES_PASSWORD - to: password - version: "10.2" + apiVersion: appcatalog.appscode.com/v1alpha1 + kind: AppBinding + metadata: + annotations: + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"appcatalog.appscode.com/v1alpha1","kind":"AppBinding","metadata":{"annotations":{},"name":"memcached-appbinding","namespace":"demo"},"spec":{"appRef":{"apiGroup":"kubedb.com","kind":"Memcached","name":"mc1","namespace":"demo"},"clientConfig":{"service":{"name":"memcached","namespace":"demo","port":11211,"scheme":"tcp"}},"secret":{"name":"memcached-auth"},"type":"kubedb.com/memcached","version":"1.6.22"}} + creationTimestamp: "2024-08-26T09:51:57Z" + generation: 1 + name: memcached-appbinding + namespace: demo + resourceVersion: "4172425" + uid: 01a902e2-3de6-45de-85a3-4f115b334625 + spec: + appRef: + apiGroup: kubedb.com + kind: Memcached + name: mc1 + namespace: demo + clientConfig: + service: + name: memcached + namespace: demo + port: 11211 + scheme: tcp + secret: + name: memcached-auth + type: kubedb.com/memcached + version: 1.6.22 ``` - Here, we are going to describe the sections of an `AppBinding` crd. ### AppBinding `Spec` @@ -71,17 +66,7 @@ An `AppBinding` object has the following fields in the `spec` section: #### spec.type -`spec.type` is an optional field that indicates the type of the app that this `AppBinding` is pointing to. Stash uses this field to resolve the values of `TARGET_APP_TYPE`, `TARGET_APP_GROUP` and `TARGET_APP_RESOURCE` variables of [BackupBlueprint](https://appscode.com/products/stash/latest/concepts/crds/backupblueprint/) object. - -This field follows the following format: `/`. The above AppBinding is pointing to a `postgres` resource under `kubedb.com` group. - -Here, the variables are parsed as follows: - -| Variable | Usage | -| --------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| `TARGET_APP_GROUP` | Represents the application group where the respective app belongs (i.e: `kubedb.com`). | -| `TARGET_APP_RESOURCE` | Represents the resource under that application group that this appbinding represents (i.e: `postgres`). | -| `TARGET_APP_TYPE` | Represents the complete type of the application. It's simply `TARGET_APP_GROUP/TARGET_APP_RESOURCE` (i.e: `kubedb.com/postgres`). | +`spec.type` is an optional field that indicates the type of the app that this `AppBinding` is pointing to. #### spec.secret @@ -89,33 +74,15 @@ Here, the variables are parsed as follows: This secret must contain the following keys: -PostgreSQL : - | Key | Usage | | ------------------- | --------------------------------------------------- | -| `POSTGRES_USER` | Username of the target database. | -| `POSTGRES_PASSWORD` | Password for the user specified by `POSTGRES_USER`. | - -MySQL : - -| Key | Usage | -| ---------- | ---------------------------------------------- | -| `username` | Username of the target database. | -| `password` | Password for the user specified by `username`. | - -MongoDB : +| `Username` | Username of the target Memcached database. | +| `Password` | Password for the user specified by `Username`. | -| Key | Usage | -| ---------- | ---------------------------------------------- | -| `username` | Username of the target database. | -| `password` | Password for the user specified by `username`. | -Elasticsearch: +#### spec.appRef +appRef refers to the underlying application. It has 4 fields named `apiGroup`, `kind`, `name` & `namespace`. -| Key | Usage | -| ---------------- | ----------------------- | -| `ADMIN_USERNAME` | Admin username | -| `ADMIN_PASSWORD` | Password for admin user | #### spec.clientConfig diff --git a/docs/guides/memcached/concepts/memcached-autoscaler.md b/docs/guides/memcached/concepts/memcached-autoscaler.md new file mode 100644 index 0000000000..d71f853f9f --- /dev/null +++ b/docs/guides/memcached/concepts/memcached-autoscaler.md @@ -0,0 +1,84 @@ +--- +title: Autoscaler CRD +menu: + docs_{{ .version }}: + identifier: mc-autoscaler-concepts + name: Autoscaler + parent: mc-concepts-memcached + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# MemcachedAutoscaler + +## What is MemcachedAutoscaler + +`MemcachedAutoscaler` is a Kubernetes `Custom Resource Definitions` (CRD). It provides a declarative configuration for autoscaling Memcached compute resources in a Kubernetes native way. + +## MemcachedAutoscaler CRD Specifications + +Like any official Kubernetes resource, a `MemcachedAutoscaler` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. + +Here is a sample `MemcachedAutoscaler` CRO for autoscaling different components of database is given below. +Sample `MemcachedAutoscaler`: + +```yaml +apiVersion: autoscaling.kubedb.com/v1alpha1 +kind: MemcachedAutoscaler +metadata: + name: mc-as + namespace: demo +spec: + databaseRef: + name: mc1 + opsRequestOptions: + timeout: 3m + apply: IfReady + compute: + memcached: + trigger: "On" + podLifeTimeThreshold: 5m + resourceDiffPercentage: 20 + minAllowed: + cpu: 400m + memory: 400Mi + maxAllowed: + cpu: 1 + memory: 1Gi + controlledResources: ["cpu", "memory"] + containerControlledValues: "RequestsAndLimits" +``` + +Here, we are going to describe the various sections of a `MemcachedAutoscaler` crd. A `MemcachedAutoscaler` object has the following fields in the spec section. + +### spec.databaseRef +spec.databaseRef is a required field that point to the Memcached object for which the autoscaling will be performed. This field consists of the following sub-field: + +##### + +### spec.opsRequestOptions +These are the options to pass in the internally created opsRequest CRO. opsRequestOptions has three fields. They have been described in details [here](/docs/guides/memcached/concepts/memcached-opsrequest.md). + +### spec.compute +`spec.compute` specifies the autoscaling configuration for to compute resources i.e. cpu and memory of the database components. This field consists of the following sub-field: + +- `spec.compute.memcached` indicates the desired compute autoscaling + + +`spec.compute.memcached` has the following sub-fields: + +- `trigger` indicates if compute autoscaling is enabled for this component of the database. If “On” then compute autoscaling is enabled. If “Off” then compute autoscaling is disabled. +- `minAllowed` specifies the minimal amount of resources that will be recommended, default is no minimum. +- `maxAllowed` specifies the maximum amount of resources that will be recommended, default is no maximum. +- `controlledResources` specifies which type of compute resources (cpu and memory) are allowed for autoscaling. Allowed values are “cpu” and “memory”. +- `containerControlledValues` specifies which resource values should be controlled. Allowed values are “RequestsAndLimits” and “RequestsOnly”. +- `resourceDiffPercentage` specifies the minimum resource difference between recommended value and the current value in percentage. If the difference percentage is greater than this value than autoscaling will be triggered. +- `podLifeTimeThreshold` specifies the minimum pod lifetime of at least one of the pods before triggering autoscaling. + +## Next Steps + +- Learn about Memcached crd [here](/docs/guides/memcached/concepts/memcached.md). +- Deploy your first Memcached database with Memcached by following the guide [here](/docs/guides/memcached/quickstart/quickstart.md). \ No newline at end of file diff --git a/docs/guides/memcached/concepts/memcached-opsrequest.md b/docs/guides/memcached/concepts/memcached-opsrequest.md new file mode 100644 index 0000000000..5d43da18ff --- /dev/null +++ b/docs/guides/memcached/concepts/memcached-opsrequest.md @@ -0,0 +1,292 @@ +--- +title: OpsRequest CRD +menu: + docs_{{ .version }}: + identifier: mc-opsrequest-concepts + name: OpsRequest + parent: mc-concepts-memcached + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# MemcachedOpsRequest + +## What is MemcachedOpsRequest + +`MemcachedOpsRequest` is a Kubernetes `Custom Resource Definitions` (CRD). It provides declarative configuration for Memcached administrative operations like database version updating, horizontal scaling, vertical scaling, etc. in a Kubernetes native way. + +## MemcachedOpsRequest CRD Specifications + +Like any official Kubernetes resource, a `MemcachedOpsRequest` has `TypeMeta`, `ObjectMeta`, `Spec` and `Status` sections. + +Here, some sample `MemcachedOpsRequest` CRs for different administrative operations is given below. + +Sample MemcachedOpsRequest for updating database version: + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: update-memcd + namespace: demo +spec: + type: UpdateVersion + databaseRef: + name: memcd-quickstart + updateVersion: + targetVersion: 1.6.22 +``` + +Sample `MemcachedOpsRequest` for horizontal scaling: +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-horizontal-down + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: memcd-quickstart + horizontalScaling: + replicas: 2 +``` + +Sample `MemcachedOpsRequest` for vertical scaling: + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-vertical + namespace: demo +spec: + type: VerticalScaling + databaseRef: + name: memcd-quickstart + verticalScaling: + memcached: + resources: + requests: + memory: "200Mi" + cpu: "200m" + limits: + memory: "200Mi" + cpu: "200m" +``` + +Sample `MemcachedOpsRequest` for reconfiguration: +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-reconfig + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: memcd-quickstart + configuration: + applyConfig: + memcached.conf: | + -m 50 + -c 50 + +``` + +## MemcachedOpsRequest Spec +A `MemcachedOpsRequest` object has the following fields in the `spec` section: +### spec.databaseRef +`spec.databaseRef` is a required field that point to the Memcached object where the administrative operations will be applied. This field consists of the following sub-field: +- **spec.databaseRef.name :** specifies the name of the Memcached object. + +### spec.type +`spec.type` specifies the kind of operation that will be applied to the database. Currently, the following types of operations are allowed in `MemcachedOpsRequest`. + +- UpdateVersion +- HorizontalScaling +- VerticalScaling +- Restart +- Reconfigure + +### spec.updateVersion +If you want to update your Memcacheds version, you have to +>You can only update between Memcached versions. KubeDB does not support downgrade for Memcached. + +### spec.horizontalScaling +If you want to scale-up or scale-down your Memcached, you have to specify `spec.horizontalScaling` section. This field consists of the following sub-field: + + +- `spec.horizontalScaling.replicas` indicates the desired number of replicas for your Memcahced instance after scaling. For example, if your cluster currently has 4 replicas, and you want to add additional 2 replicas then you have to specify 6 in spec.horizontalScaling.replicas field. Similarly, if you want to remove one replicas, you have to specify 3 in spec.horizontalScaling.replicas field. + +### spec.verticalScaling +`spec.verticalScaling` is a required field specifying the information of Memcached resources like cpu, memory that will be scaled. This field consists of the following sub-fields: + +- `spec.verticalScaling.memcached` indicates the `Memcached` server resources. It has the below structure: +```yaml +requests: + memory: "200Mi" + cpu: "200m" +limits: + memory: "200Mi" + cpu: "200m" +``` + +Here, when you specify the resource request for `Memcached` container, the scheduler uses this information to decide which node to place the container of the Pod on and when you specify a resource limit for `Memcached` container, the kubelet enforces those limits so that the running container is not allowed to use more of that resource than the limit you set. You can found more details from [here](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/). + +- `spec.verticalScaling.exporter` indicates the `exporter` container resources. It has the same structure as `spec.verticalScaling.memcached` and you can scale the resource the same way as `memcached` container. + +>You can increase/decrease resources for both memcached container and exporter container on a single MemcachedOpsRequest CR. + +### spec.timeout +As we internally retry the ops request steps multiple times, this `timeout` field helps the users to specify the timeout for those steps of the ops request (in second). If a step doesn’t finish within the specified timeout, the ops request will result in failure. + +### spec.apply +This field controls the execution of opsRequest depending on the database state. It has two supported values: `Always` & `IfReady`. Use `IfReady`, if you want to process the opsRequest only when the database is Ready. And use `Always`, if you want to process the execution of opsReq irrespective of the Database state. + +## MemcachedOpsRequest Status +After creating the Ops request status section is added in MemcachedOpsRequest CR. The yaml looks like following: + +```yaml + apiVersion: ops.kubedb.com/v1alpha1 + kind: MemcachedOpsRequest + metadata: + annotations: + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"ops.kubedb.com/v1alpha1","kind":"MemcachedOpsRequest","metadata":{"annotations":{},"name":"memcached-mc","namespace":"demo"},"spec":{"databaseRef":{"name":"mc1"},"type":"VerticalScaling","verticalScaling":{"memcached":{"resources":{"limits":{"cpu":"200m","memory":"200Mi"},"requests":{"cpu":"200m","memory":"200Mi"}}}}}} + creationTimestamp: "2024-08-26T10:41:05Z" + generation: 1 + name: memcached-mc + namespace: demo + resourceVersion: "4572839" + uid: f230978f-fc7b-4f8e-afad-6023910aba0e + spec: + apply: IfReady + databaseRef: + name: mc1 + type: VerticalScaling + verticalScaling: + memcached: + resources: + limits: + cpu: 200m + memory: 200Mi + requests: + cpu: 200m + memory: 200Mi + status: + conditions: + - lastTransitionTime: "2024-08-26T10:41:05Z" + message: Memcached ops request is vertically scaling database + observedGeneration: 1 + reason: VerticalScale + status: "True" + type: VerticalScale + - lastTransitionTime: "2024-08-26T10:41:08Z" + message: Successfully updated PetSets Resources + observedGeneration: 1 + reason: UpdatePetSets + status: "True" + type: UpdatePetSets + - lastTransitionTime: "2024-08-26T10:41:13Z" + message: evict pod; ConditionStatus:True; PodName:mc1-0 + observedGeneration: 1 + status: "True" + type: EvictPod--mc1-0 + - lastTransitionTime: "2024-08-26T10:41:13Z" + message: is pod ready; ConditionStatus:False + observedGeneration: 1 + status: "False" + type: IsPodReady + - lastTransitionTime: "2024-08-26T10:41:18Z" + message: is pod ready; ConditionStatus:True; PodName:mc1-0 + observedGeneration: 1 + status: "True" + type: IsPodReady--mc1-0 + - lastTransitionTime: "2024-08-26T10:41:18Z" + message: is pod resources updated; ConditionStatus:True; PodName:mc1-0 + observedGeneration: 1 + status: "True" + type: IsPodResourcesUpdated--mc1-0 + - lastTransitionTime: "2024-08-26T10:41:18Z" + message: Successfully Restarted Pods With Resources + observedGeneration: 1 + reason: RestartPods + status: "True" + type: RestartPods + - lastTransitionTime: "2024-08-26T10:41:18Z" + message: Successfully Vertically Scaled Database + observedGeneration: 1 + reason: Successful + status: "True" + type: Successful + observedGeneration: 1 + phase: Successful +``` +`.status` describes the current state of the `MemcachedOpsRequest` operation. It has the following fields: + +### status.phase +`status.phase` indicates the overall phase of the operation for this `MemcachedOpsRequest`. It can have the following three values: + +| Phase | Meaning | +| ---------- |----------------------------------------------------------------------------------| +| Successful | KubeDB has successfully performed the operation requested in the MemcachedOpsRequest | +| Failed | KubeDB has failed the operation requested in the MemcachedOpsRequest | +| Denied | KubeDB has denied the operation requested in the MemcachedOpsRequest | + +### status.observedGeneration +`status.observedGeneration` shows the most recent generation observed by the `MemcachedOpsRequest` controller. + +### status.conditions +`status.conditions` is an array that specifies the conditions of different steps of `MemcachedOpsRequest` processing. Each condition entry has the following fields: + +- `types` specifies the type of the condition. `MemcachedOpsRequest` has the following types of conditions: + +| Type | Meaning | +|---------------------|------------------------------------------------------------------------------------------| +| `Progressing` | Specifies that the operation is now progressing | +| `Successful` | Specifies such a state that the operation on the database has been successful. | +| `HaltDatabase` | Specifies such a state that the database is halted by the operator | +| `ResumeDatabase` | Specifies such a state that the database is resumed by the operator | +| `Failure` | Specifies such a state that the operation on the database has been failed. | +| `Scaling` | Specifies such a state that the scaling operation on the database has stared | +| `VerticalScaling` | Specifies such a state that vertical scaling has performed successfully on database | +| `HorizontalScaling` | Specifies such a state that horizontal scaling has performed successfully on database | +| `UpdateVersion` | Specifies such a state that version updating on the database have performed successfully | + +- The `status` field is a string, with possible values `"True"`, `"False"`, and `"Unknown"`. + - `status` will be `"True"` if the current transition is succeeded. + - `status` will be `"False"` if the current transition is failed. + - `status` will be `"Unknown"` if the current transition is denied. +- The `message` field is a human-readable message indicating details about the condition. +- The `reason` field is a unique, one-word, CamelCase reason for the condition's last transition. It has the following possible values: + +| Reason | Meaning | +|-----------------------------------------| -------------------------------------------------------------------------------- | +| `OpsRequestProgressingStarted` | Operator has started the OpsRequest processing | +| `OpsRequestFailedToProgressing` | Operator has failed to start the OpsRequest processing | +| `SuccessfullyHaltedDatabase` | Database is successfully halted by the operator | +| `FailedToHaltDatabase` | Database is failed to halt by the operator | +| `SuccessfullyResumedDatabase` | Database is successfully resumed to perform its usual operation | +| `FailedToResumedDatabase` | Database is failed to resume | +| `DatabaseVersionupdatingStarted` | Operator has started updating the database version | +| `SuccessfullyUpdatedDatabaseVersion` | Operator has successfully updated the database version | +| `FailedToUpdateDatabaseVersion` | Operator has failed to update the database version | +| `HorizontalScalingStarted` | Operator has started the horizontal scaling | +| `SuccessfullyPerformedHorizontalScaling` | Operator has successfully performed on horizontal scaling | +| `FailedToPerformHorizontalScaling` | Operator has failed to perform on horizontal scaling | +| `VerticalScalingStarted` | Operator has started the vertical scaling | +| `SuccessfullyPerformedVerticalScaling` | Operator has successfully performed on vertical scaling | +| `FailedToPerformVerticalScaling` | Operator has failed to perform on vertical scaling | +| `OpsRequestProcessedSuccessfully` | Operator has completed the operation successfully requested by the OpeRequest cr | + +- The `lastTransitionTime` field provides a timestamp for when the operation last transitioned from one state to another. +- The `observedGeneration` shows the most recent condition transition generation observed by the controller. + +## Next Steps + +- Learn about Memcached crd [here](/docs/guides/memcached/concepts/memcached.md). +- Deploy your first Memcached database with Memcached by following the guide [here](/docs/guides/memcached/quickstart/quickstart.md). \ No newline at end of file diff --git a/docs/guides/memcached/concepts/catalog.md b/docs/guides/memcached/concepts/memcached-version.md similarity index 74% rename from docs/guides/memcached/concepts/catalog.md rename to docs/guides/memcached/concepts/memcached-version.md index 42b3012073..1a6f4f41a4 100644 --- a/docs/guides/memcached/concepts/catalog.md +++ b/docs/guides/memcached/concepts/memcached-version.md @@ -30,17 +30,30 @@ As with all other Kubernetes objects, a MemcachedVersion needs `apiVersion`, `ki apiVersion: catalog.kubedb.com/v1alpha1 kind: MemcachedVersion metadata: - name: "1.6.22" + annotations: + meta.helm.sh/release-name: kubedb + meta.helm.sh/release-namespace: kubedb + creationTimestamp: "2024-08-22T13:48:12Z" + generation: 1 labels: - app: kubedb + app.kubernetes.io/instance: kubedb + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: kubedb-catalog + app.kubernetes.io/version: v2024.8.21 + helm.sh/chart: kubedb-catalog-v2024.8.21 + name: 1.6.22 + resourceVersion: "2566" + uid: 90041c04-21b8-4b39-a2a6-af2e6a2ccacd spec: - version: "1.5.4" db: - image: "${KUBEDB_DOCKER_REGISTRY}/memcached:1.6.22" + image: ghcr.io/appscode-images/memcached:1.6.22-alpine exporter: - image: "${KUBEDB_DOCKER_REGISTRY}/memcached-exporter:v0.4.1" + image: ghcr.io/appscode-images/memcached_exporter:v0.14.3-ac podSecurityPolicies: - databasePolicyName: "memcached-db" + databasePolicyName: memcached-db + securityContext: + runAsUser: 999 + version: 1.6.22 ``` ### metadata.name @@ -51,7 +64,7 @@ We follow this convention for naming MemcachedVersion crd: - Name format: `{Original Memcached image version}-{modification tag}` -We modify original Memcached docker image to support additional features. An image with higher modification tag will have more features than the images with lower modification tag. Hence, it is recommended to use MemcachedVersion crd with highest modification tag to take advantage of the latest features. +We modify original Memcached docker image to support Memcached and re-tag the image with v1, v2 etc. modification tag. An image with higher modification tag will have more features than the images with lower modification tag. Hence, it is recommended to use MemcachedVersion crd with highest modification tag to take advantage of the latest features. ### spec.version @@ -59,9 +72,9 @@ We modify original Memcached docker image to support additional features. An ima ### spec.deprecated -`spec.deprecated` is an optional field that specifies whether the docker images specified here is supported by the current KubeDB operator. For example, we have modified `kubedb/memcached:1.5.4` docker image to support custom configuration and re-tagged as `kubedb/memcached:1.6.22`. Now, KubeDB `0.9.0-rc.0` supports providing custom configuration which required `kubedb/memcached:1.6.22` docker image. So, we have marked `kubedb/memcached:1.5.4` as deprecated for KubeDB `0.9.0-rc.0`. +`spec.deprecated` is an optional field that specifies whether the docker images specified here is supported by the current KubeDB operator. -The default value of this field is `false`. If `spec.deprecated` is set `true`, KubeDB operator will not create the database and other respective resources for this version. +The default value of this field is `false`. If `spec.deprecated` is set to `true`, KubeDB operator will skip processing this CRD object and will add a event to the CRD object specifying that the DB version is deprecated. ### spec.db.image diff --git a/docs/guides/memcached/concepts/memcached.md b/docs/guides/memcached/concepts/memcached.md index c52b4d1164..d5250a78dd 100644 --- a/docs/guides/memcached/concepts/memcached.md +++ b/docs/guides/memcached/concepts/memcached.md @@ -29,8 +29,8 @@ metadata: name: mc1 namespace: demo spec: - replicas: 3 - version: 1.5.22 + replicas: 1 + version: 1.6.22 monitor: agent: prometheus.io/operator prometheus: @@ -89,9 +89,11 @@ KubeDB uses `PodDisruptionBudget` to ensure that majority of these replicas are ### spec.version -`spec.version` is a required field specifying the name of the [MemcachedVersion](/docs/guides/memcached/concepts/catalog.md) crd where the docker images are specified. Currently, when you install KubeDB, it creates the following `MemcachedVersion` resources, +`spec.version` is a required field specifying the name of the [MemcachedVersion](/docs/guides/memcached/concepts/memcached-version.md) crd where the docker images are specified. Currently, when you install KubeDB, it creates the following `MemcachedVersion` crds, -- `1.5.4`, `1.6.22`, `1.5`, `1.5-v1` +- `1.5.22` +- `1.6.22` +- `1.6.29` ### spec.monitor @@ -102,11 +104,11 @@ Memcached managed by KubeDB can be monitored with builtin-Prometheus and Prometh ### spec.configSecret -`spec.configSecret` is an optional field that allows users to provide custom configuration for Memcached. This field accepts a [`VolumeSource`](https://github.com/kubernetes/api/blob/release-1.11/core/v1/types.go#L47). So you can use any Kubernetes supported volume source such as `configMap`, `secret`, `azureDisk` etc. To learn more about how to use a custom configuration file see [here](/docs/guides/memcached/configuration/using-config-file.md). +`spec.configSecret` is an optional field that allows users to provide custom configuration for Memcached. This field accepts a [`VolumeSource`](https://github.com/kubernetes/api/blob/release-1.11/core/v1/types.go#L47). So you can use any Kubernetes supported volume source such as `configMap`, `secret`, `azureDisk` etc. To learn more about how to use a custom configuration file see [here](/docs/guides/memcached/custom-configuration/using-config-file.md). ### spec.podTemplate -KubeDB allows providing a template for database pod through `spec.podTemplate`. KubeDB operator will pass the information provided in `spec.podTemplate` to the Deployment created for Memcached server. +KubeDB allows providing a template for database pod through `spec.podTemplate`. KubeDB operator will pass the information provided in `spec.podTemplate` to the Petset created for Memcached server. KubeDB accept following fields to set in `spec.podTemplate:` @@ -119,6 +121,8 @@ KubeDB accept following fields to set in `spec.podTemplate:` - volumes - podPlacementPolicy - initContainers + - containers + - podPlacementPolicy - imagePullSecrets - nodeSelector - affinity @@ -134,7 +138,6 @@ KubeDB accept following fields to set in `spec.podTemplate:` Uses of some field of `spec.podTemplate` is described below, - You can check out the full list [here](https://github.com/kmodules/offshoot-api/blob/master/api/v2/types.go#L26C1-L279C1). Uses of some field of `spec.podTemplate` is described below, @@ -194,13 +197,13 @@ At least one of the following was changed: #### spec.podTemplate.spec.serviceAccountName - `serviceAccountName` is an optional field supported by KubeDB Operator (version 0.13.0 and higher) that can be used to specify a custom service account to fine tune role based access control. +`serviceAccountName` is an optional field supported by KubeDB Operator (version 0.13.0 and higher) that can be used to specify a custom service account to fine tune role based access control. - If this field is left empty, the KubeDB operator will create a service account name matching Memcached crd name. Role and RoleBinding that provide necessary access permissions will also be generated automatically for this service account. +If this field is left empty, the KubeDB operator will create a service account name matching Memcached crd name. Role and RoleBinding that provide necessary access permissions will also be generated automatically for this service account. - If a service account name is given, but there's no existing service account by that name, the KubeDB operator will create one, and Role and RoleBinding that provide necessary access permissions will also be generated for this service account. +If a service account name is given, but there's no existing service account by that name, the KubeDB operator will create one, and Role and RoleBinding that provide necessary access permissions will also be generated for this service account. - If a service account name is given, and there's an existing service account by that name, the KubeDB operator will use that existing service account. Since this service account is not managed by KubeDB, users are responsible for providing necessary access permissions manually. Follow the guide [here](/docs/guides/memcached/custom-rbac/using-custom-rbac.md) to grant necessary permissions in this scenario. +If a service account name is given, and there's an existing service account by that name, the KubeDB operator will use that existing service account. Since this service account is not managed by KubeDB, users are responsible for providing necessary access permissions manually. Follow the guide [here](/docs/guides/memcached/custom-rbac/using-custom-rbac.md) to grant necessary permissions in this scenario. #### spec.podTemplate.spec.resources @@ -212,6 +215,11 @@ You can also provide a template for the services created by KubeDB operator for KubeDB allows following fields to set in `spec.serviceTemplate`: +- `alias` represents the identifier of the service. It has the following possible value: + - `primary` is used for the primary service identification. + - `standby` is used for the secondary service identification. + - `stats` is used for the exporter service identification. + - metadata: - annotations - spec: @@ -225,7 +233,8 @@ KubeDB allows following fields to set in `spec.serviceTemplate`: - healthCheckNodePort - sessionAffinityConfig -See [here](https://github.com/kmodules/offshoot-api/blob/kubernetes-1.16.3/api/v1/types.go#L163) to understand these fields in detail. +See [here](https://github.com/kmodules/offshoot-api/blob/kubernetes-1.16.3/api/v1/types.go#L163) to understand these fields in details. + ### spec.deletionPolicy @@ -243,11 +252,23 @@ Following table show what KubeDB does when you delete Memcached crd for differen | Behavior | DoNotTerminate | Halt | Delete | WipeOut | | ----------------------------------- | :------------: | :------: | :------: | :------: | | 1. Block Delete operation | ✓ | ✗ | ✗ | ✗ | -| 2. Create Dormant Database | ✗ | ✓ | ✗ | ✗ | -| 3. Delete PetSet | ✗ | ✓ | ✓ | ✓ | -| 4. Delete Services | ✗ | ✓ | ✓ | ✓ | +| 2. Delete PetSet | ✗ | ✓ | ✓ | ✓ | +| 3. Delete Services | ✗ | ✓ | ✓ | ✓ | +| 4. Delete Secrets | ✗ | ✗ | ✗ | ✓ | + +If you don't specify `spec.deletionPolicy` KubeDB uses `Delete` termination policy by default. + +### spec.halted +Indicates that the database is halted and all offshoot Kubernetes resources except PVCs are deleted. + +## spec.helathChecker +It defines the attributes for the health checker. +- spec.healthChecker.periodSeconds specifies how often to perform the health check. +- spec.healthChecker.timeoutSeconds specifies the number of seconds after which the probe times out. +- spec.healthChecker.failureThreshold specifies minimum consecutive failures for the healthChecker to be considered failed. +- spec.healthChecker.disableWriteCheck specifies whether to disable the writeCheck or not. -If you don't specify `spec.deletionPolicy` KubeDB uses `Halt` termination policy by default. +Know details about KubeDB Health checking from this blog post. ## Next Steps diff --git a/docs/guides/memcached/configuration/_index.md b/docs/guides/memcached/custom-configuration/_index.md similarity index 83% rename from docs/guides/memcached/configuration/_index.md rename to docs/guides/memcached/custom-configuration/_index.md index 8f4c74e0eb..4d92d60b21 100755 --- a/docs/guides/memcached/configuration/_index.md +++ b/docs/guides/memcached/custom-configuration/_index.md @@ -2,7 +2,7 @@ title: Run Memcached with Custom Configuration menu: docs_{{ .version }}: - identifier: mc-configuration + identifier: custom-configuration name: Custom Configuration parent: mc-memcached-guides weight: 30 diff --git a/docs/guides/memcached/configuration/using-config-file.md b/docs/guides/memcached/custom-configuration/using-config-file.md similarity index 68% rename from docs/guides/memcached/configuration/using-config-file.md rename to docs/guides/memcached/custom-configuration/using-config-file.md index 4f65cc4624..2d74454c9b 100644 --- a/docs/guides/memcached/configuration/using-config-file.md +++ b/docs/guides/memcached/custom-configuration/using-config-file.md @@ -4,7 +4,7 @@ menu: docs_{{ .version }}: identifier: mc-using-config-file-configuration name: Config File - parent: mc-configuration + parent: custom-configuration weight: 10 menu_name: docs_{{ .version }} section_menu_id: guides @@ -43,78 +43,48 @@ To know more about configuring Memcached server see [here](https://github.com/me At first, you have to create a config file named `memcached.conf` with your desired configuration. Then you have to put this file into a [volume](https://kubernetes.io/docs/concepts/storage/volumes/). You have to specify this volume in `spec.configSecret` section while creating Memcached crd. KubeDB will mount this volume into `/usr/config` directory of the database pod. -In this tutorial, we will configure [max_connections](https://github.com/memcached/memcached/blob/ee171109b3afe1f30ff053166d205768ce635342/doc/protocol.txt#L672) and [limit_maxbytes](https://github.com/memcached/memcached/blob/ee171109b3afe1f30ff053166d205768ce635342/doc/protocol.txt#L720) via a custom config file. We will use a Secret as volume source. +In this tutorial, we will configure [max_connections](https://github.com/memcached/memcached/blob/ee171109b3afe1f30ff053166d205768ce635342/doc/protocol.txt#L672) and [limit_maxbytes](https://github.com/memcached/memcached/blob/ee171109b3afe1f30ff053166d205768ce635342/doc/protocol.txt#L720) via secret. -**Configuration File Format:** -KubeDB support providing `memcached.conf` file in the following formats, - -```ini -# maximum simultaneous connection --c 500 -# maximum allowed memory for the database in MB. --m 128 -``` - -or - -```ini -# This is a comment line. It will be ignored. ---conn-limit=500 ---memory-limit=128 -``` - -or - -```ini -# This is a comment line. It will be ignored. -conn-limit = 500 -memory-limit = 128 -``` - -## Custom Configuration - -At first, let's create `memcached.conf` file setting `max_connections` and `limit_maxbytes` parameters. Default value of `max_connections` is 1024 and `limit_maxbytes` is 64MB (68157440 bytes). - -```ini -$ cat <memcached.conf --c 500 -# maximum allowed memory in MB --m 128 -EOF - -$ cat memcached.conf --c 500 -# maximum allowed memory in MB --m 128 +Create a secret with custom configuration file: +```yaml +apiVersion: v1 +stringData: + memcached.conf: | + --conn-limit=500 + --memory-limit=128 +kind: Secret +metadata: + name: mc-configuration + namespace: demo + resourceVersion: "4505" ``` - -> Note that config file name must be `memcached.conf` - -Now, create a Secret with this configuration file. +Here, --con-limit means max simultaneous connections which is default value is 1024. +and --memory-limit means item memory in megabytes which default value is 64. ```bash - $ kubectl create secret generic -n demo mc-configuration --from-file=./memcached.conf + $ kubectl apply -f mc-configuration.yaml secret/mc-configuration created ``` -Verify the Secret has the configuration file. +Let's get the mc-configuration `secret` with custom configuration: + ```yaml -$ kubectl get secrets -n demo mc-configuration -o yaml +$ $ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/custom-config/mc-configuration.yaml apiVersion: v1 -stringData: - memcached.conf: | - -c 500 - # maximum allowed memory in MB - -m 128 +data: + memcached.conf: LS1jb25uLWxpbWl0PTUwMAotLW1lbW9yeS1saW1pdD01MTIK kind: Secret metadata: - creationTimestamp: 2018-10-04T05:29:37Z + annotations: + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"v1","kind":"Secret","metadata":{"annotations":{},"name":"mc-configuration","namespace":"demo","resourceVersion":"4505"},"stringData":{"memcached.conf":"--conn-limit=500\n--memory-limit=512\n"}} + creationTimestamp: "2024-08-26T12:19:54Z" name: mc-configuration namespace: demo - resourceVersion: "4505" - selfLink: /api/v1/namespaces/demo/secrets/mc-configuration - uid: 7c38b5fd-c796-11e8-bb11-0800272ad446 + resourceVersion: "4580860" + uid: 02d41fc0-590e-44d1-ae95-2ee8f9632d36 +type: Opaque ``` Now, create Memcached crd specifying `spec.configSecret` field. @@ -140,32 +110,33 @@ spec: podTemplate: spec: containers: - - name: memcached - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 250m - memory: 64Mi + - name: memcached + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 250m + memory: 64Mi + deletionPolicy: WipeOut ``` -Now, wait a few minutes. KubeDB operator will create the necessary deployment, services etc. If everything goes well, we will see that a deployment with the name `custom-memcached` has been created. +Now, wait a few minutes. KubeDB operator will create necessary petset, services etc. If everything goes well, we will see that a pod with the name `custom-memcached-0` has been created. -Check that the pods for the deployment is running: +Check if the database is ready ```bash -$ kubectl get pods -n demo -NAME READY STATUS RESTARTS AGE -custom-memcached-747b866f4b-j6clt 1/1 Running 0 5m +$ kubectl get mc -n demo +NAME VERSION STATUS AGE +custom-memcached 1.6.22 Ready 17m ``` Now, we will check if the database has started with the custom configuration we have provided. We will use [stats](https://github.com/memcached/memcached/wiki/ConfiguringServer#inspecting-running-configuration) command to check the configuration. -We will connect to `custom-memcached-5b5866f5b8-cbc2d` pod from local-machine using port-frowarding. +We will connect to `custom-memcached-0` pod from local-machine using port-frowarding. ```bash -$ kubectl port-forward -n demo custom-memcached-5b5866f5b8-cbc2d 11211 +$ kubectl port-forward -n demo custom-memcached-0 11211 Forwarding from 127.0.0.1:11211 -> 11211 Forwarding from [::1]:11211 -> 11211 ``` diff --git a/docs/guides/memcached/custom-rbac/using-custom-rbac.md b/docs/guides/memcached/custom-rbac/using-custom-rbac.md index 9e5cd15a8e..6a056f1a21 100644 --- a/docs/guides/memcached/custom-rbac/using-custom-rbac.md +++ b/docs/guides/memcached/custom-rbac/using-custom-rbac.md @@ -143,7 +143,7 @@ metadata: name: quick-memcached namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" podTemplate: spec: @@ -161,20 +161,14 @@ spec: ``` -Now, wait a few minutes. the KubeDB operator will create necessary PVC, deployment, services, secret etc. If everything goes well, we should see that a pod with the name `quick-memcached-0` has been created. +Now, wait a few minutes. the KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we should see that a pod with the name `quick-memcached-0` has been created. -Check that the deployment's pod is running +Check that the pod is running: ```bash $ kubectl get pods -n demo -NAME READY STATUS RESTARTS AGE -quick-memcached-d866d6d89-sdlkx 1/1 Running 0 5m52s -quick-memcached-d866d6d89-wpdz2 1/1 Running 0 5m52s -quick-memcached-d866d6d89-wvg7c 1/1 Running 0 5m52s - -$ kubectl get pod -n demo quick-memcached-0 -NAME READY STATUS RESTARTS AGE -quick-memcached-d866d6d89-wvg7c 1/1 Running 0 14m +NAME READY STATUS RESTARTS AGE +quick-memcached-0 1/1 Running 0 5m52s ``` ## Reusing Service Account @@ -197,7 +191,7 @@ metadata: name: minute-memcached namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" podTemplate: spec: @@ -215,20 +209,14 @@ spec: ``` -Now, wait a few minutes. the KubeDB operator will create necessary PVC, deployment, services, secret etc. If everything goes well, we should see that a pod with the name `minute-memcached-0` has been created. +Now, wait a few minutes. the KubeDB operator will create necessary PVC, petset, services, secret etc. If everything goes well, we should see that a pod with the name `minute-memcached-0` has been created. -Check that the deployment's pod is running +Check that the pod is running: ```bash $ kubectl get pods -n demo -NAME READY STATUS RESTARTS AGE -minute-memcached-58798985f-47tm8 1/1 Running 0 5m52s -minute-memcached-58798985f-47tm8 1/1 Running 0 5m52s -minute-memcached-58798985f-47tm8 1/1 Running 0 5m52s - -$ kubectl get pod -n demo minute-memcached-0 -NAME READY STATUS RESTARTS AGE -minute-memcached-58798985f-47tm8 1/1 Running 0 14m +NAME READY STATUS RESTARTS AGE +minute-memcached-0 1/1 Running 0 5m52s ``` ## Cleaning up @@ -236,18 +224,29 @@ minute-memcached-58798985f-47tm8 1/1 Running 0 14m To cleanup the Kubernetes resources created by this tutorial, run: ```bash -kubectl patch -n demo mc/quick-memcached -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" -kubectl delete -n demo mc/quick-memcached +$ kubectl patch -n demo mc/quick-memcached -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +memcached.kubedb.com/quick-memcached patched -kubectl patch -n demo mc/minute-memcached -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" -kubectl delete -n demo mc/minute-memcached +$ kubectl delete -n demo mc/quick-memcached +memcached.kubedb.com "quick-memcached" deleted -kubectl delete -n demo role my-custom-role -kubectl delete -n demo rolebinding my-custom-rolebinding +$ kubectl patch -n demo mc/minute-memcached -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +memcached.kubedb.com/minute-memcached patched -kubectl delete sa -n demo my-custom-serviceaccount +$ kubectl delete -n demo mc/minute-memcached +memcached.kubedb.com "minute-memcached" deleted -kubectl delete ns demo +$ kubectl delete -n demo role my-custom-role +role.rbac.authorization.k8s.io "my-custom-role" deleted + +$ kubectl delete -n demo rolebinding my-custom-rolebinding +rolebinding.rbac.authorization.k8s.io "my-custom-rolebinding" deleted + +$ kubectl delete sa -n demo my-custom-serviceaccount +serviceaccount "my-custom-serviceaccount" deleted + +$ kubectl delete ns demo +namespace "demo" deleted ``` If you would like to uninstall the KubeDB operator, please follow the steps [here](/docs/setup/README.md). diff --git a/docs/guides/memcached/monitoring/overview.md b/docs/guides/memcached/monitoring/overview.md index dd54a77e3d..5fd48a2c78 100644 --- a/docs/guides/memcached/monitoring/overview.md +++ b/docs/guides/memcached/monitoring/overview.md @@ -44,27 +44,29 @@ In order to enable monitoring for a database, you have to configure `spec.monito ## Sample Configuration -A sample YAML for Redis crd with `spec.monitor` section configured to enable monitoring with [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) is shown below. +A sample YAML for Memcached crd with `spec.monitor` section configured to enable monitoring with [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) is shown below. ```yaml apiVersion: kubedb.com/v1 -kind: Redis +kind: Memcached metadata: - name: sample-redis - namespace: databases + name: coreos-prom-memcd + namespace: demo spec: - version: 6.0.20 + replicas: 1 + version: "1.6.22" deletionPolicy: WipeOut - configSecret: # configure Redis to use password for authentication - name: redis-config - storageType: Durable - storage: - storageClassName: default - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 5Gi + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 500m + memory: 256Mi + requests: + cpu: 500m + memory: 256Mi monitor: agent: prometheus.io/operator prometheus: @@ -72,14 +74,6 @@ spec: labels: release: prometheus exporter: - args: - - --redis.password=$(REDIS_PASSWORD) - env: - - name: REDIS_PASSWORD - valueFrom: - secretKeyRef: - name: _name_of_secret_with_redis_password - key: password # key with the password resources: requests: memory: 512Mi @@ -87,12 +81,9 @@ spec: limits: memory: 512Mi cpu: 250m - securityContext: - runAsUser: 2000 - allowPrivilegeEscalation: false ``` -Assume that above Redis is configured to use basic authentication. So, exporter image also need to provide password to collect metrics. We have provided it through `spec.monitor.args` field. +Assume that above Memcached is configured to use basic authentication. So, exporter image also need to provide password to collect metrics. We have provided it through `spec.monitor.args` field. Here, we have specified that we are going to monitor this server using Prometheus operator through `spec.monitor.agent: prometheus.io/operator`. KubeDB will create a `ServiceMonitor` crd in `monitoring` namespace and this `ServiceMonitor` will have `release: prometheus` label. diff --git a/docs/guides/memcached/monitoring/using-builtin-prometheus.md b/docs/guides/memcached/monitoring/using-builtin-prometheus.md index 620838f085..57df74bf4b 100644 --- a/docs/guides/memcached/monitoring/using-builtin-prometheus.md +++ b/docs/guides/memcached/monitoring/using-builtin-prometheus.md @@ -14,7 +14,7 @@ section_menu_id: guides # Monitoring Memcached with builtin Prometheus -This tutorial will show you how to monitor Memcached server using builtin [Prometheus](https://github.com/prometheus/prometheus) scraper. +This tutorial will show you how to monitor Memcached server using builtin [Prometheus](https://github.com/prometheus/prometheus) scraper.z ## Before You Begin @@ -59,12 +59,24 @@ spec: resources: limits: cpu: 500m - memory: 128Mi + memory: 256Mi requests: - cpu: 250m - memory: 64Mi + cpu: 500m + memory: 256Mi monitor: - agent: prometheus.io/builtin + agent: prometheus.io/operator + prometheus: + serviceMonitor: + labels: + release: prometheus + exporter: + resources: + requests: + memory: 512Mi + cpu: 200m + limits: + memory: 512Mi + cpu: 250m ``` Here, @@ -78,12 +90,12 @@ $ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" > memcached.kubedb.com/builtin-prom-memcd created ``` -Now, wait for the database to go into `Running` state. +Now, wait for the database to go into `Ready` state. ```bash $ kubectl get mc -n demo builtin-prom-memcd NAME VERSION STATUS AGE -builtin-prom-memcd 1.6.22 Running 1m +builtin-prom-memcd 1.6.22 Ready 30s ``` KubeDB will create a separate stats service with name `{Memcached crd name}-stats` for monitoring purpose. @@ -91,8 +103,9 @@ KubeDB will create a separate stats service with name `{Memcached crd name}-stat ```bash $ kubectl get svc -n demo --selector="app.kubernetes.io/instance=builtin-prom-memcd" NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -builtin-prom-memcd ClusterIP 10.105.40.31 11211/TCP 2m6s -builtin-prom-memcd-stats ClusterIP 10.110.89.251 56790/TCP 94s +builtin-prom-memcd ClusterIP 10.96.168.132 11211/TCP 20s +builtin-prom-memcd-pods ClusterIP None 11211/TCP 20s +builtin-prom-memcd-stats ClusterIP 10.96.40.60 56790/TCP 20s ``` Here, `builtin-prom-memcd-stats` service has been created for monitoring purpose. Let's describe the service. @@ -101,18 +114,21 @@ Here, `builtin-prom-memcd-stats` service has been created for monitoring purpose $ kubectl describe svc -n demo builtin-prom-memcd-stats Name: builtin-prom-memcd-stats Namespace: demo -Labels: app.kubernetes.io/name=memcacheds.kubedb.com +Labels: app.kubernetes.io/component=database app.kubernetes.io/instance=builtin-prom-memcd -Annotations: monitoring.appscode.com/agent: prometheus.io/builtin - prometheus.io/path: /metrics - prometheus.io/port: 56790 - prometheus.io/scrape: true -Selector: app.kubernetes.io/name=memcacheds.kubedb.com,app.kubernetes.io/instance=builtin-prom-memcd + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=memcacheds.kubedb.com + kubedb.com/role=stats +Annotations: monitoring.appscode.com/agent: prometheus.io/operator +Selector: app.kubernetes.io/instance=builtin-prom-memcd,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=memcacheds.kubedb.com Type: ClusterIP -IP: 10.110.89.251 -Port: prom-http 56790/TCP -TargetPort: prom-http/TCP -Endpoints: 172.17.0.14:56790,172.17.0.7:56790,172.17.0.8:56790 +IP Family Policy: SingleStack +IP Families: IPv4 +IP: 10.96.40.60 +IPs: 10.96.40.60 +Port: metrics 56790/TCP +TargetPort: metrics/TCP +Endpoints: 10.244.0.186:56790 Session Affinity: None Events: ``` @@ -270,7 +286,7 @@ data: Let's create above `ConfigMap`, ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/monitoring/builtin-prometheus/prom-config.yaml +$ kubectl apply -f kubectl apply -f https://github.com/kubedb/docs/raw/v2024.8.21/docs/examples/monitoring/builtin-prometheus/prom-config.yaml configmap/prometheus-config created ``` @@ -307,13 +323,13 @@ At first, let's check if the Prometheus pod is in `Running` state. ```bash $ kubectl get pod -n monitoring -l=app=prometheus NAME READY STATUS RESTARTS AGE -prometheus-8568c86d86-95zhn 1/1 Running 0 77s +prometheus-d64b668fb-4jq99 1/1 Running 0 77s ``` -Now, run following command on a separate terminal to forward 9090 port of `prometheus-8568c86d86-95zhn` pod, +Now, run following command on a separate terminal to forward 9090 port of `prometheus-d64b668fb-4jq99` pod, ```bash -$ kubectl port-forward -n monitoring prometheus-8568c86d86-95zhn 9090 +$ kubectl port-forward -n monitoring prometheus-d64b668fb-4jq99 9090 Forwarding from 127.0.0.1:9090 -> 9090 Forwarding from [::1]:9090 -> 9090 ``` diff --git a/docs/guides/memcached/monitoring/using-prometheus-operator.md b/docs/guides/memcached/monitoring/using-prometheus-operator.md index 6cd6e9813f..badbfc116a 100644 --- a/docs/guides/memcached/monitoring/using-prometheus-operator.md +++ b/docs/guides/memcached/monitoring/using-prometheus-operator.md @@ -22,6 +22,8 @@ section_menu_id: guides - To learn how Prometheus monitoring works with KubeDB in general, please visit [here](/docs/guides/memcached/monitoring/overview.md). +- We need a [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) instance running. If you don't already have a running instance, deploy one following the docs from [here](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack). + - To keep Prometheus resources isolated, we are going to use a separate namespace called `monitoring` to deploy respective monitoring resources. We are going to deploy database in `demo` namespace. ```bash @@ -32,10 +34,6 @@ section_menu_id: guides namespace/demo created ``` -- We need a [Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) instance running. If you don't already have a running instance, deploy one following the docs from [here](https://github.com/appscode/third-party-tools/blob/master/monitoring/prometheus/operator/README.md). - -- If you already don't have a Prometheus server running, deploy one following tutorial from [here](https://github.com/appscode/third-party-tools/blob/master/monitoring/prometheus/operator/README.md#deploy-prometheus-server). - > Note: YAML files used in this tutorial are stored in [docs/examples/memcached](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/memcached) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs). ## Find out required labels for ServiceMonitor @@ -46,8 +44,9 @@ At first, let's find out the available Prometheus server in our cluster. ```bash $ kubectl get prometheus --all-namespaces -NAMESPACE NAME AGE -monitoring prometheus 18m +NAMESPACE NAME VERSION DESIRED READY RECONCILED AVAILABLE AGE +monitoring prometheus-kube-prometheus-prometheus v2.54.1 1 1 True True 3m + ``` > If you don't have any Prometheus server running in your cluster, deploy one following the guide specified in **Before You Begin** section. @@ -55,31 +54,111 @@ monitoring prometheus 18m Now, let's view the YAML of the available Prometheus server `prometheus` in `monitoring` namespace. ```yaml -$ kubectl get prometheus -n monitoring prometheus -o yaml +$ kubectl get prometheus -n monitoring prometheus-kube-prometheus-prometheus -o yaml apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: annotations: - kubectl.kubernetes.io/last-applied-configuration: | - {"apiVersion":"monitoring.coreos.com/v1","kind":"Prometheus","metadata":{"annotations":{},"labels":{"prometheus":"prometheus"},"name":"prometheus","namespace":"monitoring"},"spec":{"replicas":1,"resources":{"requests":{"memory":"400Mi"}},"serviceAccountName":"prometheus","serviceMonitorSelector":{"matchLabels":{"release":"prometheus"}}}} - creationTimestamp: 2019-01-03T13:41:51Z + meta.helm.sh/release-name: prometheus + meta.helm.sh/release-namespace: monitoring + creationTimestamp: "2024-09-17T13:24:28Z" generation: 1 labels: - prometheus: prometheus - name: prometheus + app: kube-prometheus-stack-prometheus + app.kubernetes.io/instance: prometheus + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/part-of: kube-prometheus-stack + app.kubernetes.io/version: 62.7.0 + chart: kube-prometheus-stack-62.7.0 + heritage: Helm + release: prometheus + name: prometheus-kube-prometheus-prometheus namespace: monitoring - resourceVersion: "44402" - selfLink: /apis/monitoring.coreos.com/v1/namespaces/monitoring/prometheuses/prometheus - uid: 5324ad98-0f5d-11e9-b230-080027f306f3 + resourceVersion: "396596" + uid: ee3cb256-1f08-4bd4-966a-2050822affbf spec: + alerting: + alertmanagers: + - apiVersion: v2 + name: prometheus-kube-prometheus-alertmanager + namespace: monitoring + pathPrefix: / + port: http-web + automountServiceAccountToken: true + enableAdminAPI: false + evaluationInterval: 30s + externalUrl: http://prometheus-kube-prometheus-prometheus.monitoring:9090 + hostNetwork: false + image: quay.io/prometheus/prometheus:v2.54.1 + listenLocal: false + logFormat: logfmt + logLevel: info + paused: false + podMonitorNamespaceSelector: {} + podMonitorSelector: + matchLabels: + release: prometheus + portName: http-web + probeNamespaceSelector: {} + probeSelector: + matchLabels: + release: prometheus replicas: 1 - resources: - requests: - memory: 400Mi - serviceAccountName: prometheus + retention: 10d + routePrefix: / + ruleNamespaceSelector: {} + ruleSelector: + matchLabels: + release: prometheus + scrapeConfigNamespaceSelector: {} + scrapeConfigSelector: + matchLabels: + release: prometheus + scrapeInterval: 30s + securityContext: + fsGroup: 2000 + runAsGroup: 2000 + runAsNonRoot: true + runAsUser: 1000 + seccompProfile: + type: RuntimeDefault + serviceAccountName: prometheus-kube-prometheus-prometheus + serviceMonitorNamespaceSelector: {} serviceMonitorSelector: matchLabels: release: prometheus + shards: 1 + tsdb: + outOfOrderTimeWindow: 0s + version: v2.54.1 + walCompression: true +status: + availableReplicas: 1 + conditions: + - lastTransitionTime: "2024-09-17T13:24:45Z" + message: "" + observedGeneration: 1 + reason: "" + status: "True" + type: Available + - lastTransitionTime: "2024-09-17T13:24:45Z" + message: "" + observedGeneration: 1 + reason: "" + status: "True" + type: Reconciled + paused: false + replicas: 1 + selector: app.kubernetes.io/instance=prometheus-kube-prometheus-prometheus,app.kubernetes.io/managed-by=prometheus-operator,app.kubernetes.io/name=prometheus,operator.prometheus.io/name=prometheus-kube-prometheus-prometheus,prometheus=prometheus-kube-prometheus-prometheus + shardStatuses: + - availableReplicas: 1 + replicas: 1 + shardID: "0" + unavailableReplicas: 0 + updatedReplicas: 1 + shards: 1 + unavailableReplicas: 0 + updatedReplicas: 1 ``` Notice the `spec.serviceMonitorSelector` section. Here, `release: prometheus` label is used to select `ServiceMonitor` crd. So, we are going to use this label in `spec.monitor.prometheus.labels` field of Memcached crd. @@ -92,10 +171,10 @@ At first, let's deploy an Memcached server with monitoring enabled. Below is the apiVersion: kubedb.com/v1 kind: Memcached metadata: - name: coreos-prom-memcd + name: memcached namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" deletionPolicy: WipeOut podTemplate: @@ -130,102 +209,120 @@ Here, Let's create the Memcached object that we have shown above, ```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/monitoring/coreos-prom-memcd.yaml -memcached.kubedb.com/coreos-prom-memcd created +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/monitoring/memcached.yaml +memcached.kubedb.com/memcached created ``` Now, wait for the database to go into `Running` state. ```bash -$ kubectl get mc -n demo coreos-prom-memcd -NAME VERSION STATUS AGE -coreos-prom-memcd 1.6.22 Running 19s +$ kubectl get mc -n demo memcached +NAME VERSION STATUS AGE +memcached 1.6.22 Ready 2m ``` KubeDB will create a separate stats service with name `{Memcached crd name}-stats` for monitoring purpose. ```bash -$ kubectl get svc -n demo --selector="app.kubernetes.io/instance=coreos-prom-memcd" -NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -coreos-prom-memcd ClusterIP 10.100.207.76 11211/TCP 41s -coreos-prom-memcd-stats ClusterIP 10.97.230.149 56790/TCP 38s +$ kubectl get svc -n demo --selector="app.kubernetes.io/instance=memcached" +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +memcached ClusterIP 10.96.91.51 11211/TCP 3m9s +memcached-pods ClusterIP None 11211/TCP 3m9s +memcached-stats ClusterIP 10.96.50.21 56790/TCP 3m9s ``` -Here, `coreos-prom-memcd-stats` service has been created for monitoring purpose. +Here, `memcached-stats` service has been created for monitoring purpose. Let's describe this stats service. ```yaml -$ kubectl describe svc -n demo coreos-prom-memcd-stats -Name: coreos-prom-memcd-stats +$ kubectl describe svc -n demo memcached-stats +Name: memcached-stats Namespace: demo -Labels: app.kubernetes.io/name=memcacheds.kubedb.com - app.kubernetes.io/instance=coreos-prom-memcd +Labels: app.kubernetes.io/component=database + app.kubernetes.io/instance=memcached + app.kubernetes.io/managed-by=kubedb.com + app.kubernetes.io/name=memcacheds.kubedb.com + kubedb.com/role=stats Annotations: monitoring.appscode.com/agent: prometheus.io/operator -Selector: app.kubernetes.io/name=memcacheds.kubedb.com,app.kubernetes.io/instance=coreos-prom-memcd +Selector: app.kubernetes.io/instance=memcached,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=memcacheds.kubedb.com Type: ClusterIP -IP: 10.97.230.149 -Port: prom-http 56790/TCP -TargetPort: prom-http/TCP -Endpoints: 172.17.0.7:56790,172.17.0.8:56790,172.17.0.9:56790 +IP Family Policy: SingleStack +IP Families: IPv4 +IP: 10.96.50.21 +IPs: 10.96.50.21 +Port: metrics 56790/TCP +TargetPort: metrics/TCP +Endpoints: 10.244.0.7:56790 Session Affinity: None Events: ``` Notice the `Labels` and `Port` fields. `ServiceMonitor` will use these information to target its endpoints. -KubeDB will also create a `ServiceMonitor` crd in `monitoring` namespace that select the endpoints of `coreos-prom-memcd-stats` service. Verify that the `ServiceMonitor` crd has been created. +KubeDB will also create a `ServiceMonitor` crd in `monitoring` namespace that select the endpoints of `memcached-stats` service. Verify that the `ServiceMonitor` crd has been created. ```bash -$ kubectl get servicemonitor -n monitoring -NAME AGE -kubedb-demo-coreos-prom-memcd 1m +$ kubectl get servicemonitor -n demo +NAME AGE +memcached-stats 5m ``` Let's verify that the `ServiceMonitor` has the label that we had specified in `spec.monitor` section of Memcached crd. ```yaml -$ kubectl get servicemonitor -n monitoring kubedb-demo-coreos-prom-memcd -o yaml +$ kubectl get servicemonitor -n demo memcached-stats -o yaml apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: - creationTimestamp: 2019-01-03T15:13:46Z + creationTimestamp: "2024-09-17T13:32:15Z" generation: 1 labels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: memcached + app.kubernetes.io/managed-by: kubedb.com + app.kubernetes.io/name: memcacheds.kubedb.com release: prometheus - monitoring.appscode.com/service: coreos-prom-memcd-stats.demo - name: kubedb-demo-coreos-prom-memcd - namespace: monitoring - resourceVersion: "51236" - selfLink: /apis/monitoring.coreos.com/v1/namespaces/monitoring/servicemonitors/kubedb-demo-coreos-prom-memcd - uid: 2aa57b5a-0f6a-11e9-b230-080027f306f3 + name: memcached-stats + namespace: demo + ownerReferences: + - apiVersion: v1 + blockOwnerDeletion: true + controller: true + kind: Service + name: memcached-stats + uid: 6c05bc95-c26c-4b0b-988f-2ecc58e983bf + resourceVersion: "397210" + uid: b14633ab-338d-43a6-87bc-2ab77d761cf4 spec: endpoints: - honorLabels: true - interval: 10s path: /metrics - port: prom-http + port: metrics namespaceSelector: matchNames: - demo selector: matchLabels: + app.kubernetes.io/component: database + app.kubernetes.io/instance: memcached + app.kubernetes.io/managed-by: kubedb.com app.kubernetes.io/name: memcacheds.kubedb.com - app.kubernetes.io/instance: coreos-prom-memcd + kubedb.com/role: stats ``` Notice that the `ServiceMonitor` has label `release: prometheus` that we had specified in Memcached crd. -Also notice that the `ServiceMonitor` has selector which match the labels we have seen in the `coreos-prom-memcd-stats` service. It also, target the `prom-http` port that we have seen in the stats service. +Also notice that the `ServiceMonitor` has selector which match the labels we have seen in the `memcached-stats` service. It also, target the `prom-http` port that we have seen in the stats service. ## Verify Monitoring Metrics At first, let's find out the respective Prometheus pod for `prometheus` Prometheus server. ```bash -$ kubectl get pod -n monitoring -l=app=prometheus -NAME READY STATUS RESTARTS AGE -prometheus-prometheus-0 3/3 Running 1 63m +$ kubectl get pod -n monitoring -l=app.kubernetes.io/name=prometheus +NAME READY STATUS RESTARTS AGE +prometheus-prometheus-kube-prometheus-prometheus-0 2/2 Running 0 16m ``` Prometheus server is listening to port `9090` of `prometheus-prometheus-0` pod. We are going to use [port forwarding](https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/) to access Prometheus dashboard. @@ -233,12 +330,12 @@ Prometheus server is listening to port `9090` of `prometheus-prometheus-0` pod. Run following command on a separate terminal to forward the port 9090 of `prometheus-prometheus-0` pod, ```bash -$ kubectl port-forward -n monitoring prometheus-prometheus-0 9090 +$ kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090 Forwarding from 127.0.0.1:9090 -> 9090 Forwarding from [::1]:9090 -> 9090 ``` -Now, we can access the dashboard at `localhost:9090`. Open [http://localhost:9090](http://localhost:9090) in your browser. You should see `prom-http` endpoint of `coreos-prom-memcd-stats` service as one of the targets. +Now, we can access the dashboard at `localhost:9090`. Open [http://localhost:9090](http://localhost:9090) in your browser. You should see `prom-http` endpoint of `memcached-stats` service as one of the targets.

  Prometheus Target @@ -252,7 +349,7 @@ To cleanup the Kubernetes resources created by this tutorial, run following comm ```bash # cleanup database -kubectl delete -n demo mc/coreos-prom-memcd +kubectl delete -n demo mc/memcached # cleanup prometheus resources kubectl delete -n monitoring prometheus prometheus diff --git a/docs/guides/memcached/private-registry/using-private-registry.md b/docs/guides/memcached/private-registry/using-private-registry.md index adb56182c4..0bab81c399 100644 --- a/docs/guides/memcached/private-registry/using-private-registry.md +++ b/docs/guides/memcached/private-registry/using-private-registry.md @@ -18,7 +18,7 @@ KubeDB operator supports using private Docker registry. This tutorial will show ## Before You Begin -- Read [concept of Memcached Version Catalog](/docs/guides/memcached/concepts/catalog.md) to learn detail concepts of `MemcachedVersion` object. +- Read [concept of Memcached Version Catalog](/docs/guides/memcached/concepts/memcached-version.md) to learn detail concepts of `MemcachedVersion` object. - You need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). @@ -28,11 +28,10 @@ KubeDB operator supports using private Docker registry. This tutorial will show ```bash $ kubectl get memcachedversions -n kube-system -o=custom-columns=NAME:.metadata.name,VERSION:.spec.version,DB_IMAGE:.spec.db.image,EXPORTER_IMAGE:.spec.exporter.image,DEPRECATED:.spec.deprecated - NAME VERSION DB_IMAGE EXPORTER_IMAGE DEPRECATED - 1.5 1.5 kubedb/memcached:1.5 kubedb/operator:0.8.0 true - 1.5-v1 1.5 kubedb/memcached:1.5-v1 kubedb/memcached-exporter:v0.4.1 - 1.5.4 1.5.4 kubedb/memcached:1.5.4 kubedb/operator:0.8.0 true - 1.6.22 1.5.4 kubedb/memcached:1.6.22 kubedb/memcached-exporter:v0.4.1 + NAME VERSION DB_IMAGE EXPORTER_IMAGE DEPRECATED + 1.5.22 1.5.22 ghcr.io/appscode-images/memcached:1.5.22-alpine prom/memcached-exporter:v0.14.2 + 1.6.22 1.6.22 ghcr.io/appscode-images/memcached:1.6.22-alpine ghcr.io/appscode-images/memcached_exporter:v0.14.3-ac + 1.6.29 1.6.29 ghcr.io/appscode-images/memcached:1.6.29-alpine ghcr.io/appscode-images/memcached_exporter:v0.14.3-ac ``` Docker hub repositories: @@ -47,15 +46,17 @@ KubeDB operator supports using private Docker registry. This tutorial will show apiVersion: catalog.kubedb.com/v1alpha1 kind: MemcachedVersion metadata: - name: 1.5.22 + name: 1.6.22 spec: db: - image: PRIVATE_REGISTRY/memcached:1.5.22 + image: PRIVATE_REGISTRY/memcached:1.6.22-alpine exporter: - image: PRIVATE_REGISTRY/memcached-exporter:v0.4.1 + image: PRIVATE_REGISTRY/memcached_exporter:v0.14.3 podSecurityPolicies: databasePolicyName: memcached-db - version: 1.5.22 + securityContext: + runAsUser: 999 + version: 1.6.22 ``` - To keep things isolated, this tutorial uses a separate namespace called `demo` throughout this tutorial. Run the following command to prepare your cluster for this tutorial: @@ -100,7 +101,7 @@ metadata: name: memcd-pvt-reg namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" podTemplate: spec: @@ -132,13 +133,13 @@ NAME READY STATUS RESTARTS AGE memcd-pvt-reg-694d4d44df-bwtk8 0/1 ContainerCreating 0 18s memcd-pvt-reg-694d4d44df-tkqc4 0/1 ContainerCreating 0 17s memcd-pvt-reg-694d4d44df-zhj4l 0/1 ContainerCreating 0 17s -memcd-pvt-reg-694d4d44df-bwtk8 1/1 Running 0 25s -memcd-pvt-reg-694d4d44df-zhj4l 1/1 Running 0 26s -memcd-pvt-reg-694d4d44df-tkqc4 1/1 Running 0 27s +memcd-pvt-reg-694d4d44df-bwtk8 1/1 Running 0 25s +memcd-pvt-reg-694d4d44df-zhj4l 1/1 Running 0 26s +memcd-pvt-reg-694d4d44df-tkqc4 1/1 Running 0 27s $ kubectl get mc -n demo NAME VERSION STATUS AGE -memcd-pvt-reg 1.6.22 Running 59s +memcd-pvt-reg 1.6.22 Running 59s ``` ## Cleaning up @@ -146,13 +147,17 @@ memcd-pvt-reg 1.6.22 Running 59s To cleanup the Kubernetes resources created by this tutorial, run: ```bash -kubectl patch -n demo mc/memcd-pvt-reg -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" -kubectl delete -n demo mc/memcd-pvt-reg +$ kubectl patch -n demo mc/memcd-pvt-reg -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +memcached.kubedb.com/memcd-pvt-reg patched -kubectl patch -n demo drmn/memcd-pvt-reg -p '{"spec":{"wipeOut":true}}' --type="merge" -kubectl delete -n demo drmn/memcd-pvt-reg +$ kubectl delete -n demo mc/memcd-pvt-reg +memcached.kubedb.com "memcd-pvt-reg" deleted -kubectl delete ns demo +$ kubectl delete -n demo secret myregistrykey +secret "myregistrykey" deleted + +$ kubectl delete ns demo +namespace "demo" deleted ``` ## Next Steps diff --git a/docs/guides/memcached/quickstart/quickstart.md b/docs/guides/memcached/quickstart/quickstart.md index 8f8585bc12..c2fea42b1d 100644 --- a/docs/guides/memcached/quickstart/quickstart.md +++ b/docs/guides/memcached/quickstart/quickstart.md @@ -24,7 +24,7 @@ This tutorial will show you how to use KubeDB to run a Memcached server. ## Before You Begin -- At first, you need to have a Kubernetes cluster, and the kubectl command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). - Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). @@ -45,11 +45,10 @@ When you have installed KubeDB, it has created `MemcachedVersion` crd for all su ```bash $ kubectl get memcachedversions -NAME VERSION DB_IMAGE DEPRECATED AGE -1.5 1.5 kubedb/memcached:1.5 true 2h -1.5-v1 1.5 kubedb/memcached:1.5-v1 2h -1.5.4 1.5.4 kubedb/memcached:1.5.4 true 2h -1.6.22 1.5.4 kubedb/memcached:1.6.22 2h +NAME VERSION DB_IMAGE DEPRECATED AGE +1.5.22 1.5.22 ghcr.io/appscode-images/memcached:1.5.22-alpine 2h +1.6.22 1.6.22 ghcr.io/appscode-images/memcached:1.6.22-alpine 2h +1.6.29 1.6.29 ghcr.io/appscode-images/memcached:1.6.29-alpine 2h ``` ## Create a Memcached server @@ -65,7 +64,7 @@ metadata: name: memcd-quickstart namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" podTemplate: spec: @@ -94,7 +93,7 @@ metadata: name: memcd-quickstart namespace: demo spec: - replicas: 3 + replicas: 1 version: "1.6.22" podTemplate: spec: @@ -120,52 +119,119 @@ Here, - `spec.resource` is an optional field that specifies how much CPU and memory (RAM) each Container needs. To learn details about Managing Compute Resources for Containers, please visit [here](https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/). - `spec.deletionPolicy` or `spec.terminationPolicy` gives flexibility whether to `nullify`(reject) the delete operation of `Memcached` crd or which resources KubeDB should keep or delete when you delete `Memcached` crd. If admission webhook is enabled, It prevents users from deleting the database as long as the `spec.deletionPolicy` is set to `DoNotTerminate`. Learn details of all `DeletionPolicy` [here](/docs/guides/memcached/concepts/memcached.md#specdeletionpolicy) -KubeDB operator watches for `Memcached` objects using Kubernetes api. When a `Memcached` object is created, KubeDB operator will create a new Deployment and a ClusterIP Service with the matching Memcached object name. - +KubeDB operator watches for `Memcached` objects using Kubernetes api. When a `Memcached` object is created, KubeDB operator will create a new PetSet and a Service with the matching Memcached object name. ```bash $ kubectl get mc -n demo NAME VERSION STATUS AGE -memcd-quickstart 1.6.22 Running 2m - -$ kubectl dba describe mc -n demo memcd-quickstart -Name: memcd-quickstart -Namespace: demo -CreationTimestamp: Wed, 03 Oct 2018 15:40:38 +0600 -Labels: -Annotations: -Replicas: 3 total -Status: Running - -Deployment: - Name: memcd-quickstart - CreationTimestamp: Wed, 03 Oct 2018 15:40:40 +0600 - Labels: app.kubernetes.io/name=memcacheds.kubedb.com - app.kubernetes.io/instance=memcd-quickstart - Annotations: deployment.kubernetes.io/revision=1 - Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable - Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed - -Service: - Name: memcd-quickstart - Labels: app.kubernetes.io/name=memcacheds.kubedb.com - app.kubernetes.io/instance=memcd-quickstart - Annotations: - Type: ClusterIP - IP: 10.111.81.177 - Port: db 11211/TCP - TargetPort: db/TCP - Endpoints: 172.17.0.4:11211,172.17.0.14:11211,172.17.0.6:11211 - -No Snapshots. - +memcd-quickstart 1.6.22 Running 2m + +$ kubectl describe mc -n demo memcd-quickstart +Name: memcd-quickstart +Namespace: demo +Labels: +Annotations: +API Version: kubedb.com/v1 +Kind: Memcached +Metadata: + Creation Timestamp: 2024-08-22T13:54:45Z + Finalizers: + kubedb.com + Generation: 1 + Resource Version: 3428 + UID: 4c8bea2e-c4a3-4310-9a7d-d8b60ac47d5b +Spec: + Deletion Policy: DoNotTerminate + Health Checker: + Failure Threshold: 1 + Period Seconds: 10 + Timeout Seconds: 10 + Pod Template: + Controller: + Metadata: + Spec: + Containers: + Name: memcached + Resources: + Limits: + Cpu: 500m + Memory: 128Mi + Requests: + Cpu: 250m + Memory: 64Mi + Security Context: + Allow Privilege Escalation: false + Capabilities: + Drop: + ALL + Run As Group: 999 + Run As Non Root: true + Run As User: 999 + Seccomp Profile: + Type: RuntimeDefault + Pod Placement Policy: + Name: default + Security Context: + Fs Group: 999 + Service Account Name: memcd-quickstart + Replicas: 1 + Version: 1.6.22 +Status: + Conditions: + Last Transition Time: 2024-08-22T13:54:45Z + Message: The KubeDB operator has started the provisioning of Memcached: demo/memcd-quickstart + Reason: DatabaseProvisioningStartedSuccessfully + Status: True + Type: ProvisioningStarted + Last Transition Time: 2024-08-22T13:54:55Z + Message: All desired replicas are ready. + Reason: AllReplicasReady + Status: True + Type: ReplicaReady + Last Transition Time: 2024-08-22T13:55:05Z + Message: The Memcached: demo/memcd-quickstart is accepting mcClient requests. + Observed Generation: 1 + Reason: DatabaseAcceptingConnectionRequest + Status: True + Type: AcceptingConnection + Last Transition Time: 2024-08-22T13:55:05Z + Message: The Memcached: demo/memcd-quickstart is ready. + Observed Generation: 1 + Reason: ReadinessCheckSucceeded + Status: True + Type: Ready + Last Transition Time: 2024-08-22T13:55:05Z + Message: The Memcached: demo/memcd-quickstart is successfully provisioned. + Observed Generation: 1 + Reason: DatabaseSuccessfullyProvisioned + Status: True + Type: Provisioned + Observed Generation: 1 + Phase: Ready Events: - Type Reason Age From Message - ---- ------ ---- ---- ------- - Normal Successful 2m Memcached operator Successfully created Service - Normal Successful 1m Memcached operator Successfully created PetSet - Normal Successful 1m Memcached operator Successfully created Memcached - Normal Successful 1m Memcached operator Successfully patched PetSet - Normal Successful 1m Memcached operator Successfully patched Memcached + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal Successful 5m37s KubeDB Operator Successfully created governing service + Normal Successful 5m37s KubeDB Operator Successfully created Service + Normal Successful 5m37s KubeDB Operator Successfully created appbinding + Normal Successful 5m28s KubeDB Operator Successfully patched PetSet + Normal Successful 5m28s KubeDB Operator Successfully patched Memcached + Normal Successful 5m28s KubeDB Operator Successfully patched PetSet + Normal Successful 5m28s KubeDB Operator Successfully patched Memcached + Normal Successful 5m18s KubeDB Operator Successfully patched PetSet + Normal Successful 5m18s KubeDB Operator Successfully patched Memcached + Normal Successful 5m18s KubeDB Operator Successfully patched PetSet + Normal Successful 5m18s KubeDB Operator Successfully patched Memcached + Normal Successful 5m18s KubeDB Operator Successfully patched PetSet + Normal Successful 5m18s KubeDB Operator Successfully patched Memcached + +$ kubectl get petset -n demo +NAME AGE +memcd-quickstart 8m15s + +$ kubectl get service -n demo +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +memcd-quickstart ClusterIP 10.96.115.90 11211/TCP 9m7s +memcd-quickstart-pods ClusterIP None 11211/TCP 9m7s ``` KubeDB operator sets the `status.phase` to `Running` once the database is successfully created. Run the following command to see the modified Memcached object: @@ -175,53 +241,106 @@ $ kubectl get mc -n demo memcd-quickstart -o yaml apiVersion: kubedb.com/v1 kind: Memcached metadata: - creationTimestamp: 2018-10-03T09:40:38Z + annotations: + kubectl.kubernetes.io/last-applied-configuration: | + {"apiVersion":"kubedb.com/v1","kind":"Memcached","metadata":{"annotations":{},"name":"memcd-quickstart","namespace":"demo"},"spec":{"deletionPolicy":"DoNotTerminate","podTemplate":{"spec":{"containers":[{"name":"memcached","resources":{"limits":{"cpu":"500m","memory":"128Mi"},"requests":{"cpu":"250m","memory":"64Mi"}}}]}},"replicas":3,"version":"1.6.22"}} + creationTimestamp: "2024-08-22T13:54:45Z" finalizers: - kubedb.com generation: 1 name: memcd-quickstart namespace: demo - resourceVersion: "23592" - selfLink: /apis/kubedb.com/v1/namespaces/demo/memcacheds/memcd-quickstart - uid: 62b08ec3-c6f0-11e8-8ebc-0800275bbbee + resourceVersion: "4562" + uid: 4c8bea2e-c4a3-4310-9a7d-d8b60ac47d5b spec: + deletionPolicy: DoNotTerminate + healthChecker: + failureThreshold: 1 + periodSeconds: 10 + timeoutSeconds: 10 podTemplate: controller: {} metadata: {} spec: - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 250m - memory: 64Mi - replicas: 3 - deletionPolicy: Delete + containers: + - name: memcached + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 250m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + runAsGroup: 999 + runAsNonRoot: true + runAsUser: 999 + seccompProfile: + type: RuntimeDefault + podPlacementPolicy: + name: default + securityContext: + fsGroup: 999 + serviceAccountName: memcd-quickstart + replicas: 1 version: 1.6.22 status: - observedGeneration: 1$4210395375389091791 - phase: Running + conditions: + - lastTransitionTime: "2024-08-22T13:54:45Z" + message: 'The KubeDB operator has started the provisioning of Memcached: demo/memcd-quickstart' + reason: DatabaseProvisioningStartedSuccessfully + status: "True" + type: ProvisioningStarted + - lastTransitionTime: "2024-08-22T13:54:55Z" + message: All desired replicas are ready. + reason: AllReplicasReady + status: "True" + type: ReplicaReady + - lastTransitionTime: "2024-08-23T04:54:05Z" + message: 'The Memcached: demo/memcd-quickstart is accepting mcClient requests.' + observedGeneration: 1 + reason: DatabaseAcceptingConnectionRequest + status: "True" + type: AcceptingConnection + - lastTransitionTime: "2024-08-23T04:54:05Z" + message: 'The Memcached: demo/memcd-quickstart is ready.' + observedGeneration: 1 + reason: ReadinessCheckSucceeded + status: "True" + type: Ready + - lastTransitionTime: "2024-08-22T13:55:05Z" + message: 'The Memcached: demo/memcd-quickstart is successfully provisioned.' + observedGeneration: 1 + reason: DatabaseSuccessfullyProvisioned + status: "True" + type: Provisioned + observedGeneration: 1 + phase: Ready + ``` -Now, you can connect to this Memcached cluster using `telnet`. +Now, you can connect to this database using `telnet`. Here, we will connect to Memcached server from local-machine through port-forwarding. ```bash $ kubectl get pods -n demo -NAME READY STATUS RESTARTS AGE -memcd-quickstart-57d88d6595-gfptm 1/1 Running 0 3m -memcd-quickstart-57d88d6595-wmp5p 1/1 Running 0 3m -memcd-quickstart-57d88d6595-xf4z2 1/1 Running 0 3m +NAME READY STATUS RESTARTS AGE +memcd-quickstart-0 1/1 Running 1 (26m ago) 15h -// We will connect to `memcd-quickstart-667cd68854-gs69q` pod from local-machine using port-frowarding. -$ kubectl port-forward -n demo memcd-quickstart-57d88d6595-gfptm 11211 +# We will connect to `memcd-quickstart-0` pod from local-machine using port-frowarding. +$ kubectl port-forward -n demo memcd-quickstart-0 11211 Forwarding from 127.0.0.1:11211 -> 11211 +Forwarding from [::1]:11211 -> 11211 -# Connect Memcached cluster from localmachine through telnet. +# Connect to Memcached from localmachine through telnet. ~ $ telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. +Escape character is '^]'. # Save data Command: set my_key 0 2592000 1 @@ -232,7 +351,7 @@ STORED # Meaning: # 0 => no flags # 2592000 => TTL (Time-To-Live) in [s] -# 1 => size in byte +# 1 => size in bytes # 2 => value # View data command @@ -252,124 +371,55 @@ When `deletionPolicy` is `DoNotTerminate`, KubeDB takes advantage of `Validation ```bash $ kubectl delete mc memcd-quickstart -n demo -Error from server (BadRequest): admission webhook "memcached.validators.kubedb.com" denied the request: memcached "memcd-quickstart" can't be halted. To delete, change spec.deletionPolicy +Error from server (Forbidden): admission webhook "memcachedwebhook.validators.kubedb.com" denied the request: memcached demo/memcd-quickstart is can't terminated. To delete, change spec.deletionPolicy ``` -Now, run `kubectl edit mc memcd-quickstart -n demo` to set `spec.deletionPolicy` to `Halt` (which creates `dormantdatabase` when memcached is deleted and keeps PVC, snapshots, Secrets intact) or remove this field (which default to `Halt`). Then you will be able to delete/halt the database. +Now, run `kubectl edit mc memcd-quickstart -n demo` to set `spec.deletionPolicy` to `Halt`. Then you will be able to delete/halt the database. Learn details of all `DeletionPolicy` [here](/docs/guides/memcached/concepts/memcached.md#specdeletionpolicy) ## Halt Database -When [DeletionPolicy](/docs/guides/memcached/concepts/memcached.md#specdeletionpolicy) is set to `Halt`, it will halt the Memcached server instead of deleting it. Here, you delete the Memcached object, KubeDB operator will delete the Deployment and its pods. In KubeDB parlance, we say that `memcd-quickstart` Memcached server has entered into dormant state. This is represented by KubeDB operator by creating a matching DormantDatabase object. +When [DeletionPolicy](/docs/guides/memcached/concepts/memcached.md#specdeletionpolicy) is set to `Halt` and you delete the memcached object, the KubeDB operator will delete the PetSet and its pods but leaves the PVCs, secrets and database backup (snapshots) intact. Learn details of all `DeletionPolicy` [here](/docs/guides/memcached/concepts/memcached.md#specdeletionpolicy). -```bash -$ kubectl delete mc memcd-quickstart -n demo -memcached.kubedb.com "memcd-quickstart" deleted - -$ kubectl get drmn -n demo memcd-quickstart -NAME STATUS AGE -memcd-quickstart Pausing 21s +You can also keep the memcached object and halt the database to resume it again later. If you halt the database, the KubeDB operator will delete the petsets and services but will keep the memcached object, pvcs, secrets and backup (snapshots). -$ kubectl get drmn -n demo memcd-quickstart -NAME STATUS AGE -memcd-quickstart Halted 2m -``` +To halt the database, first you have to set the deletionPolicy to `Halt` in existing database. You can use the below command to set the deletionPolicy to `Halt`, if it is not already set. -```yaml -$ kubectl get drmn -n demo memcd-quickstart -o yaml -apiVersion: kubedb.com/v1 -kind: DormantDatabase -metadata: - creationTimestamp: 2018-10-03T09:49:16Z - finalizers: - - kubedb.com - generation: 1 - labels: - app.kubernetes.io/name: memcacheds.kubedb.com - name: memcd-quickstart - namespace: demo - resourceVersion: "24242" - selfLink: /apis/kubedb.com/v1/namespaces/demo/dormantdatabases/memcd-quickstart - uid: 97ad28ef-c6f1-11e8-8ebc-0800275bbbee -spec: - origin: - metadata: - creationTimestamp: 2018-10-03T09:40:38Z - name: memcd-quickstart - namespace: demo - spec: - memcached: - podTemplate: - controller: {} - metadata: {} - spec: - resources: - limits: - cpu: 500m - memory: 128Mi - requests: - cpu: 250m - memory: 64Mi - replicas: 3 - deletionPolicy: Halt - version: 1.6.22 -status: - observedGeneration: 1$7678503742307285743 - pausingTime: 2018-10-03T09:50:10Z - phase: Halted +```bash +$ kubectl patch -n demo mc/memcd-quickstart -p '{"spec":{"deletionPolicy":"Halt"}}' --type="merge" +memcached.kubedb.com/memcd-quickstart patched ``` -Here, - -- `spec.origin` is the spec of the original spec of the original Memcached object. -- `status.phase` points to the current database state `Halted`. - -## Resume Dormant Database - -To resume the database from the dormant state, create same `Memcached` object with same Spec. - -In this tutorial, the dormant database can be resumed by creating `Memcached` database using demo-1.yaml file. - -The below command resumes the dormant database `memcd-quickstart`. +Then, you have to set the `spec.halted` as true to set the database in a `Halted` state. You can use the below command. ```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/quickstart/demo-1.yaml -memcached.kubedb.com/memcd-quickstart created +$ kubectl patch -n demo mc/memcd-quickstart -p '{"spec":{"halted":true}}' --type="merge" +memcached.kubedb.com/memcd-quickstart patched ``` -## Wipeout Dormant Database - -You can wipe out a DormantDatabase while deleting the objet by setting `spec.wipeOut` to true. KubeDB operator will delete any relevant resources of this `Memcached` database. - -```yaml -$ kubectl delete mc memcd-quickstart -n demo -memcached "memcd-quickstart" deleted +After that, kubedb will delete the petsets and services, and you can see the database Phase as `Halted`. You can see the bellow command. -$ kubectl edit drmn -n demo memcd-quickstart -apiVersion: kubedb.com/v1 -kind: DormantDatabase -metadata: - name: memcd-quickstart - namespace: demo - ... -spec: - wipeOut: true - ... -status: - phase: Halted - ... +```bash +$ kubectl get memcached -n demo +NAME VERSION STATUS AGE +memcd-quickstart 1.6.22 Halted 91s ``` -If `spec.wipeOut` is not set to true while deleting the `dormantdatabase` object, then only this object will be deleted and `kubedb-operator` won't delete related Secrets. +## Resume Halted Memcached +Now, to resume the database, i.e. to get the same database setup back again, you have to set the `spec.halted` as false. You can use the below command. -## Delete DormantDatabase +```bash +$ kubectl patch -n demo mc/memcd-quickstart -p '{"spec":{"halted":false}}' --type="merge" +memcached.kubedb.com/memcd-quickstart patched +``` -As it is already discussed above, `DormantDatabase` can be deleted with or without wiping out the resources. To delete the `dormantdatabase`, +When the database is resumed successfully, you can see the database Status is set to `Ready`. ```bash -$ kubectl delete drmn memcd-quickstart -n demo -dormantdatabase "memcd-quickstart" deleted +$ kc get memcached -n demo +NAME VERSION STATUS AGE +memcd-quickstart 1.6.22 Ready 30m ``` ## Cleaning up @@ -377,15 +427,22 @@ dormantdatabase "memcd-quickstart" deleted To cleanup the Kubernetes resources created by this tutorial, run: ```bash -kubectl patch -n demo mc/memcd-quickstart -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" -kubectl delete -n demo mc/memcd-quickstart +$ kubectl patch -n demo mc/memcd-quickstart -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +memcached.kubedb.com/memcd-quickstart patched -kubectl patch -n demo drmn/memcd-quickstart -p '{"spec":{"wipeOut":true}}' --type="merge" -kubectl delete -n demo drmn/memcd-quickstart +$ kubectl delete -n demo mc/memcd-quickstart +memcached.kubedb.com "memcd-quickstart" deleted -kubectl delete ns demo +$ kubectl delete ns demo +namespace "demo" deleted ``` +## Tips for Testing + +If you are just testing some basic functionalities, you might want to avoid additional hassles due to some safety features that are great for production environment. You can follow these tips to avoid them. + +- Use `deletionPolicy: WipeOut`. It is nice to be able to delete everything created by KubeDB for a particular Memcached crd when you delete the crd. For more details about `deletion policy`, please visit [here](/docs/guides/memcached/concepts/memcached.md#specdeletionpolicy). + ## Next Steps - Monitor your Memcached server with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/memcached/monitoring/using-prometheus-operator.md). diff --git a/docs/guides/memcached/reconfigure/_index.md b/docs/guides/memcached/reconfigure/_index.md new file mode 100644 index 0000000000..c7d6a89040 --- /dev/null +++ b/docs/guides/memcached/reconfigure/_index.md @@ -0,0 +1,10 @@ +--- +title: Reconfigure +menu: + docs_{{ .version }}: + identifier: reconfigure + name: Reconfigure + parent: mc-memcached-guides + weight: 46 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/memcached/reconfigure/overview.md b/docs/guides/memcached/reconfigure/overview.md new file mode 100644 index 0000000000..0fa2a949c1 --- /dev/null +++ b/docs/guides/memcached/reconfigure/overview.md @@ -0,0 +1,54 @@ +--- +title: Reconfiguring Memcached +menu: + docs_{{ .version }}: + identifier: mc-reconfigure-overview + name: Overview + parent: reconfigure + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Reconfiguring Memcached + +This guide will give an overview on how KubeDB Ops-manager operator reconfigures `Memcached` database. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + +## How Reconfiguring Memcached Process Works + +The following diagram shows how KubeDB Ops-manager operator reconfigures `Memcached` database components. Open the image in a new tab to see the enlarged version. + +

+  Reconfiguring process of Memcached +
Fig: Reconfiguring process of Memcached
+
+ +The Reconfiguring Memcached process consists of the following steps: + +1. At first, a user creates a `Memcached` Custom Resource (CR). + +2. `KubeDB` operator watches the `Memcached` CR. + +3. When the operator finds a `Memcached` CR, it creates required number of `PetSets` and related necessary stuff like secrets, services, etc. + +4. Then, in order to reconfigure the `Memcached` database the user creates a `MemcachedOpsRequest` CR with desired information. + +5. `KubeDB` Ops-manager operator watches the `MemcachedOpsRequest` CR. + +6. When it finds a `MemcachedOpsRequest` CR, it halts the `Memcached` object which is referred from the `MemcachedOpsRequest`. So, the `KubeDB` Provisioner operator doesn't perform any operations on the `Memcached` object during the reconfiguring process. + +7. Then the `KubeDB` Ops-manager operator will replace the existing configuration with the new configuration provided or merge the new configuration with the existing configuration according to the `MemcachedOpsRequest` CR. + +8. Then the `KubeDB` Ops-manager operator will restart the related PetSet Pods so that they restart with the new configuration defined in the `MemcachedOpsRequest` CR. + +9. After the successful reconfiguring of the `Memcached` components, the `KubeDB` Ops-manager operator resumes the `Memcached` object so that the `KubeDB` Provisioner operator resumes its usual operations. + +In the next docs, we are going to show a step by step guide on reconfiguring Memcached database components using `MemcachedOpsRequest` CRD. \ No newline at end of file diff --git a/docs/guides/memcached/reconfigure/reconfigure.md b/docs/guides/memcached/reconfigure/reconfigure.md new file mode 100644 index 0000000000..c08f926739 --- /dev/null +++ b/docs/guides/memcached/reconfigure/reconfigure.md @@ -0,0 +1,472 @@ +--- +title: Reconfigure Memcached Database +menu: + docs_{{ .version }}: + identifier: mc-reconfigure + name: Reconfigure + parent: reconfigure + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Reconfigure Memcached Database + +This guide will show you how to use `KubeDB` Ops-manager operator to reconfigure a Memcached database. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. + +- Install `KubeDB` Provisioner and Ops-manager operator in your cluster following the steps [here](/docs/setup/README.md). + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + - [Reconfigure Overview](/docs/guides/memcached/reconfigure/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/memcached](/docs/examples/memcached) directory of [kubedb/docs](https://github.com/kubedb/docs) repository. + +Now, we are going to deploy a `Memcached` database using a supported version by `KubeDB` operator. Then we are going to apply `MemcachedOpsRequest` to reconfigure its configuration. + +### Prepare Memcached Database + +Now, we are going to deploy a `Memcached` database with version `1.6.22`. + +### Deploy Memcached + +At first, we will create `secret` named mc-configuration containing required configuration settings. + +```yaml +apiVersion: v1 +stringData: + memcached.conf: | + --conn-limit=500 +kind: Secret +metadata: + name: mc-configuration + namespace: demo + resourceVersion: "4505" +``` +Here, `maxclients` is set to `500`, whereas the default value is `1024`. + +Now, we will apply the secret with custom configuration. +```bash +$ kubectl create -f mc-configuration +secret/mc-configuration created +``` + +In this section, we are going to create a Memcached object specifying `spec.configSecret` field to apply this custom configuration. Below is the YAML of the `Memcahced` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: memcd-quickstart + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + configSecret: + name: mc-configuration + deletionPolicy: WipeOut +``` + +Let's create the `Memcached` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/reconfigure/sample-memcached-config.yaml +memcached.kubedb.com/memcd-quickstart created +``` + +Now, wait until `memcd-quickstart` has status `Ready`. i.e, + +```bash +$ kubectl get mc -n demo +NAME VERSION STATUS AGE +memcd-quickstart 1.6.22 Ready 23s +``` + +Now, we will check if the database has started with the custom configuration we have provided. + +We will connect to `memcd-quickstart-0` pod from local-machine using port-frowarding. + +```bash +$ kubectl port-forward -n demo memcd-quickstart-0 11211 +Forwarding from 127.0.0.1:11211 -> 11211 +Forwarding from [::1]:11211 -> 11211 +``` + +Now, connect to the memcached server from a different terminal through `telnet`. + +```bash +$ telnet 127.0.0.1 11211 +Trying 127.0.0.1... +Connected to 127.0.0.1. +Escape character is '^]'. +stats +... +STAT max_connections 500 +... +END +``` + +As we can see from the configuration of running memcached, the value of `maxclients` has been set to `500`. + +### Reconfigure using new secret + +Now we will reconfigure this database to set `maxclients` to `2000`. + +At first, we will create `secret` named new-configuration containing required configuration settings. + +```yaml +apiVersion: v1 +stringData: + memcached.conf: | + --conn-limit=2000 +kind: Secret +metadata: + name: new-configuration + namespace: demo + resourceVersion: "4505" +``` +Here, `maxclients` is set to `2000`. + +Now, we will apply the secret with custom configuration. +```bash +$ kubectl create -f new-configuration +secret/new-configuration created +``` + +#### Create MemcachedOpsRequest + +Now, we will use this secret to replace the previous secret using a `MemcachedOpsRequest` CR. The `MemcachedOpsRequest` yaml is given below, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-reconfig + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: memcd-quickstart + configuration: + configSecret: + name: new-configuration +``` + +Here, + +- `spec.databaseRef.name` specifies that we are reconfiguring `memcd-quickstart` database. +- `spec.type` specifies that we are performing `Reconfigure` on our database. +- `spec.configuration.configSecret.name` specifies the name of the new secret. + +Let's create the `MemcachedOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/reconfigure/ops-request-reconfigure.yaml +memcachedopsrequest.ops.kubedb.com/memcd-reconfig created +``` + +#### Verify the new configuration is working + +If everything goes well, `KubeDB` Ops-manager operator will update the `configSecret` of `Memcached` object. + +Let's wait for `MemcachedOpsRequest` to be `Successful`. Run the following command to watch `MemcahcedOpsRequest` CR, + +```bash +$ watch kubectl get memcahcedopsrequest -n demo +Every 2.0s: kubectl get memcachedopsrequest -n demo +NAME TYPE STATUS AGE +memcd-reconfig Reconfigure Successful 1m +``` + +We can see from the above output that the `MemcachedOpsRequest` has succeeded. If we describe the `MemcachedOpsRequest` we will get an overview of the steps that were followed to reconfigure the database. + +```bash +$ kubectl describe memcachedopsrequest -n demo memcd-reconfig +Name: memcd-reconfig +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: MemcachedOpsRequest +Metadata: + Creation Timestamp: 2024-09-02T11:59:59Z + Generation: 1 + Resource Version: 166566 + UID: bb4a1057-ccfa-49c9-8d07-e03cb631a0c9 +Spec: + Apply: IfReady + Configuration: + Config Secret: + Name: new-configuration + Database Ref: + Name: memcd-quickstart + Type: Reconfigure +Status: + Conditions: + Last Transition Time: 2024-09-02T11:59:59Z + Message: Memcached ops request is reconfiguring the cluster + Observed Generation: 1 + Reason: Reconfigure + Status: True + Type: Reconfigure + Last Transition Time: 2024-09-02T12:00:02Z + Message: reconfiguring memcached + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-09-02T12:00:07Z + Message: evict pod; ConditionStatus:True; PodName:memcd-quickstart-0 + Observed Generation: 1 + Status: True + Type: EvictPod--memcd-quickstart-0 + Last Transition Time: 2024-09-02T12:00:07Z + Message: is pod ready; ConditionStatus:False + Observed Generation: 1 + Status: False + Type: IsPodReady + Last Transition Time: 2024-09-02T12:00:12Z + Message: is pod ready; ConditionStatus:True; PodName:memcd-quickstart-0 + Observed Generation: 1 + Status: True + Type: IsPodReady--memcd-quickstart-0 + Last Transition Time: 2024-09-02T12:00:12Z + Message: Restarted pods after reconfiguration + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-09-02T12:00:13Z + Message: Successfully completed the modification process. + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal PauseDatabase 51s KubeDB Ops-manager Operator Pausing Memcached demo/memcd-quickstart + Normal RestartPods 38s KubeDB Ops-manager Operator Restarted pods after reconfiguration + Normal ResumeDatabase 38s KubeDB Ops-manager Operator Resuming Memcached demo/memcd-quickstart + Normal ResumeDatabase 38s KubeDB Ops-manager Operator Successfully resumed Memcached demo/memcd-quickstart + Normal Successful 38s KubeDB Ops-manager Operator Successfully Reconfigured Database + +``` + +Now need to check the new configuration we have provided. + +Now, wait until `memcd-quickstart` has status `Ready`. i.e, + +```bash +$ kubectl get mc -n demo +NAME VERSION STATUS AGE +memcd-quickstart 1.6.22 Ready 20s +``` + +Now, we will check if the database has started with the custom configuration we have provided. + +We will connect to `memcd-quickstart-0` pod from local-machine using port-frowarding. + +```bash +$ kubectl port-forward -n demo memcd-quickstart-0 11211 +Forwarding from 127.0.0.1:11211 -> 11211 +Forwarding from [::1]:11211 -> 11211 +``` + +Now, connect to the memcached server from a different terminal through `telnet`. + +```bash +$ telnet 127.0.0.1 11211 +Trying 127.0.0.1... +Connected to 127.0.0.1. +Escape character is '^]'. +stats +... +STAT max_connections 2000 +... +END +``` + +As we can see from the configuration of running memcached, the value of `maxclients` has been updated to `2000`. + +As we can see from the configuration of running memcached, the value of `maxclients` has been changed from `500` to `2000`. So, the reconfiguration of the database is successful. + + +### Reconfigure using apply config + +Now we will reconfigure this database again to set `maxclients` to `3000`. This time we won't use a new secret. We will use the `applyConfig` field of the `MemcachedOpsRequest`. This will merge the new config in the existing secret. + +#### Create MemcachedOpsRequest + +Now, we will use the new configuration in the `data` field in the `MemcahcedOpsRequest` CR. The `MemcachedOpsRequest` yaml is given below, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-reconfig + namespace: demo +spec: + type: Reconfigure + databaseRef: + name: memcd-quickstart + configuration: + applyConfig: + memcached.conf: | + --conn-limit=3000 +``` + +Here, + +- `spec.databaseRef.name` specifies that we are reconfiguring `memcd-quickstart` database. +- `spec.type` specifies that we are performing `Reconfigure` on our database. +- `spec.configuration.applyConfig` specifies the new configuration that will be merged in the existing secret. + +Let's create the `MemcachedOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/reconfigure/ops-request-reconfigure.yaml +memcachedopsrequest.ops.kubedb.com/memcd-reconfig created +``` + +#### Verify the new configuration is working + +If everything goes well, `KubeDB` Ops-manager operator will merge this new config with the existing configuration. + +Let's wait for `MemcachedOpsRequest` to be `Successful`. Run the following command to watch `MemcachedOpsRequest` CR, + +```bash +$ watch kubectl get memcachedopsrequest -n demo +Every 2.0s: kubectl get memcachedopsrequest -n demo +NAME TYPE STATUS AGE +memcd-apply-reconfig Reconfigure Successful 38s +``` + +We can see from the above output that the `MemcachedOpsRequest` has succeeded. If we describe the `MemcahcedOpsRequest` we will get an overview of the steps that were followed to reconfigure the database. + +```bash +$ kubectl describe memcachedopsrequest -n demo memcd-apply-reconfig +Name: memcd-apply-reconfig +Namespace: demo +Labels: +Annotations: +API Version: ops.kubedb.com/v1alpha1 +Kind: MemcachedOpsRequest +Metadata: + Creation Timestamp: 2024-09-03T06:02:41Z + Generation: 1 + Resource Version: 178039 + UID: d1f90151-abeb-4035-87f4-e2bc89c35b89 +Spec: + Apply: IfReady + Configuration: + Apply Config: + memcached.conf: --conn-limit=3000 + + Database Ref: + Name: memcd-quickstart + Type: Reconfigure +Status: + Conditions: + Last Transition Time: 2024-09-03T06:02:41Z + Message: Memcached ops request is reconfiguring the cluster + Observed Generation: 1 + Reason: Reconfigure + Status: True + Type: Reconfigure + Last Transition Time: 2024-09-03T06:02:44Z + Message: reconfiguring memcached + Observed Generation: 1 + Reason: UpdatePetSets + Status: True + Type: UpdatePetSets + Last Transition Time: 2024-09-03T06:02:49Z + Message: evict pod; ConditionStatus:True; PodName:memcd-quickstart-0 + Observed Generation: 1 + Status: True + Type: EvictPod--memcd-quickstart-0 + Last Transition Time: 2024-09-03T06:02:49Z + Message: is pod ready; ConditionStatus:False + Observed Generation: 1 + Status: False + Type: IsPodReady + Last Transition Time: 2024-09-03T06:02:54Z + Message: is pod ready; ConditionStatus:True; PodName:memcd-quickstart-0 + Observed Generation: 1 + Status: True + Type: IsPodReady--memcd-quickstart-0 + Last Transition Time: 2024-09-03T06:02:54Z + Message: Restarted pods after reconfiguration + Observed Generation: 1 + Reason: RestartPods + Status: True + Type: RestartPods + Last Transition Time: 2024-09-03T06:02:54Z + Message: Successfully completed the modification process. + Observed Generation: 1 + Reason: Successful + Status: True + Type: Successful + Observed Generation: 1 + Phase: Successful +Events: + Type Reason Age From Message + ---- ------ ---- ---- ------- + Normal PauseDatabase 26s KubeDB Ops-manager Operator Pausing Memcached demo/memcd-quickstart + Normal RestartPods 13s KubeDB Ops-manager Operator Restarted pods after reconfiguration + Normal ResumeDatabase 13s KubeDB Ops-manager Operator Resuming Memcached demo/memcd-quickstart + Normal ResumeDatabase 13s KubeDB Ops-manager Operator Successfully resumed Memcached demo/memcd-quickstart + Normal Successful 13s KubeDB Ops-manager Operator Successfully Reconfigured Database + +``` + +Now let's check the new configuration we have provided. + +We will connect to `memcd-quickstart-0` pod from local-machine using port-frowarding. + +```bash +$ kubectl port-forward -n demo memcd-quickstart-0 11211 +Forwarding from 127.0.0.1:11211 -> 11211 +Forwarding from [::1]:11211 -> 11211 +``` + +Now, connect to the memcached server from a different terminal through `telnet`. + +```bash +$ telnet 127.0.0.1 11211 +Trying 127.0.0.1... +Connected to 127.0.0.1. +Escape character is '^]'. +stats +... +STAT max_connections 3000 +... +END +``` + +As we can see from the configuration of running memcached, the value of `maxclients` has been changed from `2000` to `3000`. So, the reconfiguration of the database using the `applyConfig` field is successful. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +kubectl delete mc -n demo memcd-quickstart +kubectl delete memcachedopsrequest -n demo memcd-reconfig memcd-apply-reconfig +``` \ No newline at end of file diff --git a/docs/guides/memcached/scaling/_index.md b/docs/guides/memcached/scaling/_index.md new file mode 100644 index 0000000000..0f31715359 --- /dev/null +++ b/docs/guides/memcached/scaling/_index.md @@ -0,0 +1,10 @@ +--- +title: Scaling Memcached +menu: + docs_{{ .version }}: + identifier: scaling + name: Scaling + parent: mc-memcached-guides + weight: 43 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/memcached/scaling/horizontal-scaling/_index.md b/docs/guides/memcached/scaling/horizontal-scaling/_index.md new file mode 100644 index 0000000000..fb070b8dbc --- /dev/null +++ b/docs/guides/memcached/scaling/horizontal-scaling/_index.md @@ -0,0 +1,10 @@ +--- +title: Horizontal Scaling +menu: + docs_{{ .version }}: + identifier: horizontal-scaling + name: Horizontal Scaling + parent: scaling + weight: 10 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/memcached/scaling/horizontal-scaling/horizontal-scaling.md b/docs/guides/memcached/scaling/horizontal-scaling/horizontal-scaling.md new file mode 100644 index 0000000000..a6ff020782 --- /dev/null +++ b/docs/guides/memcached/scaling/horizontal-scaling/horizontal-scaling.md @@ -0,0 +1,169 @@ +--- +title: Horizontal Scaling Memcached +menu: + docs_{{ .version }}: + identifier: mc-horizontal-scaling + name: Horizontal Scaling + parent: horizontal-scaling + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Horizontal Scale Memcached + +This guide will give an overview on how KubeDB Ops-manager operator scales up or down `Memcached` database replicas. + + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `KubeDB` Community and Enterprise operator in your cluster following the steps [here](/docs/setup/README.md). + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + - [Horizontal Scaling Overview](/docs/guides/memcached/scaling/horizontal-scaling/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/memcached](/docs/examples/memcached) directory of [kubedb/docs](https://github.com/kubedb/docs) repository. + +## Apply Horizontal Scaling on Memcached + +Here, we are going to deploy a `Memcached` database using a supported version by `KubeDB` operator. Then we are going to apply horizontal scaling on it. + +### Prepare Memcached Database + +Now, we are going to deploy a `Memcached` database with version `1.6.22`. + +### Deploy Memcached Database + +In this section, we are going to deploy a Memcached database. Then, in the next section we will update the resources of the database using `MemcachedOpsRequest` CRD. Below is the YAML of the `Memcached` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: memcd-quickstart + namespace: demo +spec: + replicas: 3 + version: "1.6.22" + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 250m + memory: 64Mi + deletionPolicy: WipeOut +``` + +Let's create the `Memcached` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/scaling/memcached-horizontal.yaml +memcached.kubedb.com/memcd-quickstart created +``` + +Now, wait until `memcd-quickstart` has status `Ready`. i.e. , + +```bash +$ kubectl get memcached -n demo +NAME VERSION STATUS AGE +memcd-quickstart 1.6.22 Ready 5m +``` + +Let's check the number of replicas this database has from the Memcached object + +```bash +$ kubectl get memcached -n demo memcd-quickstart -o json | jq '.spec.replicas' +3 +``` + +We are now ready to apply the `MemcachedOpsRequest` CR to update the resources of this database. + +### Horizontal Scaling + +Here, we are going to scale up the replicas of the memcached database to meet the desired resources after scaling. + +#### Create MemcachedOpsRequest + +In order to scale up the replicas of the memcached database, we have to create a `MemcachedOpsRequest` CR with our desired number of replicas. Below is the YAML of the `MemcachedOpsRequest` CR that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcd-horizontal-up + namespace: demo +spec: + type: HorizontalScaling + databaseRef: + name: memcd-quickstart + horizontalScaling: + replicas: 5 +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing horizontal scaling operation on `memcd-quickstart` database. +- `spec.type` specifies that we are performing `HorizontalScaling` on our database. +- `spec.horizontalScaling.replicas` specifies the desired number of replicas after scaling. + +Let's create the `MemcachedOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/scaling/horizontal-scaling.yaml +memcachedopsrequest.ops.kubedb.com/memcd-horizontal-up created +``` + +#### Verify Memcached resources updated successfully + +If everything goes well, `KubeDB` Enterprise operator will update the replicas of `Memcached` object and related `PetSets`. + +Let's wait for `MemcachedOpsRequest` to be `Successful`. Run the following command to watch `MemcachedOpsRequest` CR, + +```bash +$ watch kubectl get memcachedopsrequest -n demo memcd-horizontal-up +NAME TYPE STATUS AGE +memcd-horizontal-up HorizontalScaling Successful 3m +``` + +Now, we are going to verify if the number of replicas the memcached database has updated to meet up the desired state, Let's check, + +```bash +$ kubectl get memcached -n demo memcd-quickstart -o json | jq '.spec.replicas' +5 +``` + +The above output verifies that we have successfully scaled up the replicas of the Memcached database. + +## Cleaning up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash + +$ kubectl patch -n demo mc/memcd-quickstart -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +memcached.kubedb.com/memcd-quickstart patched + +$ kubectl delete -n demo memcached memcd-quickstart +memcached.kubedb.com "memcd-quickstart" deleted + +$ kubectl delete -n demo memcachedopsrequest memcd-horizontal-up +memcachedopsrequest.ops.kubedb.com "memcd-horizontal-up" deleted +``` \ No newline at end of file diff --git a/docs/guides/memcached/scaling/horizontal-scaling/overview.md b/docs/guides/memcached/scaling/horizontal-scaling/overview.md new file mode 100644 index 0000000000..d369bb6595 --- /dev/null +++ b/docs/guides/memcached/scaling/horizontal-scaling/overview.md @@ -0,0 +1,54 @@ +--- +title: Memcached Horizontal Scaling Overview +menu: + docs_{{ .version }}: + identifier: mc-horizontal-scaling-overview + name: Overview + parent: horizontal-scaling + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Memcached Horizontal Scaling + +This guide will give an overview on how KubeDB Ops Manager scales up or down of `Memcached` database for both the number of replicas and shards. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + +## How Horizontal Scaling Process Works + +The following diagram shows how KubeDB Ops Manager scales up or down `Memcached` database components. Open the image in a new tab to see the enlarged version. + +
+  Horizontal scaling process of Memcached +
Fig: Horizontal scaling process of Memcached
+
+ +The updating process consists of the following steps: + +1. At first, a user creates a `Memcached` Custom Resource (CR). + +2. `KubeDB` Community operator watches the `Memcached` CR. + +3. When the operator finds a `Memcached` CR, it creates required number of `PetSets` and related necessary stuff like appbinding, services, etc. + +4. Then, in order to scale the number of replica for the `Memcached` database the user creates a `MemcachedOpsRequest` CR with desired information. + +5. `KubeDB` Enterprise operator watches the `MemcachedOpsRequest` CR. + +6. When it finds a `MemcachedOpsRequest` CR, it halts the `Memcached` object which is referred from the `MemcachedOpsRequest`. So, the `KubeDB` Community operator doesn't perform any operations on the `Memcached` object during the scaling process. + +7. Then the Memcached Ops-manager operator will scale the related PetSet Pods to reach the expected number of replicas defined in the MemcachedOpsRequest CR. + +8. After the successful scaling the replicas of the related PetSet Pods, the KubeDB Ops-manager operator updates the number of replicas in the Memcached object to reflect the updated state. + +9. After successfully updating of `Memcached` object, the `KubeDB` Enterprise operator resumes the `Memcached` object so that the `KubeDB` Community operator can resume its usual operations. + +In the next doc, we are going to show a step-by-step guide on updating of a Memcached database using scale operation. diff --git a/docs/guides/memcached/scaling/vertical-scaling/_index.md b/docs/guides/memcached/scaling/vertical-scaling/_index.md new file mode 100644 index 0000000000..0d5e01a2f2 --- /dev/null +++ b/docs/guides/memcached/scaling/vertical-scaling/_index.md @@ -0,0 +1,10 @@ +--- +title: Vertical Scaling +menu: + docs_{{ .version }}: + identifier: vertical-scaling + name: Vertical Scaling + parent: scaling + weight: 20 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/memcached/scaling/vertical-scaling/overview.md b/docs/guides/memcached/scaling/vertical-scaling/overview.md new file mode 100644 index 0000000000..9f963896cb --- /dev/null +++ b/docs/guides/memcached/scaling/vertical-scaling/overview.md @@ -0,0 +1,52 @@ +--- +title: Memcached Vertical Scaling Overview +menu: + docs_{{ .version }}: + identifier: mc-vertical-scaling-overview + name: Overview + parent: vertical-scaling + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Memcached Vertical Scaling Overview + +This guide will give you an overview on how KubeDB Ops Manager updates the resources(CPU and Memory) of the `Memcached` database. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + +## How Vertical Scaling Process Works + +The following diagram shows how KubeDB Ops Manager updates the resources of the `Memcached` database. Open the image in a new tab to see the enlarged version. + +
+  Vertical scaling process of Memcached +
Fig: Vertical scaling process of Memcached
+
+ +The updating process consists of the following steps: + +1. At first, a user creates a `Memcached` Custom Resource (CR). + +2. `KubeDB` Community operator watches the `Memcached` CR. + +3. When the operator finds a `Memcached` CR, it creates required number of `PetSets` and related necessary stuff like appbinding, services, etc. + +4. Then, in order to update the version of the `Memcached` database the user creates a `MemcachedOpsRequest` CR with the desired version. + +6. `KubeDB` Enterprise operator watches the `MemcachedOpsRequest` CR. + +7. When it finds a `MemcachedOpsRequest` CR, it halts the `Memcached` object which is referred from the `MemcachedOpsRequest`. So, the `KubeDB` Community operator doesn't perform any operations on the `Memcached` object during the updating process. + +9. After the successful update of the resources of the PetSet's replica, the `KubeDB` Enterprise operator updates the `Memcached` object to reflect the updated state. + +10. After successfully updating of `Memcached`object, the `KubeDB` Enterprise operator resumes the `Memcached` object so that the `KubeDB` Community operator can resume its usual operations. + +In the next doc, we are going to show a step-by-step guide on updating of a Memcached database using update operation. \ No newline at end of file diff --git a/docs/guides/memcached/scaling/vertical-scaling/vertical-scaling.md b/docs/guides/memcached/scaling/vertical-scaling/vertical-scaling.md new file mode 100644 index 0000000000..55d8a8bf71 --- /dev/null +++ b/docs/guides/memcached/scaling/vertical-scaling/vertical-scaling.md @@ -0,0 +1,196 @@ +--- +title: Vertical Scaling Memcached +menu: + docs_{{ .version }}: + identifier: mc-vertical-scaling + name: Vertical Scaling + parent: vertical-scaling + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Vertical Scale Memcached + +This guide will show you how to use `KubeDB` Enterprise operator to update the resources of a Memcached database. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `KubeDB` Community and Enterprise operator in your cluster following the steps [here](/docs/setup/README.md). + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + - [Vertical Scaling Overview](/docs/guides/memcached/scaling/vertical-scaling/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/memcached](/docs/examples/memcached) directory of [kubedb/docs](https://github.com/kubedb/docs) repository. + +## Apply Vertical Scaling on Memcahced + +Here, we are going to deploy a `Memcahced` database using a supported version by `KubeDB` operator. Then we are going to apply vertical scaling on it. + +### Prepare Memcahced Database + +Now, we are going to deploy a `Memcached` database with version `1.6.22`. + +### Deploy Memcahced + +In this section, we are going to deploy a Memcached database. Then, in the next section we will update the resources of the database using `MemcachedOpsRequest` CRD. Below is the YAML of the `Memcached` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: memcd-quickstart + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 100m + memory: 128Mi + requests: + cpu: 100m + memory: 128Mi + deletionPolicy: WipeOut +``` + +Let's create the `Memcached` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/scaling/memcached-vertical.yaml +memcached.kubedb.com/memcd-quickstart created +``` + +Now, wait until `memcd-quickstart` has status `Ready`. i.e. , + +```bash +$ kubectl get memcached -n demo +NAME VERSION STATUS AGE +memcd-quickstart 1.6.22 Ready 5m +``` + +Let's check the Pod containers resources, + +```bash +$ kubectl get pod -n demo memcd-quickstart-0 -o json | jq '.spec.containers[].resources' +{ + "limits": { + "cpu": "100m", + "memory": "128Mi" + }, + "requests": { + "cpu": "100m", + "memory": "128Mi" + } +} +``` + +We can see from the above output that there are some default resources set by the operator. And the scheduler will choose the best suitable node to place the container of the Pod. + +We are now ready to apply the `MemcachedOpsRequest` CR to update the resources of this database. + +### Vertical Scaling + +Here, we are going to update the resources of the database to meet the desired resources after scaling. + +#### Create MemcahedOpsRequest + +In order to update the resources of the database, we have to create a `MemcachedOpsRequest` CR with our desired resources. Below is the YAML of the `MemcachedOpsRequest` CR that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: memcached-mc + namespace: demo +spec: + type: VerticalScaling + databaseRef: + name: memcd-quickstart + verticalScaling: + memcached: + resources: + requests: + memory: "400Mi" + cpu: "500m" + limits: + memory: "400Mi" + cpu: "500m" +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing vertical scaling operation on `memcd-quickstart` database. +- `spec.type` specifies that we are performing `VerticalScaling` on our database. +- `spec.verticalScaling.memcached` specifies the desired resources after scaling. + +Let's create the `MemcachedOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/scaling/vertical-scaling.yaml +memcachedopsrequest.ops.kubedb.com/memcached-mc created +``` + +#### Verify Memcached Database resources updated successfully + +If everything goes well, `KubeDB` Enterprise operator will update the resources of `Memcached` object and related `PetSets` and `Pods`. + +Let's wait for `MemcachedOpsRequest` to be `Successful`. Run the following command to watch `MemcachedOpsRequest` CR, + +```bash +$ watch kubectl get memcachedopsrequest -n demo +NAME TYPE STATUS AGE +memcached-mc VerticalScaling Successful 5m +``` + +We can see from the above output that the `MemcachedOpsRequest` has succeeded. +Now, we are going to verify from the Pod yaml whether the resources of the Memcached database has updated to meet up the desired state, Let's check, + +```bash +$ kubectl get pod -n demo memcd-quickstart-0 -o json | jq '.spec.containers[].resources' +{ + "limits": { + "cpu": "500m", + "memory": "400Mi" + }, + "requests": { + "cpu": "500m", + "memory": "400Mi" + } +} +``` + +The above output verifies that we have successfully scaled up the resources of the Memcached database. + +## Cleaning up + +To clean up the Kubernetes resources created by this turorial, run: + +```bash + +$ kubectl patch -n demo mc/memcached-quickstart -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +memcached.kubedb.com/memcd-quickstart patched + +$ kubectl delete -n demo memcached memcd-quickstart +memcached.kubedb.com "memcd-quickstart" deleted + +$ kubectl delete memcachedopsrequest -n demo memcached-mc +memcachedopsrequest.ops.kubedb.com "memcached-mc" deleted +``` \ No newline at end of file diff --git a/docs/guides/memcached/update-version/_index.md b/docs/guides/memcached/update-version/_index.md new file mode 100644 index 0000000000..4a50a43f21 --- /dev/null +++ b/docs/guides/memcached/update-version/_index.md @@ -0,0 +1,10 @@ +--- +title: UpdateVersion Memcached +menu: + docs_{{ .version }}: + identifier: update-version + name: UpdateVersion + parent: mc-memcached-guides + weight: 42 +menu_name: docs_{{ .version }} +--- \ No newline at end of file diff --git a/docs/guides/memcached/update-version/overview.md b/docs/guides/memcached/update-version/overview.md new file mode 100644 index 0000000000..9807b04cb2 --- /dev/null +++ b/docs/guides/memcached/update-version/overview.md @@ -0,0 +1,54 @@ +--- +title: Updating Memcached Version Overview +menu: + docs_{{ .version }}: + identifier: mc-update-version-overview + name: Overview + parent: update-version + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Updating Memcached version Overview + +This guide will give you an overview on how KubeDB Ops Manager update the version of `Memcached` database. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + +## How Update Version Process Works + +The following diagram shows how KubeDB Ops Manager used to update the version of `Memcached`. Open the image in a new tab to see the enlarged version. + +
+  Update Version Process of Memcached +
Fig: Update Version Process of Memcached
+
+ +The updating process consists of the following steps: + +1. At first, a user creates a `Memcached` Custom Resource (CR). + +2. `KubeDB` Community operator watches the `Memcached` CR. + +3. When the operator finds a `Memcached` CR, it creates required number of `PetSets` and related necessary stuff like appbinding, services, etc. + +4. Then, in order to update the version of the `Memcached` database the user creates a `MemcachedOpsRequest` CR with the desired version. + +5. `KubeDB` Enterprise operator watches the `MemcachedOpsRequest` and `MemcachedSentinelOpsRequest` CR. + +6. When it finds a `MemcachedOpsRequest` CR, it halts the `Memcached` object which is referred from the `MemcachedOpsRequest`. So, the `KubeDB` Community operator doesn't perform any operations on the `Memcached` object during the updating process. + +7. By looking at the target version from `MemcachedOpsRequest` CR, `KubeDB` Enterprise operator updates the images of all the `PetSets`. + +8. After successfully updating the `PetSets` and their `Pods` images, the `KubeDB` Enterprise operator updates the image of the `Memcached` object to reflect the updated state of the database. + +9. After successfully updating of `Memcached`object, the `KubeDB` Enterprise operator resumes the `Memcached` object so that the `KubeDB` Community operator can resume its usual operations. + +In the next doc, we are going to show a step-by-step guide on updating of a Memcached database using update operation. \ No newline at end of file diff --git a/docs/guides/memcached/update-version/update-version.md b/docs/guides/memcached/update-version/update-version.md new file mode 100644 index 0000000000..1c8dae908b --- /dev/null +++ b/docs/guides/memcached/update-version/update-version.md @@ -0,0 +1,166 @@ +--- +title: Updating Memcached Database +menu: + docs_{{ .version }}: + identifier: mc-update-version + name: Update Version + parent: update-version + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# Update version of Memcached + +This guide will show you how to use `KubeDB` Enterprise operator to update the version of `Memcached`. + +## Before You Begin + +- At first, you need to have a Kubernetes cluster, and the `kubectl` command-line tool must be configured to communicate with your cluster. If you do not already have a cluster, you can create one by using [kind](https://kind.sigs.k8s.io/docs/user/quick-start/). + +- Install `KubeDB` Community and Enterprise operator in your cluster following the steps [here](/docs/setup/README.md). + +- You should be familiar with the following `KubeDB` concepts: + - [Memcached](/docs/guides/memcached/concepts/memcached.md) + - [MemcachedOpsRequest](/docs/guides/memcached/concepts/memcached-opsrequest.md) + - [updating Overview](/docs/guides/memcached/update-version/overview.md) + +To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. + +```bash +$ kubectl create ns demo +namespace/demo created +``` + +> **Note:** YAML files used in this tutorial are stored in [docs/examples/memcached](/docs/examples/memcached) directory of [kubedb/docs](https://github.com/kube/docs) repository. + +### Prepare Memcached Database + +Now, we are going to deploy a `Memcached` database with version `1.6.22`. + +### Deploy Memcached: + +In this section, we are going to deploy a Memcached database. Then, in the next section we will update the version of the database using `MemcachedOpsRequest` CRD. Below is the YAML of the `Memcached` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1 +kind: Memcached +metadata: + name: memcd-quickstart + namespace: demo +spec: + replicas: 1 + version: "1.6.22" + podTemplate: + spec: + containers: + - name: memcached + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 250m + memory: 64Mi + deletionPolicy: WipeOut + +``` + +Let's create the `Memcached` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/update-version/memcached.yaml +memcached.kubedb.com/memcd-quickstart created +``` + +Now, wait until `memcd-quickstart` created has status `Ready`. i.e, + +```bash +$ kubectl get mc -n demo +NAME VERSION STATUS AGE +memcd-quickstart 1.6.22 Ready 3m +``` + +We are now ready to apply the `MemcachedOpsRequest` CR to update this database. + +### Update Memcached Version + +Here, we are going to update `Memcached` sdatabase from `1.6.22` to `1.6.29`. + +#### Create MemcachedOpsRequest: + +In order to update the memcached database, we have to create a `MemcachedOpsRequest` CR with your desired version that is supported by `KubeDB`. Below is the YAML of the `MemcachedOpsRequest` CR that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MemcachedOpsRequest +metadata: + name: update-memcd + namespace: demo +spec: + type: UpdateVersion + databaseRef: + name: memcd-quickstart + updateVersion: + targetVersion: 1.6.29 +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing operation on `memcd-quickstart` Memcached database. +- `spec.type` specifies that we are going to perform `UpdateVersion` on our database. +- `spec.updateVersion.targetVersion` specifies the expected version of the database `1.6.29`. + +Let's create the `MemcachedOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/update-version/opsrequest-version-update.yaml +memcachedopsrequest.ops.kubedb.com/update-memcd created +``` + +#### Verify Memcached version updated successfully : + +If everything goes well, `KubeDB` Enterprise operator will update the image of `Memcached` object and related `PetSets` and `Pods`. + +Let's wait for `MemcachedOpsRequest` to be `Successful`. Run the following command to watch `MemcachedOpsRequest` CR, + +```bash +$ watch kubectl get memcachedopsrequest -n demo +Every 2.0s: kubectl get memcachedopsrequest -n demo +NAME TYPE STATUS AGE +update-memcd UpdateVersion Successful 7m +``` + +We can see from the above output that the `MemcachedOpsRequest` has succeeded. + +Now, we are going to verify whether the `Memcached` and the related `PetSets` their `Pods` have the new version image. Let's check, + +```bash +$ kubectl get memcached -n demo memcd-quickstart -o=jsonpath='{.spec.version}{"\n"}' +1.6.29 + +$ kubectl get petset -n demo memcd-quickstart -o=jsonpath='{.spec.template.spec.containers[0].image}{"\n"}' +ghcr.io/appscode-images/memcached:1.6.29-alpine + +$ kubectl get pods -n demo memcd-quickstart-0 -o=jsonpath='{.spec.containers[0].image}{"\n"}' +ghcr.io/appscode-images/memcached:1.6.29-alpine +``` + +You can see from above, our `Memcached` database has been updated with the new version. So, the UpdateVersion process is successfully completed. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl patch -n demo mc/memcd-quickstart -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +memcached.kubedb.com/memcd-quickstart patched + +$ kubectl delete -n demo Memcached memcd-quickstart +memcached.kubedb.com "memcd-quickstart" deleted + +$ kubectl delete -n demo memcachedopsrequest update-standalone +memcachedopsrequest.ops.kubedb.com "update-memcd" deleted +``` diff --git a/docs/images/memcached/memcached-autoscaling-compute.png b/docs/images/memcached/memcached-autoscaling-compute.png new file mode 100644 index 0000000000000000000000000000000000000000..7998303a1a78d7e1dc17b792cb6bc54ba5d32d9b GIT binary patch literal 73540 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 literal 0 HcmV?d00001 diff --git a/docs/images/memcached/memcached-horizontal-scaling.png b/docs/images/memcached/memcached-horizontal-scaling.png new file mode 100644 index 0000000000000000000000000000000000000000..aeefcdb3e2b01c4a870da43da29ca6083ba5e365 GIT binary patch literal 78079 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%0D`E`I15Kasq+Kw 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 literal 0 HcmV?d00001 diff --git a/docs/images/memcached/memcached-lifecycle.png b/docs/images/memcached/memcached-lifecycle.png index 52afa56d0cea56350d36cfc7f289a6cf86cd98b6..0ffbf146cb5eb52ae5355d1ba7719f57ef951d96 100644 GIT binary patch literal 99582 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�Q_+y)u&6eo$U2Z8Yg+m?#2}qnNleje*_0d zkV$l3Cb^rlzA5K`VdoQ1W>;ajJdhKhjAz*URCVr;b#(6pu4c2lK3)U^o?bceXwTeh z!1aoEUs$X4`1ldJrA6+dy4ko0You$&WG94x@fM%~dIyQj@~+ec|0zmkhx$5|lfZ@0 zh{_kK%cXW9=#;GRhJz{FV-xaC?}XPR2ndeuHQXlT*K#YyN?)YIedvdjztE{^PsBr% zkujziPLX~)628H)?luu@-RcEYIEkTG09S~-xNZ=8>eC?>bp0e*~k2_ z!b36G7ih6O*-rpy94Te#jpi}QvG)BSHjxtKd;bRSi(rqa3z8B&A{$`}?$pZP$|?z= z>2m@;Q1hsLhugt)uVOv+H6Nc0wQ_Kg*^In>mp3QFBG_&$nhoWC=G`0YOA+6W#p8`k z)N?*;sif_&XR+PB@&~SwN8}*Aw|DBioahk(u7n3Cv%Kdq0ZgJk>IF>8Zjpj}Ak&I= zA|fQ-yzYQ<5S|lBhW=yIa`|1|#Ooz_G25GdN}g(x66jobBDE+DD5)jqp`@aS$;Zz0 zHXhUP8SWDXOjEUIb6n8OpNad)7O;4;HrWz`r&JDOyl9K_wDdNS4or0_tqVxH@;vj3 ztu(24V*UGdxb02$;ORRdKi5p&e?YXYoA<*}BQ^@d0_eHeL*4o4(J;24gCZdZH3ij!8hfw1@#Y4Ktz`MX6x{iJ(cju-G>_?49l(K~m>xTFi; zqM2O%7VHBcI4CFy-{k9F?1hZKA6hOB{Ek0B>1pV2g+}naL4F zcvpBi59n5&#SyG}Q|HOxje=0xK{u*bxLze4LyZS1CL&?>u%W zF_|LRffY@IDa!V_<*ekEx0~X^8z9Dtdp*!}M0Q=&Z#qKC1dqmmDP1r-MLi6M&g8Fb zMU{D7Ak<&$!$5 z_89%hp=YY@DC?|{aP$nuNF0kbCvm=FrPJVNFYKA|v=AZKC7O#KKj*i%<<+Y_Ak{A_ zn>321DZqI-i(*ZJA6codsCG}ljCFp6My2Cn+xlAAK0GNf^|a^P1LooW1gOwEbTc*S zSp0_0L1PeM^Dsidq{pa1I1Ebp%`Hz+d?j2O+XabAQt?6*adKG?m&xZq1qxQEa)&N* zs(Al-Lv1g0X8uSjIvycLc4aM{i|urWLdI*^OoksUf-FSY&^ z( zJ2NjjUUbO^gH~YHlP~}&m*S$41#^j0V|w^X^&kPj+g85?;2V9)7hrn@_xAJ@Q>N;b z1zv|!#LZe}#fiS|)R|KwVvAD3YTs^pMQUp72zb4&LCdF5B zG+7&befnI+F}E2d%hnxFa+G6I#*YGZogC z1}>S<9rSSN3F3tuUZsN7qE1MvW?L96P=Sh52efB)hHC0Dc^F^(K+kQ2!C~q$yST#Z z=x<=n;2H0k&0i*4B`>t$5algfN%q3M^Zs!}Y6{vEn?0zwlPYI7H)hU*hCJE37L1L_ zyqVHCxL~ssaI$R1Nz930=HiBdqR|aO@^si;&)x&s7!Iv}U*^Xh)1=^~9-N3$&p`L~ zZ8zIfumKDaoYQ3pPEK<@U5p6ue%IiVm?E}gmd{Z=R%+0krfeMNMHm5X_B>f5_4FaF z^m$Y4!;Lzro*;sfhjL9y&SuDl^qS|zV@ci9*(s&j1=;>qyBK$3xy+l&iqVF&%+?;R z_)=EnQpC*}D7(_~MzpA>D=?&)-GQv>sm(#vC;WY!rxM2xqbCG+0=ya;0}zu&nq%4{ z02u?n#}%kc<*k&is{pCkmr}uRG;(U8IGM*qPY!B)2Lz@#hk0S^>}~F+b(g~qgaXa~ zlqtLB@_N0$xNFS!=V8`X!gu#}wsVo#j`NPXK!hMywoXef?>Wp)NcL{dMY~)NEz2wO zA?IsmUZn(^L2nmt#>ARU(8Q-cS00~jXH{7{bI2Q~rOfx7Sq8KqfQS74(0t>3Y#4lE zrD7Xd9k$lc-)N+Ia8g6)vkXCT+-4~V=F29oS`ka@PMn5k-$r0vLm^sTuS5TI@LJuH z3(k@vR~ApDpqD`;ZnZ_SZQRa&Mx7djm^|PjS(#-b@WAQf6uxh6m=77H53EyanNnp^hrsOvKz}F?OlHIwsd<0uxn`P14A97VS|NH+Ibh^6}9RzuRR}g z)yq!t$cSa&SNxNIH4+g8)>r}`q9U(e7)RlG(qjr+I-HSin`Cq{*^b=scu!XUB*hgr zyTBQ0SjIp(lxR-?VjrK}fp(TBFLo`ywZr(}5`;GS0Xlbp*w)qC>KPTp02JF|Y9UvH zLA%&-<}6f>B?Aw58hQ2`hW9-65c5S`hYK{mjnO#1Kx??xDMPNw4R9tH9GWSMO?+xH zxK>8%hhiXWZy#)~&;geMJwwOv1DXYhhm0(3rxiCUWsTpd7?bQoU|WrpOfJ_Bu4_5v)6Kl~@MKPzOxk#IotXtd^HJT@9~sf)N$G zy+#gnn-m^55BR${mM%Mku>%4SJ;ft0yj82q5?8#-pMooRHPH}W?BGyE{BcvW2XZHhrM%{sh8lB!UYLIlXB-$v7g+_@C(ixgUL~g;$4OGs61rgV`jDl zw-zWx2412Gs!u>vUyr>>Ij%}j9^TzAZXEMU>9KKq00QkGr+WDKcmksa9;>P1hf@e~mXlEnH6*3l*PheN(5`u!+2x?vThw~xN&8LG;yTt6T^EZvdUQ+$)g zix@Kf@~ki{UlBK;g!%`+T{T3cfEX(`?D1m3MhmA)!TB;;bAY;gnlrF{ACB)+R+g~- z0X$E|ISvTsYymjW!s?qbavm=GDi~zP7OhVmkbFl(Zv!uIn*|5??F`zNQZeO~<)BA7 z>CeJV>Xg7Q?|T)lld+tyQdzJq!%;!fx@9K0#qC zSTA4t_vs~mIyCQHMOy#y9Qq95(t7d1{@M35cl3L=u&37KT}lQfD5mQ(h*E!QqJW~B zh&&yea}99ul1fY&O{YSp`s)XZoWalbNDBdJ{MNi}mfjxDiqjo^tFfjO3-oZL!riao zI-kK`)}BxPvPMwK00FiRZofJ4Xrz&o@cMouyydF4a`~;sj-~mW*?TQ@{G4gpBorHU zaApo-1+6AE`W0Upb({{(72aUVLZkfnA}X1$jpXJ7$H1GU!jyc@3#2@6vgrZZ+^)N~ zy8T##1NlKdL~qX2LAd7~Qcb5PM>p%m21b^6Uy9`c1PX|2oYx9s<+Y7lG zSXjCI<#xJkN7W-a=IPz$R}|B;^L`*Oz=q3-cvD0ppGVOS0#t_GRp!RMcs*2rzdG{} zV^!H>Y>ebBhgTGX&Jc>Hx8fZUf&MB+{1e2-95lNKv9+! z@)-qDeX6k@7mPQ%G0)@F5;$;`mAIc*i)dj3q|&<#OyNaHgmb9DT)Q;F1GI}%w`P6n zJuI#=!{jP1lDr}p{rohayy_%vXHG-Y3LdH*or(+LTn)A%0#wghI#3Qm756UfknHlr z8{Y?XH%=XGbJ&3usJ?&-#_SJF8F!;XXJ*Goi*U7lugL%?3YrF{m6i0&tFNkqHeX<2 z8aXnwe=?cpjWY{In)kCK9kv{^Z^8$9NJj9T%C$dYLM=o@O;1M8zta6#PVN2vp0doI zU+?vph%1d=&kWJ)O=m=UXCB8^DQxyozHi>noqGCM>ZaDZ5Pk<-*PL&IiWCmG%aXnw z3BHF{en7Clr1$PAPTJhR!Hdw6(0!YHP8xak=$-eFuHZB)5%3v8b-ttu;v+GIiqP(* z3m1F$Z#?F2m-rwtDuVryneBK;VS}u!;GrJb9L@gBz(14~?;cW`dw-$>&a?W~eVS*l z@;DaL75AiPuchD;`rXxq7B8q#n zwYi$yOJU~Z#hrQ4@k0qbpI3l{1KVd#O)5P|0Bhnt&JNx;B_gKP+8tg{5^?hzW&EuWA} z2*G_M-I#$z4#q}i0?i>LYNWf`_RxH9i zQR)kSt!nrpdy5~iXZhrp-pA%QVVxWV*pcu@j@sHETr=V92-aBaEQC%H@ilw>Wsc=RM|G zD548sd!DJryYlb^z#h#R5t)T8vl^@rGXC zFCaQ0iC|6KG3OgT57;+}?lSqA3a{1Wy5%97ptd-yM$~dImGRRmgWY96U)ab-TfP}J zv|qYsA)rniPz1vAphL|chW?WBw`o0?fmcsQ>Pl19fu{nwnCy)5YY6*Ol$N-J5AUIoRZZ)BxU!<~N|$gBk4GR*n?!!dp4CM2|oOFep59jvIpL{L{bz9jsr zvc@DWd&BZEX|}uy#JDRJ2YGyW<)&1EIZNA-kr`GD_g!Sz{ll6{4AR6&m*KLLQu{f( z7NL0a*@~bKMC^U6)2fsRV(OO_AzRsP`3ox)Q$QB!;U4nsCLMJ$GmW&&7EKS~{j&n| zu$F4Tf!M+3B0Y@^VJ*_>Y6WMUY~F?WLfG4VL==05_*(fO@pC=6*H!aEiJdp&by-c_ zT5sU_T&)`Ihm;6Utgu!q%$LxZSEPo0=YZWrVc_r{M9t&=1yo(9l8Mc=i2#h{9{) zFavSl>)s8*r z#R{T{H%8p?cM_?uj+w0e@$Bk zg2Ut;DWl%+<=6n9`dV?mRrbtv`o#Z`37(a%ShCfQGu|`{2!L5Ho&c>uVfxp)CVS_K zUOJ;lj8fcNKx+zw*W;kJFYICJd;C+x)5pjOB>cJsU^hvKLqOHq8Ox|P2E3Wenekhh9YO&ZfN-L&(?n4P zQg`p7>kKz~h}KbOEOH!8j8@P#Wa#UsgV@mbF(O=P>nE;Fb{DO&o3m+XPT|KT$Q>rUNY(ne8+3v4jN{9LC+* zmPoYB&qQoz6scaY6~9NBh%9$Dzo ztGTG=UI7F1C2l&h!~Nlka79aAn7+K<>bb9FtGwW#g@N)ol-E%i+v7({U(rWzW~b9T z5b}4o5*WVa8Blo{s0=TQ!4p#63;%vOu($O%7K6wluLOVOEE#-JatlCN7zGmW~%J>G$C)L!x`3gav?-sX(^V~7i3KX;IC%nN9?9PcXl zW)Veb0Dz~$tFi-+fFToA-%xu@wH@Ktj4);pLfN?DL9d*e+ZA$k_mZ2;p@|+EuOg-i z{;=$FDPE9cDX-f6c1PRauATmzHNcVIY@WCkq)zH_yMn83m~RR~8pHX(-ie^cZ(4KL z>AHBokVvB6MbNKWNGsnuNUf)5Q!=l)19Z3xecc!Om$PURVPG;tn_<4tk={A zMg$#fQ68x%V0N}ZR=0JwWM!bBy@;uuLA@vn?R!Aci`%8U z2V_qJENx(A*wb`weYhjrlkL_bhE?or? z$bvf4P7Y@>AY@IM>^4JGYok12NDxF_KU}X5)PSkumQ6HxUhTK+OeEd3Np1>Iv|1!Q zDBeG=Q(stxJ-x|{0Su?;*6j+3I-tW?W|t0pp`Sa;xC{~xi5p1)O$Z+#VoIt5I2QEb zA#$gkNbKH8XTOJ?CU~(9`-6sDm37n)Iv6XwkRh_=Z1rno;I|glEM)zFzp3nuh1F6a z=hoq|wgqdFdg0$IP9KId${JyV$Kuzd%o!ccF@W&mZG1yP0YFfV1hzc^3{E~r>GZ6J+sDaWY8pcd&*aLJuCwyd+RG$MLyZu zb5fBzQWv`TTA&uY!x@^(%hy*OdjU3ZD^ZyT7P}-Hvw1P1^M!K}>a$6+TwnSXe%Uc2^lpjqV=J9PHM1 zWyR)^nKvenOvcrdO|1tfhC#dm-IJouc<)j$bt7w@(TVA5k*sT~ws?%ZS0;Yrd@OaH zEe~9BybteZPQSBo@sG&7Pn{FCV7LUVWWechlf^%r3;h+gr&8r&vRgDqV{cVO0<9p7 z8B%dFS1;A;qI>h%`Y2{}|0vsG~?O3Wu9t@nm`*d-Ip+b=M zBwmm5HRRow<~(Oix3*?KX)OiV7)(KYejqp||Ln*5pATu&E$I7Zb&)z$PUEt5UUf?7X zChKaAOe3+NEQTu_TZ0c-mHoVYH>W+DKzE2|_#K6S9?T14=`)v3$@|EhES2JGECYgB zVkol0X(%HL#rTL{mV}3^)uH zmy0X3mJFHf`#Iqm;OmaMmrbbQ=&n*%j5f#D{pk3H&d#y6QpyV`9ykbN741tkaE?yS z3`x&ht^;Yl@_+^~A=Aj<0IAV;cOfsDUtM*{^+3=BQH3X$U8kewN-rO*_^edO=AbT1 zIf&GZ)If^0a&uttj^%tiLQt`VC~FRC6Ul8d46}q5KwB=v20tL(QF~pB2 z!WR*KBz6PRxNkd~2@~U}RWo_nt{W7bPk2+!`N9T}&0ZkMqJk%P!A>g-v2m`}S<9kV zf%FL5`g_J8q+{~d4XO|}T_=G~)M0l4DPMRr5)`Hoz; zgSXn^zF+nQxk26anh)!#AWoPTz;BW?Dgf%+HKJNZ!rqCQM*H=2%=Ny|Rp;nDPj3Jv z93vkpAjD}t?x#m}ZW06~ob_a79(fu?t%4K|HOXJ-s4zAkAL@I$E^kP2hh$e~G_qyU zRNGn^>&*=l4Pzo~m=o)rz{V6qn$RDWYChZzmzfD#h6?RvC&7wW58#|yXz>%?z zZz2aT8V-0mw+o8Z9A7h8vK@+{K%$6&W>IdZ#fv6v@Byfl`HB>Hv{SWsr@5m#tU#*Q z_kNY73ii|fQYQZZHIC-|(h(9J&_55uWYQ&?x;)s@$;J;Ld1cAE&dj8)9+)Qv&S%Pk zC7rC~BPJNa$w76>1G_zk?ZMDNY1TD&bO2(LY&G}tye#Kp0dO_bkXNeo0OWU_%?pnK zJL`n$6`kA?T!`-U@E{N=%js^_+}Jl_>!IRHG3F&U00RU`+`uvH$&Gxxfhs_VBYz)l zIN5i1TX{0KSND|QG~1IPIZjB9r^oY2aaF6IjD;=VOZKRM5*7&&s~mf`g)8tJ+5}PK zDr-Z6@s8C#k_USw=aMn;oD?lNNsrgAGMeZFXQ*f-59cN%68C|)!?=67LqQ_-!{7FF zko5coakvZ)6Nq)npSBRdMW{*s4Pz(+jwIzbs4DNn`-FD6MLh4}dleF)tQL+V2lVs= zG{qZNy3EK*DB=neKgmkp8>$SP4#KazLgHZ#XyRXEib|;#@`R zH6$Qj?Z26^6w?-z`86w3VBHxcTg4fUHqOl`naOfgZC@Z#3MqwTHB}1-?@b`w;=$~Y zvU~_y*z%mHFdN|oGMGLhP|{UzJuC%68S0#m zmmmm}W5}@bsj`_^f0Wl8ki>ANIIW+eqel;iXI_yEoOKjx5~;lVja+k$%vU8M%?Bjp zytcAX3HD`F?&Lu_uGg2?i9z`}&Uw-1%zyaw<YX5$H4^6!I;e9BerEl{z1()60ZIA~0HhIrW7N5*g1UHA8YHibhEaobx)M zjBce2Qd@q(0gC!vuJiq(ZxF#Iz1QeC7rs2WqUA>jgh^4Qo5EA8Aa691k*sQ6Xhy=5 z;wwHH4SP95KjlWim4gb0Ztr%n&qiy}+Ed>{Y$G96*=;)3^&$NkLM$7gb3q*k5Xr4J z%R`TK*#U80a0CNs+CWYwhv467wwC@B1*unAXI{0Ryjqn6u;fsuSRff6KCkMP&$(01 zrM(44g)_jdB>#daGdYqp*Q5(NZHQ2=RL*Xdpn34c&XMH zI!1BP-Xka9G(?8&t^Bs2hJerT69QU@$A^>ngBHi&)6{T`=i{U$qAY~l-lr}$$w8&z zPyE@9BymyZ`{^w>q;RVIqqvX{{hphnJ9Gz@J1USzN%Nf4x*<#E^RlbZI>^q0d9|i{ zjf(u8O73vs>e*9Ec1`ljp-YT}yL8Q41FEsy=#r_?bM@ko2D(i9zGX17s9JNC-dV9|r=) z9mR0K?NMm;#Wh|j&h0H0fdfuya6D4tQK4q*VOf$3bIV$@xSZx@?^Uj-o-g;cz1rr8 z96_K>FyXzf2SSzQ*#U1r9d0DaUoP`NBBD)LB7BX34=Q#@pLzs3N#6stfbC_j)@(j= z$KHtkZHt7?g6@x_o50ZKBDR~-@^8AePFJEioUZ7-jS4nAl{@&jS~$#*w+JQq4mssI z2g@(`K;H2yWP^sCh7I<)+kCoqH_>#}H{17+S(_N=n-H<4s+>Y;+Lrd{PNM@?f!2X@6$DbC)+4?q_!}=CoE22#X`ma62gs4F^tq)-h#}~!xOneu zmUlR{g;3fAnFAr7%^lF76WP|C3Fp6`oqmNls21~kdbQE?Rl9)nkOzOw8_M-Ruy~_x z(cyWM{WODB5IplP#U8akr~0OUcpNqdM{S%NP9E6AC~y`ea4JAnBsk>^+ETBmRJrWh zRnl*v=o$DvjZa4QGhn6eW^q?P!d@zqyGj(@e#o#hP(A6@dM$&yN&B$? zW(0!(w`JTy*4MJ0A61bmtJ2P{1a>2nB!3cIZ9Jv?+xsSJy#k-lHCryXRhLD+$X)Q| zT$QT{Qh752Iopd(`x2;kIO9^N3NTN_j)xty~O(VNb@@OnUdh2Cw{N;>1~hq6I0rMZaxG zCq-FWZ+<5Wt_G>}MI~R-iW~qK35I)|)_vM<9E(jXfu*z7@>ag5uQr&+5{~c4)@Id* z%#F^j7^m>Uh3YcNKs*LA)o3pFzIOEC4xY-!FAoTPXT+}Dk3N?s0|lcNZfBA7nYU2U z@Y~h5%57!Lti+bgeYX=aZP`N&O&bQE50s z9uXV?+3+bOxJ#)W$f<>wbnt45zpUzLdI+Q*xhka)Q=NNfQbg0Y*nN!oB;*efcgUQ> zrQ-fLz^e*OAwmA@V`%$U)^7T{QlH9kdnQ9R>kF}hp@AXunzK7i3I}mb`MxVi`R4uV zzJSllAZi-FKzZJW?r9QJ{CY)WiYOJ)V48}=;ngpX{TxzBxmQoR%Uq&s0f0eb5`Yl2 zSro__p^2*`sWCp|iyqLcPoog5%FCgalf@c8-dV(lEHa%*a$K?GL2Uck-beAa1oK)t zu@l{_`bZkKykh~E91BR0;o&TgTV9TuX-5Z~A7?abcZkAsxe(Fi zNU2l+4pcaYkH?imJ(~*g%A=gIUNohY3~ujmX*h)ESej78Sftw0a9Bj#(ZTcJ<;moz z2x1R=4ofX{lR}2A3QPBg#sw+@v>29)1IWQd3G}L=Q?NWCPwp@DLfe98CrlI^f{_SG zkivkL2Sc%+3(FR%^Q8JSrF6Q&fyR~)!$=@_8Dba2rRU&=xM@OZ0v~6f8CWZ7fQIPC z!QzPkYWWQ35O8|?3JDNl;&~x1Cg4)47srLC4vz5mkpXn2LNO8|CFy=-4y5VQJUtv} zUNUEBG7`bS!PioiL@j62IpN`8szkEGQ7i{2h4uIFL%WK}at%T~4$c^eLAXP&5|=eE6IKlR52M!Ip{*jwIcGIZ5@ECLPG52?(i%Gi#bbV5kXKH$4B1KHFhijJqn+$>q0Fi5;ADQTe_TfW= z9vKzy%}^jqV$bvq_7Hgr!yy+Gx<9}tzF2qPaFH!v9vTXjvwkEyMA$<&C1)?CJO~3- ze;i+;6e9;6%oh;)116-K&D)MQ2+UGZ6HIAJ@x8C39D@Jb2P@ zt^$W)G3?OxVsHX`pxo^td(RI+cN#GrLL+RPU$ESh7bM3?C~_1fjO*$V!E(ni1W<9$ z7a{d&L;?e>fFESL*)xhxik`R)gox3dy5Qb~GJu$-GEu2rG z%Y5--u4|;fFT@0x?i7KYm>D9+`gqzh5XkA^z*2+WqJ#)#P|fTt1|;hYs9MQpaPSfK zD!N-p7*Fnt_X_p%Mr-&?CEf+ER7irk#870~a-NUBMiT7lBjck;Y>pk5?j3@Uv<(li zi-`1;yW56qLgjc4ben+B}YjF&y{-yhbDQ)TAGJK@WPwv9;b@0O4 zdHT5qY3$`*IEN4qg;IbMvE&g@h$V9etw7W``%0w|fKedz7E;H^N)js+vc}we-RVMc zSQuFW3BVE(#5{z6>j<=9d??FBO;SmqVqFanhBQ!(#?_DIYeyy$e9<@-%OONko=XfrT`DEW!hx?mo&0d^n_jdq@;+424AOK*j!QTI8zqQ#t_g5<_KT zTU$)H5G~^{{0Uy3P)Z#bf^wxO#cH0NtCs>xq6LJj9UKsv_K9%jL?G}hJcvzq7BZa~ z(1-~jf($$&OuUPd7s>IVaBY1A;3p52C_tA$HjRTE&EQe#G^D=|J6s|}aYM0o&XT|| z7b^06h^ey0N-+uJEmg1(BMOizQR2mPA-S_cunHC%sjMbS{Bby_^i_oe>3ZY6X)0*l zrPlYUu8;+$vW>4@nLXrg5jVY3P zA~l3mdx(hoyF~~9bfe)W)G#kJfd?tJt}3;qi{&LU=j1I8~SIFY>d?{$DJ(VF2c9u|}fsPa>cT)w* zsVqd82v}GLg&os@O|uW-3ovMo7};nr>lm&I4*8%OZJ8OB$YfeA|Tw~CosTAzzSv1UFjSin(WM$Q0Nl85Fu6QlSU2>46#$w zFdRBJ%v+4?Kb9_`gamsMFm5=sghq7^CaR$XG0c_9^pQh)F_z*$1;-3B9+xmz{{VNj z9S`C^EEIAr4MoDj7ZkCxG8o>9?C7!}IaT4pfc$+rv`mtdklBTBmMlB4XIuls;e>#iV&zWA0N86TO`(n z#B(P`$Rz}{oPZYudAPayMz9=|7_vW=1O<9Bdj|oI6`=BC34;|ZGD{6off(vTqWahp z{E4piG5x_6X0*A>5y%aKXFT;&E(mXp}=1qiG=wZ+V!9tydV$gU;SMK|mN<9^plSz@Hu0od9kMUvYriGZ^uT5DETjKa`8Fe~6za!4oC*(x8Pt4m6EK z=-^9_WFSN?gDhlQB!!Slgw$}n0}bylAwl2}z7n9IR>2Jp)${a3Bl?;^1}I)m(!P8gnR2^OmPasNh7Y5M*a?{tVZMA=ZW&zch4my0y`+9fw;+BXQ^O0w z(0x=~8j6S4xQOk7slFb5wmhFmACa0SgLpMGG$R8SsAO_ZaEOE^b3nG9jptLblt36E z58Bd@$!w`VbW`EVcq)t!hAQ&#;wge@Ae^XpS1y<7sdR(-G>VsdfE&k68LDKm5#2(x zk01%c#dhJG@DPn3mq+jo^KoNA4^5H>l@2WvRNxbFN4eO!Lt-sNF(Bp=gzOT{59bGU zQ!Y?lNI*jd43Yyb!%#R}CJtJ~(A2abKkqO*aU`-j@D#Con5%0TLfz1s1QpH=@@3IA z?$RKEi^3H$ub?*=hA;FDS3s(zGd{o$9e_A6dEs_Yc7kJLBklM;lt@>^XmkicV>Jpl z41tO9!iI!+%LJOxU)_1|0azjIBf|H-3R}7tokv3B9H z6~ggBxq?`N#1|HmL-7LOC-XvsAA#s5x8=%2Ob4EyAI!y-5Xy$eSZtOZlOO37%u}c$ z9f!v_`|#C%Oqt4`5{&1{dA2B?p9ek=EdnkL0f%rfWCD9q z{GG#4C?!@6T@{?&cm$HCN2EaM>+Q>MLu4gF>_K!FIrQI=Xwd4gAQ}~IhZ5N;383hy zLC#E~3q$}#s&G|^uhf-5;JJmkLj+VFS*di4gZ|6Z!5&i7Z(7g^k#rAAJUnozDq=|@R zuB#L}%rGEZhVS4L>=Uk}*;4pWunFTKaa;sJflx;cqxQ2?LUExdl+HlWhg=qD%hw>t zimP^0s|e0yIpnC>`6xAHtV1Y)M<6>x2TY|hfaV2tiO?rfE(!{U@9;rXA!IdsVj*Bb zflD|zXBChgF*qFl#}_bIl3@75mf`~aAAP;iz6#_K-XO9A2UbSl7apO6{SLwk88YZ3 z3eiMcKR<;#={L$?Fk~zr*I;*)ou5~zJLoDgF;MK{kBp8glDm7+1@HhWRvLzMKLZaU z%Z1DnQ9Nh?_9#~zkw(OdeSfbITciwNV}*n;f(t<&%tS%)xfeLQh+=B6iv;45L7qYG zD1pdJp(clTbDbrSHUcgPFX*1>8A?#ed|e6NAutkwFWZhu34o@c;IV+5FMJSR=#Pxh z!CxxDI3TiK=^4nC5TW^+w<1_!2kmo%YQ=d;>RCxUD_MT|ofVP7HM>{-zL~ zp9%#XUI=IwEDh{3hb!iVhe8i9SZjP}m;y;tBSMIrKnZgZgK$!ML#~xah|~__MFa^i zj|{`Ph&&w-M8tA&4e-HAi4ZxaBK_T{?trAB_}@hkj3lr_M_e`mb`$;z@pLEgNxsNC zI|{}g??+>U+_j@ZbQGCWh@HEi7n;IRlZa|ER1OH((CHK^q?H(u=HR)zKagI+iO&T5hyMcqF-jX#Z|Ch`an0Y*vy zfppQpxX{dq0d(XYz(YyAC=?7)4uwKMn<5V6YQrPxAxiSEk#GXo7@3a*dRB#DXpnaG zi%x=}L9y7AAmnR=Sm^!(`$=>Mv=bRZVX0wP@IK)pteR*a1dX=j&~sT3=0M~_k1VKa zmm?J8t_-2e+@OdW#{%X>b`jB|umx%_2Sg(K@O&U{LiBc4L&s+VfM{l< z`qvA7jDo)9K>`(ouaQqse;hCfC$5W;L!bsef|M{MiPiRBz0f43=1&JT^k0r0XbRuo zEZlD3=%GI~3rF$~k&*nlS@^(b|9$$#+hIW;Bg6blv+&=I<6-Il3x^>7XNMFc4gdd_ zZuEDjDgM4AP6FEtyZy%*1u)#dekPKE6#X~M;O}nyzdWUXbO!T(bymO(za};?S7h@- zLL(GNH+R^|zdt$hzkYl%octh*6!`wSl`Sl8P@pUzGz7UXmN)|o{6!Rmg+c;6oFo1F zK$pKB+Y%56ZOh@DH<>~)aL!x*N54tze=|=Gw7u`=Ni4$H$m0BoC+%$eKl?LN4qW%& zi78>+|AZ<3{l`Hv17X8aROBBbRMP!Abo-w(75wtAM?(Gw`uqQM7|8z-y1)TuLI&AS z7npxU7XzRDnJxxC`|m^-VC4T3y7-?LQvd8Eb}#aurR#q#p8mTN0&ZYK2M7TR5D6Ld zp9BO3KnC*Be{VWK_mA=~I{QB^zcf(k8wSFg_~*lS{v?{=s7n!6>>xsp=KQN1hi@EE z;Qq$JHwxsi528RQm;7Sv{~*@`0)HI_(ytBv(aApu*-!;anF3jKI@FxPX)?lpdAjDm z^?aXxaX+9E1`crf(~jE>P{p6OeBgKgjaYx+4CKG;`5!oK01W*8;C~sP{HLe>-~`Gb zppF3F5agf#6ombohd1!NKV+U)ph6}DpY^{~TmM9Y{Xa1E4-K4tP1DagIJ>_GQv){7 zpBd->DwaY85k09vzCTOY5hkrKOKMcwT}~tL_3_bEGOHp9Q5qk=CvQ{ z7kGY;rqk)^x&pLwtTr89=ND)bXBxH+zPc1XNG3T|?zOP8YENCzb$)Nb>ZB`It_+)_ z?tQ3kuV2tjUb=K!u;GO*>4Qcfuh=>rFO1t=LCIYBJ6vnrqCQiThz`B%O`A@CD^$>d`ABhPQnu^C^?@q2aV|4biO>SGh4KK@7^eO+J&{l=P)v&jomEZX1`vC40cFQ z)hBtvPxIEDfB*EVU100NhyDwKpOBNMEjB?*>M!Nl32&6}(GTDIQTs2`-KRa%Fz)_Q z#iSA1v*L+9pUjoy@#^K6pKE?OF=S83b7j)O+r zwsdNIoB*3(i;V*+7zu^m8TE^Qu3Gi!4tM!rbNe-uCQiiVo!sVh zTv#)9v>~Q;PT0yl1B*k2#X;8 z^!;lu*M8#)P22hxH;Y^kR*?M;RetfW_;h!P$JIQnd?KfW*B1VHRYw0JXr&CIOurGC z{l+ZLbOyq+Ge#b=Xg+51byj50>%`?}Blq`qbnNSTc*b6%%C>IItW7++aqwQZ&1?pSvhU)-g`f3*@h_02`QRj~Y0vByvKGN*hxlqvZC%~|Tal;P-TU`$zc|MJ z!Jy`tHs{P})9+tCvA*J7XIZyIzOS=#tlQEJY=+1HCnvofQf;=n%+5mhf%g65@(tIn zUGvfPIVO!eeC~%~mZkg6p{WUOdp+{KmM&d7=iJk)xx%gor^~Z1xb<_1sV*$4*3L=I z!(dM+J3^k<)7{+B55w-gTs{^(AimHBE6G*Y&eoJ? z0YjOa((ahd52b(KzRfA@;|s>Iz(>o~E-K6+da}i=59i~Cq>p+254cJzK6cx%8Ck2H z%aWaY*Tvm6DyCQo1X0+thGVKr3`w8|ILa>#ing_vz%}PU_dn}E5 zbDVcFU|EW^wsJ)C;+>K*<*<1(XP!UWuxR7ffO6-C*PAB|?CxmT-SeR{jEGtnTpwRb zH26iE(qZR$-W8-mSzdvM*708&V zab-V%57QS|KfAtl!^U})yu{0{^UkgV*>u<#KgV@X$K;lqH*Xrgci)0xY`yU*b$h9N zK)+lADdE@UcsC!BnHu2qJNrF>SJ{kV8Ohn%<3DyiT#~=2NRs&?(RkM!+Vd-Avof{; z$qtI@c}@8F_Uv@%^|C%CA+s;61PD_t4aFgrax zeFrY?>h_eX4dXg1-L6W;2nhW`>+w(^&v{Pb9OS|orZr8V0Ss7sJuas${_*1IMGzQ6 zk1PD^GH3LCee|>IsEV)KKiIsuL6oY|XD`hMKEu$Rx=u`9wCYs(!KlVUiuC@mS@rWf zt+$2LTzIUfhb9@7_~)Zq3h6dHXi#;Z@)G{xPidLj-59Nv8)0PLh+h zQ;z2hE2{&KvRcmEx_L9y>KJH%(IyK|Sv~>@I0+QPt+U2{^Z^a?r`^YDcko(3M?Tpi zKg6&iip65H*|S}^L{-@)uMTrZ#P7Ue2cbIGCVfTlga)9SOt_4}GP^UT_t>PBCX~Kx?>}*7ArLXv;yY}k5bH?2jAI8o- z^BPt0y{CoXmg8>K&&&5f&@FAhv=`B>bSHB|{pP#{>bW`dR&<4rS|0N~Y$<50SG<-- ztG|xP$jAtIetA+q3z_oZ$~8rMn?3Y(h+3Qj6OKw6s>dz<77H?Ris$0*$DTz`D4W-Q zIOhAD!d<)WICDtxqel=k6{!C8k;0c;k(wD!2+Cg+tWA3nSJ z&`{NK$~vRG=f2$RqWQVX_gCgv`r{9{^i#o)8BUFF=f&gz1w9sPP24yX^Z|)TTr=C* zBRLY`=pQM-1oMkFvTGZU1E?8dvBm7_Zi}=-%g#J`d|_?HwuY6fd!4+V^zXKl@XAM|XquTHGZ zpQ0+eU7cbS+(?-u0N}_w;ycvu`W8xkKdn1y&D8}MI4Cg%)DIe*W0obv6$r zPP)I>ET&Gz&h+*5)z#D6`GYSaF%=5yuJX>gOGB<>U2q)}gEBUO0G{3a3s3*rHtDuO zlwHBpRcin#@7CrV^jZJ;!}9}IzlL|WF1wWkFzX3y`6bYGNtZ5>Cp=Ae{r=_S%e8e` zR_zrZ>Pct9-}oPod~zwV>6px5(U%v~t$C&AcawR_e*N`!>fogKZr)J~ct1_Awzl^C zneNJsQQc>`HgS<4+k!7o;A+@ku56lf$L@6522$bF%!1b~e;Zwp2jJ-p0^n&~ZSu^H zo-W$7=ps>;TCS<`0@LoXO{V5ATjN9YBQ~x(eGe2xyr{Lo}P!B zC4vJ2sdS%yO5Bj)cZ)x6cZ|AyQ`1?3|ptU%rD} zI-VxHv4e1`@5#nHWd}~3au5#kwdn@}=hHw~tX|hp2z0X4Dm^!MZx6j>*_nwgCzMt2 zh@clYcFs45k>Ib0qZ<}}a6357@$2iOr=I34*~W1yoYLIf?EfgB-@cg> z^z@EQu@5i?6J(DCdEL6ie(bd-5$G>3a;tL2U<1AM+6&$1ejdUpV!pmP*;EmMPTIKf zp+BN_j;Om^eY)rJ%d|I6v{7v-c%U_x)`pYa-2Lo%$g^v~UoXu{T$d13n^CS$!M{0n zOEYc5634pS-&46p28_F>)pwb*sgBP02@?d(W#Us{QU$$kvU})b-79m;v)yUA_;hyQ z`Pjkf^h9Ci_13a`RXH6^FxQs((RcGlx?E~MQe#r}y7}lGM)?4Y&`p39ifcNcFc^`S zeg4PyuXj|_n{V6fUGQ>q$Ji9WhPSVv@c1dwUwaOoW|3Aqtm+F2b1qPHohY(z)eHf2 zaeVt7hEa`JmSa8K;N1Wf#W_s}VRpKdQYb&p9i$`X&*IzVaM(Ry^mt1J>MR6i2GhLfZ89=1LYHw zAvp~M1^VOCzA0$G#~pQ9%ZtiFUoyAF{P>I&8{<`E3Z_H4WJyw58rSH$Qg00Z%8V%M z_a8o-<(veTYXbsh6RSYF|02vdVr-$_Ovk$L^w`7^qo>Y4)_P{{M+GN$?y{i1w}LRO zZ0qagkJpSceczU65osr?)&0~`5Z$vmvcAQ6a;?ngkJX%stme%u#c){7ShtUFa%V@J znX*9L#jd%&XZLQWOI3WpR+FZ@Y(2X`G;hPaO#1aTLr1M*jKA8i1qL4maHg4RHwxbG zON-t1%p&XiwQFt#gvgEzS`cD0SB+bIi85(f$FZgOyPSYgxuXU}^>)2ET3%PjQQhQ- zM7tZVi2i^IHn38G8RANqWQsoB#f51Q(VYF}!0kiJ793yYe|sMztm|&+;VKXgdw(3M zJcFxXtl;0=1lXf+=D?IzhQmFM_L_EjYFS#|xKR|*s>pdTey;sm`|LfQ1&30bH?>Qm zH@8OjE-Sc_GOwk&>^Hrx*$6Cg>dV%HGX|6N((Ar~xEbSZ6~ld2axMf_?n+SZBNiYpU%Ux&b45b9Tua?*p8+WOV)80JCcV8h;s^6>hPG zZQ}FSw!_WwgJYE1_N18FL~ian9IO4x44!pk zfNc6@|Bd`X6q0)Pwe3p_}u=7+gigd1!v+XfT8hrDEvKd=F!o= zzKdH43!_uLT(T7=;g1-+llyNDo+5A*wOv6RMQ*@@g3MH3?C+Vn(co?QT;Y0n`w_0c zk!AUz-{y{EA$u|gmWSXDe0%$0Lp7LBFa=EpK-`T%o3Wr?-T`GLKcbcVo?$E=A++Ye z667lnxO{$`2sg0APOv~`h{n4OUl1OCSAa19_lunb*Hq}_^5N!_3*gRu(U%N=lSN(@ zyxsP_+6TUR0it=Q0o{+(FH6QEgVXQlEpG_7wZKcb5bTx?9icj2J;^ z*zR~l+Gzd&KGzvF>el|8u%oA+ZIPFPRRP-j?i&~C+7#tEKY*;IS&8W~iao$RK? zH!ygr)6GciN`P@yh{?UFu_7X5w6TM(`cbs~v-!xx)~voaCm*pFkV64!)&vh2 z!eIz6%miLovnBRS;St#_%jBsGCN?%U_I-X{Ah&FJ`SPX1himBI7dOl%jA%M48HYGr zmIR)i;Oy+ot6YT#3CZyBNkXiiY0)3`R4SFNs)Jqu=7zs&o^$J2Kr*EfAN;(lDQ0zYv^@&(U4ZwiJ!#IN^I#+JryDZU7`v!eAO;(b!m>V@ClRuLTI zn>4>A!gGWXru<@r^UE4fff|2XJ3Y;*(D3lt9v_={b0Zs{V_sRkfR;>-`dugXc0Ft? z50lRruRm1podytl&@FfSS%M5P-Q0BeI1_ev;>>LeBlPE0yj_zyX7k65nuT9p?1Cz6 zCZOY8t>7a3@D_0MW3XW_Bu_yHf$><35;@=g@~N|vY`oi;|AW1JdFt)k?9kUuM>yZJ zva%XM@_vdsQN&6uG;=*kR*?O=&i1zMFd_Bx{~yBem2MChBa+?TFm3fd^FjBPsh6D< ziOUv8e+iwiKApanY$aMV?`jsAI(FKklAdtHMw^{!8j+NT_#j_RZ60EVx^Wts(9Z&I zXWZ+9x^;OD!M@jT&Ppu&_VJcy(+Q;!jB)QeN)NwjcU9$@6TLHjCMPEkqpf$xkXI^P z_lgqlfSVfeSb1-EcX6l~ke%BHO*b?i_s9AI0Dc$qvo}Wb?((Efrnhqyg=QB`ukNvE zw)|4xdc=m3DXl{keGdt|l*ezoXcK$991O-ZA2n;3Zy7b^$aiZyJH4|}y&S!qk`n7& za@9Mt=0|34a<6v}K!L}}up;fCj!pNCI5o%cL@#2IPDm;BEIUWUMT0w+XtN?SA^!FH z^zV~16$ak}9+tPYr!7A8>5#QBbIjA2&sSI2f|p|kYW@24U_803Ei_{cO~fQzOK@sp zf?Lm4^Y*ciIN@0B%~_wl3$0W25*rqMb+ftPf4796U&K<~+(gEAd>=A=?Csfe_6^rJ z^86)my}WsRZW6+n7paZlxE^mHV@spWf(FkBSA9sLzm~(ZvF{SE6=xhvz zJ$23;l&Nbz_?T|L^whte{@v*Pz3cXmN;(L*wY}iQ{o31oI8jhTbrIE603<>b0Ce7%YT;lXZ#Ll)+476$qR+cCby^&a^=G}jy+11nRjWGC5^%Hk6 z)i)}mqpX*la8rKEiTw6_@lQq+wj+B^#PY&%pJp_R=1%H~2Ghv}Mb5U!41N^dD*%(` z)$uPL`T7_18}+ATrnHsq%pb75UV|KWF!?P)_W~ApJ0N}ZrLjO5Rcn8dEBHFfzc%;F zrFr^*vGwL2g#e80BETu{z9wLQ`(tgb;4S`Z%5nJW1{ifDtMqH}{aDHvk<}Kz9t6;K z-87V;^ zskW{J>gGLNdEBQia{%8uO@{|jSFYLy7`{TgHLBZjY2?eI;=#DK^m8Xitk+5SR{5qt zxmbv)s)(-N@*5=fr2%$}dCdn`R&3gcrb0uXB28vTlCnZwJ9@xId^Vs2C|XtxRwed>eCh##FKG` zF5Q)158cPq4_KQPkCF9>deAo!hLAYol>VKSn5s)tuND6u;N&$hK;4JuT>ymkZE+$o z#!%6#9vWHyHZx3h5#(}&+YEdfM;(C~4;SxZtXeey+YQ07CLOOg4PjiiR(+vivY)np z;L&Bj$6g6u#<$qu92!_llYf6Zc~2Bi@At-KA)$eaA^d1~+o01#!%n{bHhIRQ-;qkw z!BJodqz;G2?yy`r4IVpv-v+IIDZB#>GpcvmJQZg2S%=ORzPi1?!oF(NvKqtwN#(($ z&gWMZf6j68VBk*7I7}-#u7#)YYi$&x#suF4EPDG`>kgCjIW8YI@R5@mFZk#+M&| znbvoAh^`T3=UY~8DNo;4dvHejwQu7sB;7Oyf6*}Yl#S@G1(JmFBZxU*v2q~X_N+3FM*Mr%j%p>1pi5ylXQ0)xwFAF%FC08eN}=SRJtg z5rb-rw;w9!9dYX196pc>fNNVaWAd^kpM)PT<~_XRlM&md(=@8)#$1D-$e$r&xHL`z z!ZFD%U{c-QE;t)%X39uz_^C0PkfTa|v3l50(xl>R>$KOT#p=*r)scz~7p;=Kznv9r11Z$5E^CePgJX3J7&U6Sj;fILhW+^gVLkN4Ea5|KO6F zI&(^1aUT_>r@tyA5_R?U*W9?_wJv^r@e0NV(xW>YW_*s1CEKrdEKM$JGkRbRQDyK) z%`~)p5{w8Yt(+N8q4(rZXPnl^mm%x`znSJGo7k_Rh zW5j`kc<+vj#pEiVPcfD5W==Y{f6i+3ib+(gi#NA6H*U+wNJvg1i`>Q+ZoOoFf^TpM zw~<6N4b`;)Sz!$YQ-1B`fZro#%;4s%cQ-wIgHC5B){vbAc4etW zW^n;!EF_&VHGY;G|(| z7y1_J-76k?KQtf>w`_q~xpQ*dl8ePy@_9?64;z*h2TYdyHl2SbOX%8aZ(kB&6<9Z~OVX(^g-u z`)JM1-ZZ>q>Fo_}yQeQiY1y=#yqqv4>qdog&eWHvIV<#gv>+K(jX=;!u5Gh+g5wN7ugdUtEXRj=ht!_YNtO%u$G^%@xt z?SUT}E0nHlKaD?dYw}<|G3;?)_lu^IIrBcrM^B7_NP{j0HlJ|oPF%~44LK`Pnn@Gi zp%!I@1v@kJDkDCTvU53kCC^$929Vhf&z66+C)ZR*o-}=SXu;r&l;gv5+6p9&JEK~E zdsnW3S4B|0T$nG{DS7Y}pZa`iRYD)y`7&ACdeg*j<)K4w>SwyK<&V6NvkEkB^J8-6 zTjtg+)jnauU*D9#+qU@0$Pn*s$A9UJc|h-)!LyHkoH`f;eT`2;CMuKp_Uhg_UduUq zBqs)EamgZ!J=WV&!r$c&+2elUrY;rxJ9J|@mCQ`%(aw)QEN+ELO0!*4;$P=~ znKL8z^}%IdrZNpu_X+(sztT?^1~2%OTC;oT(c-y3gs2IFC)`O;tog8EML==n(K19l z?XZV^Y$b0lXwb3U(uTfWK9QZbHO+h4>cll!r^}xiNjGDa&Bl@+Z+nzl@Ok>aC%?0U^XX;yx+%jku>_$z|^&d-8)@$mSU zI^Tjrr-twSUVm$k+r5xjh4zXMFHhEbxT_EM?A*EU#qAM6Pc1Cx=rWfkmzKEoUMYTl z@Cr`3GAyreiFeSRfOUIHN=Cb*&~e4XF?;Xk-xt0b8gj~PDH<=VC|#@^g34T*_=J~MiI6)tc~z0-?! z?C9#mhJ0paeYx>ob!?$(^3>E$1H!D0X*7PpBKq99MDg{;3h$@*ki^%o6>e^H^191s zzt04QzHsR?+VmW1a~kNb<=NR!pDZ*9kyq9WQ^0>03QKrn=ydeE8F58R9+4GnSMUz* z>|}HNpD+|YM+_sH@c~bziHU?~AE)$9-&L8Au&l$$?+3@Uc(?ZV%*-3J?j3Cpy}BTb z`0_EKiJzXf?dHwmFWi>P`yzOHKE$M^p>fIJ5?|J&P3&XY9Y#98E9QI{=)@Pjrsl}eaDzQPg?TV*- zA%eMXfE_>@o^b8rNo~!O?7)al{{7193rdC8spBV&KfOsw>AXvyYHt!%=4o@bn2{Xc zL*Q9UbECCLnVGtb{mLm>SaYozRU6Ds^NllAAH2FsN55i!K4F<(HpZ1d#nQr<*qQlC zC!v~CgGsrZzF*iF^HDb?@O|)f-N$t->WiUwA?xgX0r2dP-3?_A&CeU`eQ?n)AvgSB zi`M4@$M#)1_$9liYwbD{$MkLU^fF$}T1{Fb=sjARqzd(PC3Uw?(K&iIh3;@59cw-M zY4lg~1Fn;duQiZ%l0+Bz<9At38xh2t-Pm2r_!u10%z-0ghPfNBCuC87?+oCGuxL8_VWAA=mBSddR)m813!#!0M90v4`$vODJDbo1Lkk{i)` zC-3Ox4ON5Ec(Ait4fEDo55}xlBr4%Pq0tud(7%OadwzE9k*?b?z4yWAraT`T!%uVb z%jRq2UZ+(Y^qsVXop3AFm?96Gwt+O>!a_UegfasiWU4>sO2)EP{&no@M?Jb;?|V7n zz{3%|L9^eFvbAbUzxtKkBYbHP+!cU*>^ zSGjUD(3tS!5IJ~Z9#4b6e+EhRn;;r^P(#DvA3fJSyvTZ;pp|_>0&My{e4#kehXFOb%~`3uvLd8@Aci z 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 PA%Y(#hKt<=dSLn=(OF== literal 68355 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 i*Z=twxWriH3uesAIljDb-Ch8^E?=-ZUwqEx(f- literal 0 HcmV?d00001 diff --git a/docs/images/memcached/memcached-version-update.png b/docs/images/memcached/memcached-version-update.png new file mode 100644 index 0000000000000000000000000000000000000000..63250de8327b3ef0c42424bef90aea8e144682ea GIT binary patch literal 77625 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⪻jmbGs~)6=%ixrormDwjUh!-7%B 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
%j<|tpb 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 literal 0 HcmV?d00001 diff --git a/docs/images/memcached/memcached-vertical-scaling.png b/docs/images/memcached/memcached-vertical-scaling.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b38e18264bcb220a4cb79940974f6b71dd8fd4 GIT binary patch literal 77982 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 Zn+&}>`P_ajbsM<;ym-yH?1FR5{{S9(*319^ literal 0 HcmV?d00001