Commit Graph
13292 Commits
Author SHA1 Message Date
Travis Nielsen d887ba2ed3 Merge pull request #7632 from travisn/preserve-deviceset-metadata
ceph: Preserve volume claim template metadata in schema
2021-04-14 22:21:32 -06:00
Travis Nielsen a9fb9d20bb ceph: preserve volume claim template metadata in schema
The schema generation was not generating the metadata properties
under the VolumeClaimTemplate type, resulting in the properties being
ignored by the api server. The preserve unknown fields tag was
not working recursively on the volumeClaimTemplates since the subtypes
were defined. Now we post-process the schema so we can preserve
the unknown fields for the volume claim templates metadata.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2021-04-14 21:41:12 -06:00
Travis Nielsen b9cfddbaa7 ceph: fail osd creation if duplicate metadata section
The metadata name must be unique for a storageClassDeviceSet since
only one each of the sections data, metadata, and wal can be specified.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2021-04-14 15:21:04 -06:00
Yannis Zarkadas 760e81edba test: skip cassandra integration test in jenkins
Signed-off-by: Yannis Zarkadas <yanniszark@arrikto.com>
2021-04-14 22:03:02 +03:00
Yannis Zarkadas e3c747db47 test: add GitHub Action for Cassandra integration test
Signed-off-by: Yannis Zarkadas <yanniszark@arrikto.com>
2021-04-14 22:03:02 +03:00
Yannis Zarkadas a004942f0b cassandra: fix integration test waiting logic
The integration test for Cassandra waited for Pods to become Running
before trying to connect to the Cassandra cluster. However, the check
should be that the cluster is Ready, not that the container state is Running.

If we only check for the Running state, we bump into a scenario where:
- The Cassandra container has started (thus is in Running state)
- The Cassandra server has not stated yet

and then tests will fail.

Signed-off-by: Yannis Zarkadas <yanniszark@arrikto.com>
2021-04-14 21:40:50 +03:00
Yannis Zarkadas c40a116110 cassandra: add missing sidecar permissions to testing manifests
Signed-off-by: Yannis Zarkadas <yanniszark@arrikto.com>
2021-04-14 21:40:50 +03:00
Yannis Zarkadas b71f1077b5 test: replace in-house config loader for controller-runtime's
Rook's testing utilities include a function for loading the default
kubeconfig for a cluster. This function requires maintainance effort and
also doesn't support authentication methods like Basic Authentication.
Instead of adding support for it, drop the config loader and use the one
provided by the controller-runtime library.

Signed-off-by: Yannis Zarkadas <yanniszark@arrikto.com>
2021-04-14 21:40:50 +03:00
Travis Nielsen b2b54f187f Merge pull request #7618 from alrs/ceph-cluster-imports
ceph: pkg/operator/ceph/cluster double imports
2021-04-14 10:32:42 -06:00
Travis Nielsen 189a867636 Merge pull request #7521 from chienfuchen32/patch-1
ceph: update Kubernetes registry link in CephFS document
2021-04-14 10:22:31 -06:00
Sébastien Han 1d52811902 Merge pull request #7621 from leseb/skip-ci
ci: ability to skip ci with a label
2021-04-14 15:41:46 +02:00
Sébastien Han 20c302f72d ceph: use replicaset instead of deployments for rgw instances
Since Pacific, we can deploy multiple object gateway using the same
keying and they will appear in the service map separetly. So from now on
and on upgrades to Pacific Rook will remove all extra deployments to
only keep 1. In this single deployment the number of replica will be set
the desired `instances` count from the CRD spec.

You will now see gateways like this on Pacific:

```
rgw: 3 daemons active (1 hosts, 1 zones)
```

See an upgrade operator logs from Octopus to Pacific:

```
2021-04-14 10:05:16.883145 I | ceph-object-controller: setting multisite settings for object store "my-store"
2021-04-14 10:05:17.006492 I | ceph-object-controller: Multisite for object-store: realm=my-store, zonegroup=my-store, zone=my-store
2021-04-14 10:05:17.006516 I | ceph-object-controller: multisite configuration for object-store my-store is complete
2021-04-14 10:05:17.006523 I | ceph-object-controller: creating object store "my-store" in namespace "rook-ceph"
2021-04-14 10:05:17.006533 I | cephclient: getting or creating ceph auth key "client.rgw.my.store.a"
2021-04-14 10:05:17.298176 I | ceph-object-controller: object store "my-store" deployment "rook-ceph-rgw-my-store-a" started
2021-04-14 10:05:17.307913 I | ceph-object-controller: object store "my-store" deployment "rook-ceph-rgw-my-store-a" already exists. updating if needed
2021-04-14 10:05:17.317441 I | op-k8sutil: updating deployment "rook-ceph-rgw-my-store-a" after verifying it is safe to stop
2021-04-14 10:05:17.317463 I | op-mon: checking if we can stop the deployment rook-ceph-rgw-my-store-a
2021-04-14 10:05:25.552648 I | op-k8sutil: finished waiting for updated deployment "rook-ceph-mgr-a"
2021-04-14 10:05:25.552662 I | op-mon: checking if we can continue the deployment rook-ceph-mgr-a
2021-04-14 10:05:25.555077 I | op-mgr: setting services to point to mgr "a"
2021-04-14 10:05:25.608535 I | op-osd: start running osds in namespace "rook-ceph"
2021-04-14 10:05:25.608587 I | op-osd: wait timeout for healthy OSDs during upgrade or restart is "10m0s"
2021-04-14 10:05:25.618392 I | op-osd: start provisioning the OSDs on PVCs, if needed
2021-04-14 10:05:25.620512 I | op-osd: no storageClassDeviceSets or volumeSources are defined to configure OSDs on PVCs
2021-04-14 10:05:25.620542 I | op-osd: start provisioning the OSDs on nodes, if needed
2021-04-14 10:05:25.628416 I | op-osd: 1 of the 1 storage nodes are valid
2021-04-14 10:05:25.760702 I | op-k8sutil: Removing previous job rook-ceph-osd-prepare-minikube to start a new one
2021-04-14 10:05:25.773213 I | op-k8sutil: batch job rook-ceph-osd-prepare-minikube still exists
2021-04-14 10:05:26.595673 I | op-mgr: successful modules: prometheus
2021-04-14 10:05:27.129569 I | op-mgr: successful modules: mgr module(s) from the spec
2021-04-14 10:05:27.776720 I | op-k8sutil: batch job rook-ceph-osd-prepare-minikube deleted
2021-04-14 10:05:27.781881 I | op-osd: started OSD provisioning job for node "minikube"
2021-04-14 10:05:27.786693 I | op-osd: OSD orchestration status for node minikube is "starting"
2021-04-14 10:05:28.617937 I | op-mgr: successful modules: balancer
2021-04-14 10:05:28.706307 W | cephclient: all OSDs are running on the same host. not performing upgrade check. running in best-effort
2021-04-14 10:05:28.710245 I | op-osd: updating OSD 0 on node "minikube"
2021-04-14 10:05:31.596511 I | op-mgr: the dashboard secret was already generated
2021-04-14 10:05:31.926125 I | op-mgr: setting ceph dashboard "admin" login creds
2021-04-14 10:05:32.190343 E | op-mgr: failed modules: "dashboard". failed to initialize dashboard: failed to set login credentials for the ceph dashboard: failed to set login creds on mgr: failed to complete command for set dashboard creds: Invalid command: unused arguments: ["P.c(b6V$0pfK#)'70c5z"]
dashboard set-login-credentials <username> :  Set the login credentials. Password read from -i <file>
Traceback (most recent call last):
  File "/usr/bin/ceph", line 1310, in <module>
    retval = main()
  File "/usr/bin/ceph", line 1256, in main
    outf.write(outbuf)
TypeError: a bytes-like object is required, not 'str'
.
2021-04-14 10:05:35.665419 I | op-k8sutil: finished waiting for updated deployment "rook-ceph-rgw-my-store-a"
2021-04-14 10:05:35.665553 I | op-mon: checking if we can continue the deployment rook-ceph-rgw-my-store-a
2021-04-14 10:05:35.675293 I | ceph-object-controller: config map "rook-ceph-rgw-my-store-mime-types" for object store "my-store" already exists, not overwriting
2021-04-14 10:05:35.691549 I | ceph-object-controller: found more rgw deployments 3 than desired 3 in object store "my-store", scaling down
2021-04-14 10:05:35.691580 I | op-k8sutil: removing deployment rook-ceph-rgw-my-store-c if it exists
2021-04-14 10:05:35.698382 I | op-k8sutil: Removed deployment rook-ceph-rgw-my-store-c
2021-04-14 10:05:35.704568 I | op-k8sutil: "rook-ceph-rgw-my-store-c" still found. waiting...
2021-04-14 10:05:44.881129 I | op-osd: OSD orchestration status for node minikube is "orchestrating"
2021-04-14 10:05:44.882149 I | op-osd: OSD orchestration status for node minikube is "completed"
2021-04-14 10:05:45.756762 I | op-k8sutil: "rook-ceph-rgw-my-store-c" still found. waiting...
2021-04-14 10:05:45.782039 W | cephclient: all OSDs are running on the same host. not performing upgrade check. running in best-effort
2021-04-14 10:05:45.785188 I | op-osd: updating OSD 1 on node "minikube"
2021-04-14 10:05:54.768851 W | cephclient: all OSDs are running on the same host. not performing upgrade check. running in best-effort
2021-04-14 10:05:54.773191 I | op-osd: updating OSD 2 on node "minikube"
2021-04-14 10:05:55.843879 I | op-k8sutil: "rook-ceph-rgw-my-store-c" still found. waiting...
2021-04-14 10:06:05.255136 I | op-osd: finished running OSDs in namespace "rook-ceph"
2021-04-14 10:06:05.255155 I | ceph-cluster-controller: done reconciling ceph cluster in namespace "rook-ceph"
2021-04-14 10:06:05.560201 W | ceph-cluster-controller: upgrade orchestration completed but somehow we still have more than one Ceph version running. map[ceph version 15.2.9 (357616cbf726abb779ca75a551e8d02568e15b17) octopus (stable):3 ceph version 16.2.0 (0c2054e95bcd9b30fdd908a79ac1d8bbc3394442) pacific (stable):6]:
2021-04-14 10:06:05.885001 I | op-k8sutil: "rook-ceph-rgw-my-store-c" still found. waiting...
2021-04-14 10:06:08.321209 I | exec: timeout waiting for process radosgw-admin to return. Sending interrupt signal to the process
2021-04-14 10:06:10.645672 I | ceph-spec: object "rook-ceph-rgw-my-store-c" matched on delete, reconciling
2021-04-14 10:06:11.940994 I | op-k8sutil: confirmed rook-ceph-rgw-my-store-c does not exist
2021-04-14 10:06:11.972935 I | ceph-spec: object "rook-ceph-rgw-my-store-c-keyring" matched on delete, reconciling
2021-04-14 10:06:11.974394 I | ceph-object-controller: deleting rgw CephX key and configuration in centralized mon database for "rook-ceph-rgw-my-store-c"
2021-04-14 10:06:13.721964 I | ceph-object-controller: successfully deleted rgw config for "client.rgw.my.store.c" in mon configuration database
2021-04-14 10:06:13.721989 I | cephclient: deleting ceph auth "client.rgw.my.store.c"
2021-04-14 10:06:14.073700 I | ceph-object-controller: completed deleting rgw CephX key and configuration in centralized mon database for "rook-ceph-rgw-my-store-c"
2021-04-14 10:06:14.073724 I | op-k8sutil: removing deployment rook-ceph-rgw-my-store-b if it exists
2021-04-14 10:06:14.083950 I | op-k8sutil: Removed deployment rook-ceph-rgw-my-store-b
2021-04-14 10:06:14.090226 I | op-k8sutil: "rook-ceph-rgw-my-store-b" still found. waiting...
2021-04-14 10:06:24.174846 I | op-k8sutil: "rook-ceph-rgw-my-store-b" still found. waiting...
2021-04-14 10:06:30.505574 I | ceph-spec: object "rook-ceph-rgw-my-store-b" matched on delete, reconciling
2021-04-14 10:06:32.201263 I | op-k8sutil: confirmed rook-ceph-rgw-my-store-b does not exist
2021-04-14 10:06:32.219559 I | ceph-object-controller: deleting rgw CephX key and configuration in centralized mon database for "rook-ceph-rgw-my-store-b"
2021-04-14 10:06:32.220219 I | ceph-spec: object "rook-ceph-rgw-my-store-b-keyring" matched on delete, reconciling
2021-04-14 10:06:33.821969 I | ceph-object-controller: successfully deleted rgw config for "client.rgw.my.store.b" in mon configuration database
2021-04-14 10:06:33.821992 I | cephclient: deleting ceph auth "client.rgw.my.store.b"
2021-04-14 10:06:34.182091 I | ceph-object-controller: completed deleting rgw CephX key and configuration in centralized mon database for "rook-ceph-rgw-my-store-b"
2021-04-14 10:06:34.188659 I | ceph-object-controller: successfully scaled down rgw deployments to 1 in object store "my-store"
2021-04-14 10:06:34.188676 I | ceph-object-controller: enabling rgw dashboard
2021-04-14 10:06:49.487902 I | exec: timeout waiting for process radosgw-admin to return. Sending interrupt signal to the process
2021-04-14 10:06:49.494605 W | ceph-object-controller: failed to enable dashboard for rgw. failed to create user "dashboard-admin": failed to create s3 user: signal: interrupt
2021-04-14 10:06:49.494676 I | ceph-object-controller: created object store "my-store" in namespace "rook-ceph"
```

