summaryrefslogtreecommitdiffstats
path: root/kud
diff options
context:
space:
mode:
Diffstat (limited to 'kud')
-rw-r--r--kud/deployment_infra/images/nfn.yml228
-rw-r--r--kud/deployment_infra/playbooks/configure-ovn.yml8
-rw-r--r--kud/tests/ovn4nfv_pn_test.yml51
3 files changed, 285 insertions, 2 deletions
diff --git a/kud/deployment_infra/images/nfn.yml b/kud/deployment_infra/images/nfn.yml
index 6e583b95..23d8773a 100644
--- a/kud/deployment_infra/images/nfn.yml
+++ b/kud/deployment_infra/images/nfn.yml
@@ -119,6 +119,156 @@ spec:
served: true
storage: true
+
+---
+
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+ name: providernetworks.k8s.plugin.opnfv.org
+spec:
+ group: k8s.plugin.opnfv.org
+ names:
+ kind: ProviderNetwork
+ listKind: ProviderNetworkList
+ plural: providernetworks
+ singular: providernetwork
+ scope: Namespaced
+ subresources:
+ status: {}
+ validation:
+ openAPIV3Schema:
+ properties:
+ apiVersion:
+ description: 'APIVersion defines the versioned schema of this representation
+ of an object. Servers should convert recognized schemas to the latest
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
+ type: string
+ kind:
+ description: 'Kind is a string value representing the REST resource this
+ object represents. Servers may infer this from the endpoint the client
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+ type: string
+ metadata:
+ type: object
+ spec:
+ properties:
+ cniType:
+ description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
+ Important: Run "operator-sdk generate k8s" to regenerate code after
+ modifying this file Add custom validation using kubebuilder tags:
+ https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html'
+ type: string
+ dns:
+ properties:
+ domain:
+ type: string
+ nameservers:
+ items:
+ type: string
+ type: array
+ options:
+ items:
+ type: string
+ type: array
+ search:
+ items:
+ type: string
+ type: array
+ type: object
+ ipv4Subnets:
+ items:
+ properties:
+ excludeIps:
+ type: string
+ gateway:
+ type: string
+ name:
+ type: string
+ subnet:
+ type: string
+ required:
+ - name
+ - subnet
+ type: object
+ type: array
+ ipv6Subnets:
+ items:
+ properties:
+ excludeIps:
+ type: string
+ gateway:
+ type: string
+ name:
+ type: string
+ subnet:
+ type: string
+ required:
+ - name
+ - subnet
+ type: object
+ type: array
+ providerNetType:
+ type: string
+ routes:
+ items:
+ properties:
+ dst:
+ type: string
+ gw:
+ type: string
+ required:
+ - dst
+ type: object
+ type: array
+ vlan:
+ properties:
+ logicalInterfaceName:
+ type: string
+ nodeLabelList:
+ description: '"all"/"any"(in which case a node will be randomly
+ selected)/"specific"(see below)'
+ items:
+ type: string
+ type: array
+ providerInterfaceName:
+ description: if VlanNodeSelector is value "specific" then this array
+ provides a list of nodes labels
+ type: string
+ vlanId:
+ type: string
+ vlanNodeSelector:
+ type: string
+ required:
+ - vlanId
+ - vlanNodeSelector
+ - providerInterfaceName
+ type: object
+ required:
+ - cniType
+ - ipv4Subnets
+ - providerNetType
+ - vlan
+ type: object
+ status:
+ properties:
+ state:
+ description: 'INSERT ADDITIONAL STATUS FIELD - define observed state
+ of cluster Important: Run "operator-sdk generate k8s" to regenerate
+ code after modifying this file Add custom validation using kubebuilder
+ tags: https://book-v1.book.kubebuilder.io/beyond_basics/generating_crd.html'
+ type: string
+ required:
+ - state
+ type: object
+ version: v1alpha1
+ versions:
+ - name: v1alpha1
+ served: true
+ storage: true
+
+
+
---
apiVersion: v1
@@ -145,6 +295,7 @@ rules:
- events
- configmaps
- secrets
+ - nodes
verbs:
- '*'
- apiGroups:
@@ -194,6 +345,24 @@ roleRef:
name: k8s-nfn-cr
apiGroup: rbac.authorization.k8s.io
+
+---
+
+apiVersion: v1
+kind: Service
+metadata:
+ name: nfn-operator
+ namespace: operator
+spec:
+ type: NodePort
+ ports:
+ - port: 50000
+ protocol: TCP
+ targetPort: 50000
+ selector:
+ name: nfn-operator
+
+
---
apiVersion: apps/v1
@@ -227,9 +396,12 @@ spec:
serviceAccountName: k8s-nfn-sa
containers:
- name: nfn-operator
- image: rtsood/nfn-operator:latest
+ image: rtsood/nfn-operator:0.4
command: ["/usr/local/bin/entrypoint", "operator"]
imagePullPolicy: IfNotPresent
+ ports:
+ - containerPort: 50000
+ protocol: TCP
env:
- name: HOST_IP
valueFrom:
@@ -287,7 +459,7 @@ spec:
effect: NoSchedule
containers:
- name: ovn4nfv
- image: rtsood/nfn-operator:latest
+ image: rtsood/nfn-operator:0.4
command: ["/usr/local/bin/entrypoint", "cni"]
resources:
requests:
@@ -319,4 +491,56 @@ spec:
- key: ovn4nfv_k8s.conf
path: ovn4nfv_k8s.conf
+---
+apiVersion: extensions/v1beta1
+kind: DaemonSet
+metadata:
+ name: nfn-agent
+ namespace: operator
+ labels:
+ app: nfn-agent
+spec:
+ updateStrategy:
+ type: RollingUpdate
+ template:
+ metadata:
+ labels:
+ app: nfn-agent
+ spec:
+ hostNetwork: true
+ nodeSelector:
+ beta.kubernetes.io/arch: amd64
+ tolerations:
+ - operator: Exists
+ effect: NoSchedule
+ containers:
+ - name: nfn-agent
+ image: rtsood/nfn-operator:0.4
+ command: ["/usr/local/bin/entrypoint", "agent"]
+ resources:
+ requests:
+ cpu: "100m"
+ memory: "50Mi"
+ limits:
+ cpu: "100m"
+ memory: "50Mi"
+ env:
+ - name: NFN_NODE_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: spec.nodeName
+ securityContext:
+ privileged: true
+ volumeMounts:
+ - mountPath: /run/openvswitch
+ name: host-run-ovs
+ - mountPath: /var/run/openvswitch
+ name: host-var-run-ovs
+ volumes:
+ - name: host-run-ovs
+ hostPath:
+ path: /run/openvswitch
+ - name: host-var-run-ovs
+ hostPath:
+ path: /var/run/openvswitch
diff --git a/kud/deployment_infra/playbooks/configure-ovn.yml b/kud/deployment_infra/playbooks/configure-ovn.yml
index 28de6e94..fc4c21a4 100644
--- a/kud/deployment_infra/playbooks/configure-ovn.yml
+++ b/kud/deployment_infra/playbooks/configure-ovn.yml
@@ -15,6 +15,14 @@
file: "{{ item }}"
with_items:
- "{{ ansible_os_family }}.yml"
+ - name: get Wand GPI files
+ get_url:
+ url: https://packages.wand.net.nz/keyring.gpg
+ dest: /etc/apt/trusted.gpg.d/wand.gpg
+ - name: add WAND Debian Repo
+ apt_repository:
+ repo: "deb https://packages.wand.net.nz {{ ansible_lsb.codename }} ovs-2.10"
+ state: present
- name: install OpenVSwitch packages
package:
name: "{{ item }}"
diff --git a/kud/tests/ovn4nfv_pn_test.yml b/kud/tests/ovn4nfv_pn_test.yml
new file mode 100644
index 00000000..0d02fad5
--- /dev/null
+++ b/kud/tests/ovn4nfv_pn_test.yml
@@ -0,0 +1,51 @@
+apiVersion: k8s.plugin.opnfv.org/v1alpha1
+kind: ProviderNetwork
+metadata:
+ name: pnetwork
+spec:
+ cniType: ovn4nfv
+ ipv4Subnets:
+ - subnet: 172.16.33.0/24
+ name: subnet1
+ gateway: 172.16.33.1/24
+ excludeIps: 172.16.33.2 172.16.33.5..172.16.33.10
+ providerNetType: VLAN
+ vlan:
+ vlanId: "100"
+ providerInterfaceName: eth1
+ logicalInterfaceName: eth1.100
+ vlanNodeSelector: specific
+ nodeLabelList:
+ - kubernetes.io/hostname=localhost
+
+---
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: pnw
+ labels:
+ app: pnw
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: pnw
+ template:
+ metadata:
+ labels:
+ app: pnw
+ annotations:
+ k8s.v1.cni.cncf.io/networks: '[{ "name": "ovn-networkobj"}]'
+ k8s.plugin.opnfv.org/nfn-network: '{ "type": "ovn4nfv", "interface": [{ "name": "pnetwork", "interface": "net0" }]}'
+
+ spec:
+ containers:
+ - name: pnw
+ image: "busybox"
+ imagePullPolicy: Always
+ stdin: true
+ tty: true
+ securityContext:
+ privileged: true
+