From ca9305d63cf6f980934e5d3fc508e33c6ce66667 Mon Sep 17 00:00:00 2001 From: Ritu Sood Date: Sun, 29 Sep 2019 12:27:39 -0700 Subject: Update nfn-operator to add provider networks Issue-ID: MULTICLOUD-474 Signed-off-by: Ritu Sood Change-Id: I92d0d34a46b8faadda8aa698307ede4306316ef7 --- kud/deployment_infra/images/nfn.yml | 228 +++++++++++++++++++++++++++++++++++- kud/tests/ovn4nfv_pn_test.yml | 51 ++++++++ 2 files changed, 277 insertions(+), 2 deletions(-) create mode 100644 kud/tests/ovn4nfv_pn_test.yml (limited to 'kud') 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/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 + -- cgit 1.2.3-korg