Skip to content

Commit a2d0d6a

Browse files
authored
container: support image namespace override (#719)
* container: support image namespace override * charts: Adjust code style
1 parent e7a7c52 commit a2d0d6a

File tree

16 files changed

+108
-28
lines changed

16 files changed

+108
-28
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Image URL to use all building/pushing image targets
2+
REGISTRY ?= quay.io
23
IMGPREFIX ?=radondb/
34
IMG ?= $(IMGPREFIX)mysql-operator:latest
45
SIDECAR57_IMG ?= $(IMGPREFIX)mysql57-sidecar:latest

backup/syncer/job.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ type jobSyncer struct {
4141
func (s *jobSyncer) ObjectOwner() runtime.Object { return s.backup.Unwrap() }
4242

4343
// NewJobSyncer returns a syncer for backup jobs
44-
func NewJobSyncer(c client.Client, s *runtime.Scheme, backup *backup.Backup) syncer.Interface {
44+
func NewJobSyncer(c client.Client, backup *backup.Backup) syncer.Interface {
4545
obj := &batchv1.Job{
4646
ObjectMeta: metav1.ObjectMeta{
4747
Name: backup.GetNameForJob(),
@@ -132,7 +132,7 @@ func (s *jobSyncer) ensurePodSpec(in corev1.PodSpec) corev1.PodSpec {
132132
in.RestartPolicy = corev1.RestartPolicyNever
133133
sctName := fmt.Sprintf("%s-secret", s.backup.Spec.ClusterName)
134134
in.Containers[0].Name = utils.ContainerBackupName
135-
in.Containers[0].Image = fmt.Sprintf("%s%s", mysqlcluster.GetPrefixFromEnv(), s.backup.Spec.Image)
135+
in.Containers[0].Image = mysqlcluster.GetImage(s.backup.Spec.Image)
136136
in.ServiceAccountName = s.backup.Spec.ClusterName
137137
if len(s.backup.Spec.NFSServerAddress) != 0 {
138138
//parse NFSServerAddress to IP:/Path

charts/mysql-operator/Chart.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,7 @@ version: v2.2.1
2222
# follow Semantic Versioning. They should reflect the version the application is using.
2323
# It is recommended to use it with quotes.
2424
appVersion: "v2.2.1"
25+
dependencies:
26+
- name: "mysqlcluster"
27+
version: "v2.2.1"
28+

charts/mysql-operator/templates/deployment.yaml

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,22 @@ spec:
3434
containers:
3535
{{- if .Values.rbacProxy.create }}
3636
- name: kube-rbac-proxy
37-
{{- if not .Values.imagePrefix }}
38-
image: "{{ .Values.rbacProxy.image }}"
37+
{{- $imagerepo:=(split "/" .Values.rbacProxy.image)._0 }}
38+
{{- $imagetag:= (split "/" .Values.rbacProxy.image)._1 }}
39+
{{- if .Values.imageNamespaceOverride}}
40+
{{- if .Values.imagePrefix}}
41+
image: {{ printf "%s/%s/%s" .Values.imagePrefix .Values.imageNamespaceOverride $imagetag|quote }}
42+
{{- else }}
43+
image: {{ printf "%s/%s" .Values.imageNamespaceOverride $imagetag|quote }}
44+
{{- end}}
3945
{{- else }}
40-
image: "{{ .Values.imagePrefix }}/{{ .Values.rbacProxy.image }}"
46+
{{- if .Values.imagePrefix}}
47+
image: {{ printf "%s/%s/%s" .Values.imagePrefix $imagerepo $imagetag|quote }}
48+
{{- else }}
49+
image: {{ .Values.rbacProxy.image|quote }}
50+
{{- end }}
4151
{{- end }}
52+
imagePullPolicy: {{ .Values.rbacProxy.imagePullPolicy }}
4253
args:
4354
- "--secure-listen-address=0.0.0.0:8443"
4455
- "--upstream=http://127.0.0.1:8080/"
@@ -70,13 +81,25 @@ spec:
7081
- --health-probe-bind-address=:8081
7182
- --metrics-bind-address=127.0.0.1:8080
7283
- --leader-elect
73-
{{- if not .Values.imagePrefix }}
74-
image: "{{ .Values.manager.image }}:{{ .Values.manager.tag }}"
75-
{{- else }}
76-
image: "{{ .Values.imagePrefix }}/{{ .Values.manager.image }}:{{ .Values.manager.tag }}"
77-
{{- end }}
84+
{{- $imagerepo:=(split "/" .Values.manager.image)._0 }}
85+
{{- $imagetag:= printf "%s:%s" (split "/" .Values.manager.image)._1 .Values.manager.tag }}
86+
{{- if .Values.imageNamespaceOverride}}
87+
{{- if .Values.imagePrefix}}
88+
image: {{ printf "%s/%s/%s" .Values.imagePrefix .Values.imageNamespaceOverride $imagetag|quote }}
89+
{{- else }}
90+
image: {{ printf "%s/%s" .Values.imageNamespaceOverride $imagetag|quote }}
91+
{{- end}}
92+
{{- else }}
93+
{{- if .Values.imagePrefix}}
94+
image: {{ printf "%s/%s/%s" .Values.imagePrefix $imagerepo $imagetag|quote }}
95+
{{- else }}
96+
image: {{ printf "%s/%s" $imagerepo $imagetag|quote }}
97+
{{- end }}
98+
{{- end }}
7899
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
79100
env:
101+
- name: IMAGE_NAMESPACE_OVERRIDE
102+
value: {{ .Values.imageNamespaceOverride | quote }}
80103
- name: IMAGE_PREFIX
81104
value: {{ .Values.imagePrefix }}
82105
- name: ENABLE_WEBHOOKS

charts/mysql-operator/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ imagePullPolicy: IfNotPresent
1616
nameOverride: ""
1717
fullnameOverride: ""
1818
imagePrefix: ""
19+
imageNamespaceOverride: ""
1920

2021
## node.kubernetes.io/not-ready:NoExecute
2122
## node.kubernetes.io/unreachable:NoExecute

controllers/backup_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (r *BackupReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
8585
if len(backup.ObjectMeta.Labels["cluster"]) == 0 {
8686
backup.ObjectMeta.Labels = labels.Set{"cluster": backup.Spec.ClusterName}
8787
}
88-
jobSyncer := backupSyncer.NewJobSyncer(r.Client, r.Scheme, backup)
88+
jobSyncer := backupSyncer.NewJobSyncer(r.Client, backup)
8989
if err := syncer.Sync(ctx, jobSyncer, r.Recorder); err != nil {
9090
backup.UpdateStatusCondition(apiv1alpha1.BackupFailed, corev1.ConditionTrue, "CreateFailure", err.Error())
9191
backup.Status.Completed = true

controllers/status_controller.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func (r *StatusReconciler) SetupWithManager(mgr ctrl.Manager) error {
112112
bld := ctrl.NewControllerManagedBy(mgr).
113113
For(&apiv1alpha1.MysqlCluster{}).
114114
Watches(&source.Kind{Type: &apiv1alpha1.MysqlCluster{}}, &handler.Funcs{
115-
CreateFunc: func(evt event.CreateEvent, q workqueue.RateLimitingInterface) {
115+
CreateFunc: func(evt event.CreateEvent, _ workqueue.RateLimitingInterface) {
116116
if evt.Object == nil {
117117
log.Error(nil, "CreateEvent received with no metadata", "CreateEvent", evt)
118118
return
@@ -121,7 +121,7 @@ func (r *StatusReconciler) SetupWithManager(mgr ctrl.Manager) error {
121121
log.V(1).Info("register cluster in clusters list", "obj", evt.Object)
122122
clusters.Store(getKey(evt.Object), event.GenericEvent(evt))
123123
},
124-
DeleteFunc: func(evt event.DeleteEvent, q workqueue.RateLimitingInterface) {
124+
DeleteFunc: func(evt event.DeleteEvent, _ workqueue.RateLimitingInterface) {
125125
if evt.Object == nil {
126126
log.Error(nil, "DeleteEvent received with no metadata", "DeleteEvent", evt)
127127
return

mysqlcluster/container/auditlog_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ limitations under the License.
1717
package container
1818

1919
import (
20-
"fmt"
2120
"testing"
2221

2322
"github.com/stretchr/testify/assert"
@@ -57,7 +56,8 @@ func TestGetAuditlogName(t *testing.T) {
5756
}
5857

5958
func TestGetAuditlogImage(t *testing.T) {
60-
assert.Equal(t, fmt.Sprintf("%s%s", mysqlcluster.GetPrefixFromEnv(), "busybox"), auditLogCase.Image)
59+
// assert.Equal(t, fmt.Sprintf("%s%s", mysqlcluster.GetPrefixFromEnv(), "busybox"), auditLogCase.Image)
60+
assert.Equal(t, mysqlcluster.GetImage("busybox"), auditLogCase.Image)
6161
}
6262

6363
func TestGetAuditlogCommand(t *testing.T) {

mysqlcluster/container/container.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ limitations under the License.
1717
package container
1818

1919
import (
20-
"fmt"
21-
2220
corev1 "k8s.io/api/core/v1"
2321

2422
"github.com/radondb/radondb-mysql-kubernetes/mysqlcluster"
@@ -86,7 +84,7 @@ func EnsureContainer(name string, c *mysqlcluster.MysqlCluster) corev1.Container
8684

8785
return corev1.Container{
8886
Name: ctr.getName(),
89-
Image: fmt.Sprintf("%s%s", mysqlcluster.GetPrefixFromEnv(), ctr.getImage()),
87+
Image: mysqlcluster.GetImage(ctr.getImage()),
9088
ImagePullPolicy: c.Spec.PodPolicy.ImagePullPolicy,
9189
Command: ctr.getCommand(),
9290
Env: ctr.getEnvVars(),

mysqlcluster/container/init_mysql_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ limitations under the License.
1717
package container
1818

1919
import (
20-
"fmt"
2120
"testing"
2221

2322
"github.com/stretchr/testify/assert"
@@ -110,7 +109,7 @@ func TestGetInitMysqlName(t *testing.T) {
110109
}
111110

112111
func TestGetInitMysqlImage(t *testing.T) {
113-
assert.Equal(t, fmt.Sprintf("%s%s", mysqlcluster.GetPrefixFromEnv(), "percona/percona-server:5.7.34"), initMysqlCase.Image)
112+
assert.Equal(t, mysqlcluster.GetImage("percona/percona-server:5.7.34"), initMysqlCase.Image)
114113
}
115114

116115
func TestGetInitMysqlCommand(t *testing.T) {

0 commit comments

Comments
 (0)