Running pods:

```
...
...
rook-ceph-rgw-my-store-a-6756bdbbd4-7265v            1/1     Running     1          41m
rook-ceph-rgw-my-store-a-6756bdbbd4-l5ccr            1/1     Running     1          41m
rook-ceph-rgw-my-store-a-6756bdbbd4-m679c            1/1     Running     1          41m
...
...
```

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-04-14 13:38:29 +02:00
Sébastien Han 01ad7afe53 ci: ability to skip ci with a label
Additionally to skip ci tag in the commit message from https://github.blog/changelog/2021-02-08-github-actions-skip-pull-request-and-push-workflows-with-skip-ci/
We can now skip integration tests by applying the "skip-ci" label at the
**creation time** of the PR. Obviously adding later works but will still
trigger the test in the initial opening of the PR. Subsequent pushes
will skip integration tests.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-04-14 12:17:34 +02:00
Sébastien Han c0dc65b973 Merge pull request #7600 from BlaineEXE/object-user-pacific-failures
ceph: work around object user create/update incompatibilities between Rook v1.6 and Ceph pre-Pacific
2021-04-14 11:03:14 +02:00
Lars Lehtonen 600a1498fe ceph: fix multiple imports
This fixes double imports within and beneath pkg/operator/ceph/cluster.

