operator: crd updates to support decoupled ceph version

Signed-off-by: travisn <tnielsen@redhat.com>
This commit is contained in:
travisn committed 2018-11-01 11:48:45 -06:00
1 parent c43b95ef83
commit 77171fa2e2
5 files changed
+109 -1

No files matched your search

+10 -1
View File
@@ -55,6 +55,15 @@ metadata:
name: rook-ceph
namespace: rook-ceph
spec:
cephVersion:
# The container image used to launch the Ceph daemon pods (mon, mgr, osd, mds, rgw)
image: ceph/ceph:v12.2.7
# The name of the major release of Ceph. Must be luminous, mimic, or nautilus
name: luminous
# Whether to allow unsupported versions of Ceph. Currently only luminous and mimic are supported.
# After nautilus is released, Rook will be updated to support nautilus.
# Do not set to true in production.
allowUnsupported: false
# The path on the host where configuration files will be persisted. If not specified, a kubernetes emptyDir will be created (not recommended).
# Important: if you reinstall the cluster, make sure you delete this directory from each host or else the mons will fail to start on the new cluster.
# In Minikube, the '/data' directory is configured to persist across reboots. Use "/data/rook" in Minikube environment.
@@ -64,7 +73,7 @@ spec:
# set the amount of mons to be started
mon:
count: 3
allowMultiplePerNode: true
allowMultiplePerNode: True
# enable the ceph dashboard for viewing cluster status
dashboard:
enabled: true
@@ -18,6 +18,51 @@ spec:
- rcc
scope: Namespaced
version: v1beta1
validation:
openAPIV3Schema:
properties:
spec:
properties:
cephVersion:
properties:
allowUnsupported:
type: boolean
image:
type: string
name:
pattern: ^(luminous|mimic|nautilus)$
type: string
dashboard:
properties:
enabled:
type: boolean
dataDirHostPath:
pattern: ^/(\S+)
type: string
mon:
properties:
allowMultiplePerNode:
type: boolean
count:
maximum: 9
minimum: 1
type: integer
required:
- count
network:
properties:
hostNetwork:
type: boolean
storage:
properties:
nodes:
items: {}
type: array
useAllDevices: {}
useAllNodes:
type: boolean
required:
- mon
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
+15
View File
@@ -48,6 +48,9 @@ type ClusterList struct {
}
type ClusterSpec struct {
// The version information that instructs Rook to orchestrate a particular version of Ceph.
CephVersion CephVersionSpec `json:"cephVersion,omitempty"`
// A spec for available storage in the cluster and how it should be used
Storage rook.StorageScopeSpec `json:"storage,omitempty"`
@@ -73,6 +76,18 @@ type ClusterSpec struct {
Dashboard DashboardSpec `json:"dashboard,omitempty"`
}
// VersionSpec represents the settings for the Ceph version that Rook is orchestrating.
type CephVersionSpec struct {
// Image is the container image used to launch the ceph daemons, such as ceph/ceph:v12.2.7 or ceph/ceph:v13.2.1
Image string `json:"image,omitempty"`
// The name of the major release of Ceph: luminous, mimic, or nautilus
Name string `json:"name,omitempty"`
// Whether to allow unsupported versions (do not set to true in production)
AllowUnsupported bool `json:"allowUnsupported,omitempty"`
}
// DashboardSpec represents the settings for the Ceph dashboard
type DashboardSpec struct {
// Whether to enable the dashboard
+22
View File
@@ -0,0 +1,22 @@
/*
Copyright 2018 The Rook Authors. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1beta1
const (
Luminous = "luminous"
Mimic = "mimic"
Nautilus = "nautilus"
)
@@ -25,6 +25,22 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
)
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CephVersionSpec) DeepCopyInto(out *CephVersionSpec) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CephVersionSpec.
func (in *CephVersionSpec) DeepCopy() *CephVersionSpec {
if in == nil {
return nil
}
out := new(CephVersionSpec)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Cluster) DeepCopyInto(out *Cluster) {
*out = *in
@@ -89,6 +105,7 @@ func (in *ClusterList) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
*out = *in
out.CephVersion = in.CephVersion
in.Storage.DeepCopyInto(&out.Storage)
if in.Placement != nil {
in, out := &in.Placement, &out.Placement