Skip to content

Commit b515195

Browse files
authored
Merge pull request #2 from angel9484/feature/make_configurable_port_and_gossip_in_redis
configure more port options and monitor port in hostnetwork with hostport
2 parents 9e326c7 + 7f6f520 commit b515195

File tree

9 files changed

+63
-32
lines changed

9 files changed

+63
-32
lines changed

hack/docker/redis-tools/redis-tools.sh

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ show_help() {
1212
echo "-h, --help show brief help"
1313
echo " --data-dir=DIR path to directory holding db data (default: /var/data)"
1414
echo " --host=HOST database host"
15+
echo " --port=PORT database port"
1516
echo " --user=USERNAME database username"
1617
echo " --bucket=BUCKET name of bucket"
1718
echo " --location=LOCATION location of backend (<provider>:<bucket name>)"
@@ -22,7 +23,7 @@ show_help() {
2223
RETVAL=0
2324
DEBUG=${DEBUG:-}
2425
REDIS_HOST=${REDIS_HOST:-}
25-
REDIS_PORT=${REDIS_PORT:-6379}
26+
REDIS_PORT=${REDIS_PORT:-}
2627
REDIS_USER=${REDIS_USER:-}
2728
REDIS_PASSWORD=${REDIS_PASSWORD:-}
2829
REDIS_BUCKET=${REDIS_BUCKET:-}
@@ -50,6 +51,10 @@ while test $# -gt 0; do
5051
export REDIS_HOST=$(echo $1 | sed -e 's/^[^=]*=//g')
5152
shift
5253
;;
54+
--port*)
55+
export REDIS_PORT=$(echo $1 | sed -e 's/^[^=]*=//g')
56+
shift
57+
;;
5358
--user*)
5459
export REDIS_USER=$(echo $1 | sed -e 's/^[^=]*=//g')
5560
shift
@@ -108,8 +113,8 @@ case "$op" in
108113
# cleanup data dump dir
109114
rm -rf *
110115

111-
redis-cli --rdb dump.rdb -h "${REDIS_HOST}" -a "${REDIS_PASSWORD}"
112-
redis-cli -h "${REDIS_HOST}" -a "${REDIS_PASSWORD}" CLUSTER NODES | grep myself > nodes.conf
116+
redis-cli --rdb dump.rdb -h "${REDIS_HOST}" -p "${REDIS_PORT}" -a "${REDIS_PASSWORD}"
117+
redis-cli -h "${REDIS_HOST}" -p "${REDIS_PORT}" -a "${REDIS_PASSWORD}" CLUSTER NODES | grep myself > nodes.conf
113118
pwd
114119
ls -lh "$SOURCE_DIR"
115120
echo "Uploading dump file to the backend......."

make.Dockerfile

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
FROM golang:1.13.3 as go-builder
2+
3+
RUN apt-get update && apt-get -y upgrade && \
4+
apt-get install -y ca-certificates git mercurial
5+
6+
ARG PROJECT_NAME=redis-cluster-operator
7+
ARG REPO_PATH=github.com/ucloud/$PROJECT_NAME
8+
ARG BUILD_PATH=${REPO_PATH}/cmd/manager
9+
10+
# Build version and commit should be passed in when performing docker build
11+
ARG VERSION=0.1.1
12+
ARG GIT_SHA=0000000
13+
14+
WORKDIR /src
15+
COPY go.mod go.sum ./
16+
RUN go mod download
17+
18+
COPY pkg ./ cmd ./ version ./
19+
20+
#RUN GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ${GOBIN}/${PROJECT_NAME} \
21+
# -ldflags "-X ${REPO_PATH}/version.Version=${VERSION} -X ${REPO_PATH}/version.GitSHA=${GIT_SHA}" \
22+
# $BUILD_PATH
23+
24+
COPY . ./
25+
RUN apt-get install -y bash git make cmake gcc openssh-client openssh-server
26+
RUN apt-get install -y libc-dev
27+
RUN make build

pkg/controller/distributedrediscluster/sync_handler.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package distributedrediscluster
22

