From e9dce62e7411fa4a475a22d2a93e14a789a0bb60 Mon Sep 17 00:00:00 2001 From: Neaj Morshad Date: Fri, 25 Oct 2024 11:01:08 +0600 Subject: [PATCH 1/4] Add MSSQLServer Volume Expansion Doc Signed-off-by: Neaj Morshad --- .../mssqlserver/clustering/ag_cluster.md | 4 +- .../mssqlserver/volume-expansion/_index.md | 10 + .../mssqlserver/volume-expansion/overview.md | 56 +++++ .../volume-expansion/volume-expansion.md | 222 ++++++++++++++++++ 4 files changed, 290 insertions(+), 2 deletions(-) create mode 100644 docs/guides/mssqlserver/volume-expansion/_index.md create mode 100644 docs/guides/mssqlserver/volume-expansion/overview.md create mode 100644 docs/guides/mssqlserver/volume-expansion/volume-expansion.md diff --git a/docs/guides/mssqlserver/clustering/ag_cluster.md b/docs/guides/mssqlserver/clustering/ag_cluster.md index fac342f09c..5d699968d0 100644 --- a/docs/guides/mssqlserver/clustering/ag_cluster.md +++ b/docs/guides/mssqlserver/clustering/ag_cluster.md @@ -861,6 +861,6 @@ If you are just testing some basic functionalities, you might want to avoid addi ## Next Steps - Learn about [backup and restore](/docs/guides/mssqlserver/backup/overview/index.md) SQL Server using KubeStash. -- Want to set up SQL Server Availability Group clusters? Check how to [Configure SQL Server Availability Gruop Cluster](/docs/guides/mssqlserver/clustering/ag_cluster.md) -- Detail concepts of [MSSQLServer object](/docs/guides/mssqlserver/concepts/mssqlserver.md). +- Want to set up SQL Server Availability Group clusters? Check how to [Configure SQL Server Availability Group Cluster](/docs/guides/mssqlserver/clustering/ag_cluster.md) +- Detail concepts of [MSSQLServer Object](/docs/guides/mssqlserver/concepts/mssqlserver.md). - Want to hack on KubeDB? Check our [contribution guidelines](/docs/CONTRIBUTING.md). \ No newline at end of file diff --git a/docs/guides/mssqlserver/volume-expansion/_index.md b/docs/guides/mssqlserver/volume-expansion/_index.md new file mode 100644 index 0000000000..899484bfd1 --- /dev/null +++ b/docs/guides/mssqlserver/volume-expansion/_index.md @@ -0,0 +1,10 @@ +--- +title: Volume Expansion +menu: + docs_{{ .version }}: + identifier: ms-volume-expansion + name: Volume Expansion + parent: guides-mssqlserver + weight: 42 +menu_name: docs_{{ .version }} +--- diff --git a/docs/guides/mssqlserver/volume-expansion/overview.md b/docs/guides/mssqlserver/volume-expansion/overview.md new file mode 100644 index 0000000000..532f931ffc --- /dev/null +++ b/docs/guides/mssqlserver/volume-expansion/overview.md @@ -0,0 +1,56 @@ +--- +title: MSSQLServer Volume Expansion Overview +menu: + docs_{{ .version }}: + identifier: ms-volume-expansion-overview + name: Overview + parent: ms-volume-expansion + weight: 10 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# MSSQLServer Volume Expansion + +This guide will give an overview on how KubeDB Ops Manager expand the volume of `MSSQLServer`. + +## Before You Begin + +- You should be familiar with the following `KubeDB` concepts: + - [MSSQLServer](/docs/guides/redis/concepts/redis.md) + - [MSSQLServerOpsRequest](/docs/guides/redis/concepts/redisopsrequest.md) + +## How Volume Expansion Process Works + +The following diagram shows how KubeDB Ops Manager expand the volumes of `MSSQLServer` database components. Open the image in a new tab to see the enlarged version. + +
+  Volume Expansion process of MSSQLServer +
Fig: Volume Expansion process of MSSQLServer
+
+ +The Volume Expansion process consists of the following steps: + +1. At first, a user creates a `MSSQLServer` Custom Resource (CR). + +2. `KubeDB` Community operator watches the `MSSQLServer` CR. + +3. When the operator finds a `MSSQLServer` CR, it creates required `PetSet` and related necessary stuff like secrets, services, etc. + +4. The petSet creates Persistent Volumes according to the Volume Claim Template provided in the petset configuration. This Persistent Volume will be expanded by the `KubeDB` Enterprise operator. + +5. Then, in order to expand the volume of the `MSSQLServer` database the user creates a `MSSQLServerOpsRequest` CR with desired information. + +6. `KubeDB` Enterprise operator watches the `MSSQLServerOpsRequest` CR. + +7. When it finds a `MSSQLServerOpsRequest` CR, it pauses the `MSSQLServer` object which is referred from the `MSSQLServerOpsRequest`. So, the `KubeDB` Community operator doesn't perform any operations on the `MSSQLServer` object during the volume expansion process. + +8. Then the `KubeDB` Enterprise operator will expand the persistent volume to reach the expected size defined in the `MSSQLServerOpsRequest` CR. + +9. After the successful expansion of the volume of the related PetSet Pods, the `KubeDB` Enterprise operator updates the new volume size in the `MSSQLServer` object to reflect the updated state. + +10. After the successful Volume Expansion of the `MSSQLServer`, the `KubeDB` Enterprise operator resumes the `MSSQLServer` object so that the `KubeDB` Community operator resumes its usual operations. + +In the next docs, we are going to show a step-by-step guide on Volume Expansion of various MSSQLServer database using `MSSQLServerOpsRequest` CRD. diff --git a/docs/guides/mssqlserver/volume-expansion/volume-expansion.md b/docs/guides/mssqlserver/volume-expansion/volume-expansion.md new file mode 100644 index 0000000000..8c19846893 --- /dev/null +++ b/docs/guides/mssqlserver/volume-expansion/volume-expansion.md @@ -0,0 +1,222 @@ +--- +title: MSSQLServer Volume Expansion +menu: + docs_{{ .version }}: + identifier: redis-volume-expansion-guide + name: MSSQLServer Volume Expansion + parent: ms-volume-expansion + weight: 20 +menu_name: docs_{{ .version }} +section_menu_id: guides +--- + +> New to KubeDB? Please start [here](/docs/README.md). + +# MSSQLServer Volume Expansion + +This guide will show you how to use `KubeDB` Enterprise operator to expand the volume of a MSSQLServer. + +## 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. + +- You must have a `StorageClass` that supports volume expansion. + +- 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: + - [MSSQLServer](/docs/guides/redis/concepts/redis.md) + - [MSSQLServerOpsRequest](/docs/guides/redis/concepts/redisopsrequest.md) + - [Volume Expansion Overview](/docs/guides/redis/volume-expansion/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 +``` + +## Expand Volume of MSSQLServer + +Here, we are going to deploy a `MSSQLServer` cluster using a supported version by `KubeDB` operator. Then we are going to apply `MSSQLServerOpsRequest` to expand its volume. The process of expanding MSSQLServer `standalone` is same as MSSQLServer cluster. + +### Prepare MSSQLServer Database + +At first verify that your cluster has a storage class, that supports volume expansion. Let's check, + +```bash +$ kubectl get storageclass +NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE +standard (default) rancher.io/local-path Delete WaitForFirstConsumer false 69s +topolvm-provisioner topolvm.cybozu.com Delete WaitForFirstConsumer true 37s + +``` + +We can see from the output the `topolvm-provisioner` storage class has `ALLOWVOLUMEEXPANSION` field as true. So, this storage class supports volume expansion. We will use this storage class. You can install topolvm from [here](https://github.com/topolvm/topolvm). + +Now, we are going to deploy a `MSSQLServer` database with in `Cluster` Mode version `6.2.14`. + +### Deploy MSSQLServer + +In this section, we are going to deploy a MSSQLServer Cluster with 1GB volume. Then, in the next section we will expand its volume to 2GB using `MSSQLServerOpsRequest` CRD. Below is the YAML of the `MSSQLServer` CR that we are going to create, + +```yaml +apiVersion: kubedb.com/v1 +kind: MSSQLServer +metadata: + name: sample-redis + namespace: demo +spec: + version: 6.2.14 + mode: Cluster + cluster: + shards: 3 + replicas: 1 + storageType: Durable + storage: + storageClassName: "topolvm-provisioner" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + deletionPolicy: Halt +``` + +Let's create the `MSSQLServer` CR we have shown above, + +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/example/redis/volume-expansion/sample-redis.yaml +redis.kubedb.com/sample-redis created +``` + +Now, wait until `sample-redis` has status `Ready`. i.e, + +```bash +$ kubectl get redis -n demo +NAME VERSION STATUS AGE +sample-redis 6.2.14 Ready 5m4s +``` + +Let's check volume size from petset, and from the persistent volume, + +```bash +$ kubectl get petset-n demo sample-redis-shard0 -o json | jq '.spec.volumeClaimTemplates[].spec.resources.requests.storage' +"1Gi" + +$ kubectl get pv -n demo +NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE +pvc-032f1355-1720-4d85-b1e5-b86427bc4662 1Gi RWO Delete Bound demo/data-sample-redis-shard0-1 topolvm-provisioner 2m49s +pvc-207ac9aa-2ba2-432b-ac00-8cc1cd46e20a 1Gi RWO Delete Bound demo/data-sample-redis-shard2-0 topolvm-provisioner 2m49s +pvc-20c946e4-4812-4dfc-a76e-4629bcd385dc 1Gi RWO Delete Bound demo/data-sample-redis-shard2-1 topolvm-provisioner 2m38s +pvc-69158d05-c715-4dd5-afee-2f5d196ba1f9 1Gi RWO Delete Bound demo/data-sample-redis-shard1-0 topolvm-provisioner 2m53s +pvc-aee29446-eff0-430e-95ff-ae853e73a244 1Gi RWO Delete Bound demo/data-sample-redis-shard1-1 topolvm-provisioner 2m41s +pvc-d37fbdf9-90bd-4b5e-b3b2-7e40156c13a8 1Gi RWO Delete Bound demo/data-sample-redis-shard0-0 topolvm-provisioner 2m56s +``` + +You can see the petset has 1GB storage, and the capacity of all the persistent volumes are also 1GB. + +We are now ready to apply the `MSSQLServerOpsRequest` CR to expand the volume of this database. + +### Volume Expansion + +Here, we are going to expand the volume of the MSSQLServer cluster. + +#### Create MSSQLServerOpsRequest + +In order to expand the volume of the database, we have to create a `MSSQLServerOpsRequest` CR with our desired volume size. Below is the YAML of the `MSSQLServerOpsRequest` CR that we are going to create, + +```yaml +apiVersion: ops.kubedb.com/v1alpha1 +kind: MSSQLServerOpsRequest +metadata: + name: ms-online-volume-expansion + namespace: demo +spec: + type: VolumeExpansion + databaseRef: + name: sample-redis + volumeExpansion: + mode: "Online" + redis: 2Gi +``` + +Here, + +- `spec.databaseRef.name` specifies that we are performing volume expansion operation on `sample-redis` database. +- `spec.type` specifies that we are performing `VolumeExpansion` on our database. +- `spec.volumeExpansion.redis` specifies the desired volume size. +- `spec.volumeExpansion.mode` specifies the desired volume expansion mode (`Online` or `Offline`). Storageclass `topolvm-provisioner` supports `Online` volume expansion. + +> **Note:** If the Storageclass you are using doesn't support `Online` Volume Expansion, Try offline volume expansion by using `spec.volumeExpansion.mode:"Offline"`. + +During `Online` VolumeExpansion KubeDB expands volume without pausing database object, it directly updates the underlying PVC. And for Offline volume expansion, the database is paused. The Pods +are deleted and PVC is updated. Then the database Pods are recreated with updated PVC. + + +Let's create the `MSSQLServerOpsRequest` CR we have shown above, + +```bash +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/example/redis/volume-expansion/online-vol-expansion.yaml +redisopsrequest.ops.kubedb.com/ms-online-volume-expansion created +``` + +#### Verify MSSQLServer volume expanded successfully + +If everything goes well, `KubeDB` Enterprise operator will update the volume size of `MSSQLServer` object and related `PetSets` and `Persistent Volumes`. + +Let's wait for `MSSQLServerOpsRequest` to be `Successful`. Run the following command to watch `MSSQLServerOpsRequest` CR, + +```bash +$ kubectl get redisopsrequest -n demo +NAME TYPE STATUS AGE +ms-online-volume-expansion VolumeExpansion Successful 96s +``` + +We can see from the above output that the `MSSQLServerOpsRequest` has succeeded. + +Now, we are going to verify from the `Petset`, and the `Persistent Volumes` whether the volume of the database has expanded to meet the desired state, Let's check, + +```bash +$ kubectl get petset -n demo sample-redis-shard0 -o json | jq '.spec.volumeClaimTemplates[].spec.resources.requests.storage' +"2Gi" + +$ kubectl get petset -n demo sample-redis-shard1 -o json | jq '.spec.volumeClaimTemplates[].spec.resources.requests.storage' +"2Gi" + +$ kubectl get pv -n demo +NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE +pvc-032f1355-1720-4d85-b1e5-b86427bc4662 2Gi RWO Delete Bound demo/data-sample-redis-shard0-1 topolvm-provisioner 7m9s +pvc-207ac9aa-2ba2-432b-ac00-8cc1cd46e20a 2Gi RWO Delete Bound demo/data-sample-redis-shard2-0 topolvm-provisioner 7m9s +pvc-20c946e4-4812-4dfc-a76e-4629bcd385dc 2Gi RWO Delete Bound demo/data-sample-redis-shard2-1 topolvm-provisioner 7m8s +pvc-69158d05-c715-4dd5-afee-2f5d196ba1f9 2Gi RWO Delete Bound demo/data-sample-redis-shard1-0 topolvm-provisioner 7m3s +pvc-aee29446-eff0-430e-95ff-ae853e73a244 2Gi RWO Delete Bound demo/data-sample-redis-shard1-1 topolvm-provisioner 7m1s +pvc-d37fbdf9-90bd-4b5e-b3b2-7e40156c13a8 2Gi RWO Delete Bound demo/data-sample-redis-shard0-0 topolvm-provisioner 7m6s +``` + +The above output verifies that we have successfully expanded the volume of the MSSQLServer database. + +## Standalone Mode and Sentinel Mode + +The volume expansion process is same for all the MSSQLServer modes. The `MSSQLServerOpsRequest` CR has the sample fields. The database needs to refer to a redis database +in standalone or sentinel mode. + +## Cleaning Up + +To clean up the Kubernetes resources created by this tutorial, run: + +```bash +$ kubectl delete redis -n demo sample-redis +$ kubectl delete redisopsrequest -n demo ms-online-volume-expansion +``` + +```bash +$ kubectl patch -n demo ms/sample-redis -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +redis.kubedb.com/sample-redis patched + +$ kubectl delete -n demo redis sample-redis +redis.kubedb.com "sample-redis" deleted + +$ kubectl delete -n demo redisopsrequest ms-online-volume-expansion +redisopsrequest.ops.kubedb.com "ms-online-volume-expansion" deleted +``` From f8e7d6a6a2d503e82cb7b9f454dc4483373c4f12 Mon Sep 17 00:00:00 2001 From: Neaj Morshad Date: Fri, 25 Oct 2024 20:16:56 +0600 Subject: [PATCH 2/4] finish vol exp Signed-off-by: Neaj Morshad --- .../mops-volume-exp-ag-cluster.yaml | 12 ++ .../mssqlserver-ag-cluster.yaml | 35 +++ .../mssqlserver/volume-expansion/overview.md | 20 +- .../volume-expansion/volume-expansion.md | 204 +++++++++++------- .../mssqlserver/ms-volume-expansion.svg | 145 +++++++++++++ 5 files changed, 325 insertions(+), 91 deletions(-) create mode 100644 docs/examples/mssqlserver/volume-expansion/mops-volume-exp-ag-cluster.yaml create mode 100644 docs/examples/mssqlserver/volume-expansion/mssqlserver-ag-cluster.yaml create mode 100644 docs/images/day-2-operation/mssqlserver/ms-volume-expansion.svg diff --git a/docs/examples/mssqlserver/volume-expansion/mops-volume-exp-ag-cluster.yaml b/docs/examples/mssqlserver/volume-expansion/mops-volume-exp-ag-cluster.yaml new file mode 100644 index 0000000000..c02c193fe1 --- /dev/null +++ b/docs/examples/mssqlserver/volume-expansion/mops-volume-exp-ag-cluster.yaml @@ -0,0 +1,12 @@ +apiVersion: ops.kubedb.com/v1alpha1 +kind: MSSQLServerOpsRequest +metadata: + name: mops-volume-exp-ag-cluster + namespace: demo +spec: + type: VolumeExpansion + databaseRef: + name: mssqlserver-ag-cluster + volumeExpansion: + mode: "Offline" # Online + mssqlserver: 2Gi diff --git a/docs/examples/mssqlserver/volume-expansion/mssqlserver-ag-cluster.yaml b/docs/examples/mssqlserver/volume-expansion/mssqlserver-ag-cluster.yaml new file mode 100644 index 0000000000..c3f849b482 --- /dev/null +++ b/docs/examples/mssqlserver/volume-expansion/mssqlserver-ag-cluster.yaml @@ -0,0 +1,35 @@ +apiVersion: kubedb.com/v1alpha2 +kind: MSSQLServer +metadata: + name: mssqlserver-ag-cluster + namespace: demo +spec: + version: "2022-cu12" + replicas: 3 + topology: + mode: AvailabilityGroup + availabilityGroup: + databases: + - agdb1 + - agdb2 + internalAuth: + endpointCert: + issuerRef: + apiGroup: cert-manager.io + name: mssqlserver-ca-issuer + kind: Issuer + tls: + issuerRef: + name: mssqlserver-ca-issuer + kind: Issuer + apiGroup: "cert-manager.io" + clientTLS: false + storageType: Durable + storage: + storageClassName: "longhorn" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + deletionPolicy: WipeOut \ No newline at end of file diff --git a/docs/guides/mssqlserver/volume-expansion/overview.md b/docs/guides/mssqlserver/volume-expansion/overview.md index 532f931ffc..bc6081877a 100644 --- a/docs/guides/mssqlserver/volume-expansion/overview.md +++ b/docs/guides/mssqlserver/volume-expansion/overview.md @@ -19,15 +19,15 @@ This guide will give an overview on how KubeDB Ops Manager expand the volume of ## Before You Begin - You should be familiar with the following `KubeDB` concepts: - - [MSSQLServer](/docs/guides/redis/concepts/redis.md) - - [MSSQLServerOpsRequest](/docs/guides/redis/concepts/redisopsrequest.md) + - [MSSQLServer](/docs/guides/mssqlserver/concepts/mssqlserver.md) + - [MSSQLServerOpsRequest](/docs/guides/mssqlserver/concepts/opsrequest.md) ## How Volume Expansion Process Works The following diagram shows how KubeDB Ops Manager expand the volumes of `MSSQLServer` database components. Open the image in a new tab to see the enlarged version.
-  Volume Expansion process of MSSQLServer +  Volume Expansion process of MSSQLServer
Fig: Volume Expansion process of MSSQLServer
@@ -35,22 +35,22 @@ The Volume Expansion process consists of the following steps: 1. At first, a user creates a `MSSQLServer` Custom Resource (CR). -2. `KubeDB` Community operator watches the `MSSQLServer` CR. +2. `KubeDB` Provisioner operator watches the `MSSQLServer` CR. 3. When the operator finds a `MSSQLServer` CR, it creates required `PetSet` and related necessary stuff like secrets, services, etc. -4. The petSet creates Persistent Volumes according to the Volume Claim Template provided in the petset configuration. This Persistent Volume will be expanded by the `KubeDB` Enterprise operator. +4. The petSet creates Persistent Volumes according to the Volume Claim Template provided in the petset configuration. This Persistent Volume will be expanded by the `KubeDB` Ops-manager operator. 5. Then, in order to expand the volume of the `MSSQLServer` database the user creates a `MSSQLServerOpsRequest` CR with desired information. -6. `KubeDB` Enterprise operator watches the `MSSQLServerOpsRequest` CR. +6. `KubeDB` Ops-manager operator watches the `MSSQLServerOpsRequest` CR. -7. When it finds a `MSSQLServerOpsRequest` CR, it pauses the `MSSQLServer` object which is referred from the `MSSQLServerOpsRequest`. So, the `KubeDB` Community operator doesn't perform any operations on the `MSSQLServer` object during the volume expansion process. +7. When it finds a `MSSQLServerOpsRequest` CR, it pauses the `MSSQLServer` object which is referred from the `MSSQLServerOpsRequest`. So, the `KubeDB` Provisioner operator doesn't perform any operations on the `MSSQLServer` object during the volume expansion process. -8. Then the `KubeDB` Enterprise operator will expand the persistent volume to reach the expected size defined in the `MSSQLServerOpsRequest` CR. +8. Then the `KubeDB` Ops-manager operator will expand the persistent volume to reach the expected size defined in the `MSSQLServerOpsRequest` CR. -9. After the successful expansion of the volume of the related PetSet Pods, the `KubeDB` Enterprise operator updates the new volume size in the `MSSQLServer` object to reflect the updated state. +9. After the successful expansion of the volume of the related PetSet Pods, the `KubeDB` Ops-manager operator updates the new volume size in the `MSSQLServer` object to reflect the updated state. -10. After the successful Volume Expansion of the `MSSQLServer`, the `KubeDB` Enterprise operator resumes the `MSSQLServer` object so that the `KubeDB` Community operator resumes its usual operations. +10. After the successful Volume Expansion of the `MSSQLServer`, the `KubeDB` Ops-manager operator resumes the `MSSQLServer` 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 Volume Expansion of various MSSQLServer database using `MSSQLServerOpsRequest` CRD. diff --git a/docs/guides/mssqlserver/volume-expansion/volume-expansion.md b/docs/guides/mssqlserver/volume-expansion/volume-expansion.md index 8c19846893..110f807da2 100644 --- a/docs/guides/mssqlserver/volume-expansion/volume-expansion.md +++ b/docs/guides/mssqlserver/volume-expansion/volume-expansion.md @@ -2,7 +2,7 @@ title: MSSQLServer Volume Expansion menu: docs_{{ .version }}: - identifier: redis-volume-expansion-guide + identifier: mssqlserver-volume-expansion-guide name: MSSQLServer Volume Expansion parent: ms-volume-expansion weight: 20 @@ -14,20 +14,22 @@ section_menu_id: guides # MSSQLServer Volume Expansion -This guide will show you how to use `KubeDB` Enterprise operator to expand the volume of a MSSQLServer. +This guide will show you how to use `KubeDB` Ops-manager operator to expand the volume of a MSSQLServer. ## 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. +- 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/). -- You must have a `StorageClass` that supports volume expansion. +- Now, install KubeDB cli on your workstation and KubeDB operator in your cluster following the steps [here](/docs/setup/README.md). Make sure install with helm command including `--set global.featureGates.MSSQLServer=true` to ensure MSSQLServer CRD installation. + +- To configure TLS/SSL in `MSSQLServer`, `KubeDB` uses `cert-manager` to issue certificates. So first you have to make sure that the cluster has `cert-manager` installed. To install `cert-manager` in your cluster following steps [here](https://cert-manager.io/docs/installation/kubernetes/). -- Install `KubeDB` Community and Enterprise operator in your cluster following the steps [here](/docs/setup/README.md). +- You must have a `StorageClass` that supports volume expansion. - You should be familiar with the following `KubeDB` concepts: - - [MSSQLServer](/docs/guides/redis/concepts/redis.md) - - [MSSQLServerOpsRequest](/docs/guides/redis/concepts/redisopsrequest.md) - - [Volume Expansion Overview](/docs/guides/redis/volume-expansion/overview.md) + - [MSSQLServer](/docs/guides/mssqlserver/concepts/mssqlserver.md) + - [MSSQLServerOpsRequest](/docs/guides/mssqlserver/concepts/opsrequest.md) + - [Volume Expansion Overview](/docs/guides/mssqlserver/volume-expansion/overview.md) To keep everything isolated, we are going to use a separate namespace called `demo` throughout this tutorial. @@ -38,80 +40,127 @@ namespace/demo created ## Expand Volume of MSSQLServer -Here, we are going to deploy a `MSSQLServer` cluster using a supported version by `KubeDB` operator. Then we are going to apply `MSSQLServerOpsRequest` to expand its volume. The process of expanding MSSQLServer `standalone` is same as MSSQLServer cluster. +Here, we are going to deploy a `MSSQLServer` cluster using a supported version by `KubeDB` operator. Then we are going to apply `MSSQLServerOpsRequest` to expand its volume. The process of expanding MSSQLServer `standalone` is same as MSSQLServer Availability Group cluster. -### Prepare MSSQLServer Database +### Prepare MSSQLServer At first verify that your cluster has a storage class, that supports volume expansion. Let's check, ```bash $ kubectl get storageclass -NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE -standard (default) rancher.io/local-path Delete WaitForFirstConsumer false 69s -topolvm-provisioner topolvm.cybozu.com Delete WaitForFirstConsumer true 37s - +NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE +local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 2d +longhorn (default) driver.longhorn.io Delete Immediate true 3m25s +longhorn-static driver.longhorn.io Delete Immediate true 3m19s ``` -We can see from the output the `topolvm-provisioner` storage class has `ALLOWVOLUMEEXPANSION` field as true. So, this storage class supports volume expansion. We will use this storage class. You can install topolvm from [here](https://github.com/topolvm/topolvm). +We can see from the output that `longhorn (default)` storage class has `ALLOWVOLUMEEXPANSION` field as true. So, this storage class supports volume expansion. We will use this storage class. -Now, we are going to deploy a `MSSQLServer` database with in `Cluster` Mode version `6.2.14`. + +Now, we are going to deploy a `MSSQLServer` in `AvailabilityGroup` Mode with version `2022-cu12`. ### Deploy MSSQLServer +First, an issuer needs to be created, even if TLS is not enabled for SQL Server. The issuer will be used to configure the TLS-enabled Wal-G proxy server, which is required for the SQL Server backup and restore operations. + +### Create Issuer/ClusterIssuer + +Now, we are going to create an example `Issuer` that will be used throughout the duration of this tutorial. Alternatively, you can follow this [cert-manager tutorial](https://cert-manager.io/docs/configuration/ca/) to create your own `Issuer`. By following the below steps, we are going to create our desired issuer, + +- Start off by generating our ca-certificates using openssl, +```bash +openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./ca.key -out ./ca.crt -subj "/CN=MSSQLServer/O=kubedb" +``` +- Create a secret using the certificate files we have just generated, +```bash +$ kubectl create secret tls mssqlserver-ca --cert=ca.crt --key=ca.key --namespace=demo +secret/mssqlserver-ca created +``` +Now, we are going to create an `Issuer` using the `mssqlserver-ca` secret that contains the ca-certificate we have just created. Below is the YAML of the `Issuer` CR that we are going to create, + +```yaml +apiVersion: cert-manager.io/v1 +kind: Issuer +metadata: + name: mssqlserver-ca-issuer + namespace: demo +spec: + ca: + secretName: mssqlserver-ca +``` + +Let’s create the `Issuer` CR we have shown above, +```bash +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mssqlserver/ag-cluster/mssqlserver-ca-issuer.yaml +issuer.cert-manager.io/mssqlserver-ca-issuer created +``` + In this section, we are going to deploy a MSSQLServer Cluster with 1GB volume. Then, in the next section we will expand its volume to 2GB using `MSSQLServerOpsRequest` CRD. Below is the YAML of the `MSSQLServer` CR that we are going to create, ```yaml -apiVersion: kubedb.com/v1 +apiVersion: kubedb.com/v1alpha2 kind: MSSQLServer metadata: - name: sample-redis + name: mssqlserver-ag-cluster namespace: demo spec: - version: 6.2.14 - mode: Cluster - cluster: - shards: 3 - replicas: 1 + version: "2022-cu12" + replicas: 3 + topology: + mode: AvailabilityGroup + availabilityGroup: + databases: + - agdb1 + - agdb2 + internalAuth: + endpointCert: + issuerRef: + apiGroup: cert-manager.io + name: mssqlserver-ca-issuer + kind: Issuer + tls: + issuerRef: + name: mssqlserver-ca-issuer + kind: Issuer + apiGroup: "cert-manager.io" + clientTLS: false storageType: Durable storage: - storageClassName: "topolvm-provisioner" + storageClassName: "longhorn" accessModes: - - ReadWriteOnce + - ReadWriteOnce resources: requests: storage: 1Gi - deletionPolicy: Halt + deletionPolicy: WipeOut ``` Let's create the `MSSQLServer` CR we have shown above, ```bash -$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/example/redis/volume-expansion/sample-redis.yaml -redis.kubedb.com/sample-redis created +$ kubectl create -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/examples/mssqlserver/volume-expansion/mssqlserver-ag-cluster.yaml +mssqlserver.kubedb.com/mssqlserver-ag-cluster created ``` -Now, wait until `sample-redis` has status `Ready`. i.e, +Now, wait until `mssqlserver-ag-cluster` has status `Ready`. i.e, ```bash -$ kubectl get redis -n demo -NAME VERSION STATUS AGE -sample-redis 6.2.14 Ready 5m4s +$ kubectl get mssqlserver -n demo mssqlserver-ag-cluster +NAME VERSION STATUS AGE +mssqlserver-ag-cluster 2022-cu12 Ready 5m1s ``` Let's check volume size from petset, and from the persistent volume, ```bash -$ kubectl get petset-n demo sample-redis-shard0 -o json | jq '.spec.volumeClaimTemplates[].spec.resources.requests.storage' +$ kubectl get petset -n demo mssqlserver-ag-cluster -o json | jq '.spec.volumeClaimTemplates[].spec.resources.requests.storage' "1Gi" $ kubectl get pv -n demo -NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE -pvc-032f1355-1720-4d85-b1e5-b86427bc4662 1Gi RWO Delete Bound demo/data-sample-redis-shard0-1 topolvm-provisioner 2m49s -pvc-207ac9aa-2ba2-432b-ac00-8cc1cd46e20a 1Gi RWO Delete Bound demo/data-sample-redis-shard2-0 topolvm-provisioner 2m49s -pvc-20c946e4-4812-4dfc-a76e-4629bcd385dc 1Gi RWO Delete Bound demo/data-sample-redis-shard2-1 topolvm-provisioner 2m38s -pvc-69158d05-c715-4dd5-afee-2f5d196ba1f9 1Gi RWO Delete Bound demo/data-sample-redis-shard1-0 topolvm-provisioner 2m53s -pvc-aee29446-eff0-430e-95ff-ae853e73a244 1Gi RWO Delete Bound demo/data-sample-redis-shard1-1 topolvm-provisioner 2m41s -pvc-d37fbdf9-90bd-4b5e-b3b2-7e40156c13a8 1Gi RWO Delete Bound demo/data-sample-redis-shard0-0 topolvm-provisioner 2m56s +NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE +pvc-059f186a-01a4-441d-85f1-95aef34934be 1Gi RWO Delete Bound demo/data-mssqlserver-ag-cluster-0 longhorn 82s +pvc-87bea35f-4a55-4aa5-903a-e4da9f548241 1Gi RWO Delete Bound demo/data-mssqlserver-ag-cluster-1 longhorn 52s +pvc-9d1c3c9c-f928-4fa2-a2e1-becf2ab9c564 1Gi RWO Delete Bound demo/data-mssqlserver-ag-cluster-2 longhorn 35s ``` You can see the petset has 1GB storage, and the capacity of all the persistent volumes are also 1GB. @@ -130,47 +179,46 @@ In order to expand the volume of the database, we have to create a `MSSQLServerO apiVersion: ops.kubedb.com/v1alpha1 kind: MSSQLServerOpsRequest metadata: - name: ms-online-volume-expansion + name: mops-volume-exp-ag-cluster namespace: demo spec: - type: VolumeExpansion + type: VolumeExpansion databaseRef: - name: sample-redis - volumeExpansion: - mode: "Online" - redis: 2Gi + name: mssqlserver-ag-cluster + volumeExpansion: + mode: "Offline" # Online + mssqlserver: 2Gi ``` Here, -- `spec.databaseRef.name` specifies that we are performing volume expansion operation on `sample-redis` database. +- `spec.databaseRef.name` specifies that we are performing volume expansion operation on `mssqlserver-ag-cluster` database. - `spec.type` specifies that we are performing `VolumeExpansion` on our database. -- `spec.volumeExpansion.redis` specifies the desired volume size. -- `spec.volumeExpansion.mode` specifies the desired volume expansion mode (`Online` or `Offline`). Storageclass `topolvm-provisioner` supports `Online` volume expansion. +- `spec.volumeExpansion.mssqlserver` specifies the desired volume size. +- `spec.volumeExpansion.mode` specifies the desired volume expansion mode (`Online` or `Offline`). Storageclass `longhorn` supports `Offline` volume expansion. -> **Note:** If the Storageclass you are using doesn't support `Online` Volume Expansion, Try offline volume expansion by using `spec.volumeExpansion.mode:"Offline"`. +> **Note:** If the Storageclass you are using support `Online` Volume Expansion, Try Online volume expansion by using `spec.volumeExpansion.mode:"Online"`. -During `Online` VolumeExpansion KubeDB expands volume without pausing database object, it directly updates the underlying PVC. And for Offline volume expansion, the database is paused. The Pods -are deleted and PVC is updated. Then the database Pods are recreated with updated PVC. +During `Online` VolumeExpansion KubeDB expands volume without pausing database object, it directly updates the underlying PVC. And for Offline volume expansion, the database is paused. The Pods are deleted and PVC is updated. Then the database Pods are recreated with updated PVC. Let's create the `MSSQLServerOpsRequest` CR we have shown above, ```bash -$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/example/redis/volume-expansion/online-vol-expansion.yaml -redisopsrequest.ops.kubedb.com/ms-online-volume-expansion created +$ kubectl apply -f https://github.com/kubedb/docs/raw/{{< param "info.version" >}}/docs/example/mssqlserver/volume-expansion/mops-volume-exp-ag-cluster.yaml +mssqlserveropsrequest.ops.kubedb.com/mops-volume-exp-ag-cluster created ``` #### Verify MSSQLServer volume expanded successfully -If everything goes well, `KubeDB` Enterprise operator will update the volume size of `MSSQLServer` object and related `PetSets` and `Persistent Volumes`. +If everything goes well, `KubeDB` Ops-manager operator will update the volume size of `MSSQLServer` object and related `PetSet` and `Persistent Volumes`. Let's wait for `MSSQLServerOpsRequest` to be `Successful`. Run the following command to watch `MSSQLServerOpsRequest` CR, ```bash -$ kubectl get redisopsrequest -n demo +$ kubectl get mssqlserveropsrequest -n demo NAME TYPE STATUS AGE -ms-online-volume-expansion VolumeExpansion Successful 96s +mops-volume-exp-ag-cluster VolumeExpansion Successful 8m30s ``` We can see from the above output that the `MSSQLServerOpsRequest` has succeeded. @@ -178,45 +226,39 @@ We can see from the above output that the `MSSQLServerOpsRequest` has succeeded. Now, we are going to verify from the `Petset`, and the `Persistent Volumes` whether the volume of the database has expanded to meet the desired state, Let's check, ```bash -$ kubectl get petset -n demo sample-redis-shard0 -o json | jq '.spec.volumeClaimTemplates[].spec.resources.requests.storage' -"2Gi" - -$ kubectl get petset -n demo sample-redis-shard1 -o json | jq '.spec.volumeClaimTemplates[].spec.resources.requests.storage' +$ kubectl get petset -n demo mssqlserver-ag-cluster -o json | jq '.spec.volumeClaimTemplates[].spec.resources.requests.storage' "2Gi" $ kubectl get pv -n demo -NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE -pvc-032f1355-1720-4d85-b1e5-b86427bc4662 2Gi RWO Delete Bound demo/data-sample-redis-shard0-1 topolvm-provisioner 7m9s -pvc-207ac9aa-2ba2-432b-ac00-8cc1cd46e20a 2Gi RWO Delete Bound demo/data-sample-redis-shard2-0 topolvm-provisioner 7m9s -pvc-20c946e4-4812-4dfc-a76e-4629bcd385dc 2Gi RWO Delete Bound demo/data-sample-redis-shard2-1 topolvm-provisioner 7m8s -pvc-69158d05-c715-4dd5-afee-2f5d196ba1f9 2Gi RWO Delete Bound demo/data-sample-redis-shard1-0 topolvm-provisioner 7m3s -pvc-aee29446-eff0-430e-95ff-ae853e73a244 2Gi RWO Delete Bound demo/data-sample-redis-shard1-1 topolvm-provisioner 7m1s -pvc-d37fbdf9-90bd-4b5e-b3b2-7e40156c13a8 2Gi RWO Delete Bound demo/data-sample-redis-shard0-0 topolvm-provisioner 7m6s +NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE +pvc-059f186a-01a4-441d-85f1-95aef34934be 2Gi RWO Delete Bound demo/data-mssqlserver-ag-cluster-0 longhorn 29m +pvc-87bea35f-4a55-4aa5-903a-e4da9f548241 2Gi RWO Delete Bound demo/data-mssqlserver-ag-cluster-1 longhorn 29m +pvc-9d1c3c9c-f928-4fa2-a2e1-becf2ab9c564 2Gi RWO Delete Bound demo/data-mssqlserver-ag-cluster-2 longhorn 29m ``` The above output verifies that we have successfully expanded the volume of the MSSQLServer database. -## Standalone Mode and Sentinel Mode +## Standalone Mode -The volume expansion process is same for all the MSSQLServer modes. The `MSSQLServerOpsRequest` CR has the sample fields. The database needs to refer to a redis database -in standalone or sentinel mode. +The volume expansion process is same for all the MSSQLServer modes. The `MSSQLServerOpsRequest` CR has the same fields. The database needs to refer to a mssqlserver +in standalone mode. ## Cleaning Up To clean up the Kubernetes resources created by this tutorial, run: -```bash -$ kubectl delete redis -n demo sample-redis -$ kubectl delete redisopsrequest -n demo ms-online-volume-expansion -``` ```bash -$ kubectl patch -n demo ms/sample-redis -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" -redis.kubedb.com/sample-redis patched +$ kubectl patch -n demo ms/mssqlserver-ag-cluster -p '{"spec":{"deletionPolicy":"WipeOut"}}' --type="merge" +mssqlserver.kubedb.com/mssqlserver-ag-cluster patched + +$ kubectl delete -n demo mssqlserver mssqlserver-ag-cluster +mssqlserver.kubedb.com "mssqlserver-ag-cluster" deleted -$ kubectl delete -n demo redis sample-redis -redis.kubedb.com "sample-redis" deleted +$ kubectl delete -n demo mssqlserveropsrequest mops-volume-exp-ag-cluster +mssqlserveropsrequest.ops.kubedb.com "mops-volume-exp-ag-cluster" deleted -$ kubectl delete -n demo redisopsrequest ms-online-volume-expansion -redisopsrequest.ops.kubedb.com "ms-online-volume-expansion" deleted +kubectl delete issuer -n demo mssqlserver-ca-issuer +kubectl delete secret -n demo mssqlserver-ca +kubectl delete ns demo ``` diff --git a/docs/images/day-2-operation/mssqlserver/ms-volume-expansion.svg b/docs/images/day-2-operation/mssqlserver/ms-volume-expansion.svg new file mode 100644 index 0000000000..fd87222914 --- /dev/null +++ b/docs/images/day-2-operation/mssqlserver/ms-volume-expansion.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 67dde97af510afa9de0cf850a9d1fb8ea265c794 Mon Sep 17 00:00:00 2001 From: Neaj Morshad Date: Fri, 1 Nov 2024 16:13:59 +0600 Subject: [PATCH 3/4] Update Signed-off-by: Neaj Morshad --- .../mssqlserver/volume-expansion/overview.md | 3 +- .../volume-expansion/volume-expansion.md | 5 + .../mssqlserver/ms-volume-expansion.png | Bin 0 -> 75319 bytes .../mssqlserver/ms-volume-expansion.svg | 145 ------------------ 4 files changed, 7 insertions(+), 146 deletions(-) create mode 100644 docs/images/day-2-operation/mssqlserver/ms-volume-expansion.png delete mode 100644 docs/images/day-2-operation/mssqlserver/ms-volume-expansion.svg diff --git a/docs/guides/mssqlserver/volume-expansion/overview.md b/docs/guides/mssqlserver/volume-expansion/overview.md index bc6081877a..7663e353c9 100644 --- a/docs/guides/mssqlserver/volume-expansion/overview.md +++ b/docs/guides/mssqlserver/volume-expansion/overview.md @@ -27,7 +27,7 @@ This guide will give an overview on how KubeDB Ops Manager expand the volume of The following diagram shows how KubeDB Ops Manager expand the volumes of `MSSQLServer` database components. Open the image in a new tab to see the enlarged version.
-  Volume Expansion process of MSSQLServer +  Volume Expansion process of MSSQLServer
Fig: Volume Expansion process of MSSQLServer
@@ -54,3 +54,4 @@ The Volume Expansion process consists of the following steps: 10. After the successful Volume Expansion of the `MSSQLServer`, the `KubeDB` Ops-manager operator resumes the `MSSQLServer` 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 Volume Expansion of various MSSQLServer database using `MSSQLServerOpsRequest` CRD. + diff --git a/docs/guides/mssqlserver/volume-expansion/volume-expansion.md b/docs/guides/mssqlserver/volume-expansion/volume-expansion.md index 110f807da2..3a519d4518 100644 --- a/docs/guides/mssqlserver/volume-expansion/volume-expansion.md +++ b/docs/guides/mssqlserver/volume-expansion/volume-expansion.md @@ -262,3 +262,8 @@ kubectl delete issuer -n demo mssqlserver-ca-issuer kubectl delete secret -n demo mssqlserver-ca kubectl delete ns demo ``` + +## Next Steps + +- Detail concepts of [MSSQLServer object](/docs/guides/mssqlserver/concepts/mssqlserver.md). +- [Backup and Restore](/docs/guides/mssqlserver/backup/overview/index.md) MSSQLServer databases using KubeStash. \ No newline at end of file diff --git a/docs/images/day-2-operation/mssqlserver/ms-volume-expansion.png b/docs/images/day-2-operation/mssqlserver/ms-volume-expansion.png new file mode 100644 index 0000000000000000000000000000000000000000..14ab5ae1fcdedbe91374e13481a716d973acb077 GIT binary patch literal 75319 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

Z1UKPtTj_N9W5%`bq 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 VE%83(&2PYAebM0p>D=|?{{q}7O&0(F literal 0 HcmV?d00001 diff --git a/docs/images/day-2-operation/mssqlserver/ms-volume-expansion.svg b/docs/images/day-2-operation/mssqlserver/ms-volume-expansion.svg deleted file mode 100644 index fd87222914..0000000000 --- a/docs/images/day-2-operation/mssqlserver/ms-volume-expansion.svg +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From b2c4c18bdc12731f32b552821f7926266a92748d Mon Sep 17 00:00:00 2001 From: Neaj Morshad Date: Mon, 4 Nov 2024 10:25:09 +0600 Subject: [PATCH 4/4] add review changes Signed-off-by: Neaj Morshad --- docs/guides/mssqlserver/tls/overview.md | 2 +- .../volume-expansion/volume-expansion.md | 2 +- .../day-2-operation/mssqlserver/ms-tls.png | Bin 0 -> 40851 bytes .../day-2-operation/mssqlserver/ms-tls.svg | 4 ---- 4 files changed, 2 insertions(+), 6 deletions(-) create mode 100644 docs/images/day-2-operation/mssqlserver/ms-tls.png delete mode 100644 docs/images/day-2-operation/mssqlserver/ms-tls.svg diff --git a/docs/guides/mssqlserver/tls/overview.md b/docs/guides/mssqlserver/tls/overview.md index d0e020060e..8518c9b4d6 100644 --- a/docs/guides/mssqlserver/tls/overview.md +++ b/docs/guides/mssqlserver/tls/overview.md @@ -42,7 +42,7 @@ Read about the fields in details from [MSSQLServer Concepts](/docs/guides/mssqls The following figure shows how `KubeDB` used to configure TLS/SSL in MSSQLServer. Open the image in a new tab to see the enlarged version.

-Deploy MSSQLServer with TLS/SSL +Deploy MSSQLServer with TLS/SSL
Fig: Deploy MSSQLServer with TLS/SSL
diff --git a/docs/guides/mssqlserver/volume-expansion/volume-expansion.md b/docs/guides/mssqlserver/volume-expansion/volume-expansion.md index 3a519d4518..cc2983f534 100644 --- a/docs/guides/mssqlserver/volume-expansion/volume-expansion.md +++ b/docs/guides/mssqlserver/volume-expansion/volume-expansion.md @@ -199,7 +199,7 @@ Here, > **Note:** If the Storageclass you are using support `Online` Volume Expansion, Try Online volume expansion by using `spec.volumeExpansion.mode:"Online"`. -During `Online` VolumeExpansion KubeDB expands volume without pausing database object, it directly updates the underlying PVC. And for Offline volume expansion, the database is paused. The Pods are deleted and PVC is updated. Then the database Pods are recreated with updated PVC. +During `Online` VolumeExpansion KubeDB expands volume without deleting the pods, it directly updates the underlying PVC. And for Offline volume expansion, the database is paused. The Pods are deleted and PVC is updated. Then the database Pods are recreated with updated PVC. Let's create the `MSSQLServerOpsRequest` CR we have shown above, diff --git a/docs/images/day-2-operation/mssqlserver/ms-tls.png b/docs/images/day-2-operation/mssqlserver/ms-tls.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0abe1c6a0794abe29c974954e8bb1db4888e6e GIT binary patch literal 40851 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 - - -            Enterprise            Operator              Community            Operator
service
se...
secret
se...
tls-secret
tls-secret
Cert- manager
Cert- ma...
StatefulSet
Statef...
Issuer/Cluster Issuer
Issuer...
Kafka
Kafka
Certificates
Certif...
User
User
2.Create
2.Create
1.Create
1.Create
5a.Watch
5a.Watch
3.Watch
3.Watch
4.Create
4.Create
5c.Watch
5c.Watch
6.Create
6.Create
7.Watch
7.Watch
uses
uses
8.Create
8.Create
9.Watch
9.Watch
10.Create
10.Create
5b.Watch
5b.Watch
refers to
refers to
Text is not SVG - cannot display
\ No newline at end of file