Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upstream merge 2020-04-15 #139

Merged
merged 25 commits into from
Apr 16, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f554f8a
daemonset.sh: Using j2 tool to generate ovn-setup.yaml file.
Pardhakeswar Apr 10, 2020
c835bcc
Fix up ovntest.MustParseIPNet() compat, use in pod_annotation_test.go
danwinship Apr 9, 2020
3cbbc2d
util: add node_annotations_test.go
danwinship Apr 9, 2020
19c5a84
Simplify l3-gateway-config annotation setters
danwinship Apr 9, 2020
843dbbf
Bump K8S to v1.17.2 with KIND
trozet Mar 5, 2020
47eb99c
Update l3-gateway-config annotation for dual-stack
danwinship Mar 29, 2020
a1af86c
Merge pull request #1112 from trozet/bump_kind_k8s_version
dcbw Apr 14, 2020
fdcb415
Merge pull request #1239 from danwinship/dual-stack-gateway
dcbw Apr 14, 2020
ef14b95
Merge pull request #1243 from Pardhakeswar/j2tool_upstream
dcbw Apr 14, 2020
3714ba6
node: rearrange management-port_linux_test.go
danwinship Apr 10, 2020
aad5ed0
node: add dual-stack support to createManagementPort
danwinship Apr 10, 2020
0779e3b
ci: make log names readable in github Actions UI
dcbw Apr 13, 2020
283a65a
ci: standardize KIND_CLUSTER_NAME
dcbw Apr 13, 2020
4f355a6
ci: use e2e.test directly instead of kubetest
dcbw Apr 13, 2020
ec6b298
kind: retry kubectl commands a few times
dcbw Apr 13, 2020
720ebee
util: add unit test for GatewayInit() / GatewayCleanup()
danwinship Apr 11, 2020
d00802f
util: add unit tests for hostsubnet and join subnet annotations
danwinship Apr 11, 2020
fe874c1
ovn: add a unit test of NetworkPolicy address set management
danwinship Oct 16, 2019
4c3cf21
Merge pull request #1245 from danwinship/unit-tests
dcbw Apr 14, 2020
b7243d8
Merge pull request #1246 from dcbw/ci-artifacts-log-names
dcbw Apr 14, 2020
0522d1a
regression: fix nil-pointer reference panic in defer function
girishmg Apr 15, 2020
eec717c
Merge pull request #1252 from girishmg/fix_regression
dcbw Apr 15, 2020
66e518d
Merge pull request #1241 from danwinship/dual-stack-management-port
dcbw Apr 15, 2020
3d5805b
Merge remote-tracking branch 'ovnorg/master'
dcbw Apr 15, 2020
c1a77d3
cni: fix up wait-for-IP-in-OVS for multiple IPs
dcbw Apr 15, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ on:
branches: [ master ]

env:
GO_VERSION: 1.12
K8S_VERSION: v1.16.4
GO_VERSION: 1.13.4
K8S_VERSION: v1.17.2
KIND_CLUSTER_NAME: ovn
KIND_INSTALL_INGRESS: true

Expand Down Expand Up @@ -168,11 +168,11 @@ jobs:
if: always()
run: |
mkdir -p /tmp/kind/logs
kind export logs --name ${KIND_CLUSTER_NAME} /tmp/kind/logs
kind export logs --name ${KIND_CLUSTER_NAME} --loglevel=debug /tmp/kind/logs

- name: Upload logs
if: always()
uses: actions/upload-artifact@v1
with:
name: kind-logs-${{ github.run_id }}-${{ env.JOB_NAME }}
name: kind-logs-${{ env.JOB_NAME }}-${{ github.run_id }}
path: /tmp/kind/logs
48 changes: 34 additions & 14 deletions contrib/kind.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,26 @@

set -euxo pipefail

K8S_VERSION=${K8S_VERSION:-v1.16.4}
run_kubectl() {
local retries=0
local attempts=10
while true; do
kubectl $@
if [[ $? == 0 ]]; then
break
fi

((retries += 1))
if [[ "${retries}" -gt ${attempts} ]]; then
echo "error: 'kubectl $@' did not succeed, failing"
exit 1
fi
echo "info: waiting for 'kubectl $@' to succeed..."
sleep 1
done
}

K8S_VERSION=${K8S_VERSION:-v1.17.2}
KIND_INSTALL_INGRESS=${KIND_INSTALL_INGRESS:-false}
KIND_HA=${KIND_HA:-false}
if [ "$KIND_HA" == true ]; then
Expand All @@ -23,9 +42,10 @@ fi
sed -i "s/apiServerAddress.*/apiServerAddress: ${API_IP}/" ${KIND_CONFIG}

