Skip to content

Commit 7a1b5e3

Browse files
authored
Merge pull request #71 from banzaicloud/configure-images
Allow configuring container images for Istio components
2 parents 54052c5 + 39b82d3 commit 7a1b5e3

14 files changed

+160
-32
lines changed

config/crds/istio_v1beta1_istio.yaml

+19
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ spec:
3939
citadel:
4040
description: Citadel configuration options
4141
properties:
42+
image:
43+
type: string
4244
replicaCount:
4345
format: int32
4446
type: integer
@@ -48,10 +50,13 @@ spec:
4850
communicating through mTLS
4951
type: boolean
5052
excludeIPRanges:
53+
description: ExcludeIPRanges the range where not to capture egress traffic
5154
type: string
5255
galley:
5356
description: Galley configuration options
5457
properties:
58+
image:
59+
type: string
5560
replicaCount:
5661
format: int32
5762
type: integer
@@ -70,10 +75,13 @@ spec:
7075
type: integer
7176
type: object
7277
includeIPRanges:
78+
description: IncludeIPRanges the range where to capture egress traffic
7379
type: string
7480
mixer:
7581
description: Mixer configuration options
7682
properties:
83+
image:
84+
type: string
7785
maxReplicas:
7886
format: int32
7987
type: integer
@@ -85,10 +93,13 @@ spec:
8593
type: integer
8694
type: object
8795
mtls:
96+
description: MTLS enables or disables global mTLS
8897
type: boolean
8998
pilot:
9099
description: Pilot configuration options
91100
properties:
101+
image:
102+
type: string
92103
maxReplicas:
93104
format: int32
94105
type: integer
@@ -99,9 +110,17 @@ spec:
99110
format: int32
100111
type: integer
101112
type: object
113+
proxy:
114+
description: Proxy configuration options
115+
properties:
116+
image:
117+
type: string
118+
type: object
102119
sidecarInjector:
103120
description: SidecarInjector configuration options
104121
properties:
122+
image:
123+
type: string
105124
replicaCount:
106125
format: int32
107126
type: integer

config/crds/istio_v1beta1_remoteistio.yaml

+14
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ spec:
3939
citadel:
4040
description: Citadel configuration options
4141
properties:
42+
image:
43+
type: string
4244
replicaCount:
4345
format: int32
4446
type: integer
@@ -48,6 +50,8 @@ spec:
4850
communicating through mTLS
4951
type: boolean
5052
enabledServices:
53+
description: EnabledServices the Istio component services replicated
54+
to remote side
5155
items:
5256
properties:
5357
labelSelector:
@@ -64,12 +68,22 @@ spec:
6468
type: object
6569
type: array
6670
excludeIPRanges:
71+
description: ExcludeIPRanges the range where not to capture egress traffic
6772
type: string
6873
includeIPRanges:
74+
description: IncludeIPRanges the range where to capture egress traffic
6975
type: string
76+
proxy:
77+
description: Proxy configuration options
78+
properties:
79+
image:
80+
type: string
81+
type: object
7082
sidecarInjector:
7183
description: SidecarInjector configuration options
7284
properties:
85+
image:
86+
type: string
7387
replicaCount:
7488
format: int32
7589
type: integer

config/samples/istio_v1beta1_istio.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,27 @@ spec:
1212
- "default"
1313
controlPlaneSecurityEnabled: false
1414
pilot:
15+
image: "istio/pilot:1.0.5"
1516
replicaCount: 1
1617
minReplicas: 1
1718
maxReplicas: 5
1819
citadel:
20+
image: "istio/citadel:1.0.5"
1921
replicaCount: 1
2022
galley:
23+
image: "istio/galley:1.0.5"
2124
replicaCount: 1
2225
gateways:
2326
replicaCount: 1
2427
minReplicas: 1
2528
maxReplicas: 5
2629
mixer:
30+
image: "istio/mixer:1.0.5"
2731
replicaCount: 1
2832
minReplicas: 1
2933
maxReplicas: 5
3034
sidecarInjector:
35+
image: "istio/sidecar_injector:1.0.5"
3136
replicaCount: 1
37+
proxy:
38+
image: "istio/proxyv2:1.0.5"

config/samples/istio_v1beta1_remoteistio.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ spec:
2222
labelSelector: "app=jaeger"
2323
controlPlaneSecurityEnabled: true
2424
citadel:
25+
image: "istio/citadel:1.0.5"
2526
replicaCount: 1
2627
sidecarInjector:
28+
image: "istio/sidecar_injector:1.0.5"
2729
replicaCount: 1
30+
proxy:
31+
image: "istio/proxyv2:1.0.5"

pkg/apis/istio/v1beta1/istio_types.go

+61-14
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,17 @@ import (
2121
)
2222

