You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by vo...@apache.org on 2019/09/04 07:31:46 UTC
[rocketmq-operator] 14/28: Add broker image and pullpolicy
This is an automated email from the ASF dual-hosted git repository.
vongosling pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/rocketmq-operator.git
commit bb348fc738207632771798bc280562e582bdec79
Author: liuruiyiyang <24...@qq.com>
AuthorDate: Mon Sep 2 20:10:41 2019 +0800
Add broker image and pullpolicy
---
deploy/crds/cache_v1alpha1_broker_cr.yaml | 8 +++--
deploy/crds/cache_v1alpha1_broker_crd.yaml | 15 ++++++++++
images/broker/brokerGenConfig.sh | 2 +-
pkg/apis/cache/v1alpha1/broker_types.go | 5 ++++
pkg/apis/cache/v1alpha1/zz_generated.openapi.go | 23 ++++++++++++++-
pkg/controller/broker/broker_controller.go | 39 +++++++++++--------------
6 files changed, 65 insertions(+), 27 deletions(-)
diff --git a/deploy/crds/cache_v1alpha1_broker_cr.yaml b/deploy/crds/cache_v1alpha1_broker_cr.yaml
index 97e7767..c91dfc6 100644
--- a/deploy/crds/cache_v1alpha1_broker_cr.yaml
+++ b/deploy/crds/cache_v1alpha1_broker_cr.yaml
@@ -5,6 +5,8 @@ metadata:
spec:
# Add fields here
size: 2
- nameServers: "192.168.130.33:9876;192.168.130.34:9876"
- replicationMode: "ASYNC"
- slavePerGroup: 2
\ No newline at end of file
+ nameServers: 192.168.130.33:9876;192.168.130.34:9876
+ replicationMode: ASYNC
+ slavePerGroup: 2
+ brokerImage: 2019liurui/rocketmq-broker:4.5.0-alpine
+ imagePullPolicy: Always
\ No newline at end of file
diff --git a/deploy/crds/cache_v1alpha1_broker_crd.yaml b/deploy/crds/cache_v1alpha1_broker_crd.yaml
index 0171207..45ca5ab 100644
--- a/deploy/crds/cache_v1alpha1_broker_crd.yaml
+++ b/deploy/crds/cache_v1alpha1_broker_crd.yaml
@@ -27,6 +27,13 @@ spec:
type: object
spec:
properties:
+ brokerImage:
+ description: BaseImage is the broker container image to use for the
+ Pods.
+ type: string
+ imagePullPolicy:
+ description: ImagePullPolicy defines how the image is pulled.
+ type: string
nameServers:
description: NameServers defines the name service list e.g. 192.168.1.1:9876;192.168.1.2:9876
type: string
@@ -36,8 +43,16 @@ spec:
size:
format: int32
type: integer
+ slavePerGroup:
+ description: SlavePerGroup is the number of slave brokers in each broker
+ group
+ format: int64
+ type: integer
required:
- size
+ - slavePerGroup
+ - brokerImage
+ - imagePullPolicy
type: object
status:
properties:
diff --git a/images/broker/brokerGenConfig.sh b/images/broker/brokerGenConfig.sh
index 36db2fa..e6d6d9b 100755
--- a/images/broker/brokerGenConfig.sh
+++ b/images/broker/brokerGenConfig.sh
@@ -38,7 +38,7 @@ function create_config() {
echo "Creating broker configuration."
echo "#This file was auto generated by rocketmq-operator. DO NOT EDIT." >> $BROKER_CONFIG_FILE
echo "brokerClusterName=$BROKER_CLUSTER_NAME" >> $BROKER_CONFIG_FILE
- echo "brokerName=$BROKER_NAME" >> $BROKER_CONFIG_FILE
+ echo "brokerName=broker-$BROKER_NAME" >> $BROKER_CONFIG_FILE
echo "brokerId=$BROKER_ID" >> $BROKER_CONFIG_FILE
echo "deleteWhen=$DELETE_WHEN" >> $BROKER_CONFIG_FILE
echo "fileReservedTime=$FILE_RESERVED_TIME" >> $BROKER_CONFIG_FILE
diff --git a/pkg/apis/cache/v1alpha1/broker_types.go b/pkg/apis/cache/v1alpha1/broker_types.go
index aca5ab8..3e0aaf9 100644
--- a/pkg/apis/cache/v1alpha1/broker_types.go
+++ b/pkg/apis/cache/v1alpha1/broker_types.go
@@ -1,6 +1,7 @@
package v1alpha1
import (
+ corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -17,6 +18,10 @@ type BrokerSpec struct {
ReplicationMode string `json:"replicationMode,omitempty"`
// SlavePerGroup is the number of slave brokers in each broker group
SlavePerGroup int `json:"slavePerGroup"`
+ // BaseImage is the broker container image to use for the Pods.
+ BrokerImage string `json:"brokerImage"`
+ // ImagePullPolicy defines how the image is pulled.
+ ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy"`
}
// BrokerStatus defines the observed state of Broker
diff --git a/pkg/apis/cache/v1alpha1/zz_generated.openapi.go b/pkg/apis/cache/v1alpha1/zz_generated.openapi.go
index 764b988..ca77b80 100644
--- a/pkg/apis/cache/v1alpha1/zz_generated.openapi.go
+++ b/pkg/apis/cache/v1alpha1/zz_generated.openapi.go
@@ -86,8 +86,29 @@ func schema_pkg_apis_cache_v1alpha1_BrokerSpec(ref common.ReferenceCallback) com
Format: "",
},
},
+ "slavePerGroup": {
+ SchemaProps: spec.SchemaProps{
+ Description: "SlavePerGroup is the number of slave brokers in each broker group",
+ Type: []string{"integer"},
+ Format: "int32",
+ },
+ },
+ "brokerImage": {
+ SchemaProps: spec.SchemaProps{
+ Description: "BaseImage is the broker container image to use for the Pods.",
+ Type: []string{"string"},
+ Format: "",
+ },
+ },
+ "imagePullPolicy": {
+ SchemaProps: spec.SchemaProps{
+ Description: "ImagePullPolicy defines how the image is pulled.",
+ Type: []string{"string"},
+ Format: "",
+ },
+ },
},
- Required: []string{"size"},
+ Required: []string{"size", "slavePerGroup", "brokerImage", "imagePullPolicy"},
},
},
Dependencies: []string{},
diff --git a/pkg/controller/broker/broker_controller.go b/pkg/controller/broker/broker_controller.go
index f5cab0e..24a6e79 100644
--- a/pkg/controller/broker/broker_controller.go
+++ b/pkg/controller/broker/broker_controller.go
@@ -104,41 +104,36 @@ func (r *ReconcileBroker) Reconcile(request reconcile.Request) (reconcile.Result
found := &appsv1.Deployment{}
brokerGroupNum := int(broker.Spec.Size)
+ slavePerGroup := broker.Spec.SlavePerGroup
+ reqLogger.Info("brokerGroupNum=" + strconv.Itoa(brokerGroupNum) + ", slavePerGroup=" + strconv.Itoa(slavePerGroup))
for brokerClusterIndex := 0; brokerClusterIndex < brokerGroupNum; brokerClusterIndex++ {
- reqLogger.Info("Create Broker cluster " + strconv.Itoa(brokerClusterIndex + 1) + "/" + strconv.Itoa(brokerGroupNum))
+ reqLogger.Info("Check Broker cluster " + strconv.Itoa(brokerClusterIndex + 1) + "/" + strconv.Itoa(brokerGroupNum))
dep := r.deploymentForMasterBroker(broker, brokerClusterIndex)
-
err = r.client.Get(context.TODO(), types.NamespacedName{Name: dep.Name, Namespace: dep.Namespace}, found)
if err != nil && errors.IsNotFound(err) {
reqLogger.Info("Creating a new Master Broker Deployment.", "Deployment.Namespace", dep.Namespace, "Deployment.Name", dep.Name)
err = r.client.Create(context.TODO(), dep)
- for slaveIndex := 0; slaveIndex < broker.Spec.SlavePerGroup; slaveIndex++ {
- err = r.client.Get(context.TODO(), types.NamespacedName{Name: dep.Name, Namespace: dep.Namespace}, found)
+ for slaveIndex := 0; slaveIndex < slavePerGroup; slaveIndex++ {
+ reqLogger.Info("Check Slave Broker of cluster-" + strconv.Itoa(brokerClusterIndex) + " " + strconv.Itoa(slaveIndex) + "/" + strconv.Itoa(slavePerGroup))
+ slaveDep := r.deploymentForSlaveBroker(broker, brokerClusterIndex, slaveIndex)
+ err = r.client.Get(context.TODO(), types.NamespacedName{Name: slaveDep.Name, Namespace: slaveDep.Namespace}, found)
if err != nil && errors.IsNotFound(err) {
- slaveDep := r.deploymentForSlaveBroker(broker, brokerClusterIndex, slaveIndex)
- reqLogger.Info("Creating a new Slave Broker Deployment.", "Deployment.Namespace", dep.Namespace, "Deployment.Name", dep.Name)
+ reqLogger.Info("Creating a new Slave Broker Deployment.", "Deployment.Namespace", slaveDep.Namespace, "Deployment.Name", slaveDep.Name)
err = r.client.Create(context.TODO(), slaveDep)
if err != nil {
- reqLogger.Error(err, "Failed to create new Deployment of broker-"+strconv.Itoa(brokerClusterIndex)+"-"+strconv.Itoa(slaveIndex), "Deployment.Namespace", dep.Namespace, "Deployment.Name", dep.Name)
- return reconcile.Result{}, err
+ reqLogger.Error(err, "Failed to create new Deployment of broker-"+strconv.Itoa(brokerClusterIndex)+"-"+strconv.Itoa(slaveIndex), "Deployment.Namespace", slaveDep.Namespace, "Deployment.Name", slaveDep.Name)
}
} else if err != nil {
reqLogger.Error(err, "Failed to get broker slave Deployment.")
- return reconcile.Result{}, err
}
}
if err != nil {
reqLogger.Error(err, "Failed to create new Deployment of broker-cluster-"+strconv.Itoa(brokerClusterIndex), "Deployment.Namespace", dep.Namespace, "Deployment.Name", dep.Name)
- return reconcile.Result{}, err
}
- //// Deployment created successfully - return and requeue
- //return reconcile.Result{Requeue: true}, nil
} else if err != nil {
reqLogger.Error(err, "Failed to get broker master Deployment.")
- return reconcile.Result{}, err
}
-
}
@@ -195,7 +190,7 @@ func (r *ReconcileBroker) deploymentForMasterBroker(m *cachev1alpha1.Broker, bro
var c = &a
dep := &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
- Name: m.Name + "-" + strconv.Itoa(brokerClusterIndex) + "-0",
+ Name: m.Name + "-" + strconv.Itoa(brokerClusterIndex) + "-master",
Namespace: m.Namespace,
},
Spec: appsv1.DeploymentSpec{
@@ -209,9 +204,9 @@ func (r *ReconcileBroker) deploymentForMasterBroker(m *cachev1alpha1.Broker, bro
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{{
- Image: "2019liurui/rocketmq-broker:4.5.0-alpine",
- Name: "broker-master",
- ImagePullPolicy: "Always",
+ Image: m.Spec.BrokerImage,
+ Name: "broker-master" + strconv.Itoa(brokerClusterIndex),
+ ImagePullPolicy: m.Spec.ImagePullPolicy,
Env: []corev1.EnvVar{{
Name: "NAMESRV_ADDRESS",
Value: m.Spec.NameServers,
@@ -255,7 +250,7 @@ func (r *ReconcileBroker) deploymentForSlaveBroker(m *cachev1alpha1.Broker, brok
var c = &a
dep := &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
- Name: m.Name + "-" + strconv.Itoa(brokerClusterIndex) + "-" + strconv.Itoa(slaveIndex),
+ Name: m.Name + "-" + strconv.Itoa(brokerClusterIndex) + "-slave-" + strconv.Itoa(slaveIndex),
Namespace: m.Namespace,
},
Spec: appsv1.DeploymentSpec{
@@ -269,9 +264,9 @@ func (r *ReconcileBroker) deploymentForSlaveBroker(m *cachev1alpha1.Broker, brok
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{{
- Image: "2019liurui/rocketmq-broker:4.5.0-alpine",
- Name: "broker-slave",
- ImagePullPolicy: "Always",
+ Image: m.Spec.BrokerImage,
+ Name: "broker-slave" + strconv.Itoa(brokerClusterIndex),
+ ImagePullPolicy: m.Spec.ImagePullPolicy,
Env: []corev1.EnvVar{{
Name: "NAMESRV_ADDRESS",
Value: m.Spec.NameServers,