Commit Graph
5036 Commits
Author SHA1 Message Date
subhamkrai 1e9bb8e6e2 ceph: handle golangci-lint linter deadcode
this commit will enable one more linter `deadcode`
in golangci-lint .

Signed-off-by: subhamkrai <subhamkumarrai03@gmail.com>
2020-09-18 16:53:49 +05:30
Sébastien Han d118bd38a6 Merge pull request #6278 from subhamkrai/golanci-lint-unused
ceph: handle golangci-lint linter unused
2020-09-18 12:44:37 +02:00
Sébastien Han 204ffd4065 Merge pull request #6250 from leseb/mirroring-config
ceph: add rbd-mirror configuration
2020-09-18 09:16:08 +02:00
Ali Maredia 2ffb4ab057 ceph: add unit tests for zone group
Add unit tests for CephObjectZoneGroup, with
minor fixes to the realm unit tests.

Signed-off-by: Ali Maredia <amaredia@redhat.com>
2020-09-17 23:57:40 -04:00
Travis Nielsen 524362f9e4 ceph: avoid duplicating env vars in the osd deployments
The OSD deployments have some env vars duplicated in the pod spec for
the daemon container, which may cause the detection for patch changes
to fail. Now we ensure the env vars are not duplicated in the OSD pod
spec.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-09-17 13:43:05 -06:00
Travis Nielsen 8664cbb8dd ceph: if spec diff checking fails during upgrade, assume it changed
If the pod spec changed, we expect an upgrade to proceed for that daemon.
If the check for a changed pod spec fails, we were skipping the update
of that daemon. Instead of skipping the update, we now assume the pod
spec changed if we fail to detect the change so that we can ensure the upgrade
even if we check for upgrades too often.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-09-17 13:22:53 -06:00
subhamkrai f9fafe62d4 ceph: handle golangci-lint linter unused
this commit will enable one more linter
in golangci-lint.

Signed-off-by: subhamkrai <subhamkumarrai03@gmail.com>
2020-09-17 22:53:24 +05:30
Sébastien Han 451622a955 ceph: add rbd-mirror configuration
Rook is now capable of configuring mirroring between sites. The
implementation works at different levels:

* CephBlockPool: which introduces a new `mirroring` configuration as well
as `statusCheck`. When turned on, Rook will enable mirroring on the
pool. It will also create a bootstrap peer token and store it in a
Kubernetes Secret. The name of that Secret can be found in the Status
field of the CephBlockPool CRD. This token can be fetched and used by
other clusters to configure the site as a peer. Mirroring can be
configured either at the pool or the image level.

* CephRBDMirror: which introduces a new `peers` configuration allowing
Rook to connect to peers by passing a Secret name. The administrator will
create a Kubernetes Secret with 2 keys: 'token' for the bootstrap peer
token and 'pool' for the name of pool. Once detected the rbd-mirror
controller will go ahead and import the peer configuration.

Pool mirroring status example:

```
status:
  info:
    rbdMirrorBootstrapPeerSecretName: pool-peer-token-test
  mirroringInfo:
    lastChanged: "2020-09-17T14:47:27Z"
    lastChecked: "2020-09-17T14:48:27Z"
    summary:
      summary:
        mode: image
        peers:
        - client_name: client.rbd-mirror-peer
          direction: rx-tx
          mirror_uuid: ""
          site_name: rhcs
          uuid: c50522a4-28a4-4bd3-ba68-e11780308882
        site_name: 91eae0dd-06b1-4d2c-91f3-1311c9df382b-rook-ceph
  mirroringStatus:
    lastChecked: "2020-09-17T14:48:27Z"
    summary:
      summary:
        daemon_health: OK
        health: OK
        image_health: OK
        states:
          replaying: 1
```

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-17 19:05:04 +02:00
Sébastien Han a9aad94570 Merge pull request #6276 from leseb/mgr-check-version
ceph: only run version check for monitoring
2020-09-17 16:53:25 +02:00
Sébastien Han 6f894a6de8 ceph: only run version check for monitoring
We only need to read the ceph cluster version if the cluster external
has external monitoring enabled.
This avoids any issue during upgrades from 1.3 to 1.4 when monitoring is
enabled and ceph caps have not been updated.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-17 15:20:46 +02:00
subhamkrai 25c116a4bd ceph: handle golangci-lint linter gosimple
this commit handles all the errors  check for
golangci-lint linter gosimple.

Signed-off-by: subhamkrai <subhamkumarrai03@gmail.com>
2020-09-17 15:10:27 +05:30
Travis Nielsen 513567f309 Merge pull request #6269 from varshar16/set-correct-ROOK_CEPH_CLUSTER_CRD_NAME
ceph: set ROOK_CEPH_CLUSTER_CRD_NAME with cluster name
2020-09-16 16:01:24 -06:00
Travis Nielsen 259505cb81 Merge pull request #6252 from ashangit/merge_conf_override
ceph: merge config from rook-config-override configmap to the default global config file
2020-09-16 13:29:06 -06:00
Varsha Rao 195dee9bc2 ceph: set ROOK_CEPH_CLUSTER_CRD_NAME with cluster name
ROOK_CEPH_CLUSTER_CRD_NAME is incorrectly set to cluster namespace value

Signed-off-by: Varsha Rao <varao@redhat.com>
2020-09-16 23:53:52 +05:30
n.fraison de7ca01930 ceph: merge rook-config-override to the default global config file
Some parameter like bluestore_min_alloc_size, bluestore_min_alloc_size_hdd need to be set during the bootstrap of the
ceph cluster in order to have bluestore created accordingly.
To do so rook users rely on the rook-config-override configmap.
Sadly the rook-ceph-osd-prepare job does not take in account this configmap to generate its ceph config.
Changing the behaviour to merge the config from rook-config-override configmap to the default ceph config

Signed-off-by: n.fraison <n.fraison@criteo.com>
2020-09-16 15:08:50 +02:00
Travis Nielsen 00e6398fe8 Merge pull request #6235 from fanjunwei/user_truncated_node_name
ceph: Use truncated node name
2020-09-15 13:19:49 -06:00
Madhu Rajanna a1024ebc75 ceph: remove owner reference set by rook on csidriver
currently, we are setting the rook operator as owner
on the csidriver objects,  as csidriver is cluster
scoped object we should not set namespaced object as
owner on cluster scoped object

fixes #6162

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-09-15 11:39:27 +05:30
Travis Nielsen da863e4156 ceph: do not change selector labels during upgrade
The selector labels used for mons cannot change during upgrade
or else the upgrade will hang when the cluster is checking
for mon status immediately after the upgrade begins.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-09-14 21:43:25 -06:00
Travis Nielsen 4df34f4bf4 Merge pull request #6226 from leseb/fix-6217
ceph: allow running rgw in rook with external mode
2020-09-14 11:18:53 -06:00
Travis Nielsen 2052d5e657 Merge pull request #6225 from subhamkrai/add-label-osd
ceph: add storageClassDeviceSet label to osd pods
2020-09-11 09:15:13 -06:00
Sébastien Han 61dea11de3 Merge pull request #6234 from subhamkrai/fix-dns-suffix
ceph: fixed DNS suffix breaks in custom DNS suffix clusters
2020-09-11 15:06:59 +02:00
fanjunwei f013add62e ceph: use truncated node name
Signed-off-by: fanjunwei <fanjunwei@t2cloud.net>
2020-09-11 19:48:38 +08:00
subhamkrai 209dc6251d ceph: fixed DNS suffix breaks in custom DNS suffix clusters
By addding ".svc" to the endpoint of the object store,
will fix the custom DNS suffix cluster.

Signed-off-by: subhamkrai <subhamkumarrai03@gmail.com>
2020-09-11 13:29:53 +05:30
Sébastien Han a51b76889a ceph: allow running rgw in rook with external mode
We don't fail anymore if the cluster is external and user wants to
bootstrap rgw gateways in Kubernertes.