2323
const (
24-
defaultIncludeIPRanges = "*"
25-
defaultReplicaCount = 1
26-
defaultMinReplicas = 1
27-
defaultMaxReplicas = 5
24+
defaultImageVersion = "1.0.5"
25+
defaultPilotImage = "istio/pilot" + ":" + defaultImageVersion
26+
defaultCitadelImage = "istio/citadel" + ":" + defaultImageVersion
27+
defaultGalleyImage = "istio/galley" + ":" + defaultImageVersion
28+
defaultMixerImage = "istio/mixer" + ":" + defaultImageVersion
29+
defaultSidecarInjectorImage = "istio/sidecar_injector" + ":" + defaultImageVersion
30+
defaultProxyImage = "istio/proxyv2" + ":" + defaultImageVersion
31+
defaultIncludeIPRanges = "*"
32+
defaultReplicaCount = 1
33+
defaultMinReplicas = 1
34+
defaultMaxReplicas = 5
2835
)
2936

3037
func SetDefaults(config *Istio) {
@@ -33,6 +40,9 @@ func SetDefaults(config *Istio) {
3340
}
3441

3542
// Pilot config
43+
if config.Spec.Pilot.Image == "" {
44+
config.Spec.Pilot.Image = defaultPilotImage
45+
}
3646
if config.Spec.Pilot.ReplicaCount == 0 {
3747
config.Spec.Pilot.ReplicaCount = defaultReplicaCount
3848
}
@@ -44,11 +54,17 @@ func SetDefaults(config *Istio) {
4454
}
4555

4656
// Citadel config
57+
if config.Spec.Citadel.Image == "" {
58+
config.Spec.Citadel.Image = defaultCitadelImage
59+
}
4760
if config.Spec.Citadel.ReplicaCount == 0 {
4861
config.Spec.Citadel.ReplicaCount = defaultReplicaCount
4962
}
5063

5164
// Galley config
65+
if config.Spec.Galley.Image == "" {
66+
config.Spec.Galley.Image = defaultGalleyImage
67+
}
5268
if config.Spec.Galley.ReplicaCount == 0 {
5369
config.Spec.Galley.ReplicaCount = defaultReplicaCount
5470
}
@@ -65,6 +81,9 @@ func SetDefaults(config *Istio) {
6581
}
6682

6783
// Mixer config
84+
if config.Spec.Mixer.Image == "" {
85+
config.Spec.Mixer.Image = defaultMixerImage
86+
}
6887
if config.Spec.Mixer.ReplicaCount == 0 {
6988
config.Spec.Mixer.ReplicaCount = defaultReplicaCount
7089
}
@@ -76,26 +95,37 @@ func SetDefaults(config *Istio) {
7695
}
7796

7897
// SidecarInjector config
98+
if config.Spec.SidecarInjector.Image == "" {
99+
config.Spec.SidecarInjector.Image = defaultSidecarInjectorImage
100+
}
79101
if config.Spec.SidecarInjector.ReplicaCount == 0 {
80102
config.Spec.SidecarInjector.ReplicaCount = defaultReplicaCount
81103
}
104+
105+
// Proxy config
106+
if config.Spec.Proxy.Image == "" {
107+
config.Spec.Proxy.Image = defaultProxyImage
108+
}
82109
}
83110

84111
// PilotConfiguration defines config options for Pilot
85112
type PilotConfiguration struct {
86-
ReplicaCount int32 `json:"replicaCount,omitempty"`
87-
MinReplicas int32 `json:"minReplicas,omitempty"`
88-
MaxReplicas int32 `json:"maxReplicas,omitempty"`
113+
Image string `json:"image,omitempty"`
114+
ReplicaCount int32 `json:"replicaCount,omitempty"`
115+
MinReplicas int32 `json:"minReplicas,omitempty"`
116+
MaxReplicas int32 `json:"maxReplicas,omitempty"`
89117
}
90118

91119
// CitadelConfiguration defines config options for Citadel
92120
type CitadelConfiguration struct {
93-
ReplicaCount int32 `json:"replicaCount,omitempty"`
121+
Image string `json:"image,omitempty"`
122+
ReplicaCount int32 `json:"replicaCount,omitempty"`
94123
}
95124

96125
// GalleyConfiguration defines config options for Galley
97126
type GalleyConfiguration struct {
98-
ReplicaCount int32 `json:"replicaCount,omitempty"`
127+
Image string `json:"image,omitempty"`
128+
ReplicaCount int32 `json:"replicaCount,omitempty"`
99129
}
100130

