diff options
Diffstat (limited to 'kud')
-rw-r--r-- | kud/demo/firewall/charts/packetgen/templates/service.yaml | 16 | ||||
-rw-r--r-- | kud/demo/firewall/charts/packetgen/values.yaml | 7 | ||||
-rw-r--r-- | kud/deployment_infra/images/nfd-master.yaml | 86 | ||||
-rw-r--r-- | kud/deployment_infra/images/nfd-worker.yaml | 61 | ||||
-rw-r--r-- | kud/deployment_infra/playbooks/configure-nfd.yml | 51 | ||||
-rw-r--r-- | kud/deployment_infra/playbooks/configure-ovn-kubernetes.yml | 136 | ||||
-rw-r--r-- | kud/deployment_infra/playbooks/kud-vars.yml | 4 | ||||
-rwxr-xr-x | kud/hosting_providers/vagrant/installer.sh | 2 | ||||
-rwxr-xr-x | kud/tests/nfd.sh | 34 | ||||
-rwxr-xr-x | kud/tests/ovn-kubernetes.sh | 136 |
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 |