aboutsummaryrefslogtreecommitdiffstats
path: root/kud
diff options
context:
space:
mode:
Diffstat (limited to 'kud')
-rw-r--r--kud/demo/firewall/charts/packetgen/templates/service.yaml16
-rw-r--r--kud/demo/firewall/charts/packetgen/values.yaml7
-rw-r--r--kud/deployment_infra/images/nfd-master.yaml86
-rw-r--r--kud/deployment_infra/images/nfd-worker.yaml61
-rw-r--r--kud/deployment_infra/playbooks/configure-nfd.yml51
-rw-r--r--kud/deployment_infra/playbooks/configure-ovn-kubernetes.yml136
-rw-r--r--kud/deployment_infra/playbooks/kud-vars.yml4
-rwxr-xr-xkud/hosting_providers/vagrant/installer.sh2
-rwxr-xr-xkud/tests/nfd.sh34
-rwxr-xr-xkud/tests/ovn-kubernetes.sh136
10 files changed, 196 insertions, 337 deletions
diff --git a/kud/demo/firewall/charts/packetgen/templates/service.yaml b/kud/demo/firewall/charts/packetgen/templates/service.yaml
new file mode 100644
index 00000000..7b8fd9db
--- /dev/null
+++ b/kud/demo/firewall/charts/packetgen/templates/service.yaml
@@ -0,0 +1,16 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: packetgen-service
+ labels:
+ app: {{ include "packetgen.name" . }}
+ release: {{ .Release.Name }}
+ chart: {{ .Chart.Name }}
+spec:
+ type: {{ .Values.service.type }}
+ ports:
+ - port: {{ .Values.service.ports.port }}
+ nodePort: {{ .Values.service.ports.nodePort }}
+ selector:
+ app: {{ include "packetgen.name" . }}
+ release: {{ .Release.Name }}
diff --git a/kud/demo/firewall/charts/packetgen/values.yaml b/kud/demo/firewall/charts/packetgen/values.yaml
index 3df94080..689c3884 100644
--- a/kud/demo/firewall/charts/packetgen/values.yaml
+++ b/kud/demo/firewall/charts/packetgen/values.yaml
@@ -12,6 +12,13 @@ image:
nameOverride: ""
fullnameOverride: ""
+service:
+#serivce port value for packetgen service
+ type: NodePort
+ ports:
+ port: 2831
+ nodePort: 30831
+
resources:
limits:
memory: 4Gi
diff --git a/kud/deployment_infra/images/nfd-master.yaml b/kud/deployment_infra/images/nfd-master.yaml
new file mode 100644
index 00000000..846bb753
--- /dev/null
+++ b/kud/deployment_infra/images/nfd-master.yaml
@@ -0,0 +1,86 @@
+# Refernce NFD Master DaemonSet - https://github.com/kubernetes-sigs/node-feature-discovery/blob/master/nfd-master.yaml.template
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: node-feature-discovery # NFD namespace
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: nfd-master
+ namespace: node-feature-discovery
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: nfd-master
+rules:
+- apiGroups:
+ - ""
+ resources:
+ - nodes
+ verbs:
+ - get
+ - patch
+ - update
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: nfd-master
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: nfd-master
+subjects:
+- kind: ServiceAccount
+ name: nfd-master
+ namespace: node-feature-discovery
+---
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+ labels:
+ app: nfd-master
+ name: nfd-master
+ namespace: node-feature-discovery
+spec:
+ selector:
+ matchLabels:
+ app: nfd-master
+ template:
+ metadata:
+ labels:
+ app: nfd-master
+ spec:
+ serviceAccount: nfd-master
+ nodeSelector:
+ node-role.kubernetes.io/master: ""
+ tolerations:
+ - key: "node-role.kubernetes.io/master"
+ operator: "Equal"
+ value: ""
+ effect: "NoSchedule"
+ containers:
+ - env:
+ - name: NODE_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: spec.nodeName
+ image: quay.io/kubernetes_incubator/node-feature-discovery:v0.4.0
+ name: nfd-master
+ command:
+ - "nfd-master"
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: nfd-master
+ namespace: node-feature-discovery
+spec:
+ selector:
+ app: nfd-master
+ ports:
+ - protocol: TCP
+ port: 8080
+ type: ClusterIP
diff --git a/kud/deployment_infra/images/nfd-worker.yaml b/kud/deployment_infra/images/nfd-worker.yaml
new file mode 100644
index 00000000..44bec5cd
--- /dev/null
+++ b/kud/deployment_infra/images/nfd-worker.yaml
@@ -0,0 +1,61 @@
+# Reference to NFD worker DaemonSet - https://github.com/kubernetes-sigs/node-feature-discovery/blob/master/nfd-worker-daemonset.yaml.template
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+ labels:
+ app: nfd-worker
+ name: nfd-worker
+ namespace: node-feature-discovery
+spec:
+ selector:
+ matchLabels:
+ app: nfd-worker
+ template:
+ metadata:
+ labels:
+ app: nfd-worker
+ spec:
+ hostNetwork: true
+ dnsPolicy: ClusterFirstWithHostNet
+ containers:
+ - env:
+ - name: NODE_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: spec.nodeName
+ image: quay.io/kubernetes_incubator/node-feature-discovery:v0.4.0
+ name: nfd-worker
+ command:
+ - "nfd-worker"
+ args:
+ - "--sleep-interval=60s"
+ - "--server=nfd-master:8080"
+ volumeMounts:
+ - name: host-boot
+ mountPath: "/host-boot"
+ readOnly: true
+ - name: host-os-release
+ mountPath: "/host-etc/os-release"
+ readOnly: true
+ - name: host-sys
+ mountPath: "/host-sys"
+ - name: source-d
+ mountPath: "/etc/kubernetes/node-feature-discovery/source.d/"
+ - name: features-d
+ mountPath: "/etc/kubernetes/node-feature-discovery/features.d/"
+ volumes:
+ - name: host-boot
+ hostPath:
+ path: "/boot"
+ - name: host-os-release
+ hostPath:
+ path: "/etc/os-release"
+ - name: host-sys
+ hostPath:
+ path: "/sys"
+ - name: source-d
+ hostPath:
+ path: "/etc/kubernetes/node-feature-discovery/source.d/"
+ - name: features-d
+ hostPath:
+ path: "/etc/kubernetes/node-feature-discovery/features.d/"
diff --git a/kud/deployment_infra/playbooks/configure-nfd.yml b/kud/deployment_infra/playbooks/configure-nfd.yml
index 590212cf..32e7b38f 100644
--- a/kud/deployment_infra/playbooks/configure-nfd.yml
+++ b/kud/deployment_infra/playbooks/configure-nfd.yml
@@ -7,52 +7,9 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-
-- hosts: kube-node
- tasks:
- - name: Load kud variables
- include_vars:
- file: kud-vars.yml
- - name: clone NFD repo
- git:
- repo: "{{ nfd_url }}"
- dest: "{{ nfd_dest }}"
- version: "{{ nfd_version }}"
- force: yes
- when: nfd_source_type == "source"
- - name: build NFD image
- become: yes
- make:
- chdir: "{{ nfd_dest }}"
- - name: get NDF image name
- become: yes
- shell: "docker images | grep kubernetes_incubator | awk '{printf(\"%s:%s\\n\", $1,$2)}'"
- register: nfd_image
- - name: replace NFD image name
- lineinfile:
- path: "{{ nfd_dest }}/node-feature-discovery-{{ item }}.json.template"
- regexp: "\"image\": \"quay.io/kubernetes_incubator.*i"
- line: "\"image\": \"{{ nfd_image.stdout }}\","
- with_items:
- - daemonset
- - job
- - name: copying rbac and daemonset files
- fetch:
- src: "{{ nfd_dest }}/{{ item }}"
- dest: "/tmp/"
- flat: yes
- with_items:
- - rbac.yaml
- - node-feature-discovery-daemonset.json.template
-
- hosts: localhost
- pre_tasks:
- - name: Load kud variables
- include_vars:
- file: kud-vars.yml
tasks:
- - name: create service accounts
- command: "/usr/local/bin/kubectl apply -f /tmp/{{ item }}"
- with_items:
- - rbac.yaml
- - node-feature-discovery-daemonset.json.template
+ - name: Apply NFD Master Daemonset
+ command: "/usr/local/bin/kubectl apply -f {{ playbook_dir }}/../images/nfd-master.yaml"
+ - name: Apply NFD Worker Daemonset
+ command: "/usr/local/bin/kubectl apply -f {{ playbook_dir }}/../images/nfd-worker.yaml"
diff --git a/kud/deployment_infra/playbooks/configure-ovn-kubernetes.yml b/kud/deployment_infra/playbooks/configure-ovn-kubernetes.yml
deleted file mode 100644
index 5f1c9f64..00000000
--- a/kud/deployment_infra/playbooks/configure-ovn-kubernetes.yml
+++ /dev/null
@@ -1,136 +0,0 @@
----
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2018
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-- import_playbook: configure-ovn.yml
-
-- hosts: ovn-central:ovn-controller
- vars:
- central_node_ip: "{{ hostvars[groups['ovn-central'][0]]['ansible_ssh_host'] }}"
- environment:
- PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin/"
- pre_tasks:
- - name: Load kud variables
- include_vars:
- file: kud-vars.yml
- roles:
- - role: andrewrothstein.go
- go_ver: "{{ go_version }}"
- tasks:
- - name: Load kud variables
- include_vars:
- file: kud-vars.yml
- - name: clone ovn-kubernetes repo
- git:
- repo: "{{ ovn_kubernetes_url }}"
- dest: "{{ ovn_kubernetes_dest }}"
- version: "{{ ovn_kubernetes_version }}"
- force: yes
- when: ovn_kubernetes_source_type == "source"
- - name: getting binaries
- block:
- - name: download ovn-kubernetes tarball
- get_url:
- url: "{{ ovn_kubernetes_url }}"
- dest: /tmp/ovn-kubernetes.tar.gz
- - name: extract ovn-kubernetes source code
- unarchive:
- src: /tmp/ovn-kubernetes.tar.gz
- dest: /tmp/
- remote_src: yes
- - name: rename extracted folder
- command: "mv /tmp/ovn-kubernetes-{{ ovn_kubernetes_version }}/ {{ ovn_kubernetes_dest }}/"
- when: ovn_kubernetes_source_type == "tarball"
- - name: make ovnkube files
- make:
- chdir: "{{ ovn_kubernetes_dest }}/go-controller"
- - name: install ovnkube files
- make:
- chdir: "{{ ovn_kubernetes_dest }}/go-controller"
- target: install
- become: yes
- - name: create OVN Kubernetes config file
- become: yes
- blockinfile:
- path: /etc/openvswitch/ovn_k8s.conf
- create: yes
- block: |
- [logging]
- loglevel=5
- logfile=/var/log/openvswitch/ovnkube.log
-
- [cni]
- conf-dir=/etc/cni/net.d
- plugin=ovn-k8s-cni-overlay
- - name: create ovnkube logging directory
- file:
- path: /var/log/openvswitch
- state: directory
-
-- hosts: ovn-central
- become: yes
- vars:
- central_node_ip: "{{ hostvars[groups['ovn-central'][0]]['ansible_ssh_host'] }}"
- tasks:
- - name: create ovnkube central systemd service
- blockinfile:
- path: /etc/systemd/system/ovn-k8s-central.service
- create: yes
- block: |
- [Unit]
- Description=OVN Central Daemon
-
- [Service]
- ExecStart=/usr/bin/ovnkube \
- -net-controller \
- -init-master="{{ ansible_hostname }}" \
- -init-node="{{ ansible_hostname }}" \
- -nodeport \
- -k8s-kubeconfig=/etc/kubernetes/admin.conf \
- -k8s-token="test" \
- -nb-address="tcp://{{ central_node_ip }}:6641" \
- -sb-address="tcp://{{ central_node_ip }}:6642"
-
- [Install]
- WantedBy=multi-user.target
- - name: start ovnkube central systemd service
- service:
- name: ovn-k8s-central
- state: started
- enabled: yes
-
-- hosts: ovn-controller
- become: yes
- vars:
- central_node_ip: "{{ hostvars[groups['ovn-central'][0]]['ansible_ssh_host'] }}"
- tasks:
- - name: create ovnkube controller systemd service
- blockinfile:
- path: /etc/systemd/system/ovn-k8s-host.service
- create: yes
- block: |
- [Unit]
- Description=OVN Controller Daemon
-
- [Service]
- ExecStart=/usr/bin/ovnkube \
- -init-gateways \
- -init-node="{{ ansible_hostname }}" \
- -nodeport \
- -k8s-kubeconfig=/etc/kubernetes/admin.conf \
- -k8s-token="test" \
- -nb-address="tcp://{{ central_node_ip }}:6641" \
- -sb-address="tcp://{{ central_node_ip }}:6642"
-
- [Install]
- WantedBy=multi-user.target
- - name: start ovnkube controller systemd service
- service:
- name: ovn-k8s-host
- state: started
- enabled: yes
diff --git a/kud/deployment_infra/playbooks/kud-vars.yml b/kud/deployment_infra/playbooks/kud-vars.yml
index 15e24ef1..a9910f8d 100644
--- a/kud/deployment_infra/playbooks/kud-vars.yml
+++ b/kud/deployment_infra/playbooks/kud-vars.yml
@@ -33,10 +33,6 @@ virtlet_url: "https://github.com/Mirantis/virtlet/releases/download/v{{ virtlet_
#virtlet_version: 68e11b8f1db2c78b063126899f0e60910700975d
#virtlet_url: "https://github.com/Mirantis/virtlet"
-nfd_dest: "{{ base_dest }}/nfd"
-nfd_source_type: "source"
-nfd_version: 175305b1ad73be7301ac94add475cec6fef797a9
-nfd_url: "https://github.com/kubernetes-incubator/node-feature-discovery"
istio_dest: "{{ base_dest }}/istio"
istio_source_type: "tarball"
diff --git a/kud/hosting_providers/vagrant/installer.sh b/kud/hosting_providers/vagrant/installer.sh
index 51ca22e8..41b21f64 100755
--- a/kud/hosting_providers/vagrant/installer.sh
+++ b/kud/hosting_providers/vagrant/installer.sh
@@ -150,7 +150,7 @@ function install_addons {
sudo ansible-galaxy install $verbose -r $kud_infra_folder/galaxy-requirements.yml --ignore-errors
ansible-playbook $verbose -i $kud_inventory $kud_playbooks/configure-kud.yml | sudo tee $log_folder/setup-kud.log
- for addon in ${KUD_ADDONS:-virtlet ovn4nfv}; do
+ for addon in ${KUD_ADDONS:-virtlet ovn4nfv nfd}; do
echo "Deploying $addon using configure-$addon.yml playbook.."
ansible-playbook $verbose -i $kud_inventory $kud_playbooks/configure-${addon}.yml | sudo tee $log_folder/setup-${addon}.log
if [[ "${testing_enabled}" == "true" ]]; then
diff --git a/kud/tests/nfd.sh b/kud/tests/nfd.sh
index b7e1f3e8..abf9f92b 100755
--- a/kud/tests/nfd.sh
+++ b/kud/tests/nfd.sh
@@ -15,40 +15,40 @@ set -o pipefail
source _common_test.sh
rm -f $HOME/*.yaml
-
pod_name=nfd-pod
install_deps
cat << POD > $HOME/$pod_name.yaml
-apiVersion:
- v1
+apiVersion: v1
kind: Pod
metadata:
name: $pod_name
- labels:
- env: test
spec:
+ affinity:
+ nodeAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ nodeSelectorTerms:
+ - matchExpressions:
+ - key: "feature.node.kubernetes.io/kernel-version.major"
+ operator: Gt
+ values:
+ - '3'
containers:
- - name: nginx
- image: nginx
-nodeSelector:
- node.alpha.kubernetes-incubator.io/nfd-network-SRIOV: true
+ - name: with-node-affinity
+ image: gcr.io/google_containers/pause:2.0
POD
-
if $(kubectl version &>/dev/null); then
labels=$(kubectl get nodes -o json | jq .items[].metadata.labels)
echo $labels
- if [[ $labels != *"node.alpha.kubernetes-incubator.io"* ]]; then
+ if [[ $labels != *"kubernetes.io"* ]]; then
exit 1
fi
-
kubectl delete pod $pod_name --ignore-not-found=true --now
while kubectl get pod $pod_name &>/dev/null; do
sleep 5
done
kubectl create -f $HOME/$pod_name.yaml --validate=false
-
for pod in $pod_name; do
status_phase=""
while [[ $status_phase != "Running" ]]; do
@@ -57,9 +57,17 @@ if $(kubectl version &>/dev/null); then
echo "$(date +%H:%M:%S) - $pod : $new_phase"
status_phase=$new_phase
fi
+
+ if [[ $new_phase == "Running" ]]; then
+ echo " Test is complete.."
+ fi
if [[ $new_phase == "Err"* ]]; then
exit 1
fi
done
done
+ kubectl delete pod $pod_name
+ while kubectl get pod $pod_name &>/dev/null; do
+ sleep 5
+ done
fi
diff --git a/kud/tests/ovn-kubernetes.sh b/kud/tests/ovn-kubernetes.sh
deleted file mode 100755
index 95d216bf..00000000
--- a/kud/tests/ovn-kubernetes.sh
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/bin/bash
-# SPDX-license-identifier: Apache-2.0
-##############################################################################
-# Copyright (c) 2018
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-apache_pod_name=apachetwin
-nginx_pod_name=nginxtwin
-
-cat << APACHEPOD > $HOME/apache-pod.yaml
-apiVersion: v1
-kind: Pod
-metadata:
- name: $apache_pod_name
- labels:
- name: webserver
-spec:
- containers:
- - name: apachetwin
- image: "busybox"
- command: ["top"]
- stdin: true
- tty: true
-APACHEPOD
-
-cat << NGINXPOD > $HOME/nginx-pod.yaml
-apiVersion: v1
-kind: Pod
-metadata:
- name: $nginx_pod_name
- labels:
- name: webserver
-spec:
- containers:
- - name: nginxtwin
- image: "busybox"
- command: ["top"]
- stdin: true
- tty: true
-NGINXPOD
-
-cat << APACHEEW > $HOME/apache-e-w.yaml
-apiVersion: v1
-kind: Service
-metadata:
- labels:
- name: apacheservice
- role: service
- name: apacheservice
-spec:
- ports:
- - port: 8800
- targetPort: 80
- protocol: TCP
- name: tcp
- selector:
- name: webserver
-APACHEEW
-
-cat << APACHENS > $HOME/apache-n-s.yaml
-apiVersion: v1
-kind: Service
-metadata:
- labels:
- name: apacheexternal
- role: service
- name: apacheexternal
-spec:
- ports:
- - port: 8800
- targetPort: 80
- protocol: TCP
- name: tcp
- selector:
- name: webserver
- type: NodePort
-APACHENS
-
-if $(kubectl version &>/dev/null); then
- kubectl apply -f $HOME/apache-e-w.yaml
- kubectl apply -f $HOME/apache-n-s.yaml
-
- kubectl delete pod $apache_pod_name --ignore-not-found=true --now
- kubectl delete pod $nginx_pod_name --ignore-not-found=true --now
- while kubectl get pod $apache_pod_name &>/dev/null; do
- sleep 5
- done
- while kubectl get pod $nginx_pod_name &>/dev/null; do
- sleep 5
- done
- kubectl create -f $HOME/apache-pod.yaml
- kubectl create -f $HOME/nginx-pod.yaml
-
- status_phase=""
- while [[ $status_phase != "Running" ]]; do
- new_phase=$(kubectl get pods $apache_pod_name | awk 'NR==2{print $3}')
- if [[ $new_phase != $status_phase ]]; then
- echo "$(date +%H:%M:%S) - $new_phase"
- status_phase=$new_phase
- fi
- if [[ $new_phase == "Err"* ]]; then
- exit 1
- fi
- done
- status_phase=""
- while [[ $status_phase != "Running" ]]; do
- new_phase=$(kubectl get pods $nginx_pod_name | awk 'NR==2{print $3}')
- if [[ $new_phase != $status_phase ]]; then
- echo "$(date +%H:%M:%S) - $new_phase"
- status_phase=$new_phase
- fi
- if [[ $new_phase == "Err"* ]]; then
- exit 1
- fi
- done
- apache_ovn=$(kubectl get pod $apache_pod_name -o jsonpath="{.metadata.annotations.ovn}")
- nginx_ovn=$(kubectl get pod $nginx_pod_name -o jsonpath="{.metadata.annotations.ovn}")
-
- echo $apache_ovn
- if [[ $apache_ovn != *"\"ip_address\":\"11.11."* ]]; then
- exit 1
- fi
-
- echo $nginx_ovn
- if [[ $nginx_ovn != *"\"ip_address\":\"11.11."* ]]; then
- exit 1
- fi
-fi