contiv est une solution de SDN pour conteneurs Docker (compatible avec Swarm et Kubernetes).
Tutoriel d’installation : Contiv Installation for Docker Swarm & Kubernetes 1.4+
Boostrap des noeuds :
#!/bin/bash
set -euo pipefail
if [ $EUID -ne 0 ]; then
echo "Please run this script as root user"
exit 1
fi
cat <<EOF >/etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
setenforce 0
yum install -y ntp
yum install -y docker ebtables \
https://fedorapeople.org/groups/kolla/kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm \
https://fedorapeople.org/groups/kolla/kubectl-1.5.4-0.x86_64.rpm \
https://fedorapeople.org/groups/kolla/kubelet-1.5.4-0.x86_64.rpm \
https://fedorapeople.org/groups/kolla/kubernetes-cni-0.3.0.1-0.07a8a2.x86_64.rpm \
http://cbs.centos.org/kojifiles/packages/openvswitch/2.5.0/2.el7/x86_64/openvswitch-2.5.0-2.el7.x86_64.rpm
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
systemctl enable ntpd && systemctl start ntpd
if systemctl -q is-active firewalld; then
systemctl stop firewalld
fi
if systemctl -q is-enabled firewalld; then
systemctl disable firewalld
fi
exit 0
Inialisation du cluster Kubernetes :
kubeadm init --token=1b2f23.aa3109c6d3685a36 --api-advertise-addresses=10.42.0.138 --skip-preflight-checks=true --use-kubernetes-version=v1.4.7 --service-cidr=10.254.0.0/16
Installation de contiv se fait à l’aide du tutoriel.
Création de réseaux VLAN :
netctl network create demo1 -s 10.1.1.0/24 -g 10.1.1.1 --pkt-tag 10 --encap vlan
netctl network create demo2 -s 10.2.2.0/24 -g 10.2.2.1 --pkt-tag 20 --encap vlan
Création de réseaux VXLAN :
netctl network create contivh1 -s 10.233.128.0/18 -g 10.233.128.1 --encap vxlan --nw-type infra
netctl network create default-net -s 10.233.64.0/18 -g 10.233.64.1 --encap vxlan --pkt-tag 10
Le réseau contivh1 est un réseau de type “infra”, ce réseau permet aux hôtes d’accéder au réseau de type “data” qui accueilleront les conteneurs.
Création d’une policy et association à un groupe :
netctl policy create deny-ping
netctl policy rule-add deny-ping 1 -priority=10 -direction=in -protocol=icmp --from-group=group1 -action=allow
netctl policy rule-add deny-ping 9999 -priority=1 -direction=in -action=deny
netctl group create demo1 group1 -policy=deny-ping
Exemple de fichier de déploiement avec les labels pour contiv :
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment-demo1
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
io.contiv.network: demo1
io.contiv.net-group: group1
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80