Signed-off-by: Lars Lehtonen <lars.lehtonen@gmail.com>
2021-04-14 01:51:35 -07:00
Sébastien Han 3d2ed38281 Merge pull request #7608 from cybozu-go/ceph-continue-getavailabledevices-if-failed-to-get-device-info
ceph: continue to get available devices if failed to get a device info
2021-04-14 09:10:55 +02:00
Travis Nielsen 54b85b723c Merge pull request #7571 from BlaineEXE/upgrade-docs-1.6
update Ceph upgrade docs for 1.6
2021-04-13 21:13:20 -06:00
Satoru Takeuchi a4fb080590 ceph: continue to get available devices if failed to get a device info
getAvailableDevices() should continue if something wrong happens in a device than returning
immediately with error.

Closes: https://github.com/rook/rook/issues/7543

Signed-off-by: Satoru Takeuchi <satoru.takeuchi@gmail.com>
2021-04-14 03:13:06 +00:00
Blaine Gardner d78b2a41d6 ceph: work around radosgw-admin fifo file io error
Work around issue https://github.com/rook/rook/issues/7573
and make sure integration tests check for regressions.

Eventually we should use the RADOS Gateway admin REST API, but for now
we need to work around an issue where the built version of
'radosgw-admin' has incompatibilities with the RADOS Gateway version
running in the Ceph cluster.

