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,