33
import (
44
"fmt"
5+
"strconv"
56
"time"
67

78
"github.com/go-logr/logr"
@@ -355,7 +356,7 @@ func (r *ReconcileDistributedRedisCluster) resetClusterPassword(ctx *syncContext
355356
// Update the password recorded in the file /data/redis_password, redis pod preStop hook
356357
// need /data/redis_password do CLUSTER FAILOVER
357358
cmd := fmt.Sprintf("echo %s > /data/redis_password", newPassword)
358-
if err := r.execer.ExecCommandInPodSet(podSet, "/bin/sh", "-c", cmd); err != nil {
359+
if err := r.execer.ExecCommandInPodSet(podSet, "/bin/sh", "-c", "-p", strconv.Itoa(ctx.cluster.Spec.ClientPort), cmd); err != nil {
359360
return err
360361
}
361362

pkg/controller/redisclusterbackup/sync_handler.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ func (r *ReconcileRedisClusterBackup) backupContainers(backup *redisv1alpha1.Red
326326
fmt.Sprintf(`--data-dir=%s`, redisv1alpha1.BackupDumpDir),
327327
fmt.Sprintf(`--location=%s`, location),
328328
fmt.Sprintf(`--host=%s`, node.IP),
329+
fmt.Sprintf(`--port=%s`, node.Port),
329330
fmt.Sprintf(`--folder=%s`, folderName),
330331
fmt.Sprintf(`--snapshot=%s-%d`, backup.Name, i),
331332
"--",

pkg/resources/configmaps/configmap.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ failover() {
3131
echo "Slave: ${slave}"
3232
password=$(cat /data/redis_password)
3333
if [[ -z "${password}" ]]; then
34-
redis-cli -h ${slave} CLUSTER FAILOVER
34+
redis-cli -h ${slave} -p `+strconv.Itoa(cluster.Spec.ClientPort)+` CLUSTER FAILOVER
3535
else
36-
redis-cli -h ${slave} -a "${password}" CLUSTER FAILOVER
36+
redis-cli -h ${slave} -p `+strconv.Itoa(cluster.Spec.ClientPort)+` -a "${password}" CLUSTER FAILOVER
3737
fi
3838
echo "Wait for MASTER <-> SLAVE syncFinished"
3939
sleep 20

pkg/resources/statefulsets/statefulset.go

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func NewStatefulSetForCR(cluster *redisv1alpha1.DistributedRedisCluster, ssName,
6868
SecurityContext: spec.SecurityContext,
6969
NodeSelector: cluster.Spec.NodeSelector,
7070
Containers: []corev1.Container{
71-
redisServerContainer(cluster, password, spec.HostNetwork),
71+
redisServerContainer(cluster, password),
7272
},
7373
Volumes: volumes,
7474
HostNetwork: spec.HostNetwork,
@@ -242,16 +242,16 @@ func createContainerPort(name string, port int32, hostNetwork bool) corev1.Conta
242242
return containerPort
243243
}
244244

245-
func redisServerContainer(cluster *redisv1alpha1.DistributedRedisCluster, password *corev1.EnvVar, hostNetwork bool) corev1.Container {
246-
probeArg := "redis-cli -h $(hostname) ping"
245+
func redisServerContainer(cluster *redisv1alpha1.DistributedRedisCluster, password *corev1.EnvVar) corev1.Container {
246+
probeArg := "redis-cli -h $(hostname) -p " + strconv.Itoa(cluster.Spec.ClientPort) + " ping"
247247

248248
container := corev1.Container{
249249
Name: redisServerName,
250250
Image: cluster.Spec.Image,
251251
ImagePullPolicy: cluster.Spec.ImagePullPolicy,
252252
Ports: []corev1.ContainerPort{
253-
createContainerPort("client", int32(cluster.Spec.ClientPort), hostNetwork),
254-
createContainerPort("gossip", int32(cluster.Spec.GossipPort), hostNetwork),
253+
createContainerPort("client", int32(cluster.Spec.ClientPort), cluster.Spec.HostNetwork),
254+
createContainerPort("gossip", int32(cluster.Spec.GossipPort), cluster.Spec.HostNetwork),
255255
},
256256
VolumeMounts: volumeMounts(),
257257
Command: getRedisCommand(cluster, password),
@@ -296,7 +296,7 @@ func redisServerContainer(cluster *redisv1alpha1.DistributedRedisCluster, passwo
296296
Lifecycle: &corev1.Lifecycle{
297297
PostStart: &corev1.Handler{
298298
Exec: &corev1.ExecAction{
299-
Command: []string{"/bin/sh", "-c", "echo ${REDIS_PASSWORD} > /data/redis_password"},
299+
Command: []string{"/bin/sh", "-p", strconv.Itoa(cluster.Spec.ClientPort), "-c", "echo ${REDIS_PASSWORD} > /data/redis_password"},
300300
},
301301
},
302302
PreStop: &corev1.Handler{
@@ -325,12 +325,9 @@ func redisExporterContainer(cluster *redisv1alpha1.DistributedRedisCluster, pass
325325
}, cluster.Spec.Monitor.Args...),
326326
Image: cluster.Spec.Monitor.Image,
327327
ImagePullPolicy: corev1.PullAlways,
328+
328329
Ports: []corev1.ContainerPort{
329-
{
330-
Name: "prom-http",
331-
Protocol: corev1.ProtocolTCP,
332-
ContainerPort: cluster.Spec.Monitor.Prometheus.Port,
333-
},
330+
createContainerPort("prom-http", cluster.Spec.Monitor.Prometheus.Port, cluster.Spec.HostNetwork),
334331
},
335332
Env: cluster.Spec.Monitor.Env,
336333
Resources: cluster.Spec.Monitor.Resources,

test/e2e/drc/drc_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ var _ = Describe("DistributedRedisCluster CRUD", func() {
2323
Ω(f.CreateRedisClusterPassword(f.PasswordName(), password)).Should(Succeed())
2424
Ω(f.CreateRedisCluster(drc)).Should(Succeed())
2525
Eventually(e2e.IsDistributedRedisClusterProperly(f, drc), "10m", "10s").ShouldNot(HaveOccurred())
26-
goredis = e2e.NewGoRedisClient(name, f.Namespace(), password)
26+
goredis = e2e.NewGoRedisClient(name, f.Namespace(), password, 6379)
2727
Expect(goredis.StuffingData(10, 300000)).NotTo(HaveOccurred())
2828
dbsize, err = goredis.DBSize()
2929
Expect(err).NotTo(HaveOccurred())
@@ -41,22 +41,22 @@ var _ = Describe("DistributedRedisCluster CRUD", func() {
4141
e2e.DeleteMasterPodForDRC(drc, f.Client)
4242
Eventually(e2e.IsDRCPodBeDeleted(f, drc), "5m", "10s").ShouldNot(HaveOccurred())
4343
Eventually(e2e.IsDistributedRedisClusterProperly(f, drc), "10m", "10s").ShouldNot(HaveOccurred())
44-
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), goredis.Password())
44+
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), goredis.Password(), 6379)
4545
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
4646
})
4747
It("should scale up a DistributedRedisCluster", func() {
4848
e2e.ScaleUPDRC(drc)
4949
Ω(f.UpdateRedisCluster(drc)).Should(Succeed())
5050
Eventually(e2e.IsDistributedRedisClusterProperly(f, drc), "10m", "10s").ShouldNot(HaveOccurred())
51-
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), goredis.Password())
51+
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), goredis.Password(), 6379)
5252
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
5353
})
5454
Context("when the scale up succeeded", func() {
5555
It("should scale down a DistributedRedisCluster", func() {
5656
e2e.ScaleUPDown(drc)
5757
Ω(f.UpdateRedisCluster(drc)).Should(Succeed())
5858
Eventually(e2e.IsDistributedRedisClusterProperly(f, drc), "10m", "10s").ShouldNot(HaveOccurred())
59-
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), goredis.Password())
59+
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), goredis.Password(), 6379)
6060
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
6161
})
6262
})
@@ -67,14 +67,14 @@ var _ = Describe("DistributedRedisCluster CRUD", func() {
6767
Ω(f.UpdateRedisCluster(drc)).Should(Succeed())
6868
time.Sleep(5 * time.Second)
6969
Eventually(e2e.IsDistributedRedisClusterProperly(f, drc), "10m", "10s").ShouldNot(HaveOccurred())
70-
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), newPassword)
70+
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), newPassword, 6379)
7171
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
7272
})
7373
It("should update the DistributedRedisCluster minor version", func() {
7474
e2e.RollingUpdateDRC(drc)
7575
Ω(f.UpdateRedisCluster(drc)).Should(Succeed())
7676
Eventually(e2e.IsDistributedRedisClusterProperly(f, drc), "10m", "10s").ShouldNot(HaveOccurred())
77-
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), goredis.Password())
77+
goredis = e2e.NewGoRedisClient(drc.Name, f.Namespace(), goredis.Password(), 6379)
7878
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
7979
})
8080
})