101131
// GatewaysConfiguration defines config options for Gateways
@@ -107,23 +137,37 @@ type GatewaysConfiguration struct {
107137

108138
// MixerConfiguration defines config options for Mixer
109139
type MixerConfiguration struct {
110-
ReplicaCount int32 `json:"replicaCount,omitempty"`
111-
MinReplicas int32 `json:"minReplicas,omitempty"`
112-
MaxReplicas int32 `json:"maxReplicas,omitempty"`
140+
Image string `json:"image,omitempty"`
141+
ReplicaCount int32 `json:"replicaCount,omitempty"`
142+
MinReplicas int32 `json:"minReplicas,omitempty"`
143+
MaxReplicas int32 `json:"maxReplicas,omitempty"`
113144
}
114145

115146
// SidecarInjectorConfiguration defines config options for SidecarInjector
116147
type SidecarInjectorConfiguration struct {
117-
ReplicaCount int32 `json:"replicaCount,omitempty"`
148+
Image string `json:"image,omitempty"`
149+
ReplicaCount int32 `json:"replicaCount,omitempty"`
150+
}
151+
152+
// ProxyConfiguration defines config options for Proxy
153+
type ProxyConfiguration struct {
154+
Image string `json:"image,omitempty"`
118155
}
119156

120157
// IstioSpec defines the desired state of Istio
121158
type IstioSpec struct {
122-
MTLS bool `json:"mtls"`
159+
// MTLS enables or disables global mTLS
160+
MTLS bool `json:"mtls"`
161+
162+
// IncludeIPRanges the range where to capture egress traffic
123163
IncludeIPRanges string `json:"includeIPRanges,omitempty"`
164+
165+
// ExcludeIPRanges the range where not to capture egress traffic
124166
ExcludeIPRanges string `json:"excludeIPRanges,omitempty"`
167+
125168
// List of namespaces to label with sidecar auto injection enabled
126169
AutoInjectionNamespaces []string `json:"autoInjectionNamespaces,omitempty"`
170+
127171
// ControlPlaneSecurityEnabled control plane services are communicating through mTLS
128172
ControlPlaneSecurityEnabled bool `json:"controlPlaneSecurityEnabled,omitempty"`
129173

@@ -144,6 +188,9 @@ type IstioSpec struct {
144188

145189
// SidecarInjector configuration options
146190
SidecarInjector SidecarInjectorConfiguration `json:"sidecarInjector,omitempty"`
191+
192+
// Proxy configuration options
193+
Proxy ProxyConfiguration `json:"proxy,omitempty"`
147194
}
148195

149196
// IstioStatus defines the observed state of Istio

pkg/apis/istio/v1beta1/remoteistio_types.go

+20-2
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,30 @@ func (spec RemoteIstioSpec) GetSignCert() SignCert {
4444

4545
// RemoteIstioSpec defines the desired state of RemoteIstio
4646
type RemoteIstioSpec struct {
47-
IncludeIPRanges string `json:"includeIPRanges,omitempty"`
48-
ExcludeIPRanges string `json:"excludeIPRanges,omitempty"`
47+
// IncludeIPRanges the range where to capture egress traffic
48+
IncludeIPRanges string `json:"includeIPRanges,omitempty"`
49+
50+
// ExcludeIPRanges the range where not to capture egress traffic
51+
ExcludeIPRanges string `json:"excludeIPRanges,omitempty"`
52+
53+
// EnabledServices the Istio component services replicated to remote side
4954
EnabledServices []IstioService `json:"enabledServices"`
55+
5056
// List of namespaces to label with sidecar auto injection enabled
5157
AutoInjectionNamespaces []string `json:"autoInjectionNamespaces,omitempty"`
58+
5259
// ControlPlaneSecurityEnabled control plane services are communicating through mTLS
5360
ControlPlaneSecurityEnabled bool `json:"controlPlaneSecurityEnabled,omitempty"`
61+
5462
// Citadel configuration options
5563
Citadel CitadelConfiguration `json:"citadel,omitempty"`
64+
5665
// SidecarInjector configuration options
5766
SidecarInjector SidecarInjectorConfiguration `json:"sidecarInjector,omitempty"`
5867

68+
// Proxy configuration options
69+
Proxy ProxyConfiguration `json:"proxy,omitempty"`
70+
5971
signCert SignCert
6072
}
6173

@@ -97,10 +109,16 @@ func SetRemoteIstioDefaults(remoteconfig *RemoteIstio) {
97109
remoteconfig.Spec.IncludeIPRanges = defaultIncludeIPRanges
98110
}
99111
// Citadel config
112+
if remoteconfig.Spec.Citadel.Image == "" {
113+
remoteconfig.Spec.Citadel.Image = defaultCitadelImage
114+
}
100115
if remoteconfig.Spec.Citadel.ReplicaCount == 0 {
101116
remoteconfig.Spec.Citadel.ReplicaCount = defaultReplicaCount
102117
}
103118
// SidecarInjector config
119+
if remoteconfig.Spec.SidecarInjector.Image == "" {
120+
remoteconfig.Spec.SidecarInjector.Image = defaultSidecarInjectorImage
121+
}
104122
if remoteconfig.Spec.SidecarInjector.ReplicaCount == 0 {
105123
remoteconfig.Spec.SidecarInjector.ReplicaCount = defaultReplicaCount
106124
}

pkg/apis/istio/v1beta1/zz_generated.deepcopy.go

+18
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)