# Create KIND cluster
CLUSTER_NAME=${CLUSTER_NAME:-ovn}
kind create cluster --name ${CLUSTER_NAME} --kubeconfig ${HOME}/admin.conf --image kindest/node:${K8S_VERSION} --config=${KIND_CONFIG}
KIND_CLUSTER_NAME=${KIND_CLUSTER_NAME:-ovn}
kind create cluster --name ${KIND_CLUSTER_NAME} --kubeconfig ${HOME}/admin.conf --image kindest/node:${K8S_VERSION} --config=${KIND_CONFIG}
export KUBECONFIG=${HOME}/admin.conf
cat ${KUBECONFIG}
mkdir -p /tmp/kind
sudo chmod 777 /tmp/kind
count=0
Expand All @@ -50,28 +70,28 @@ echo "ref: $(git rev-parse --symbolic-full-name HEAD) commit: $(git rev-parse
docker build -t ovn-daemonset-f:dev -f Dockerfile.fedora .
./daemonset.sh --image=docker.io/library/ovn-daemonset-f:dev --net-cidr=10.244.0.0/16 --svc-cidr=10.96.0.0/12 --gateway-mode="local" --k8s-apiserver=https://${API_IP}:11337 --kind --master-loglevel=5
popd
kind load docker-image ovn-daemonset-f:dev --name ${CLUSTER_NAME}
kind load docker-image ovn-daemonset-f:dev --name ${KIND_CLUSTER_NAME}
pushd ../dist/yaml
kubectl create -f ovn-setup.yaml
run_kubectl create -f ovn-setup.yaml
CONTROL_NODES=$(docker ps -f name=ovn-control | grep -v NAMES | awk '{ print $NF }')
for n in $CONTROL_NODES; do
kubectl label node $n k8s.ovn.org/ovnkube-db=true
run_kubectl label node $n k8s.ovn.org/ovnkube-db=true
if [ "$KIND_REMOVE_TAINT" == true ]; then
kubectl taint node $n node-role.kubernetes.io/master:NoSchedule-
run_kubectl taint node $n node-role.kubernetes.io/master:NoSchedule-
fi
done
if [ "$KIND_HA" == true ]; then
kubectl create -f ovnkube-db-raft.yaml
run_kubectl create -f ovnkube-db-raft.yaml
else
kubectl create -f ovnkube-db.yaml
run_kubectl create -f ovnkube-db.yaml
fi
kubectl create -f ovnkube-master.yaml
kubectl create -f ovnkube-node.yaml
run_kubectl create -f ovnkube-master.yaml
run_kubectl create -f ovnkube-node.yaml
popd
kubectl -n kube-system delete ds kube-proxy
run_kubectl -n kube-system delete ds kube-proxy
kind get clusters
kind get nodes --name ${CLUSTER_NAME}
kind get nodes --name ${KIND_CLUSTER_NAME}
kind export kubeconfig --name ovn
if [ "$KIND_INSTALL_INGRESS" == true ]; then
kubectl create -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
run_kubectl create -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
fi
7 changes: 3 additions & 4 deletions dist/images/daemonset.sh
Original file line number Diff line number Diff line change
Expand Up @@ -202,10 +202,9 @@ echo "svc_cidr: ${svc_cidr}"
echo "k8s_apiserver: ${k8s_apiserver}"
echo "mtu: ${mtu}"

sed "s,{{ net_cidr }},${net_cidr},
s,{{ svc_cidr }},${svc_cidr},
s,{{ mtu_value }},${mtu},
s,{{ k8s_apiserver }},${k8s_apiserver}," ../templates/ovn-setup.yaml.j2 >../yaml/ovn-setup.yaml
net_cidr=${net_cidr} svc_cidr=${svc_cidr} \
mtu_value=${mtu} k8s_apiserver=${k8s_apiserver} \
j2 ../templates/ovn-setup.yaml.j2 -o ../yaml/ovn-setup.yaml

cp ../templates/ovnkube-monitor.yaml.j2 ../yaml/ovnkube-monitor.yaml

Expand Down
2 changes: 1 addition & 1 deletion go-controller/go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/ovn-org/ovn-kubernetes/go-controller

go 1.12
go 1.13