Closes: https://github.com/rook/rook/issues/6217
Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-11 09:28:40 +02:00
Madhu Rajanna b88373f9f3 ceph: dont set ownerRef when creating csidriver object
currently, we are setting the rook operator as the
owner on the csidriver objects, as csidriver is cluster
the scoped object we should not set a namespaced object
as owner on cluster scoped object.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
2020-09-11 11:59:44 +05:30
subhamkrai 6d08d94948 ceph: add storageClassDeviceSet label to osd pods
this commit will add a new flag to the osd pods
which will be named according to the name of the
storageClassDeviceSet. This will help in differentiate
pods immediately.

Signed-off-by: subhamkrai <subhamkumarrai03@gmail.com>
2020-09-11 07:26:40 +05:30
Travis Nielsen 7a6620f2c0 ceph: remove orphaned mon pvc after failed failover
If the mon failover fails, if the mon is on a pvc, the pvc could remain
orphaned. This is likely to happen if there is not a node available
for scheduling the mon. Therefore, the operator will ensure after a failover
that any orphaned mon pvc is cleaned up.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-09-10 10:21:33 -06:00
Travis Nielsen 2e36913dad ceph: set the pvc name label on mon deployments
When the mons are based on pvcs, the pvc_name label was not being set
as expected. Now the label will always be set on both the canary and
the daemon pods.

The mon pvcs were also never being deleted during canary cleanup. This
code is now removed since we must be very careful when the pvcs are
removed.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2020-09-09 16:08:07 -06:00
Servesha Dudhgaonkar 2cf0518545 ceph: update remove.go
Call logger.Infof() instead of Debugf() in remove.go file.

Signed-off-by: Servesha Dudhgaonkar <sdudhgao@redhat.com>
2020-09-09 20:06:27 +05:30
subhamkrai 34d27d55d5 ceph: update cephobjectstore monitoring logic
currently, cephobjectstore monitoring is never
stopped for the following flow:
 1. objectstore is deleted
 2. go routine is stopped
 3. objectstore is created
 4. objectstore is deleted
so, removing clusterResourceDeleted flag and
working with the map only.

Signed-off-by: subhamkrai <subhamkumarrai03@gmail.com>
2020-09-03 15:58:48 +05:30
Varsha Rao a0dab8faab ceph: remove NParts and Cache_Size from MDCACHE block
As setting them to small value affects the performance and they are not related
to metadata caching. https://review.gerrithub.io/c/ffilz/nfs-ganesha/+/495185

Signed-off-by: Varsha Rao <varao@redhat.com>
2020-09-02 16:41:15 +05:30
Sébastien Han a11b12c760 Merge pull request #6127 from xenolinux/remove-replace-osd
ceph: purge a down osd with a job
2020-09-01 14:43:57 +02:00
Sébastien Han 152ebf618d ceph: only enable init container if dash is enabled
If the dashboard module is not enabled we don't need to run the
"dashboard-server-addr" init container.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-01 11:42:40 +02:00
Servesha Dudhgaonkar 0c323439a6 ceph: purge a down osd with a job
If an OSD is down and needs to be removed from the cluster,
a job can be run that will remove the OSD deployment
and purge the OSD from ceph. If the OSD is still up,
the purge will be rejected.

To purge multiple OSDs at the same time, the OSD IDs can be
specified as a comma-separated list.

