feat(storage): add EmptyDir and HostPath as storage and polish README
diff --git a/README.md b/README.md
index 13936d3..eb7e396 100644
--- a/README.md
+++ b/README.md
@@ -79,7 +79,7 @@
# size is the the name service instance number of the name service cluster
size: 1
# nameServiceImage is the customized docker image repo of the RocketMQ name service
- nameServiceImage: docker.io/library/rocketmq-namesrv:4.5.0-alpine
+ nameServiceImage: 2019liurui/rocketmq-namesrv:4.5.0-alpine
# imagePullPolicy is the image pull policy
imagePullPolicy: Always
# volumeClaimTemplates defines the storageClass
@@ -113,7 +113,7 @@
# replicaPerGroup is the number of each broker cluster
replicaPerGroup: 1
# brokerImage is the customized docker image repo of the RocketMQ broker
- brokerImage: docker.io/library/rocketmq-broker:4.5.0-alpine
+ brokerImage: 2019liurui/rocketmq-broker:4.5.0-alpine
# imagePullPolicy is the image pull policy
imagePullPolicy: Always
# allowRestart defines whether allow pod restart
diff --git a/create-operator.sh b/create-operator.sh
index f3f1635..c676c7c 100755
--- a/create-operator.sh
+++ b/create-operator.sh
@@ -18,7 +18,7 @@
set -eux;
# Change the DOCKERHUB_REPO to your docker repo
-DOCKERHUB_REPO="docker.io/library/rocketmq-operator:v0.0.1-snapshot"
+DOCKERHUB_REPO="2019liurui/rocketmq-operator:v0.0.1-snapshot"
export GO111MODULE=on
diff --git a/deploy/operator.yaml b/deploy/operator.yaml
index ac8ffa1..cdd7b91 100644
--- a/deploy/operator.yaml
+++ b/deploy/operator.yaml
@@ -31,7 +31,7 @@
containers:
- name: rocketmq-operator
# Replace this with the built image name
- image: docker.io/library/rocketmq-operator:v0.0.1-snapshot
+ image: 2019liurui/rocketmq-operator:v0.0.1-snapshot
command:
- rocketmq-operator
imagePullPolicy: Always
diff --git a/example/rocketmq_v1alpha1_broker_cr.yaml b/example/rocketmq_v1alpha1_broker_cr.yaml
index b8aae82..18ab6b4 100644
--- a/example/rocketmq_v1alpha1_broker_cr.yaml
+++ b/example/rocketmq_v1alpha1_broker_cr.yaml
@@ -16,6 +16,7 @@
apiVersion: rocketmq.apache.org/v1alpha1
kind: Broker
metadata:
+ # name of broker cluster
name: broker
spec:
# size is the number of the broker cluster, each broker cluster contains a master broker and [replicaPerGroup] replica brokers.
@@ -27,11 +28,15 @@
# replicaPerGroup is the number of each broker cluster
replicaPerGroup: 1
# brokerImage is the customized docker image repo of the RocketMQ broker
- brokerImage: docker.io/library/rocketmq-broker:4.5.0-alpine
+ brokerImage: 2019liurui/rocketmq-broker:4.5.0-alpine
# imagePullPolicy is the image pull policy
imagePullPolicy: Always
# allowRestart defines whether allow pod restart
allowRestart: false
+ # storageMode can be EmptyDir, HostPath, NFS
+ storageMode: HostPath
+ # hostPath is the local path to store data
+ hostPath: /data/rocketmq/broker
# volumeClaimTemplates defines the storageClass
volumeClaimTemplates:
- metadata:
diff --git a/example/rocketmq_v1alpha1_nameservice_cr.yaml b/example/rocketmq_v1alpha1_nameservice_cr.yaml
index 5505da4..85063a3 100644
--- a/example/rocketmq_v1alpha1_nameservice_cr.yaml
+++ b/example/rocketmq_v1alpha1_nameservice_cr.yaml
@@ -21,9 +21,13 @@
# size is the the name service instance number of the name service cluster
size: 1
# nameServiceImage is the customized docker image repo of the RocketMQ name service
- nameServiceImage: docker.io/library/rocketmq-namesrv:4.5.0-alpine
+ nameServiceImage: 2019liurui/rocketmq-namesrv:4.5.0-alpine
# imagePullPolicy is the image pull policy
imagePullPolicy: Always
+ # storageMode can be EmptyDir, HostPath, NFS
+ storageMode: HostPath
+ # hostPath is the local path to store data
+ hostPath: /data/rocketmq/nameserver
# volumeClaimTemplates defines the storageClass
volumeClaimTemplates:
- metadata:
diff --git a/images/broker/build-broker-image.sh b/images/broker/build-broker-image.sh
index 5c6c711..8e96748 100755
--- a/images/broker/build-broker-image.sh
+++ b/images/broker/build-broker-image.sh
@@ -33,7 +33,7 @@
fi
ROCKETMQ_VERSION=$1
-DOCKERHUB_REPO=docker.io/library/rocketmq-broker
+DOCKERHUB_REPO=2019liurui/rocketmq-broker
checkVersion $ROCKETMQ_VERSION
diff --git a/images/namesrv/build-namesrv-image.sh b/images/namesrv/build-namesrv-image.sh
index 82aa811..e4304f0 100755
--- a/images/namesrv/build-namesrv-image.sh
+++ b/images/namesrv/build-namesrv-image.sh
@@ -33,7 +33,7 @@
fi
ROCKETMQ_VERSION=$1
-DOCKERHUB_REPO=docker.io/library/rocketmq-namesrv
+DOCKERHUB_REPO=2019liurui/rocketmq-namesrv
checkVersion $ROCKETMQ_VERSION
diff --git a/images/try-images.sh b/images/try-images.sh
index 1b1d129..115457b 100755
--- a/images/try-images.sh
+++ b/images/try-images.sh
@@ -15,8 +15,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-NAMESRV_DOCKERHUB_REPO=docker.io/library/rocketmq-namesrv
-BROKER_DOCKERHUB_REPO=docker.io/library/rocketmq-broker
+NAMESRV_DOCKERHUB_REPO=2019liurui/rocketmq-namesrv
+BROKER_DOCKERHUB_REPO=2019liurui/rocketmq-broker
ROCKETMQ_VERSION=4.5.0
start_namesrv_broker()
diff --git a/pkg/controller/broker/broker_controller.go b/pkg/controller/broker/broker_controller.go
index 2101ce3..42f4a1c 100644
--- a/pkg/controller/broker/broker_controller.go
+++ b/pkg/controller/broker/broker_controller.go
@@ -382,7 +382,7 @@
SubPath: cons.StoreSubPathName,
}},
}},
- Volumes: getVolumes(broker),
+ Volumes: getVolumes(broker, true, brokerGroupIndex, replicaIndex),
},
},
VolumeClaimTemplates: getVolumeClaimTemplates(broker),
@@ -399,16 +399,14 @@
switch broker.Spec.StorageMode {
case cons.StorageModeNFS:
return broker.Spec.VolumeClaimTemplates
- case cons.StorageModeEmptyDir:
- fallthrough
- case cons.StorageModeHostPath:
+ case cons.StorageModeEmptyDir, cons.StorageModeHostPath:
fallthrough
default:
return nil
}
}
-func getVolumes(broker *rocketmqv1alpha1.Broker) []corev1.Volume {
+func getVolumes(broker *rocketmqv1alpha1.Broker, isReplica bool, brokerGroupIndex int, replicaIndex int) []corev1.Volume {
switch broker.Spec.StorageMode {
case cons.StorageModeNFS:
return nil
@@ -428,13 +426,21 @@
Name: broker.Spec.VolumeClaimTemplates[0].Name,
VolumeSource: corev1.VolumeSource{
HostPath: &corev1.HostPathVolumeSource{
- Path: broker.Spec.HostPath,
+ Path: broker.Spec.HostPath + getHostPathSuffix(broker, isReplica, brokerGroupIndex, replicaIndex),
}},
}}
return volumes
}
}
+func getHostPathSuffix(broker *rocketmqv1alpha1.Broker, isReplica bool, brokerGroupIndex int, replicaIndex int) string {
+ if isReplica {
+ return "/" + broker.Name + "-" + strconv.Itoa(brokerGroupIndex) + "-replica-" + strconv.Itoa(replicaIndex)
+ } else {
+ return "/" + broker.Name + "-" + strconv.Itoa(brokerGroupIndex) + "-master-" + strconv.Itoa(replicaIndex)
+ }
+}
+
// labelsForBroker returns the labels for selecting the resources
// belonging to the given broker CR name.
func labelsForBroker(name string) map[string]string {
diff --git a/pkg/controller/nameservice/nameservice_controller.go b/pkg/controller/nameservice/nameservice_controller.go
index 5395771..ff1d0be 100644
--- a/pkg/controller/nameservice/nameservice_controller.go
+++ b/pkg/controller/nameservice/nameservice_controller.go
@@ -284,15 +284,15 @@
return map[string]string{"app": "name_service", "name_service_cr": name}
}
-func (r *ReconcileNameService) statefulSetForNameService(m *rocketmqv1alpha1.NameService) *appsv1.StatefulSet {
- ls := labelsForNameService(m.Name)
+func (r *ReconcileNameService) statefulSetForNameService(nameService *rocketmqv1alpha1.NameService) *appsv1.StatefulSet {
+ ls := labelsForNameService(nameService.Name)
dep := &appsv1.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
- Name: m.Name,
- Namespace: m.Namespace,
+ Name: nameService.Name,
+ Namespace: nameService.Namespace,
},
Spec: appsv1.StatefulSetSpec{
- Replicas: &m.Spec.Size,
+ Replicas: &nameService.Spec.Size,
Selector: &metav1.LabelSelector{
MatchLabels: ls,
},
@@ -304,27 +304,28 @@
HostNetwork: true,
DNSPolicy: "ClusterFirstWithHostNet",
Containers: []corev1.Container{{
- Image: m.Spec.NameServiceImage,
+ Image: nameService.Spec.NameServiceImage,
// Name must be lower case !
Name: "name-service",
- ImagePullPolicy: m.Spec.ImagePullPolicy,
+ ImagePullPolicy: nameService.Spec.ImagePullPolicy,
Ports: []corev1.ContainerPort{{
ContainerPort: cons.NameServiceMainContainerPortNumber,
Name: cons.NameServiceMainContainerPortName,
}},
VolumeMounts: []corev1.VolumeMount{{
MountPath: cons.LogMountPath,
- Name: m.Spec.VolumeClaimTemplates[0].Name,
- SubPath: cons.LogSubPathName,
+ Name: nameService.Spec.VolumeClaimTemplates[0].Name,
+ SubPath: cons.LogSubPathName,
}},
}},
+ Volumes: getVolumes(nameService),
},
},
- VolumeClaimTemplates: m.Spec.VolumeClaimTemplates,
+ VolumeClaimTemplates: getVolumeClaimTemplates(nameService),
},
}
// Set Broker instance as the owner and controller
- controllerutil.SetControllerReference(m, dep, r.scheme)
+ controllerutil.SetControllerReference(nameService, dep, r.scheme)
return dep
}