require (
github.com/Mellanox/sriovnet v0.0.0-20190516174650-73402dc8fcaa
Expand Down
2 changes: 1 addition & 1 deletion go-controller/pkg/cni/helper_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ func (pr *PodRequest) ConfigureInterface(namespace string, podName string, ifInf
if err != nil {
return false, nil
}
return strings.Contains(stdout, ifInfo.IP.IP.String()), nil
return strings.Contains(stdout, ifInfo.IPs[0].IP.String()), nil
})
if err != nil {
return nil, fmt.Errorf("timed out dumping br-int flow entries for sandbox: %v", err)
Expand Down
4 changes: 3 additions & 1 deletion go-controller/pkg/node/gateway_init.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,9 @@ func (n *OvnNode) initGateway(subnet *net.IPNet, nodeAnnotator kube.Annotator,
}
prFn, err = n.initSharedGateway(subnet, gatewayNextHop, gatewayIntf, nodeAnnotator)
case config.GatewayModeDisabled:
err = util.SetDisabledL3GatewayConfig(nodeAnnotator)
err = util.SetL3GatewayConfig(nodeAnnotator, &util.L3GatewayConfig{
Mode: config.GatewayModeDisabled,
})
}
if err != nil {
return err
Expand Down
16 changes: 14 additions & 2 deletions go-controller/pkg/node/gateway_localnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,8 +178,20 @@ func initLocalnetGateway(nodeName string, subnet *net.IPNet, wf *factory.WatchFa
return err
}

err = util.SetLocalL3GatewayConfig(nodeAnnotator, ifaceID, macAddress,
gatewayIPCIDR, gatewayNextHop, config.Gateway.NodeportEnable)
chassisID, err := util.GetNodeChassisID()
if err != nil {
return err
}

err = util.SetL3GatewayConfig(nodeAnnotator, &util.L3GatewayConfig{
Mode: config.GatewayModeLocal,
ChassisID: chassisID,
InterfaceID: ifaceID,
MACAddress: macAddress,
IPAddresses: []*net.IPNet{gatewayIPCIDR},
NextHops: []net.IP{gatewayNextHop},
NodePortEnable: config.Gateway.NodeportEnable,
})
if err != nil {
return err
}
Expand Down
17 changes: 15 additions & 2 deletions go-controller/pkg/node/gateway_shared_intf.go
Original file line number Diff line number Diff line change
Expand Up @@ -334,8 +334,21 @@ func (n *OvnNode) initSharedGateway(subnet *net.IPNet, gwNextHop net.IP, gwIntf
return nil, fmt.Errorf("failed to set up shared interface gateway: %v", err)
}

err = util.SetSharedL3GatewayConfig(nodeAnnotator, ifaceID, macAddress, ipAddress, gwNextHop,
config.Gateway.NodeportEnable, config.Gateway.VLANID)
chassisID, err := util.GetNodeChassisID()
if err != nil {
return nil, err
}

err = util.SetL3GatewayConfig(nodeAnnotator, &util.L3GatewayConfig{
Mode: config.GatewayModeShared,
ChassisID: chassisID,
InterfaceID: ifaceID,
MACAddress: macAddress,
IPAddresses: []*net.IPNet{ipAddress},
NextHops: []net.IP{gwNextHop},
NodePortEnable: config.Gateway.NodeportEnable,
VLANID: &config.Gateway.VLANID,
})
if err != nil {
return nil, err
}
Expand Down
8 changes: 2 additions & 6 deletions go-controller/pkg/node/management-port.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,8 @@ import (
"k8s.io/klog"
)

func (n *OvnNode) createManagementPort(localSubnet *net.IPNet, nodeAnnotator kube.Annotator,
func (n *OvnNode) createManagementPort(hostSubnets []*net.IPNet, nodeAnnotator kube.Annotator,
waiter *startupWaiter) error {
// Retrieve the routerIP and mangementPortIP for a given localSubnet
routerIP, portIP := util.GetNodeWellKnownAddresses(localSubnet)
routerMAC := util.IPAddrToHWAddr(routerIP.IP)

// Kubernetes emits events when pods are created. The event will contain
// only lowercase letters of the hostname even though the kubelet is
// started with a hostname that contains lowercase and uppercase letters.
Expand Down Expand Up @@ -60,7 +56,7 @@ func (n *OvnNode) createManagementPort(localSubnet *net.IPNet, nodeAnnotator kub
return err
}

err = createPlatformManagementPort(util.K8sMgmtIntfName, portIP, routerIP.IP, routerMAC, n.stopChan)
err = createPlatformManagementPort(util.K8sMgmtIntfName, hostSubnets, n.stopChan)
if err != nil {
return err
}
Expand Down