Skip to content
This repository was archived by the owner on Jul 30, 2021. It is now read-only.

Commit 5849587

Browse files
author
Abhinav Dahiya
committed
Update calico versions & flannel install sidecar
Signed-off-by: Abhinav Dahiya <[email protected]>
1 parent 2843058 commit 5849587

File tree

5 files changed

+68
-70
lines changed

5 files changed

+68
-70
lines changed

cmd/bootkube/render.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ var (
5656
}
5757

5858
imageVersions = asset.DefaultImages
59-
cniRelease = asset.DefaultCNIRelease
6059
)
6160

6261
func init() {
@@ -245,7 +244,6 @@ func flagsToAssetConfig() (c *asset.Config, err error) {
245244
SelfHostedEtcd: renderOpts.selfHostedEtcd,
246245
CalicoNetworkPolicy: renderOpts.calicoNetworkPolicy,
247246
Images: imageVersions,
248-
CNIRelease: cniRelease,
249247
}, nil
250248
}
251249

e2e/network_test.go

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -70,40 +70,47 @@ func TestNetwork(t *testing.T) {
7070
}
7171

7272
t.Run("DefaultDeny", HelperDefaultDeny)
73-
74-
resetNetworkPolicy := func() {
75-
n, err := client.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{})
76-
if err != nil {
77-
t.Fatalf("unable to retrieve namespace %v", err)
78-
}
79-
80-
n.ObjectMeta.Annotations = map[string]string{}
81-
n.ObjectMeta.Annotations["net.beta.kubernetes.io/network-policy"] = defaultAllowNetworkPolicy
82-
_, err = client.CoreV1().Namespaces().Update(n)
83-
if err != nil {
84-
t.Fatalf("unable to reset namespace network policy%v", err)
85-
}
86-
}
87-
defer resetNetworkPolicy()
88-
8973
t.Run("NetworkPolicy", HelperPolicy)
9074
}
9175

9276
func HelperDefaultDeny(t *testing.T) {
9377
//
9478
// 3. set DefaultDeny policy
95-
var n *v1.Namespace
96-
n, err := client.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{})
79+
npi, _, err := api.Codecs.UniversalDecoder().Decode(defaultDenyNetworkPolicy, nil, &v1beta1.NetworkPolicy{})
9780
if err != nil {
98-
t.Fatalf("unable to retrieve namespace %v", err)
81+
t.Fatalf("unable to decode network policy manifest: %v", err)
9982
}
10083

