Skip to content
Snippets Groups Projects
Commit b371bd9d authored by Alejandro Tjaarda's avatar Alejandro Tjaarda
Browse files

switches: updated image so it can work with the overlay crd and automates the setup of vxlans

parent 1be1bacc
No related branches found
No related tags found
1 merge request!2repo: added new directory where utils scripts will be
......@@ -2,7 +2,7 @@
set -e
# Set environment variables
export VERSION="2.5"
export VERSION="2.6"
export DOCKERHUB_REPO="alexdecb"
# Function to build image
......
......@@ -13,7 +13,7 @@ webhooks:
- name: mpod.kb.io
clientConfig:
url: https://10.0.2.4:9443/mutate-v1-pod
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIVENDQWdXZ0F3SUJBZ0lVU1hpQm41YVR3TGgyWXZKQWZtWGNiZ25tNVlZd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0dERVdNQlFHQTFVRUF3d05iRzlqWVd3dGQyVmlhRzl2YXpBZUZ3MHlOREE0TURZd09EVTRNVE5hRncweQpOVEE0TURZd09EVTRNVE5hTUJneEZqQVVCZ05WQkFNTURXeHZZMkZzTFhkbFltaHZiMnN3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUN0QmFjb05ISDBwanQ4dkJjS3NxUHVBaHVtV21VMnkzNloKdFhjMGtOVHpOL2Nqekhpc1JIZ2crQVdVaHJ6bllUOGZ2clNlQU9nODhuS2RrMG8wZGJ6aXR5d09vdmJOeG5jbApnU3crRlZKQlprN0tYWTRtN1RzTkxDbXh4RE0vZjN6Rm93NGRKU2dBbzBCOWdZUy9XQnc3WHF2VHdROEdBRUhxCm9WUkluaXoxdW5LVWg1YkluNzNsRk5aMTIzVDI1cERtRGxIWU1lcjZORTdhL3BGZE5LZi9IQUlHYVBCT3FWeTgKaWNTM2pKRjV6V2w2NllNWHNFM2xwa2VORm9ZN3JsYmRFbm5rYUhmL2d3Uk9aNmtRSzFSTG14RUN5akVuaXRiRgpyYkhOU1R6ZWIyYXg1bVkvM3hDWnJKSkd2SmdLdm9UU0JpbmVqWVNHQjJVVElHaE1ROUV4QWdNQkFBR2pYekJkCk1EWUdBMVVkRVFRdk1DMkhCSDhBQUFHSEJBb0FBZ1NDQ1d4dlkyRnNhRzl6ZElJVWQyVmlhRzl2YXkxelpYSjIKWlhJdWJHOWpZV3d3RGdZRFZSMFBBUUgvQkFRREFnV2dNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01CTUEwRwpDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ2lxNFpMQVVkQ1Z6ajBOUU1ncUkyZEs5YzNEc1IyejUxNjF5ZTMxakR1CkpBV0RNQjFnc2NnTmt0M2JnbGdGZVpQbjZxZHF4VHBVdk1ZUDRSQzR4S25paEQxcm1CMStMOU9oQTdmbGVuTUYKdllaMHVVdnhKdjdMYkdwOVhYMUxFZFFPUWZwd1l6cmVrU25Bci9iYXF4ME1UZDNGZkNpZ205WTJDYjFORVRPMwpUYTBaRS91amNVb2s5cHpJWVdybWxhVDN2SkE1OWZkbXZzcE9Ed3VnbUdQVkRGMzVCZ09MTDg0dnFPb2gvOUM1CjFyN1ZOcFFKcnBoMG8zVTNHcGxQbE9wa1JjRkZFR3Q4MHcrL2pzcUNNamJ3NkpiTWtEL3NmUlFrQ3lwTjhaa2wKTWdhbVRTeDVBcWgrOWZoU1Zudy9HN0RNdTZ4UFQ2M3J4U3R5RDVNenVqMVgKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURIVENDQWdXZ0F3SUJBZ0lVZHFYNk14MmU5dmVvZlFjV0hRWEZhaDA4ajJjd0RRWUpLb1pJaHZjTkFRRUwKQlFBd0dERVdNQlFHQTFVRUF3d05iRzlqWVd3dGQyVmlhRzl2YXpBZUZ3MHlOREE0TURjeE1UVTVNekZhRncweQpOVEE0TURjeE1UVTVNekZhTUJneEZqQVVCZ05WQkFNTURXeHZZMkZzTFhkbFltaHZiMnN3Z2dFaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURjc3ppcVZPNmF3UUo2SVREbk90a1pFS1NEVFdrWEFVZDEKaU9kQUo5Q24rZVZjdlAxNGhjVTU0ejZ5NXJwWXRVbXJDMlpZVUlhelViZzFDUXBQb253Q2RaSnlpT0FCNVppQwp4RmxWdk0yUmtvK0xoYzRIU080Yis0VUlDc0M4eUlrSDlKTTM1b2E0WVh2dmJGaFZicUFvejUxK2VianJwaDBkCmk0TGhJVHFuSnp1cXVCSnJUOTRTeTJvalVSSUlIQzdHdG9aNUlpRWVlZGkrRFNlZkt4WFhlL0dzT2xYV3VyVFUKVTg2b1BleTFIUlpSZXJaWG9hNHdSeDVqVkxidFNoL0JhYXVueFV1OHFJcVBFdFQ4aXZkdHhJRmc1NFN5UFl0ZApYZnRsNTFTa3pHRDh4UXRrMkEwZGZPeTFCdVBoK1NZcTc2SDhhUnZRVGlrZ3R0VS92TEVCQWdNQkFBR2pYekJkCk1EWUdBMVVkRVFRdk1DMkhCSDhBQUFHSEJBb0FBZ1NDQ1d4dlkyRnNhRzl6ZElJVWQyVmlhRzl2YXkxelpYSjIKWlhJdWJHOWpZV3d3RGdZRFZSMFBBUUgvQkFRREFnV2dNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01CTUEwRwpDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ3VPa2IvSStaQkUxNHBYSjhTUi9oNlk2VVRhTlpEVmpRMCtkSHV5aGFVCmZCRVRNMWZDYUpiQ2tmaGNtZEFvTGY0MzJUczBERmY4QTVybGlMTmQybGJodHFEclQxRGZUY1MwWkoxRTBIeHgKU1E3aDVZcjZvSk1mL2pDbWtheUZZSzh5RUlEdUo4Qmxmek1iVGlZL2Z2WHU1SHlvVi9uWkYzT2REM1pFWWtyTApVb3NsNEgzY1Z3WHVta3BDUjN0dDVvd3FvQnI5UUMyOEJvTjRxTDhqdWhvTCtZNTcyMUFKUExBYnRRZXRxWmFYClJEOXdLYW9BTFdLVFZIUzNiVWk2Y3JOK2RuV01YemtzNnBwNVNHYXk4K3czbFJOQnV0U3dpRWFHU202V092SGkKdXBOc2FxVEMrVGZHMXNzZ3c0cHR4WElrR2RoZ3ZUYnRZMTF5Ylh3eVdpcjMKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
rules:
- operations: [ "CREATE", "UPDATE" ]
apiGroups: [""]
......
......@@ -23,7 +23,19 @@ spec:
spec:
containers:
- name: l2sm-switch
image: alexdecb/l2sm-switch:2.5
image: alexdecb/l2sm-switch:2.6
resources: {}
env:
- name: NODENAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: NVETHS
value: "10"
- name: CONTROLLERIP
value: "l2sm-controller-service"
securityContext:
capabilities:
add: ["NET_ADMIN"]
ports:
- containerPort: 80
......@@ -286,6 +286,29 @@ func (r *OverlayReconciler) createExternalResources(ctx context.Context, overlay
Labels: map[string]string{
"app": name,
},
Annotations: map[string]string{
"k8s.v1.cni.cncf.io/networks": `[{
"name": "veth1", "ips": ["fe80::58d0:b8ff:fe42:debf/64"]
}, {
"name": "veth2", "ips": ["fe80::58d0:b8ff:fe42:debe/64"]
}, {
"name": "veth3", "ips": ["fe80::58d0:b8ff:fe42:debd/64"]
}, {
"name": "veth4", "ips": ["fe80::58d0:b8ff:fe42:debc/64"]
}, {
"name": "veth5", "ips": ["fe80::58d0:b8ff:fe42:debb/64"]
}, {
"name": "veth6", "ips": ["fe80::58d0:b8ff:fe42:deba/64"]
}, {
"name": "veth7", "ips": ["fe80::58d0:b8ff:fe42:deb9/64"]
}, {
"name": "veth8", "ips": ["fe80::58d0:b8ff:fe42:deb8/64"]
}, {
"name": "veth9", "ips": ["fe80::58d0:b8ff:fe42:deb7/64"]
}, {
"name": "veth10", "ips": ["fe80::58d0:b8ff:fe42:deb6/64"]
}]`,
},
},
Spec: corev1.PodSpec{
InitContainers: overlay.Spec.SwitchTemplate.Spec.InitContainers,
......
......@@ -5,6 +5,7 @@ import (
"errors"
"flag"
"fmt"
"net"
"os"
"ovs-switch/pkg/ovs"
)
......@@ -12,7 +13,7 @@ import (
type Node struct {
Name string `json:"name"`
NodeIP string `json:"nodeIP"`
NeighborNodes []string `json:"neighborNodes"`
NeighborNodes []string `json:"neighborNodes,omitempty"`
}
type Link struct {
......@@ -94,33 +95,45 @@ func takeArguments() (string, string, string, error) {
return configDir, *nodeName, *fileType, nil
}
/**
/*
*
Example:
{
"Nodes": [
{
"name": "l2sm1",
"nodeIP": "10.1.14.53"
},
{
"name": "l2sm2",
"nodeIP": "10.1.14.90"
}
],
"Links": [
{
"endpointA": "l2sm1",
"endpointB": "l2sm2"
}
]
}
{
"Nodes": [
{
"name": "l2sm1",
"nodeIP": "10.1.14.53"
},
{
"name": "l2sm2",
"nodeIP": "10.1.14.90"
}
],
"Links": [
{
"endpointA": "l2sm1",
"endpointB": "l2sm2"
}
]
}
*/
func createTopology(bridge ovs.Bridge, topology Topology, nodeName string) error {
nodeMap := make(map[string]string)
for _, node := range topology.Nodes {
nodeMap[node.Name] = node.NodeIP
var nodeIP string
if net.ParseIP(nodeIP) != nil {
nodeIP = node.NodeIP
} else {
ips, err := net.LookupHost(node.NodeIP)
if err != nil || len(ips) == 0 {
fmt.Printf("Failed to resolve %s\n", node.NodeIP)
continue
}
nodeIP = ips[0]
}
nodeMap[node.Name] = nodeIP
}
localIp := nodeMap[nodeName]
......@@ -167,14 +180,15 @@ func readFile(configDir string, dataStruct interface{}) error {
}
/**
/*
*
Example:
{
"Name": "l2sm1",
"nodeIP": "10.1.14.53",
"neighborNodes":["10.4.2.3","10.4.2.5"]
}
{
"Name": "l2sm1",
"nodeIP": "10.1.14.53",
"neighborNodes":["10.4.2.3","10.4.2.5"]
}
*/
func connectToNeighbors(bridge ovs.Bridge, node Node) error {
for vxlanNumber, neighborIp := range node.NeighborNodes {
......
......@@ -8,5 +8,8 @@ ovs-vswitchd --pidfile=/var/run/openvswitch/ovs-vswitchd.pid --detach
l2sm-init --n_veths=$NVETHS --controller_ip=$CONTROLLERIP
#l2sm-vxlans --node_name=$NODENAME /etc/l2sm/switchConfig.json
sleep 20
l2sm-vxlans --node_name=$NODENAME /etc/l2sm/topology.json
sleep infinity
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment