diff --git a/docs/examples/memcached/custom-config/custom-podtemplate.yaml b/docs/examples/memcached/custom-config/custom-podtemplate.yaml
new file mode 100644
index 0000000000..3f055e438d
--- /dev/null
+++ b/docs/examples/memcached/custom-config/custom-podtemplate.yaml
@@ -0,0 +1,18 @@
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ name: custom-mc
+ namespace: demo
+spec:
+ version: "1.6.22"
+ replicas: 1
+ podTemplate:
+ spec:
+ containers:
+ - name: memcached
+ env:
+ - name: "Memcached_Key"
+ value: KubeDB
+ - name: "Memcached_Value"
+ value: '123'
+ deletionPolicy: WipeOut
\ No newline at end of file
diff --git a/docs/examples/memcached/custom-config/node-selector.yaml b/docs/examples/memcached/custom-config/node-selector.yaml
new file mode 100644
index 0000000000..6dce584cc7
--- /dev/null
+++ b/docs/examples/memcached/custom-config/node-selector.yaml
@@ -0,0 +1,13 @@
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ name: memcached-node-selector
+ namespace: demo
+spec:
+ version: "1.6.22"
+ replicas: 1
+ podTemplate:
+ spec:
+ nodeSelector:
+ disktype: ssd
+ deletionPolicy: WipeOut
\ No newline at end of file
diff --git a/docs/examples/memcached/custom-config/sidecar-container.yaml b/docs/examples/memcached/custom-config/sidecar-container.yaml
new file mode 100644
index 0000000000..8d0dcc2bbe
--- /dev/null
+++ b/docs/examples/memcached/custom-config/sidecar-container.yaml
@@ -0,0 +1,29 @@
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ name: memcached-custom-sidecar
+ namespace: demo
+spec:
+ version: "1.6.22"
+ replicas: 1
+ podTemplate:
+ spec:
+ containers:
+ - name: memcached
+ resources:
+ limits:
+ cpu: 100m
+ memory: 100Mi
+ requests:
+ cpu: 100m
+ memory: 100Mi
+ - name: filebeat
+ image: evanraisul/custom_filebeat:latest
+ resources:
+ limits:
+ cpu: 300m
+ memory: 300Mi
+ requests:
+ cpu: 300m
+ memory: 300Mi
+ deletionPolicy: WipeOut
\ No newline at end of file
diff --git a/docs/examples/memcached/custom-config/without-toleration.yaml b/docs/examples/memcached/custom-config/without-toleration.yaml
new file mode 100644
index 0000000000..880db1eedb
--- /dev/null
+++ b/docs/examples/memcached/custom-config/without-toleration.yaml
@@ -0,0 +1,9 @@
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ name: memcached-without-tolerations
+ namespace: demo
+spec:
+ version: "1.6.22"
+ replicas: 1
+ deletionPolicy: WipeOut
\ No newline at end of file
diff --git a/docs/guides/memcached/README.md b/docs/guides/memcached/README.md
index b3cc894775..d493889cbc 100644
--- a/docs/guides/memcached/README.md
+++ b/docs/guides/memcached/README.md
@@ -16,19 +16,18 @@ aliases:
> New to KubeDB? Please start [here](/docs/README.md).
## Overview
-Memcached is an in-memory key-value store that allows for high-performance, low-latency data caching. It is often used to speed up dynamic web applications by offloading frequent, computationally expensive database queries and storing data that needs to be retrieved fast. Memcached is frequently used in contexts where the rapid retrieval of tiny data items, such as session data, query results, and user profiles, is critical for increasing application performance. It is especially well-suited for use cases requiring scalability, distributed caching, and high throughput, making it a popular choice for powering online and mobile apps, particularly in high-concurrency environments. Memcached is a simple, extremely efficient caching layer that minimizes stress on backend systems and improves performance for applications that require real-time data.
+`Memcached` is an in-memory key-value store that allows for high-performance, low-latency data caching. It is often used to speed up dynamic web applications by offloading frequent, computationally expensive database queries and storing data that needs to be retrieved fast. Memcached is frequently used in contexts where the rapid retrieval of tiny data items, such as session data, query results, and user profiles, is critical for increasing application performance. It is especially well-suited for use cases requiring scalability, distributed caching, and high throughput, making it a popular choice for powering online and mobile apps, particularly in high-concurrency environments. Memcached is a simple, extremely efficient caching layer that minimizes stress on backend systems and improves performance for applications that require real-time data.
## Supported Memcached Features
| Features | Availability |
| ----------------------------------------------------- | :----------: |
-| Multiple Memcached Versions | ✓ |
| Custom Configuration | ✓ |
| Externally manageable Auth Secret | ✓ |
| Reconfigurable Health Checker | ✓ |
| Using Custom docker image | ✓ |
| Builtin Prometheus Discovery | ✓ |
-| Using Prometheus operator | ✓ |
+| Operator Managed Prometheus Discovery | ✓ |
| Automated Version Update | ✓ |
| Automated Vertical Scaling | ✓ |
| Automated Horizontal Scaling | ✓ |
@@ -36,12 +35,11 @@ Memcached is an in-memory key-value store that allows for high-performance, low-
| Authentication & Authorization | ✓ |
| TLS: Add, Remove, Update, Rotate ( Cert Manager ) | ✓ |
| Autoscaling (Vertically) | ✓ |
+| Multiple Memcached Versions | ✓ |
| Monitoring using Prometheus and Grafana | ✓ |
| Monitoring Grafana Dashboard | ✓ |
| Alert Grafana Dashboard | ✓ |
-
-
## Life Cycle of a Memcached Object
diff --git a/docs/guides/memcached/autoscaler/_index.md b/docs/guides/memcached/autoscaler/_index.md
index 58da1969e7..098776c881 100644
--- a/docs/guides/memcached/autoscaler/_index.md
+++ b/docs/guides/memcached/autoscaler/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: auto-scaling
name: Autoscaling
parent: mc-memcached-guides
- weight: 47
+ weight: 90
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/autoscaler/compute/_index.md b/docs/guides/memcached/autoscaler/compute/_index.md
index 49b6502d63..05ca38c926 100644
--- a/docs/guides/memcached/autoscaler/compute/_index.md
+++ b/docs/guides/memcached/autoscaler/compute/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: compute-auto-scaling
name: Compute Autoscaling
parent: auto-scaling
- weight: 46
+ weight: 91
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/cli/cli.md b/docs/guides/memcached/cli/cli.md
index 41b442502f..03b700c1c1 100644
--- a/docs/guides/memcached/cli/cli.md
+++ b/docs/guides/memcached/cli/cli.md
@@ -292,5 +292,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)
+- Learn how to use custom configuration in Memcached with KubeDB [here](/docs/guides/memcached/custom-configuration/customize-configuration)
- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md).
diff --git a/docs/guides/memcached/concepts/_index.md b/docs/guides/memcached/concepts/_index.md
index 94d7c13bed..32458fddff 100755
--- a/docs/guides/memcached/concepts/_index.md
+++ b/docs/guides/memcached/concepts/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: mc-concepts-memcached
name: Concepts
parent: mc-memcached-guides
- weight: 20
+ weight: 30
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/concepts/memcached.md b/docs/guides/memcached/concepts/memcached.md
index 4a0ac57709..6fed3bf35a 100644
--- a/docs/guides/memcached/concepts/memcached.md
+++ b/docs/guides/memcached/concepts/memcached.md
@@ -104,7 +104,7 @@ 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/custom-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/customize-configuration).
### spec.podTemplate
diff --git a/docs/guides/memcached/custom-configuration/_index.md b/docs/guides/memcached/custom-configuration/_index.md
index 4d92d60b21..85765b8eb2 100755
--- a/docs/guides/memcached/custom-configuration/_index.md
+++ b/docs/guides/memcached/custom-configuration/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: custom-configuration
name: Custom Configuration
parent: mc-memcached-guides
- weight: 30
+ weight: 40
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/custom-configuration/using-config-file.md b/docs/guides/memcached/custom-configuration/using-config-file.md
index 2d74454c9b..ca4d969ad8 100644
--- a/docs/guides/memcached/custom-configuration/using-config-file.md
+++ b/docs/guides/memcached/custom-configuration/using-config-file.md
@@ -3,7 +3,7 @@ title: Run Memcached with Custom Configuration
menu:
docs_{{ .version }}:
identifier: mc-using-config-file-configuration
- name: Config File
+ name: Customize Configurations
parent: custom-configuration
weight: 10
menu_name: docs_{{ .version }}
diff --git a/docs/guides/memcached/custom-configuration/using-podtemplate.md b/docs/guides/memcached/custom-configuration/using-podtemplate.md
new file mode 100644
index 0000000000..899cdaaab8
--- /dev/null
+++ b/docs/guides/memcached/custom-configuration/using-podtemplate.md
@@ -0,0 +1,600 @@
+---
+title: Run Memcached with Custom Configuration
+menu:
+ docs_{{ .version }}:
+ identifier: mc-using-podtemplate-configuration
+ name: Customize PodTemplate
+ parent: custom-configuration
+ weight: 10
+menu_name: docs_{{ .version }}
+section_menu_id: guides
+---
+
+> New to KubeDB? Please start [here](/docs/README.md).
+
+# Run Memcached with Custom PodTemplate
+
+KubeDB supports providing custom configuration for Memcached via [PodTemplate](/docs/guides/pgpool/concepts/pgpool.md#specpodtemplate). This tutorial will show you how to use KubeDB to run a Memcached database with custom configuration using PodTemplate.
+
+## 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/).
+
+- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md).
+
+- To keep things isolated, this tutorial uses 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](https://github.com/kubedb/docs/tree/{{< param "info.version" >}}/docs/examples/memcached) folder in GitHub repository [kubedb/docs](https://github.com/kubedb/docs).
+
+## Overview
+
+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 database.
+
+KubeDB accept following fields to set in `spec.podTemplate:`
+
+- metadata:
+ - annotations (pod's annotation)
+ - labels (pod's labels)
+- controller:
+ - annotations (statefulset's annotation)
+ - labels (statefulset's labels)
+- spec:
+ - volumes
+ - initContainers
+ - containers
+ - imagePullSecrets
+ - nodeSelector
+ - serviceAccountName
+ - schedulerName
+ - tolerations
+ - priorityClassName
+ - priority
+ - securityContext
+
+Read about the fields in details in [PodTemplate concept](/docs/guides/memcached/concepts/memcached.md#specpodtemplate),
+
+## CRD Configuration
+
+Below is the YAML for the Memcached created in this example. Here, `spec.podTemplate.spec.containers[].env` specifies additional environment variables by users.
+
+In this tutorial, we will register additional two users at starting time of Memcached. So, the fact is any environment variable with having `suffix: USERNAME` and `suffix: PASSWORD` will be key value pairs of username and password and will be registered in the `pool_passwd` file of Memcached. So we can use these users after Memcached initialize without even syncing them.
+
+```yaml
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ name: custom-memcached
+ namespace: demo
+spec:
+ version: "1.6.22"
+ replicas: 1
+ podTemplate:
+ spec:
+ containers:
+ - name: memcahced
+ env:
+ - name: "Memcached_Key"
+ value: KubeDB
+ - name: "Memcached_Value"
+ value: '123'
+ deletionPolicy: WipeOut
+```
+
+```bash
+$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcahced/custom-config/custom-podtemplate.yaml
+memcahced.kubedb.com/custom-memcached created
+```
+
+Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `custom-memcached-0` has been created.
+
+Check that the petset's pod is running
+
+```bash
+$ kubectl get pod -n demo
+NAME READY STATUS RESTARTS AGE
+custom-memcached-0 1/1 Running 0 30s
+```
+
+Now, check if the memcahced has started with the custom configuration we have provided. First, we will exec in the pod. Then, we will check if the environment variable is set or not.
+
+```bash
+$ kubectl exec -it custom-memcached-0 -n demo memcached -- sh
+~ $ echo $Memcached_Key
+KubeDB
+~ $ echo $Memcached_Value
+123
+exit
+```
+So, we can see that the additional environment variables are set correctly.
+
+## Custom Sidecar Containers
+
+Here in this example we will add an extra sidecar container with our memcached container. So, it is required to run Filebeat as a sidecar container along with the KubeDB-managed Memcached. Here’s a quick demonstration on how to accomplish it.
+
+Firstly, we are going to make our custom filebeat image with our required configuration.
+```yaml
+filebeat.inputs:
+ - type: log
+ paths:
+ - /tmp/memcached_log/
+output.console:
+ pretty: true
+```
+Save this yaml with name `filebeat.yml`. Now prepare the dockerfile,
+```dockerfile
+FROM elastic/filebeat:7.17.1
+COPY filebeat.yml /usr/share/filebeat
+USER root
+RUN chmod go-w /usr/share/filebeat/filebeat.yml
+USER filebeat
+```
+Now run these following commands to build and push the docker image to your docker repository.
+```bash
+$ docker build -t repository_name/custom_filebeat:latest .
+$ docker push repository_name/custom_filebeat:latest
+```
+Now we will deploy our pgpool with custom sidecar container and will also use the `spec.initConfig` to configure the logs related settings. Here is the yaml of our pgpool:
+```yaml
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ name: memcached-custom-sidecar
+ namespace: demo
+spec:
+ version: "1.6.22"
+ replicas: 1
+ podTemplate:
+ spec:
+ containers:
+ - name: memcached
+ resources:
+ limits:
+ cpu: 100m
+ memory: 100Mi
+ requests:
+ cpu: 100m
+ memory: 100Mi
+ - name: filebeat
+ image: evanraisul/custom_filebeat:latest
+ resources:
+ limits:
+ cpu: 300m
+ memory: 300Mi
+ requests:
+ cpu: 300m
+ memory: 300Mi
+ deletionPolicy: WipeOut
+```
+```bash
+$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/custom-config/sidecar-container.yaml
+memcached.kubedb.com/-custom-sidecar created
+```
+Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `memcached-custom-sidecar-0` has been created.
+
+Check that the petset's pod is running
+
+```bash
+$ kubectl get pod -n demo
+NAME READY STATUS RESTARTS AGE
+memcached-custom-sidecar-0 2/2 Running 0 33s
+
+```
+
+Now, let’s checked the memcached database with the 2 containers with their given resources:
+
+```yaml
+kubectl get memcached -n demo memcached-custom-sidecar -oyaml
+
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ annotations:
+ kubectl.kubernetes.io/last-applied-configuration: |
+ {"apiVersion":"kubedb.com/v1","kind":"Memcached","metadata":{"annotations":{},"name":"memcached-custom-sidecar","namespace":"demo"},"spec":{"deletionPolicy":"WipeOut","podTemplate":{"spec":{"containers":[{"name":"memcached","resources":{"limits":{"cpu":"100m","memory":"100Mi"},"requests":{"cpu":"100m","memory":"100Mi"}}},{"image":"evanraisul/custom_filebeat:latest","name":"filebeat","resources":{"limits":{"cpu":"300m","memory":"300Mi"},"requests":{"cpu":"300m","memory":"300Mi"}}}]}},"replicas":1,"version":"1.6.22"}}
+ creationTimestamp: "2024-12-02T10:59:59Z"
+ finalizers:
+ - kubedb.com
+ generation: 3
+ name: memcached-custom-sidecar
+ namespace: demo
+ resourceVersion: "680005"
+ uid: 03d2b334-c5fd-4c9a-b88f-797f9630cec5
+spec:
+ authSecret:
+ name: memcached-custom-sidecar-auth
+ deletionPolicy: WipeOut
+ healthChecker:
+ failureThreshold: 1
+ periodSeconds: 10
+ timeoutSeconds: 10
+ podTemplate:
+ controller: {}
+ metadata: {}
+ spec:
+ containers:
+ - name: memcached
+ resources:
+ limits:
+ cpu: 100m
+ memory: 100Mi
+ requests:
+ cpu: 100m
+ memory: 100Mi
+ securityContext:
+ allowPrivilegeEscalation: false
+ capabilities:
+ drop:
+ - ALL
+ runAsGroup: 999
+ runAsNonRoot: true
+ runAsUser: 999
+ seccompProfile:
+ type: RuntimeDefault
+ - image: evanraisul/custom_filebeat:latest
+ name: filebeat
+ resources:
+ limits:
+ cpu: 300m
+ memory: 300Mi
+ requests:
+ cpu: 300m
+ memory: 300Mi
+ podPlacementPolicy:
+ name: default
+ securityContext:
+ fsGroup: 999
+ serviceAccountName: memcached-custom-sidecar
+ replicas: 1
+ version: 1.6.22
+status:
+ conditions:
+ - lastTransitionTime: "2024-12-02T10:59:59Z"
+ message: 'The KubeDB operator has started the provisioning of Memcached: demo/memcached-custom-sidecar'
+ reason: DatabaseProvisioningStartedSuccessfully
+ status: "True"
+ type: ProvisioningStarted
+ - lastTransitionTime: "2024-12-02T11:00:01Z"
+ message: All desired replicas are ready.
+ reason: AllReplicasReady
+ status: "True"
+ type: ReplicaReady
+ - lastTransitionTime: "2024-12-02T11:00:11Z"
+ message: 'The Memcached: demo/memcached-custom-sidecar is accepting mcClient requests.'
+ observedGeneration: 3
+ reason: DatabaseAcceptingConnectionRequest
+ status: "True"
+ type: AcceptingConnection
+ - lastTransitionTime: "2024-12-02T11:00:11Z"
+ message: 'The Memcached: demo/memcached-custom-sidecar is ready.'
+ observedGeneration: 3
+ reason: ReadinessCheckSucceeded
+ status: "True"
+ type: Ready
+ - lastTransitionTime: "2024-12-02T11:00:11Z"
+ message: 'The Memcached: demo/memcached-custom-sidecar is successfully provisioned.'
+ observedGeneration: 3
+ reason: DatabaseSuccessfullyProvisioned
+ status: "True"
+ type: Provisioned
+ observedGeneration: 3
+ phase: Ready
+```
+
+So, we have successfully checked our sidecar filebeat container in Memcached database.
+
+## Using Node Selector
+
+Here in this example we will use [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/) to schedule our memcached pod to a specific node. Applying nodeSelector to the Pod involves several steps. We first need to assign a label to some node that will be later used by the `nodeSelector` . Let’s find what nodes exist in your cluster. To get the name of these nodes, you can run:
+
+```bash
+$ kubectl get nodes --show-labels
+NAME STATUS ROLES AGE VERSION LABELS
+lke212553-307295-339173d10000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-339173d10000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=618158120a299c6fd37f00d01d355ca18794c467,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+lke212553-307295-5541798e0000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5541798e0000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=75cfe3dbbb0380f1727efc53f5192897485e95d5,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+lke212553-307295-5b53c5520000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5b53c5520000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=792bac078d7ce0e548163b9423416d7d8c88b08f,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+```
+As you see, we have three nodes in the cluster: lke212553-307295-339173d10000, lke212553-307295-5541798e0000, and lke212553-307295-5b53c5520000.
+
+Next, select a node to which you want to add a label. For example, let’s say we want to add a new label with the key `disktype` and value ssd to the `lke212553-307295-5541798e0000` node, which is a node with the SSD storage. To do so, run:
+```bash
+$ kubectl label nodes lke212553-307295-5541798e0000 disktype=ssd
+node/lke212553-307295-5541798e0000 labeled
+```
+As you noticed, the command above follows the format `kubectl label nodes =` .
+Finally, let’s verify that the new label was added by running:
+```bash
+ $ kubectl get nodes --show-labels
+NAME STATUS ROLES AGE VERSION LABELS
+lke212553-307295-339173d10000 Ready 41m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-339173d10000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=618158120a299c6fd37f00d01d355ca18794c467,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+lke212553-307295-5541798e0000 Ready 41m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,disktype=ssd,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5541798e0000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=75cfe3dbbb0380f1727efc53f5192897485e95d5,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+lke212553-307295-5b53c5520000 Ready 41m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5b53c5520000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=792bac078d7ce0e548163b9423416d7d8c88b08f,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+```
+As you see, the lke212553-307295-5541798e0000 now has a new label disktype=ssd. To see all labels attached to the node, you can also run:
+```bash
+$ kubectl describe node "lke212553-307295-5541798e0000"
+Name: lke212553-307295-5541798e0000
+Roles:
+Labels: beta.kubernetes.io/arch=amd64
+ beta.kubernetes.io/instance-type=g6-dedicated-4
+ beta.kubernetes.io/os=linux
+ disktype=ssd
+ failure-domain.beta.kubernetes.io/region=ap-south
+ kubernetes.io/arch=amd64
+ kubernetes.io/hostname=lke212553-307295-5541798e0000
+ kubernetes.io/os=linux
+ lke.linode.com/pool-id=307295
+ node.k8s.linode.com/host-uuid=75cfe3dbbb0380f1727efc53f5192897485e95d5
+ node.kubernetes.io/instance-type=g6-dedicated-4
+ topology.kubernetes.io/region=ap-south
+ topology.linode.com/region=ap-south
+```
+Along with the `disktype=ssd` label we’ve just added, you can see other labels such as `beta.kubernetes.io/arch` or `kubernetes.io/hostname`. These are all default labels attached to Kubernetes nodes.
+
+Now let's create a memcached with this new label as nodeSelector. Below is the yaml we are going to apply:
+```yaml
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ name: memcached-node-selector
+ namespace: demo
+spec:
+ version: "1.6.22"
+ replicas: 1
+ podTemplate:
+ spec:
+ nodeSelector:
+ disktype: ssd
+ deletionPolicy: WipeOut
+```
+```bash
+$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/custom-config/node-selector.yaml
+memcached.kubedb.com/memcached-node-selector created
+```
+Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `memcached-node-selector-0` has been created.
+
+Check that the petset's pod is running
+
+```bash
+$ kubectl get pods -n demo
+NAME READY STATUS RESTARTS AGE
+memcached-node-selector-0 1/1 Running 0 60s
+```
+As we see the pod is running, you can verify that by running `kubectl get pods -n demo memcached-node-selector-0 -o wide` and looking at the “NODE” to which the Pod was assigned.
+```bash
+$ kubectl get pods -n demo memcached-node-selector-0 -o wide
+NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
+memcached-node-selector-0 1/1 Running 0 3m19s 10.2.1.7 lke212553-307295-5541798e0000
+```
+We can successfully verify that our pod was scheduled to our desired node.
+
+## Using Taints and Tolerations
+
+Here in this example we will use [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to schedule our pgpool pod to a specific node and also prevent from scheduling to nodes. Applying taints and tolerations to the Pod involves several steps. Let’s find what nodes exist in your cluster. To get the name of these nodes, you can run:
+
+```bash
+$ kubectl get nodes --show-labels
+NAME STATUS ROLES AGE VERSION LABELS
+lke212553-307295-339173d10000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-339173d10000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=618158120a299c6fd37f00d01d355ca18794c467,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+lke212553-307295-5541798e0000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5541798e0000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=75cfe3dbbb0380f1727efc53f5192897485e95d5,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+lke212553-307295-5b53c5520000 Ready 36m v1.30.3 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/instance-type=g6-dedicated-4,beta.kubernetes.io/os=linux,failure-domain.beta.kubernetes.io/region=ap-south,kubernetes.io/arch=amd64,kubernetes.io/hostname=lke212553-307295-5b53c5520000,kubernetes.io/os=linux,lke.linode.com/pool-id=307295,node.k8s.linode.com/host-uuid=792bac078d7ce0e548163b9423416d7d8c88b08f,node.kubernetes.io/instance-type=g6-dedicated-4,topology.kubernetes.io/region=ap-south,topology.linode.com/region=ap-south
+```
+As you see, we have three nodes in the cluster: lke212553-307295-339173d10000, lke212553-307295-5541798e0000, and lke212553-307295-5b53c5520000.
+
+Next, we are going to taint these nodes.
+```bash
+$ kubectl taint nodes lke212553-307295-339173d10000 key1=node1:NoSchedule
+node/lke212553-307295-339173d10000 tainted
+
+$ kubectl taint nodes lke212553-307295-5541798e0000 key2=node2:NoSchedule
+node/lke212553-307295-5541798e0000 tainted
+
+$ kubectl taint nodes lke212553-307295-5b53c5520000 key3=node3:NoSchedule
+node/lke212553-307295-5b53c5520000 tainted
+```
+Let's see our tainted nodes here,
+```bash
+$ kubectl get nodes -o json | jq -r '.items[] | select(.spec.taints != null) | .metadata.name, .spec.taints'
+lke212553-307295-339173d10000
+[
+ {
+ "effect": "NoSchedule",
+ "key": "key1",
+ "value": "node1"
+ }
+]
+lke212553-307295-5541798e0000
+[
+ {
+ "effect": "NoSchedule",
+ "key": "key2",
+ "value": "node2"
+ }
+]
+lke212553-307295-5b53c5520000
+[
+ {
+ "effect": "NoSchedule",
+ "key": "key3",
+ "value": "node3"
+ }
+]
+```
+We can see that our taints were successfully assigned. Now let's try to create a memcached without proper tolerations. Here is the yaml of memcached we are going to createc
+```yaml
+apiVersion: kubedb.com/v1
+kind: Memcached
+metadata:
+ name: memcached-without-tolerations
+ namespace: demo
+spec:
+ version: "1.6.22"
+ replicas: 1
+ deletionPolicy: WipeOut
+```
+```bash
+$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/configuration/memcached-without-tolerations.yaml
+memcached.kubedb.com/memcached-without-tolerations created
+```
+Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `memcached-without-tolerations-0` has been created and running.
+
+Check that the petset's pod is running or not,
+```bash
+$ kubectl get pods -n demo
+NAME READY STATUS RESTARTS AGE
+memcached-without-tolerations-0 0/1 Pending 0 3m35s
+```
+Here we can see that the pod is not running. So let's describe the pod,
+```bash
+$ kubectl describe pods -n demo memcached-without-tolerations-0
+Name: memcached-without-tolerations-0
+Namespace: demo
+Priority: 0
+Service Account: default
+Node:
+Labels: app.kubernetes.io/component=connection-pooler
+ app.kubernetes.io/instance=memcached-without-tolerations
+ app.kubernetes.io/managed-by=kubedb.com
+ app.kubernetes.io/name=memcacheds.kubedb.com
+ apps.kubernetes.io/pod-index=0
+ controller-revision-hash=memcached-without-tolerations-5b85f9cd
+ statefulset.kubernetes.io/pod-name=memcached-without-tolerations-0
+Annotations:
+Status: Pending
+IP:
+IPs:
+Controlled By: PetSet/memcached-without-tolerations
+Containers:
+ memcached:
+ Image: ghcr.io/appscode-images/memcached:1.6.22-alpine
+ Ports: 11211/TCP
+ Host Ports: 0/TCP, 0/TCP
+ SeccompProfile: RuntimeDefault
+ Limits:
+ memory: 1Gi
+ Requests:
+ cpu: 500m
+ memory: 1Gi
+ volumeMounts:
+ - mountPath: /usr/config/
+ name: memcached-config
+ - mountPath: /usr/auth/
+ name: auth
+ - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
+ name: kube-api-access-mj7lj
+Conditions:
+ Type Status
+ PodScheduled False
+volumes:
+ - name: memcached-config
+ secret:
+ defaultMode: 420
+ items:
+ - key: memcached.conf
+ path: memcached.conf
+ secretName: memcd-quickstart-config
+ - name: auth
+ secret:
+ defaultMode: 420
+ items:
+ - key: authData
+ path: authfile
+ secretName: mc-auth
+ - name: kube-api-access-mj7lj
+ projected:
+ defaultMode: 420
+ sources:
+ - serviceAccountToken:
+ expirationSeconds: 3607
+ path: token
+ - configMap:
+ items:
+ - key: ca.crt
+ path: ca.crt
+ name: kube-root-ca.crt
+ - downwardAPI:
+ items:
+ - fieldRef:
+ apiVersion: v1
+ fieldPath: metadata.namespace
+ path: namespace
+Node-Selectors:
+Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
+ node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
+Topology Spread Constraints: kubernetes.io/hostname:ScheduleAnyway when max skew 1 is exceeded for selector app.kubernetes.io/component=connection-pooler,app.kubernetes.io/instance=memcached-without-tolerations,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=memcacheds.kubedb.com
+ topology.kubernetes.io/zone:ScheduleAnyway when max skew 1 is exceeded for selector app.kubernetes.io/component=connection-pooler,app.kubernetes.io/instance=memcached-without-tolerations,app.kubernetes.io/managed-by=kubedb.com,app.kubernetes.io/name=memcacheds.kubedb.com
+Events:
+ Type Reason Age From Message
+ ---- ------ ---- ---- -------
+ Warning FailedScheduling 5m20s default-scheduler 0/3 nodes are available: 1 node(s) had untolerated taint {key1: node1}, 1 node(s) had untolerated taint {key1: node2}, 1 node(s) had untolerated taint {key1: node3}. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling.
+ Warning FailedScheduling 11s default-scheduler 0/3 nodes are available: 1 node(s) had untolerated taint {key1: node1}, 1 node(s) had untolerated taint {key1: node2}, 1 node(s) had untolerated taint {key1: node3}. preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling.
+ Normal NotTriggerScaleUp 13s (x31 over 5m15s) cluster-autoscaler pod didn't trigger scale-up:
+```
+Here we can see that the pod has no tolerations for the tainted nodes and because of that the pod is not able to scheduled.
+
+So, let's add proper tolerations and create another memcached. Here is the yaml we are going to apply,
+```yaml
+apiVersion: kubedb.com/v1alpha2
+kind: Memcached
+metadata:
+ name: memcached-with-tolerations
+ namespace: demo
+spec:
+ version: "4.4.5"
+ replicas: 1
+ postgresRef:
+ name: ha-postgres
+ namespace: demo
+ podTemplate:
+ spec:
+ tolerations:
+ - key: "key1"
+ operator: "Equal"
+ value: "node1"
+ effect: "NoSchedule"
+ deletionPolicy: WipeOut
+```
+
+```bash
+$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/memcached/configuration/with-tolerations.yaml
+memcached.kubedb.com/memcached-with-tolerations created
+```
+Now, wait a few minutes. KubeDB operator will create necessary petset, services, secret etc. If everything goes well, we will see that a pod with the name `memcached-with-tolerations-0` has been created.
+
+Check that the petset's pod is running
+
+```bash
+$ kubectl get pods -n demo
+NAME READY STATUS RESTARTS AGE
+memcached-with-tolerations-0 1/1 Running 0 2m
+```
+As we see the pod is running, you can verify that by running `kubectl get pods -n demo memcached-with-tolerations-0 -o wide` and looking at the “NODE” to which the Pod was assigned.
+```bash
+$ kubectl get pods -n demo memcached-with-tolerations-0 -o wide
+NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
+memcached-with-tolerations-0 1/1 Running 0 3m49s 10.2.0.8 lke212553-307295-339173d10000
+```
+We can successfully verify that our pod was scheduled to the node which it has tolerations.
+
+## Cleaning up
+
+To clean up the Kubernetes resources created by this tutorial, run:
+
+```bash
+kubectl delete -n demo pp custom-sidecar node-selector with-tolerations without-tolerations
+kubectl delete ns demo
+```
+
+If you would like to uninstall KubeDB operator, please follow the steps [here](/docs/setup/README.md).
+
+## Next Steps
+
+- [Quickstart Memcached](/docs/guides/memcached/quickstart/quickstart.md) with KubeDB Operator.
+- Monitor your Memcached database with KubeDB using [out-of-the-box Prometheus operator](/docs/guides/memcached/monitoring/using-prometheus-operator.md).
+- Monitor your Memcached database with KubeDB using [out-of-the-box builtin-Prometheus](/docs/guides/memcached/monitoring/using-builtin-prometheus.md).
+- Detail concepts of [Memcached object](/docs/guides/memcached/concepts/memcached.md).
+- Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md).
diff --git a/docs/guides/memcached/monitoring/_index.md b/docs/guides/memcached/monitoring/_index.md
index 4864298c72..59077c4a08 100755
--- a/docs/guides/memcached/monitoring/_index.md
+++ b/docs/guides/memcached/monitoring/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: mc-monitoring-memcached
name: Monitoring
parent: mc-memcached-guides
- weight: 50
+ weight: 110
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/monitoring/using-prometheus-operator.md b/docs/guides/memcached/monitoring/using-prometheus-operator.md
index badbfc116a..90080cdbb4 100644
--- a/docs/guides/memcached/monitoring/using-prometheus-operator.md
+++ b/docs/guides/memcached/monitoring/using-prometheus-operator.md
@@ -14,7 +14,14 @@ section_menu_id: guides
# Monitoring Memcached Using Prometheus operator
-[Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) provides simple and Kubernetes native way to deploy and configure Prometheus server. This tutorial will show you how to use Prometheus operator to monitor Memcached server deployed with KubeDB.
+[Prometheus operator](https://github.com/prometheus-operator/prometheus-operator) provides simple and Kubernetes native way to deploy and configure Prometheus server. This tutorial will show you how to use Prometheus operator to monitor Memcached database deployed with KubeDB.
+
+The following diagram shows how KubeDB Provisioner operator monitor `Memcached` using Prometheus Operator. Open the image in a new tab to see the enlarged version.
+
+
## Before You Begin
diff --git a/docs/guides/memcached/quickstart/_index.md b/docs/guides/memcached/quickstart/_index.md
index 9748d38d44..319c924284 100755
--- a/docs/guides/memcached/quickstart/_index.md
+++ b/docs/guides/memcached/quickstart/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: mc-quickstart-memcached
name: Quickstart
parent: mc-memcached-guides
- weight: 15
+ weight: 20
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/reconfigure-tls/_index.md b/docs/guides/memcached/reconfigure-tls/_index.md
index 5d37080cf1..3e04651e0c 100644
--- a/docs/guides/memcached/reconfigure-tls/_index.md
+++ b/docs/guides/memcached/reconfigure-tls/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: reconfigure-tls
name: Reconfigure TLS/SSL
parent: mc-memcached-guides
- weight: 46
+ weight: 90
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/reconfigure-tls/reconfigure-tls.md b/docs/guides/memcached/reconfigure-tls/reconfigure-tls.md
index ca57ecd65f..0871bf7ecb 100644
--- a/docs/guides/memcached/reconfigure-tls/reconfigure-tls.md
+++ b/docs/guides/memcached/reconfigure-tls/reconfigure-tls.md
@@ -14,7 +14,7 @@ section_menu_id: guides
# Reconfigure Memcached TLS/SSL (Transport Encryption)
-KubeDB supports reconfigure i.e. add, remove, update and rotation of TLS/SSL certificates for existing Memcached database via a MemcachedOpsRequest. This tutorial will show you how to use KubeDB to reconfigure TLS/SSL encryption.
+KubeDB supports reconfigure i.e. `add, remove, update and rotation of TLS/SSL certificates` for existing Memcached database via a `MemcachedOpsRequest`. This tutorial will show you how to use KubeDB to reconfigure TLS/SSL encryption.
## Before You Begin
@@ -40,7 +40,7 @@ Here, We are going to create a Memcached database without TLS and then reconfigu
### Deploy Memcached without TLS
-In this section, we are going to deploy a Memcached database without TLS. In the next few sections we will add reconfigure TLS using `MemcachedOpsRequest` CRD. Below is the YAML of the `Memcached` CR that we are going to create,
+In this section, we are going to deploy a `Memcached` database without TLS. In the next few sections we will add reconfigure TLS using `MemcachedOpsRequest` CRD. Below is the YAML of the `Memcached` CR that we are going to create,
```yaml
apiVersion: kubedb.com/v1
@@ -70,7 +70,7 @@ NAME VERSION STATUS AGE
memcd-quickstart 1.6.22 Ready 26s
```
-Now, we can connect to this database through memcached-cli verify that the TLS is disabled.
+Now, we can connect to this database through `telnet` to verify that the `TLS` is disabled.
```bash
$ kc port-forward -n demo memcd-quickstart-0 11211
@@ -114,7 +114,7 @@ quit
We can verify from the above output that TLS is disabled for this database.
-### Create Issuer/ StandaloneIssuer
+### Create Issuer/ ClusterIssuer
Now, We are going to create an example `Issuer` that will be used to enable SSL/TLS in Memcached. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`.
@@ -391,7 +391,7 @@ Forwarding from [::1]:11211 -> 11211
$ openssl x509 -in <(openssl s_client -connect 127.0.0.1:11211 -showcerts < /dev/null 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p') -noout -enddate
notAfter=Feb 16 04:58:37 2025 GMT
```
-So, the certificate will expire on this time Feb 16 04:58:37 2025 GMT.
+So, the certificate will expire on Feb 16 04:58:37 2025 GMT.
### Create MemcachedOpsRequest
diff --git a/docs/guides/memcached/reconfigure/_index.md b/docs/guides/memcached/reconfigure/_index.md
index c7d6a89040..cf59e1c62e 100644
--- a/docs/guides/memcached/reconfigure/_index.md
+++ b/docs/guides/memcached/reconfigure/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: reconfigure
name: Reconfigure
parent: mc-memcached-guides
- weight: 46
+ weight: 80
menu_name: docs_{{ .version }}
---
\ No newline at end of file
diff --git a/docs/guides/memcached/restart/_index.md b/docs/guides/memcached/restart/_index.md
index 2c6c316493..aaa637c4bd 100644
--- a/docs/guides/memcached/restart/_index.md
+++ b/docs/guides/memcached/restart/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: restart
name: Restart
parent: mc-memcached-guides
- weight: 46
+ weight: 100
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/scaling/_index.md b/docs/guides/memcached/scaling/_index.md
index 0f31715359..fdb6393b72 100644
--- a/docs/guides/memcached/scaling/_index.md
+++ b/docs/guides/memcached/scaling/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: scaling
name: Scaling
parent: mc-memcached-guides
- weight: 43
+ weight: 60
menu_name: docs_{{ .version }}
---
\ No newline at end of file
diff --git a/docs/guides/memcached/tls/_index.md b/docs/guides/memcached/tls/_index.md
index 81398d5ecf..9975030833 100644
--- a/docs/guides/memcached/tls/_index.md
+++ b/docs/guides/memcached/tls/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: tls
name: TLS/SSL Encryption
parent: mc-memcached-guides
- weight: 45
+ weight: 80
menu_name: docs_{{ .version }}
---
diff --git a/docs/guides/memcached/tls/tls.md b/docs/guides/memcached/tls/tls.md
index 8a47c84576..f6e4fcff7a 100644
--- a/docs/guides/memcached/tls/tls.md
+++ b/docs/guides/memcached/tls/tls.md
@@ -14,7 +14,7 @@ section_menu_id: guides
# Run Memcached with TLS/SSL (Transport Encryption)
-KubeDB supports providing TLS/SSL encryption for Memcached. This tutorial will show you how to use KubeDB to run a Memcached database with TLS/SSL encryption.
+KubeDB supports providing TLS/SSL encryption for `Memcached`. This tutorial will show you how to use KubeDB to run a Memcached database with TLS/SSL encryption.
## Before You Begin
@@ -37,10 +37,20 @@ KubeDB supports providing TLS/SSL encryption for Memcached. This tutorial will s
KubeDB uses following crd fields to enable SSL/TLS encryption in Memcached.
-- `spec:`
- - `tls:`
- - `issuerRef`
- - `certificate`
+```yaml
+spec:
+ tls:
+ issuerRef:
+ apiGroup:
+ name:
+ kind:
+ certificate:
+ - alias:
+ subject:
+ organizations:
+ dnsNames:
+ ipAddresses:
+```
Read about the fields in details in [Memcached concept](/docs/guides/memcached/concepts/memcached.md),
diff --git a/docs/guides/memcached/update-version/_index.md b/docs/guides/memcached/update-version/_index.md
index 4a50a43f21..25e9470a3c 100644
--- a/docs/guides/memcached/update-version/_index.md
+++ b/docs/guides/memcached/update-version/_index.md
@@ -5,6 +5,6 @@ menu:
identifier: update-version
name: UpdateVersion
parent: mc-memcached-guides
- weight: 42
+ weight: 50
menu_name: docs_{{ .version }}
---
\ No newline at end of file
diff --git a/docs/images/memcached/monitoring/memcached-prometheus-operator.png b/docs/images/memcached/monitoring/memcached-prometheus-operator.png
new file mode 100644
index 0000000000..ae37c16f25
Binary files /dev/null and b/docs/images/memcached/monitoring/memcached-prometheus-operator.png differ