You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -111,6 +111,6 @@ The makefile supports environment variables that allow you to customize your bui
111
111
112
112
## Known Limitations
113
113
114
-
1. Support for backups in the operator is still in development, and there are significant missing features.
114
+
1. Support for backups in the operator is still in development, and there are some missing features.
115
115
1. Additional limitations can be found under [Warnings](docs/manual/warnings.md).
116
116
1. The created FoundationDB cluster is only reachable from within the Kubernetes cluster. Except if the assigned IP addresses for the Pods are also reachable outside of the Kubernetes cluster.
Please read the required steps before upgrading in the [compatibility guide](https://github.com/FoundationDB/fdb-kubernetes-operator/blob/v0.51.1/docs/compatibility.md#preparing-for-a-major-release).
8
+
9
+
### Breaking Changes
10
+
11
+
* Dropped support for the `v1beta1` CRD [#2212](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2212)
12
+
* Use locality-based exclusions per default [#2212](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2212)
13
+
* Use DNS in cluster files per default [#2212](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2212)
14
+
* Use the unified image per default [#2212](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2212)
15
+
* Drop support for FDB 6.2 and 6.3 [#2212](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2212)
16
+
* Drop support for custom PVC names [#2213](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2213)
17
+
* Drop support for custom ConfigMap names [#2215](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2215)
18
+
19
+
### Operator
20
+
21
+
* Changes for the operator v2 release [#2212](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2212)
22
+
* Ensure operator uses static names for PVC [#2213](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2213)
23
+
* Ensure that the ConfigMap name for the cluster can't be modified [#2215](https://github.com/FoundationDB/fdb-kubernetes-operator/pull/2215)
Note that the base operator image only supports a single version of FoundationDB. For more information about using different versions of FoundationDB, see the [Operator Customization](/docs/manual/operator_customization.md) guide in the user manual.
32
+
Note that the base operator image only supports a single version of FoundationDB.
33
+
For more information about using different versions of FoundationDB, see the [Operator Customization](/docs/manual/operator_customization.md) guide in the user manual.
32
34
33
35
## Preparing for a Major Release
34
36
35
37
Before you upgrade to a new major version, you should first update the operator
36
38
and the CRD to the most recent release for the major version you are currently
37
39
running. You can find that release in the table above. This will ensure that you
38
40
can opt in to new behavior and move to the latest supported fields in the spec
39
-
in advance of the upgrade, through whatever process you need to update your
40
-
clusters safely.
41
+
in advance of the upgrade, through whatever process you need to update your clusters safely.
41
42
After you updated the operator you should ensure that all clusters are in a reconciled state and all changes are applied.
42
43
43
44
At this point, you can use the `kubectl-fdb` plugin to check your cluster specs for deprecated fields or defaults.
Copy file name to clipboardexpand all lines: docs/manual/customization.md
+16-88
Original file line number
Diff line number
Diff line change
@@ -2,11 +2,19 @@
2
2
3
3
This document covers some of the options the operator provides for customizing your FoundationDB deployment.
4
4
5
-
Many of these customizations involve the `processes` field in the cluster spec, which we will refer to as the "process settings". This field is a dictionary, mapping a process class to a process settings object. This also supports a special key called `general` which is applied to all process classes. If a value is specified for a specific process class, the `general` value will be ignored. These values are merged at the top level of the process settings object. If you specify a `volumeClaimTemplate` object in the `storage` settings and a `podTemplate` object in the `general` settings, the storage processes will use both the custom `volumeClaimTemplate` and the general `podTemplate`. If you specify a `podTemplate` object in the `storage` settings and `podTemplate` object in the `general` settings, the storage processes will only use the values given in the `storage` settings, and will ignore the pod template from the `general` settings completely.
5
+
Many of these customizations involve the `processes` field in the cluster spec, which we will refer to as the "process settings".
6
+
This field is a dictionary, mapping a process class to a process settings object.
7
+
This also supports a special key called `general` which is applied to all process classes.
8
+
If a value is specified for a specific process class, the `general` value will be ignored.
9
+
These values are merged at the top level of the process settings object.
10
+
If you specify a `volumeClaimTemplate` object in the `storage` settings and a `podTemplate` object in the `general` settings, the storage processes will use both the custom `volumeClaimTemplate` and the general `podTemplate`.
11
+
If you specify a `podTemplate` object in the `storage` settings and `podTemplate` object in the `general` settings, the storage processes will only use the values given in the `storage` settings, and will ignore the pod template from the `general` settings completely.
6
12
7
13
## Running Multiple Storage Servers per Pod
8
14
9
-
Since FoundationDB is limited to a single core it can make sense to run multiple storage server per disk. You can change the number of storage server per Pod with the `storageServersPerPod` setting. This will start multiple FDB processes inside of a single container, under a single `fdbmonitor` process.
15
+
Since FoundationDB is limited to a single core it can make sense to run multiple storage server per disk.
16
+
You can change the number of storage server per Pod with the `storageServersPerPod` setting.
17
+
This will start multiple FDB processes inside of a single container, under a single `fdbmonitor` process.
10
18
11
19
```yaml
12
20
apiVersion: apps.foundationdb.org/v1beta2
@@ -19,7 +27,7 @@ spec:
19
27
storageServersPerPod: 2
20
28
```
21
29
22
-
A change to the `storageServersPerPod` will replace all of the storage pods. For more information about this feature read the [multiple storage servers per pod](/docs/design/implemented/multiple_storage_per_disk.md) design doc.
30
+
A change to the `storageServersPerPod` will replace all the storage pods. For more information about this feature read the [multiple storage servers per pod](/docs/design/implemented/multiple_storage_per_disk.md) design doc.
23
31
24
32
## Customizing the Volumes
25
33
@@ -244,88 +252,6 @@ Using service IPs presents its own challenges:
244
252
* We currently only support services with the ClusterIP type. These IPs may not be routable from outside the Kubernetes cluster.
245
253
* The Service IP space is often more limited than the pod IP space, which could cause you to run out of service IPs.
246
254
247
-
## Using DNS
248
-
249
-
Using Pod IPs has the limitation that Pods might get a new IP address if they are recreated and sometimes using service IPs is not the right approach.
250
-
FDB supports to use DNS in the cluster file since 7.1 and the operator can make use of that.
251
-
252
-
*Note*: This requires the following customization to inject the 7.1 library and use it as primary library (see code example below).
253
-
As an alternative you can build the operator image by yourself that contains the 7.1 library as the primary library.
254
-
Building the operator by yourself can be achieved with `docker build --build-arg FDB_VERSION=7.1.26 -t foundationdb/fdb-kubernetes-operator .`.
255
-
256
-
```yaml
257
-
initContainers:
258
-
...
259
-
# Install this library in a special location to force the operator to
The important part here is to add an additional init container with the 7.1 version and copy the library into `.../primary`, this library will be used by the operator as primary library.
281
-
Once you set `useDNSInClusterFile` to true the operator will make the required changes to use DNS instead of IPs in the cluster file.
282
-
283
-
```yaml
284
-
apiVersion: apps.foundationdb.org/v1beta2
285
-
kind: FoundationDBCluster
286
-
metadata:
287
-
name: sample-cluster
288
-
spec:
289
-
version: 7.1.26
290
-
routing:
291
-
useDNSInClusterFile: true
292
-
```
293
-
294
-
The generated connection string will look like this:
295
-
296
-
```bash
297
-
$ kubectl get cm test-cluster-config -o jsonpath='{.data.cluster-file}'
Our [sample deployment](../../config/samples/deployment.yaml) configures the operator to run in single-namespace mode, where it only manages resources in the namespace where the operator itself is running. If you want a single deployment of the operator to manage your FDB clusters across all of your namespaces, you will need to run it in global mode. Which mode is appropriate will depend on the constraints of your environment.
The operator currently supports two different image types: a split image and a unified image.
509
435
The split image provides two different images for the `foundationdb` container and the `foundationdb-kubernetes-sidecar` container.
510
436
The unified image provides a single image which handles launching `fdbserver` processes as well as providing feedback to the operator on locality information and updates to dynamic conf.
511
-
The default behavior in the operator is to use the split image.
512
-
To switch to the unified image, set the flag in the cluster spec as follows:
437
+
The default behavior in the operator is to use the unified image.
438
+
To switch to the split image, set the flag in the cluster spec as follows:
513
439
514
440
```yaml
515
441
apiVersion: apps.foundationdb.org/v1beta2
@@ -518,9 +444,11 @@ metadata:
518
444
name: sample-cluster
519
445
spec:
520
446
version: 7.1.26
521
-
imageType: "unified"
447
+
imageType: "split"
522
448
```
523
449
450
+
**NOTE**: The split image is deprecated and new features will only be implemented in the unified image.
451
+
524
452
For more information on how the interaction between the operator and these images works, see the [technical design](technical_design.md#interaction-between-the-operator-and-the-pods).
Copy file name to clipboardexpand all lines: docs/manual/operations.md
+6-3
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,10 @@ The operator uses the `locality_instance_id` to identify the process from the [m
17
17
18
18
## Replacing a Process
19
19
20
-
If you delete a pod, the operator will automatically create a new pod to replace it. If there is a volume available for re-use, we will create a new pod to match that volume. This means that in general you can replace a bad process just by deleting the pod. This may not be desirable in all situations, as it creates a loss of fault tolerance until the replacement pod is created. This also requires that the original volume be available, which may not be possible in some failure scenarios.
20
+
If you delete a pod, the operator will automatically create a new pod to replace it. If there is a volume available for re-use, we will create a new pod to match that volume.
21
+
This means that in general you can replace a bad process just by deleting the pod.
22
+
This may not be desirable in all situations, as it creates a loss of fault tolerance until the replacement pod is created.
23
+
This also requires that the original volume be available, which may not be possible in some failure scenarios.
21
24
22
25
As an alternative, you can replace a pod by explicitly placing it in the `processGroupsToRemove` list:
23
26
@@ -98,13 +101,13 @@ spec:
98
101
```
99
102
100
103
The default value for the log group of the operator is `fdb-kubernetes-operator` but can be changed by setting the environment variable `FDB_NETWORK_OPTION_TRACE_LOG_GROUP`.
101
-
The operator version `v1.19.0` and never sets this value as a default and those changes are not required.
104
+
The operator version `v1.19.0` and newer sets this value as a default and those changes are not required.
102
105
103
106
The upgrade process is described in more detail in [upgrades](./upgrades.md).
104
107
105
108
## Renaming a Cluster
106
109
107
-
The name of a cluster is immutable, and it is included in the names of all of the dependent resources, as well as in labels on the resources.
110
+
The name of a cluster is immutable, and it is included in the names of all the dependent resources, as well as in labels on the resources.
108
111
If you want to change the name later on, you can do so with the following steps.
109
112
This example assumes you are renaming the cluster `sample-cluster` to `sample-cluster-2`.
0 commit comments