Of note, Rook built on the Ceph Pacific image will not support
some 'radosgw-admin' commands to Ceph Nautilus (v14) or Octopus (v15)
clusters.

Further complicating matters, the flag used for the workaround changes
between Ceph v16.2.0 and v16.2.1 (both Pacific).

This bug needs to be treated a little differently than most of the ways
Rook handles different commands for different Ceph versions because this
is based on the Ceph version that is installed in the container with the
Rook operator primarily and not the version of Ceph running in the
cluster.

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
2021-04-13 12:08:02 -06:00
Blaine Gardner 646b8557b3 docs: update Ceph upgrade docs for 1.6
Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
2021-04-13 09:56:52 -06:00
Sébastien Han 056150484f Merge pull request #7605 from alrs/more-ceph-imports
ceph: fix multiple imports
2021-04-13 15:33:41 +02:00
Travis Nielsen 10f350adc9 Merge pull request #7371 from travisn/go-1.16
build: Update the build to use go 1.16 while still supporting 1.15
2021-04-13 07:33:19 -06:00
Travis Nielsen e08f92b7b9 Merge pull request #7599 from travisn/test-k8s-1.21
ci: Run integration tests on k8s 1.21
2021-04-13 07:30:40 -06:00
Lars Lehtonen 41c567beaf ceph: fix multiple imports
This fixes additional double-imports.

Signed-off-by: Lars Lehtonen <lars.lehtonen@gmail.com>
2021-04-13 02:02:09 -07:00
Travis Nielsen 31c4ef622e build: update the build to use go 1.16
With the release of go 1.16, we update the tools. The -i flag is
now deprecated, no longer necessary for building in a private directory.
The go modules are cleaned up at the same time.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2021-04-12 15:01:14 -06:00
Travis Nielsen bfa302f2c2 ci: run integration tests on k8s 1.21
With the release of K8s 1.21.0 we now run the integration tests
on v1.21.0. To keep consistent with running master builds on five
recent releases, we keep master builds back to v1.15 and skip other
less changed versions such as v1.16 and 1.19. Jenkins builds just run
five versions, while github actions run four versions.

Signed-off-by: Travis Nielsen <tnielsen@redhat.com>
2021-04-12 13:10:43 -06:00
Travis Nielsen ac20ab133a Merge pull request #7525 from umangachapagain/pool-quota-alerts
ceph: add pool quota usage alerts
2021-04-12 11:16:31 -06:00
Sébastien Han 49b5adda7d Merge pull request #7559 from BlaineEXE/crd-gen-on-mac
build: allow CSV gen on mac
2021-04-12 18:57:48 +02:00
Sébastien Han 667cfc53d3 Merge pull request #7592 from leseb/mergify-fix-auto-merge-rule-master-final
bot: last few changes for auto-merge on release-1.6
2021-04-12 17:49:31 +02:00
Sébastien Han 143292ea5a bot: remove jobs that don't exit
For TestCephMultiClusterDeploySuite and TestCephUpgradeSuite we only run
on a single k8s version.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-04-12 17:37:59 +02:00
Sébastien Han 89f4c4a81a ci: always run golangci-lint
This action wasn't not running on release branch. Now enabling it.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-04-12 17:37:59 +02:00
Sébastien Han cefa7de4ed Merge pull request #7591 from leseb/mergify-fix-auto-merge-rule-master
bot: fix mergify auto-merge rule
2021-04-12 17:24:34 +02:00
Sébastien Han 63b2b0da3d bot: fix mergify auto-merge rule
We need to pass the complete name of the action.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-04-12 17:08:48 +02:00
Travis Nielsen 06c25746fe Merge pull request #7463 from umangachapagain/label-monitoring
ceph: add labels to monitoring spec
2021-04-12 08:56:41 -06:00
Umanga Chapagain a34b928b2e ceph: add pool quota usage alerts
add quota usage alerts for pools with quota set.