test/e2e/drcb/drcb_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ var _ = Describe("Restore DistributedRedisCluster From RedisClusterBackup", func
2424
Ω(f.CreateRedisClusterPassword(f.PasswordName(), password)).Should(Succeed())
2525
Ω(f.CreateRedisCluster(drc)).Should(Succeed())
2626
Eventually(e2e.IsDistributedRedisClusterProperly(f, drc), "10m", "10s").ShouldNot(HaveOccurred())
27-
goredis = e2e.NewGoRedisClient(name, f.Namespace(), password)
27+
goredis = e2e.NewGoRedisClient(name, f.Namespace(), password, 6379)
2828
Expect(goredis.StuffingData(10, 300000)).NotTo(HaveOccurred())
2929
dbsize, err = goredis.DBSize()
3030
Expect(err).NotTo(HaveOccurred())
@@ -50,7 +50,7 @@ var _ = Describe("Restore DistributedRedisCluster From RedisClusterBackup", func
5050
rdrc = e2e.RestoreDRC(drc, drcb)
5151
Ω(f.CreateRedisCluster(rdrc)).Should(Succeed())
5252
Eventually(e2e.IsDistributedRedisClusterProperly(f, rdrc), "10m", "10s").ShouldNot(HaveOccurred())
53-
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password())
53+
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password(), 6379)
5454
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
5555
})
5656
Context("when restore is succeeded", func() {
@@ -64,22 +64,22 @@ var _ = Describe("Restore DistributedRedisCluster From RedisClusterBackup", func
6464
e2e.DeleteMasterPodForDRC(rdrc, f.Client)
6565
Eventually(e2e.IsDRCPodBeDeleted(f, rdrc), "5m", "10s").ShouldNot(HaveOccurred())
6666
Eventually(e2e.IsDistributedRedisClusterProperly(f, rdrc), "10m", "10s").ShouldNot(HaveOccurred())
67-
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password())
67+
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password(), 6379)
6868
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
6969
})
7070
It("should scale up a DistributedRedisCluster", func() {
7171
e2e.ScaleUPDRC(rdrc)
7272
Ω(f.UpdateRedisCluster(rdrc)).Should(Succeed())
7373
Eventually(e2e.IsDistributedRedisClusterProperly(f, rdrc), "10m", "10s").ShouldNot(HaveOccurred())
74-
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password())
74+
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password(), 6379)
7575
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
7676
})
7777
Context("when the scale up succeeded", func() {
7878
It("should scale down a DistributedRedisCluster", func() {
7979
e2e.ScaleUPDown(rdrc)
8080
Ω(f.UpdateRedisCluster(rdrc)).Should(Succeed())
8181
Eventually(e2e.IsDistributedRedisClusterProperly(f, rdrc), "10m", "10s").ShouldNot(HaveOccurred())
82-
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password())
82+
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password(), 6379)
8383
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
8484
})
8585
})
@@ -90,14 +90,14 @@ var _ = Describe("Restore DistributedRedisCluster From RedisClusterBackup", func
9090
Ω(f.UpdateRedisCluster(rdrc)).Should(Succeed())
9191
time.Sleep(5 * time.Second)
9292
Eventually(e2e.IsDistributedRedisClusterProperly(f, rdrc), "10m", "10s").ShouldNot(HaveOccurred())
93-
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), newPassword)
93+
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), newPassword, 6379)
9494
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
9595
})
9696
It("should update the DistributedRedisCluster minor version", func() {
9797
e2e.RollingUpdateDRC(rdrc)
9898
Ω(f.UpdateRedisCluster(rdrc)).Should(Succeed())
9999
Eventually(e2e.IsDistributedRedisClusterProperly(f, rdrc), "10m", "10s").ShouldNot(HaveOccurred())
100-
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password())
100+
goredis = e2e.NewGoRedisClient(rdrc.Name, f.Namespace(), goredis.Password(), 6379)
101101
Expect(e2e.IsDBSizeConsistent(dbsize, goredis)).NotTo(HaveOccurred())
102102
})
103103
})

test/e2e/operator_util.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,8 +368,8 @@ func IsRedisClusterBackupProperly(f *Framework, drcb *redisv1alpha1.RedisCluster
368368
}
369369
}
370370

371-
func NewGoRedisClient(svc, namespaces, password string) *GoRedis {
372-
addr := fmt.Sprintf("%s.%s.svc.%s:6379", svc, namespaces, os.Getenv("CLUSTER_DOMAIN"))
371+
func NewGoRedisClient(svc, namespaces, password string, port int) *GoRedis {
372+
addr := fmt.Sprintf("%s.%s.svc.%s:%d", svc, namespaces, os.Getenv("CLUSTER_DOMAIN"), port)
373373
return NewGoRedis(addr, password)
374374
}
375375

0 commit comments

Comments
 (0)