7
7
"github.com/golang/mock/gomock"
8
8
corev1 "k8s.io/api/core/v1"
9
9
10
+ configv1alpha2 "github.com/openservicemesh/osm/pkg/apis/config/v1alpha2"
11
+
10
12
"github.com/openservicemesh/osm/pkg/configurator"
11
13
)
12
14
@@ -26,6 +28,89 @@ var _ = Describe("Test functions creating Envoy bootstrap configuration", func()
26
28
Context ("test getInitContainerSpec()" , func () {
27
29
It ("Creates init container without ip range exclusion list" , func () {
28
30
mockConfigurator .EXPECT ().GetInitContainerImage ().Return (containerImage ).Times (1 )
31
+ mockConfigurator .EXPECT ().GetMeshConfig ().Return (configv1alpha2.MeshConfig {
32
+ Spec : configv1alpha2.MeshConfigSpec {
33
+ Sidecar : configv1alpha2.SidecarSpec {
34
+ LocalProxyMode : configv1alpha2 .LocalProxyModeLocalhost ,
35
+ },
36
+ },
37
+ }).Times (1 )
38
+ privileged := privilegedFalse
39
+ actual := getInitContainerSpec (containerName , mockConfigurator , nil , nil , nil , nil , privileged , corev1 .PullAlways , nil )
40
+
41
+ expected := corev1.Container {
42
+ Name : "-container-name-" ,
43
+ Image : "-init-container-image-" ,
44
+ ImagePullPolicy : corev1 .PullAlways ,
45
+ Command : []string {"/bin/sh" },
46
+ Args : []string {
47
+ "-c" ,
48
+ `iptables-restore --noflush <<EOF
49
+ # OSM sidecar interception rules
50
+ *nat
51
+ :OSM_PROXY_INBOUND - [0:0]
52
+ :OSM_PROXY_IN_REDIRECT - [0:0]
53
+ :OSM_PROXY_OUTBOUND - [0:0]
54
+ :OSM_PROXY_OUT_REDIRECT - [0:0]
55
+ -A OSM_PROXY_IN_REDIRECT -p tcp -j REDIRECT --to-port 15003
56
+ -A PREROUTING -p tcp -j OSM_PROXY_INBOUND
57
+ -A OSM_PROXY_INBOUND -p tcp --dport 15010 -j RETURN
58
+ -A OSM_PROXY_INBOUND -p tcp --dport 15901 -j RETURN
59
+ -A OSM_PROXY_INBOUND -p tcp --dport 15902 -j RETURN
60
+ -A OSM_PROXY_INBOUND -p tcp --dport 15903 -j RETURN
61
+ -A OSM_PROXY_INBOUND -p tcp --dport 15904 -j RETURN
62
+ -A OSM_PROXY_INBOUND -p tcp -j OSM_PROXY_IN_REDIRECT
63
+ -A OSM_PROXY_OUT_REDIRECT -p tcp -j REDIRECT --to-port 15001
64
+ -A OSM_PROXY_OUT_REDIRECT -p tcp --dport 15000 -j ACCEPT
65
+ -A OUTPUT -p tcp -j OSM_PROXY_OUTBOUND
66
+ -A OSM_PROXY_OUTBOUND -o lo ! -d 127.0.0.1/32 -m owner --uid-owner 1500 -j OSM_PROXY_IN_REDIRECT
67
+ -A OSM_PROXY_OUTBOUND -o lo -m owner ! --uid-owner 1500 -j RETURN
68
+ -A OSM_PROXY_OUTBOUND -m owner --uid-owner 1500 -j RETURN
69
+ -A OSM_PROXY_OUTBOUND -d 127.0.0.1/32 -j RETURN
70
+ -A OSM_PROXY_OUTBOUND -j OSM_PROXY_OUT_REDIRECT
71
+ COMMIT
72
+ EOF
73
+ ` ,
74
+ },
75
+ WorkingDir : "" ,
76
+ Resources : corev1.ResourceRequirements {},
77
+ SecurityContext : & corev1.SecurityContext {
78
+ Capabilities : & corev1.Capabilities {
79
+ Add : []corev1.Capability {
80
+ "NET_ADMIN" ,
81
+ },
82
+ },
83
+ Privileged : & privilegedFalse ,
84
+ RunAsNonRoot : & runAsNonRootFalse ,
85
+ RunAsUser : & runAsUserID ,
86
+ },
87
+ Env : []corev1.EnvVar {
88
+ {
89
+ Name : "POD_IP" ,
90
+ ValueFrom : & corev1.EnvVarSource {
91
+ FieldRef : & corev1.ObjectFieldSelector {
92
+ APIVersion : "v1" ,
93
+ FieldPath : "status.podIP" ,
94
+ },
95
+ },
96
+ },
97
+ },
98
+ Stdin : false ,
99
+ StdinOnce : false ,
100
+ TTY : false ,
101
+ }
102
+
103
+ Expect (actual ).To (Equal (expected ))
104
+ })
105
+ It ("Sets podIP DNAT rule if set in meshconfig" , func () {
106
+ mockConfigurator .EXPECT ().GetInitContainerImage ().Return (containerImage ).Times (1 )
107
+ mockConfigurator .EXPECT ().GetMeshConfig ().Return (configv1alpha2.MeshConfig {
108
+ Spec : configv1alpha2.MeshConfigSpec {
109
+ Sidecar : configv1alpha2.SidecarSpec {
110
+ LocalProxyMode : configv1alpha2 .LocalProxyModePodIP ,
111
+ },
112
+ },
113
+ }).Times (1 )
29
114
privileged := privilegedFalse
30
115
actual := getInitContainerSpec (containerName , mockConfigurator , nil , nil , nil , nil , privileged , corev1 .PullAlways , nil )
31
116
@@ -58,6 +143,7 @@ var _ = Describe("Test functions creating Envoy bootstrap configuration", func()
58
143
-A OSM_PROXY_OUTBOUND -o lo -m owner ! --uid-owner 1500 -j RETURN
59
144
-A OSM_PROXY_OUTBOUND -m owner --uid-owner 1500 -j RETURN
60
145
-A OSM_PROXY_OUTBOUND -d 127.0.0.1/32 -j RETURN
146
+ -I OUTPUT -p tcp -o lo -d 127.0.0.1/32 -m owner --uid-owner 1500 -j DNAT --to-destination $POD_IP
61
147
-A OSM_PROXY_OUTBOUND -j OSM_PROXY_OUT_REDIRECT
62
148
COMMIT
63
149
EOF
75
161
RunAsNonRoot : & runAsNonRootFalse ,
76
162
RunAsUser : & runAsUserID ,
77
163
},
164
+ Env : []corev1.EnvVar {
165
+ {
166
+ Name : "POD_IP" ,
167
+ ValueFrom : & corev1.EnvVarSource {
168
+ FieldRef : & corev1.ObjectFieldSelector {
169
+ APIVersion : "v1" ,
170
+ FieldPath : "status.podIP" ,
171
+ },
172
+ },
173
+ },
174
+ },
78
175
Stdin : false ,
79
176
StdinOnce : false ,
80
177
TTY : false ,
0 commit comments