Signed-off-by: Servesha Dudhgaonkar <sdudhgao@redhat.com>
2020-09-01 09:36:20 +02:00
Sébastien Han 96b4a56a57 ceph: silence aws s3 sdk logs on healthcheck
We don't need to activate the debug logs on the objectstore
healthchecks.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-01 09:32:15 +02:00
Sébastien Han af72502fe4 ceph: do not use label selector on external svc
When the cluster is external there are no running pods so setting a
Selector on the Service Spec does not make sense, even worse, it makes
Kubernetes reconciling and overriding the configured endpoint.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-01 09:32:15 +02:00
Sébastien Han bd90f9afe9 ceph: add more error handling and debug logging
The predicate was lacking from very useful errors as well as logging
messages.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-01 09:32:15 +02:00
Sébastien Han e7043edbd8 ceph: reconcile if cm is config override
Earlier, we were returning only when the object was not the config
override configmap, we want the opposite.
Also, this was blocking all subsequent conditions and add the correct
check to avoid cm to reconcile.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-01 09:32:15 +02:00
Sébastien Han b68f9a7a41 ceph: fix the service monitor port name
When the cluster is external the service monitor port name should match
with the name of the external metrics one.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-09-01 09:32:15 +02:00
Raghavendra TalurandNitin Goyal 42a30ff5f8 ceph: skip check for existing PVs in forced uninstall
If AllowUninstallWithVolumes is set in the cleanup policy then we don't
check and wait for the deletion of existing volumes from the
cephCluster.

Co-authored-by: Nitin Goyal <nigoyal@redhat.com>
Signed-off-by: Raghavendra Talur <raghavendra.talur@gmail.com>
2020-08-31 14:07:32 -04:00
Raghavendra TalurandNitin Goyal a6f59f3b64 ceph: add uninstall mode
This adds an uninstall mode to the ceph cluster. If
allowUninstallWithVolumes in the CleanupPolicySpec is set to true then
the cluster deletion does not wait for the PVs to be deleted.

Co-authored-by: Nitin Goyal <nigoyal@redhat.com>
Signed-off-by: Raghavendra Talur <raghavendra.talur@gmail.com>
2020-08-31 14:06:44 -04:00
Sébastien Han 296997e723 Merge pull request #6175 from leseb/do-not-exec-lvm
ceph: do not exec on rootfs just lookup
2020-08-27 16:26:02 +02:00
Sébastien Han f2313d6db0 ceph: do not exec on rootfs just lookup
Trying to execute a binary from the host within the container can result
in mismatched libraries. The host version is compiled with paths of
libraries on the host where the libs inside the container can differ.
Because the path is known and we only need to make sure whether the bin
exists or not then simply doing a lookup when we fallback on /rootfs is
sufficient.

Closes: https://github.com/rook/rook/issues/6078
Signed-off-by: Sébastien Han <seb@redhat.com>
2020-08-27 15:16:46 +02:00
Travis Nielsen 85d72f70b0 Merge pull request #6170 from leseb/obc-log
ceph: run obc requests with debug
2020-08-26 20:45:13 -06:00
Sébastien Han 3a92f98233 ceph: use special dns suffix for object ep
By addding ".svc.cluster.local" to the endpoint of the object store, the
OBC requests won't go through a proxy if any is configured.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-08-26 17:10:31 -06:00
Sébastien Han bcd76bf46d ceph: run obc requests with debug
Use debug log to all the s3 calls so it's either to debug. Also, it's
not so verbose.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-08-26 15:27:49 +02:00
Travis Nielsen 24b0bdd119 Merge pull request #6156 from cloudical-io/first_part_6111
ceph: operator should only "watch" OSD placement nodes
2020-08-26 07:20:30 -06:00
Travis Nielsen e40b462216 Merge pull request #6084 from cloudical-io/additional_user_labels_ceph
ceph: allow user to add labels to pods
2020-08-25 15:58:40 -06:00
Alexander Trost a87c00ddee ceph: allow user to add labels to pods
This allows users to specify additional labels to be added to the components
created by the Rook Ceph operator.
Additionally the rbd mirrors are now getting their annotations and
labels set.

Signed-off-by: Alexander Trost <galexrt@googlemail.com>
2020-08-25 19:38:51 +02:00
Sébastien Han 0c1250ac81 ceph: resync codegen
Resync API.

Signed-off-by: Sébastien Han <seb@redhat.com>
2020-08-25 19:21:50 +02:00