Signed-off-by: Umanga Chapagain <chapagainumanga@gmail.com>
2021-04-12 19:51:57 +05:30
Sébastien Han ad60c41d8b Merge pull request #7579 from leseb/cancel-canary-mons
ceph: cancel canary retry if necessary
2021-04-12 16:19:49 +02:00
Sébastien Han 050d61c49e Merge pull request #7580 from alrs/ceph-object-imports
ceph: fix multiple imports
2021-04-12 15:54:44 +02:00
Sébastien Han fc1e824a8d ceph: cancel canary retry if necessary
If the cluster is deleted and the mon canaries cannot be scheduled for
any reasons, let's not wait and return.

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-04-12 15:46:58 +02:00
Travis Nielsen 6c863db516 Merge pull request #7585 from leseb/auth-minikube
ci: use authenticated requests for minikube action on suite
2021-04-12 07:45:49 -06:00
Sébastien Han 15901277d5 ci: use authenticated requests for minikube action on suite
We have seen the CI failing to run the minikube action, reaching the API
limit. By using authenticated requests, we can overcome this limitation.
Follow-up of https://github.com/rook/rook/pull/7503/commits/1504fb869b5ed5b8f7df362bc9df3b45dd8ac9ea

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-04-12 14:26:38 +02:00
Sébastien Han c8b6aab718 Merge pull request #7581 from leseb/v16-monitoring-rules
ceph: add monitoring rules for pacific
2021-04-12 14:12:43 +02:00
Sébastien Han 31e22ad44f Merge pull request #7582 from subhamkrai/object-openshift
ceph: sslCertificateRef can't be null
2021-04-12 14:07:07 +02:00
subhamkrai d1cb929c41 ceph: sslCertificateRef can't be null
comment sslCertificateRef as it can't be
null.

Signed-off-by: subhamkrai <srai@redhat.com>
2021-04-12 16:17:04 +05:30
Sébastien Han 74c71880f1 ceph: add monitoring rules for pacific
New release, new files!

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-04-12 12:37:25 +02:00
Lars Lehtonen f1b341ba23 ceph: fix multiple imports
This fixes libraries that were being imported multiple times in
pkg/operator/ceph/object and its subpackages.

Signed-off-by: Lars Lehtonen <lars.lehtonen@gmail.com>
2021-04-12 02:57:13 -07:00
Umanga Chapagain 68c2db5d3a ceph: add monitoring key to cephcluster.spec.labels
CephCluster.Spec.Labels takes a key "monitoring". This is used
to inject labels into all the monitoring resources created by
the Rook operator.

Signed-off-by: Umanga Chapagain <chapagainumanga@gmail.com>
2021-04-12 12:02:27 +05:30
Blaine Gardner f2f622412c build: allow CSV gen on mac
CSV generation now requires versions of yq and operator-sdk that are
downloaded by the makefiles. Previously Ceph image creation used
makefile versions but `make csv-ceph` used versions present on the
system.

`sed -i 's///g' $FILE` doesn't work on Unix/Mac.
`sed -i'' -e 's///g' $FILE` is portable.

Signed-off-by: Blaine Gardner <blaine.gardner@redhat.com>
2021-04-09 13:22:15 -06:00
Travis Nielsen 8b96114e80 Merge pull request #7567 from alrs/ceph-file-imports
ceph: `pkg/operator/ceph/file`: multiple imports
2021-04-09 12:51:46 -06:00
Lars Lehtonen 017590c920 ceph: fix multiple imports
This fixes libraries that were being imported multiple times in
pkg/operator/ceph/file and its subpackages.

Signed-off-by: Lars Lehtonen <lars.lehtonen@gmail.com>
2021-04-09 09:52:25 -07:00
Blaine Gardner 194bd9ab95 Merge pull request #7564 from BlaineEXE/auto-merge-backport-1.6
bot: auto merge backports to release-1.6
2021-04-09 10:19:49 -06:00