123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- # Note:
- # This deployment file is designed for 'quickstart' of multus, easy installation to test it,
- # hence this deployment yaml does not care about following things intentionally.
- # - various configuration options
- # - minor deployment scenario
- # - upgrade/update/uninstall scenario
- # Multus team understand users deployment scenarios are diverse, hence we do not cover
- # comprehensive deployment scenario. We expect that it is covered by each platform deployment.
- ---
- apiVersion: apiextensions.k8s.io/v1
- kind: CustomResourceDefinition
- metadata:
- name: network-attachment-definitions.k8s.cni.cncf.io
- spec:
- group: k8s.cni.cncf.io
- scope: Namespaced
- names:
- plural: network-attachment-definitions
- singular: network-attachment-definition
- kind: NetworkAttachmentDefinition
- shortNames:
- - net-attach-def
- versions:
- - name: v1
- served: true
- storage: true
- schema:
- openAPIV3Schema:
- description: 'NetworkAttachmentDefinition is a CRD schema specified by the Network Plumbing
- Working Group to express the intent for attaching pods to one or more logical or physical
- networks. More information available at: https://github.com/k8snetworkplumbingwg/multi-net-spec'
- type: object
- properties:
- apiVersion:
- description: 'APIVersion defines the versioned schema of this represen
- tation 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/sig-architecture/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/sig-architecture/api-conventions.md#types-kinds'
- type: string
- metadata:
- type: object
- spec:
- description: 'NetworkAttachmentDefinition spec defines the desired state of a network attachment'
- type: object
- properties:
- config:
- description: 'NetworkAttachmentDefinition config is a JSON-formatted CNI configuration'
- type: string
- ---
- kind: ClusterRole
- apiVersion: rbac.authorization.k8s.io/v1
- metadata:
- name: multus
- rules:
- - apiGroups: ["k8s.cni.cncf.io"]
- resources:
- - '*'
- verbs:
- - '*'
- - apiGroups:
- - ""
- resources:
- - pods
- - pods/status
- verbs:
- - get
- - list
- - update
- - watch
- - apiGroups:
- - ""
- - events.k8s.io
- resources:
- - events
- verbs:
- - create
- - patch
- - update
- ---
- kind: ClusterRoleBinding
- apiVersion: rbac.authorization.k8s.io/v1
- metadata:
- name: multus
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: multus
- subjects:
- - kind: ServiceAccount
- name: multus
- namespace: kube-system
- ---
- apiVersion: v1
- kind: ServiceAccount
- metadata:
- name: multus
- namespace: kube-system
- ---
- kind: ConfigMap
- apiVersion: v1
- metadata:
- name: multus-daemon-config
- namespace: kube-system
- labels:
- tier: node
- app: multus
- data:
- daemon-config.json: |
- {
- "chrootDir": "/hostroot",
- "cniVersion": "0.3.1",
- "logLevel": "verbose",
- "logToStderr": true,
- "cniConfigDir": "/host/etc/cni/net.d",
- "multusAutoconfigDir": "/host/etc/cni/net.d",
- "multusConfigFile": "auto",
- "socketDir": "/host/run/multus/"
- }
- ---
- apiVersion: apps/v1
- kind: DaemonSet
- metadata:
- name: kube-multus-ds
- namespace: kube-system
- labels:
- tier: node
- app: multus
- name: multus
- spec:
- selector:
- matchLabels:
- name: multus
- updateStrategy:
- type: RollingUpdate
- template:
- metadata:
- labels:
- tier: node
- app: multus
- name: multus
- spec:
- hostNetwork: true
- hostPID: true
- tolerations:
- - operator: Exists
- effect: NoSchedule
- - operator: Exists
- effect: NoExecute
- serviceAccountName: multus
- containers:
- - name: kube-multus
- image: ghcr.io/k8snetworkplumbingwg/multus-cni:snapshot-thick
- command: [ "/usr/src/multus-cni/bin/multus-daemon" ]
- resources:
- requests:
- cpu: "100m"
- memory: "50Mi"
- limits:
- cpu: "100m"
- memory: "50Mi"
- securityContext:
- privileged: true
- terminationMessagePolicy: FallbackToLogsOnError
- volumeMounts:
- - name: cni
- mountPath: /host/etc/cni/net.d
- # multus-daemon expects that cnibin path must be identical between pod and container host.
- # e.g. if the cni bin is in '/opt/cni/bin' on the container host side, then it should be mount to '/opt/cni/bin' in multus-daemon,
- # not to any other directory, like '/opt/bin' or '/usr/bin'.
- - name: cnibin
- mountPath: /opt/cni/bin
- - name: host-run
- mountPath: /host/run
- - name: host-var-lib-cni-multus
- mountPath: /var/lib/cni/multus
- - name: host-var-lib-kubelet
- mountPath: /var/lib/kubelet
- mountPropagation: HostToContainer
- - name: host-run-k8s-cni-cncf-io
- mountPath: /run/k8s.cni.cncf.io
- - name: host-run-netns
- mountPath: /run/netns
- mountPropagation: HostToContainer
- - name: multus-daemon-config
- mountPath: /etc/cni/net.d/multus.d
- readOnly: true
- - name: hostroot
- mountPath: /hostroot
- mountPropagation: HostToContainer
- env:
- - name: MULTUS_NODE_NAME
- valueFrom:
- fieldRef:
- fieldPath: spec.nodeName
- initContainers:
- - name: install-multus-binary
- image: ghcr.io/k8snetworkplumbingwg/multus-cni:snapshot-thick
- command:
- - "cp"
- - "/usr/src/multus-cni/bin/multus-shim"
- - "/host/opt/cni/bin/multus-shim"
- resources:
- requests:
- cpu: "10m"
- memory: "15Mi"
- securityContext:
- privileged: true
- terminationMessagePolicy: FallbackToLogsOnError
- volumeMounts:
- - name: cnibin
- mountPath: /host/opt/cni/bin
- mountPropagation: Bidirectional
- terminationGracePeriodSeconds: 10
- volumes:
- - name: cni
- hostPath:
- path: /etc/cni/net.d
- - name: cnibin
- hostPath:
- path: /opt/cni/bin
- - name: hostroot
- hostPath:
- path: /
- - name: multus-daemon-config
- configMap:
- name: multus-daemon-config
- items:
- - key: daemon-config.json
- path: daemon-config.json
- - name: host-run
- hostPath:
- path: /run
- - name: host-var-lib-cni-multus
- hostPath:
- path: /var/lib/cni/multus
- - name: host-var-lib-kubelet
- hostPath:
- path: /var/lib/kubelet
- - name: host-run-k8s-cni-cncf-io
- hostPath:
- path: /run/k8s.cni.cncf.io
- - name: host-run-netns
- hostPath:
- path: /run/netns/
|