101-
n.ObjectMeta.Annotations = map[string]string{}
102-
n.ObjectMeta.Annotations["net.beta.kubernetes.io/network-policy"] = defaultDenyNetworkPolicy
103-
_, err = client.CoreV1().Namespaces().Update(n)
104-
if err != nil {
105-
t.Fatalf("unable to set namespace network policy defaultdeny%v", err)
84+
np, ok := npi.(*v1beta1.NetworkPolicy)
85+
if !ok {
86+
t.Fatalf("expected manifest to decode into *api.networkpolicy, got %T", npi)
87+
}
88+
89+
httpRestClient := client.ExtensionsV1beta1().RESTClient()
90+
uri := fmt.Sprintf("/apis/%s/%s/namespaces/%s/%s",
91+
strings.ToLower("extensions"),
92+
strings.ToLower("v1beta1"),
93+
strings.ToLower(namespace),
94+
strings.ToLower("NetworkPolicies"))
95+
96+
result := httpRestClient.Post().RequestURI(uri).Body(np).Do()
97+
if result.Error() != nil {
98+
t.Fatal(result.Error())
10699
}
100+
defer func() {
101+
uri = fmt.Sprintf("/apis/%s/%s/namespaces/%s/%s/%s",
102+
strings.ToLower("extensions"),
103+
strings.ToLower("v1beta1"),
104+
strings.ToLower(namespace),
105+
strings.ToLower("NetworkPolicies"),
106+
strings.ToLower(np.ObjectMeta.Name))
107+
108+
result = httpRestClient.Delete().RequestURI(uri).Do()
109+
if result.Error() != nil {
110+
t.Fatal(result.Error())
111+
}
112+
113+
}()
107114

108115
//
109116
// 4. create a wget pod that fails to hit nginx service
@@ -276,8 +283,13 @@ spec:
276283
targetPort: 80
277284
`)
278285

279-
var defaultDenyNetworkPolicy = `{"ingress":{"isolation":"DefaultDeny"}}`
280-
var defaultAllowNetworkPolicy = `{"ingress":{"isolation":""}}`
286+
var defaultDenyNetworkPolicy = []byte(`kind: NetworkPolicy
287+
apiVersion: extensions/v1beta1
288+
metadata:
289+
name: default-deny
290+
spec:
291+
podSelector:
292+
`)
281293

282294
var netPolicy = []byte(`kind: NetworkPolicy
283295
apiVersion: extensions/v1beta1

pkg/asset/asset.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,14 @@ type Config struct {
105105
CloudProvider string
106106
BootstrapSecretsSubdir string
107107
Images ImageVersions
108-
CNIRelease string
109108
}
110109

111110
// ImageVersions holds all the images (and their versions) that are rendered into the templates.
112111
type ImageVersions struct {
113-
Alpine string
114112
Etcd string
115113
EtcdOperator string
116114
Flannel string
115+
FlannelCNI string
117116
Calico string
118117
CalicoCNI string
119118
Hyperkube string

pkg/asset/images.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,13 @@ var DefaultImages = ImageVersions{
55
Etcd: "quay.io/coreos/etcd:v3.1.8",
66
EtcdOperator: "quay.io/coreos/etcd-operator:v0.3.2",
77
Flannel: "quay.io/coreos/flannel:v0.7.1-amd64",
8-
Calico: "quay.io/calico/node:v1.2.1",
9-
CalicoCNI: "quay.io/calico/cni:v1.8.3",
8+
FlannelCNI: "quay.io/coreos/flannel-cni:0.1.0",
9+
Calico: "quay.io/calico/node:v1.3.0",
10+
CalicoCNI: "quay.io/calico/cni:v1.9.1-4-g23fcd5f",
1011
Hyperkube: "quay.io/coreos/hyperkube:v1.6.4_coreos.0",
1112
Kenc: "quay.io/coreos/kenc:8f6e2e885f790030fbbb0496ea2a2d8830e58b8f",
1213
KubeDNS: "gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1",
1314
KubeDNSMasq: "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1",
1415
KubeDNSSidecar: "gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1",
1516
PodCheckpointer: "quay.io/coreos/pod-checkpointer:4e7a7dab10bc4d895b66c21656291c6e0b017248",
1617
}
17-
18-
// DefaultCNIRelease is the default version of cni release
19-
var DefaultCNIRelease = "0799f5732f2a11b329d9e3d51b9c8f2e3759f2ff"

pkg/asset/internal/templates.go

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,38 +1091,19 @@ spec:
10911091
- name: flannel-cfg
10921092
mountPath: /etc/kube-flannel/
10931093
- name: install-cni
1094-
image: {{ .Images.Alpine }}
1095-
command:
1096-
- '/bin/sh'
1097-
- '-c'
1098-
- >
1099-
set -e -x;
1100-
ARCH=${ARCH:-amd64};
1101-
CNI_RELEASE=${CNI_RELEASE:-{{ .CNIRelease }}};
1102-
TMP=/etc/cni/net.d/.tmp-flannel-cfg;
1103-
cp /etc/kube-flannel/cni-conf.json ${TMP};
1104-
mv ${TMP} /etc/cni/net.d/10-flannel.conf;
1105-
1106-
apk add --update ca-certificates openssl && update-ca-certificates;
1107-
OPT_CNI=/opt/cni;
1108-
mkdir -p ${OPT_CNI};
1109-
wget -qO- https://storage.googleapis.com/kubernetes-release/network-plugins/cni-${ARCH}-${CNI_RELEASE}.tar.gz | tar -xz -C ${OPT_CNI};
1110-
1111-
if [ -w "/host/opt/cni/bin/" ]; then
1112-
cp /opt/cni/bin/* /host/opt/cni/bin/;
1113-
echo "Wrote CNI binaries to /host/opt/cni/bin/";
1114-
fi;
1115-
1116-
while :; do sleep 3600; done;
1094+
image: {{ .Images.FlannelCNI }}
1095+
command: ["/install-cni.sh"]
1096+
env:
1097+
- name: CNI_NETWORK_CONFIG
1098+
valueFrom:
1099+
configMapKeyRef:
1100+
name: kube-flannel-cfg
1101+
key: cni-conf.json
11171102
volumeMounts:
11181103
- name: cni
1119-
mountPath: /etc/cni/net.d
1120-
- name: flannel-cfg
1121-
mountPath: /etc/kube-flannel/
1104+
mountPath: /host/etc/cni/net.d
11221105
- name: host-cni-bin
11231106
mountPath: /host/opt/cni/bin/
1124-
- name: ssl-certs
1125-
mountPath: /etc/ssl/certs
11261107
hostNetwork: true
11271108
tolerations:
11281109
- key: node-role.kubernetes.io/master
@@ -1141,9 +1122,6 @@ spec:
11411122
- name: host-cni-bin
11421123
hostPath:
11431124
path: /opt/cni/bin
1144-
- name: ssl-certs
1145-
hostPath:
1146-
path: /etc/ssl/certs
11471125
updateStrategy:
11481126
rollingUpdate:
11491127
maxUnavailable: 1
@@ -1160,7 +1138,7 @@ data:
11601138
cni_network_config: |-
11611139
{
11621140
"name": "k8s-pod-network",
1163-
"cniVersion": "0.1.0",
1141+
"cniVersion": "0.3.0",
11641142
"type": "calico",
11651143
"log_level": "debug",
11661144
"datastore_type": "kubernetes",
@@ -1260,6 +1238,8 @@ spec:
12601238
valueFrom:
12611239
fieldRef:
12621240
fieldPath: spec.nodeName
1241+
- name: SKIP_CNI_BINARIES
1242+
value: bridge,cnitool,dhcp,flannel,host-local,ipvlan,loopback,macvlan,noop,portmap,ptp,tuning
12631243
volumeMounts:
12641244
- mountPath: /host/opt/cni/bin
12651245
name: cni-bin-dir
@@ -1278,14 +1258,18 @@ spec:
12781258
- name: cni-net-dir
12791259
hostPath:
12801260
path: /etc/kubernetes/cni/net.d
1281-
`)
1261+
updateStrategy:
1262+
rollingUpdate:
1263+
maxUnavailable: 1
1264+
type: RollingUpdate
1265+
`)
12821266

12831267
var KubeCalicoServiceAccountTemplate = []byte(`apiVersion: v1
12841268
kind: ServiceAccount
12851269
metadata:
12861270
name: kube-calico
12871271
namespace: kube-system
1288-
`)
1272+
`)
12891273

12901274
var KubeCalicoRoleTemplate = []byte(`apiVersion: rbac.authorization.k8s.io/v1beta1
12911275
kind: ClusterRole
@@ -1354,7 +1338,14 @@ rules:
13541338
- list
13551339
- update
13561340
- watch
1357-
`)
1341+
- apiGroups: ["alpha.projectcalico.org"]
1342+
resources:
1343+
- systemnetworkpolicies
1344+
verbs:
1345+
- get
1346+
- list
1347+
- watch
1348+
`)
13581349

13591350
var KubeCalicoRoleBindingTemplate = []byte(`apiVersion: rbac.authorization.k8s.io/v1beta1
13601351
kind: ClusterRoleBinding

0 commit comments

Comments
 (0)