Update nfn-operator to add provider networks 65/96365/4
authorRitu Sood <ritu.sood@intel.com>
Sun, 29 Sep 2019 19:27:39 +0000 (12:27 -0700)
committerRitu Sood <ritu.sood@intel.com>
Sun, 29 Dec 2019 14:24:17 +0000 (06:24 -0800)
Issue-ID: MULTICLOUD-474
Signed-off-by: Ritu Sood <ritu.sood@intel.com>
Change-Id: I92d0d34a46b8faadda8aa698307ede4306316ef7

kud/deployment_infra/images/nfn.yml
kud/tests/ovn4nfv_pn_test.yml [new file with mode: 0644]

index 6e583b9..23d8773 100644 (file)
@@ -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/tests/ovn4nfv_pn_test.yml b/kud/tests/ovn4nfv_pn_test.yml
new file mode 100644 (file)
index 0000000..0d02fad
--- /dev/null
@@ -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
+