summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorKubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com>2021-12-01 10:51:37 +0800
committerGitHub <noreply@github.com>2021-12-01 10:51:37 +0800
commit594484db606f1244a5af2723a30dd9bbf96b996f (patch)
tree46a251083923194ce310da6e80d7ff10cb945d0c /build
parentMerge pull request #3403 from zjcomeon/fix/err-3 (diff)
parentmake service pluggable (diff)
downloadkubeedge-594484db606f1244a5af2723a30dd9bbf96b996f.tar.gz
Merge pull request #3304 from zhu733756/support-helm
Support helm repo for cloudcore
Diffstat (limited to 'build')
-rw-r--r--build/helm/cloudcore/Chart.yaml7
-rw-r--r--build/helm/cloudcore/README.md60
-rw-r--r--build/helm/cloudcore/crds/cluster_objectsync_v1alpha1.yaml75
-rw-r--r--build/helm/cloudcore/crds/devices_v1alpha2_device.yaml534
-rw-r--r--build/helm/cloudcore/crds/devices_v1alpha2_devicemodel.yaml163
-rw-r--r--build/helm/cloudcore/crds/objectsync_v1alpha1.yaml74
-rw-r--r--build/helm/cloudcore/crds/router_v1_rule.yaml65
-rw-r--r--build/helm/cloudcore/crds/router_v1_ruleEndpoint.yaml43
-rw-r--r--build/helm/cloudcore/templates/_helpers.tpl36
-rw-r--r--build/helm/cloudcore/templates/configmap_cloudcore.yaml48
-rw-r--r--build/helm/cloudcore/templates/daemonset_iptablesmanager.yaml47
-rw-r--r--build/helm/cloudcore/templates/deployment_cloudcore.yaml98
-rw-r--r--build/helm/cloudcore/templates/rbac_cloudcore.yaml61
-rw-r--r--build/helm/cloudcore/templates/rbac_iptablesmanager.yaml40
-rw-r--r--build/helm/cloudcore/templates/secret_cloudcore.yaml12
-rw-r--r--build/helm/cloudcore/templates/service_cloudcore.yaml50
-rw-r--r--build/helm/cloudcore/values.yaml96
-rw-r--r--build/helm/edgemesh/README.md3
18 files changed, 1512 insertions, 0 deletions
diff --git a/build/helm/cloudcore/Chart.yaml b/build/helm/cloudcore/Chart.yaml
new file mode 100644
index 000000000..aa9a52bd7
--- /dev/null
+++ b/build/helm/cloudcore/Chart.yaml
@@ -0,0 +1,7 @@
+apiVersion: v1
+name: cloudcore
+version: 0.1.0
+appVersion: 1.8.2
+description: The KubeEdge cloudcore component.
+sources:
+- https://github.com/kubeedge/kubeedge
diff --git a/build/helm/cloudcore/README.md b/build/helm/cloudcore/README.md
new file mode 100644
index 000000000..f1d6c9fff
--- /dev/null
+++ b/build/helm/cloudcore/README.md
@@ -0,0 +1,60 @@
+# CloudCore Application
+
+Visit https://github.com/kubeedge/kubeedge for more information.
+
+## Install examples
+
+```
+helm upgrade --install cloudcore ./cloudcore --namespace kubeedge --create-namespace -f ./cloudcore/values.yaml --set cloudCore.modules.cloudHub.advertiseAddress[0]=192.168.88.6
+```
+
+> Note that the parameter `cloudCore.modules.cloudHub.advertiseAddress` is indispensable to start the KubeEdge cloudcore component on the cloud side.
+
+> Add `--dry-run` if only for testing purposes.
+
+## Custom Values
+
+### cloudcore
+
+- `cloudCore.modules.cloudHub.advertiseAddress`, defines the unmissable public IPs which can be accessed by edge nodes.
+- `cloudCore.hostNetWork`, default `true`, which shares the host network, used for setting the forward iptables rules on the host.
+- `cloudCore.image.repository`, default `kubeedge`, defines the image repo.
+- `cloudCore.image.tag`, default `v1.8.2`, defines the image tag.
+- `cloudCore.image.pullPolicy`, default `IfNotPresent`, defines the policies to pull images.
+- `cloudCore.image.imagePullSecrets`, defines the secrets to pull images.
+- `cloudCore.labels`, defines the labels.
+- `cloudCore.annotions`, defines the annotions.
+- `cloudCore.affinity`, `cloudCore.nodeSelector`, `cloudCore.tolerations`, defines the node scheduling policies.
+- `cloudCore.resources`, defines the resources limits and requests.
+- `cloudCore.modules.cloudHub.nodeLimit`, defines the edge nodes limits.
+- `cloudCore.modules.cloudHub.websocket.enable`, default `true`.
+- `cloudCore.modules.cloudHub.quic.enable`, default `false`.
+- `cloudCore.modules.cloudHub.https.enable`, default `true`.
+- `cloudCore.modules.cloudStream.enable`, default `true`.
+- `cloudCore.modules.dynamicController.enable`, default `false`.
+- `cloudCore.modules.router.enable`, default `false`.
+- `cloudCore.service.type`, default `NodePort`.
+- `cloudCore.service.cloudhubNodePort`, default `30000`, which defines the exposed node port for cloudhub service.
+- `cloudCore.service.cloudhubQuicNodePort`, default `30001`, which defines the exposed node port for cloudhub quic protocol.
+- `cloudCore.service.cloudhubHttpsNodePort`, default `30002`, which defines the exposed node port for cloudhub https protocol.
+- `cloudCore.service.cloudstreamNodePort`, default `30003`, which defines the exposed node port for cloud stream service.
+- `cloudCore.service.tunnelNodePort`, default `30004`, which defines the exposed node port for cloud tunnel service.
+
+### iptables-manager
+- `iptablesManager.enable`, default `true`
+- `iptablesManager.mode`, default `internal`, can be modified to `external`, the external mode will set up a iptables manager component which shares the host network. That mode can be enabled on version > v1.8.2. See pr https://github.com/kubeedge/kubeedge/pull/3265.
+- `iptablesManager.image.repository`, default `kubeedge`, defines the image repo.
+- `iptablesManager.image.tag`, default `v1.8.2`, defines the image tag.
+- `iptablesManager.image.pullPolicy`, default `IfNotPresent`, defines the policies to pull images.
+- `iptablesManager.image.imagePullSecrets`, defines the secrets to pull images.
+- `iptablesManager.labels`, defines the labels.
+- `iptablesManager.annotions`, defines the annotions.
+- `iptablesManager.affinity`, `iptablesManager.nodeSelector`, `iptablesManager.tolerations`, defines the node scheduling policies.
+- `iptablesManager.resources`, defines the resources limits and requests.
+
+## Uninstall
+
+```
+helm uninstall cloudcore -n kubeedge
+kubectl delete ns kubeedge
+``` \ No newline at end of file
diff --git a/build/helm/cloudcore/crds/cluster_objectsync_v1alpha1.yaml b/build/helm/cloudcore/crds/cluster_objectsync_v1alpha1.yaml
new file mode 100644
index 000000000..3b34ba233
--- /dev/null
+++ b/build/helm/cloudcore/crds/cluster_objectsync_v1alpha1.yaml
@@ -0,0 +1,75 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ creationTimestamp: null
+ name: clusterobjectsyncs.reliablesyncs.kubeedge.io
+spec:
+ group: reliablesyncs.kubeedge.io
+ names:
+ kind: ClusterObjectSync
+ listKind: ClusterObjectSyncList
+ plural: clusterobjectsyncs
+ singular: clusterobjectsync
+ scope: Cluster
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: ClusterObjectSync stores the state of the cluster level, nonNamespaced
+ object that was successfully persisted to the edge node. ClusterObjectSync
+ name is a concatenation of the node name which receiving the object and
+ the object UUID.
+ 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/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: ObjectSyncSpec stores the details of objects that persist
+ to the edge.
+ properties:
+ objectAPIVersion:
+ description: ObjectAPIVersion is the APIVersion of the object that
+ was successfully persist to the edge node.
+ type: string
+ objectKind:
+ description: ObjectType is the kind of the object that was successfully
+ persist to the edge node.
+ type: string
+ objectName:
+ description: ObjectName is the name of the object that was successfully
+ persist to the edge node.
+ type: string
+ type: object
+ status:
+ description: ObjectSyncSpec stores the resourceversion of objects that
+ persist to the edge.
+ properties:
+ objectResourceVersion:
+ description: ObjectResourceVersion is the resourceversion of the object
+ that was successfully persist to the edge node.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/build/helm/cloudcore/crds/devices_v1alpha2_device.yaml b/build/helm/cloudcore/crds/devices_v1alpha2_device.yaml
new file mode 100644
index 000000000..313df0991
--- /dev/null
+++ b/build/helm/cloudcore/crds/devices_v1alpha2_device.yaml
@@ -0,0 +1,534 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ creationTimestamp: null
+ name: devices.devices.kubeedge.io
+spec:
+ group: devices.kubeedge.io
+ names:
+ kind: Device
+ listKind: DeviceList
+ plural: devices
+ singular: device
+ scope: Namespaced
+ versions:
+ - name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: Device is the Schema for the devices API
+ 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/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: DeviceSpec represents a single device instance. It is an
+ instantation of a device model.
+ properties:
+ data:
+ description: Data section describe a list of time-series properties
+ which should be processed on edge node.
+ properties:
+ dataProperties:
+ description: 'Required: A list of data properties, which are not
+ required to be processed by edgecore'
+ items:
+ description: DataProperty represents the device property for
+ external use.
+ properties:
+ metadata:
+ additionalProperties:
+ type: string
+ description: Additional metadata like timestamp when the
+ value was reported etc.
+ type: object
+ propertyName:
+ description: 'Required: The property name for which should
+ be processed by external apps. This property should be
+ present in the device model.'
+ type: string
+ type: object
+ type: array
+ dataTopic:
+ description: Topic used by mapper, all data collected from dataProperties
+ should be published to this topic, the default value is $ke/events/device/+/data/update
+ type: string
+ type: object
+ deviceModelRef:
+ description: 'Required: DeviceModelRef is reference to the device
+ model used as a template to create the device instance.'
+ properties:
+ name:
+ description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+ TODO: Add other useful fields. apiVersion, kind, uid?'
+ type: string
+ type: object
+ nodeSelector:
+ description: NodeSelector indicates the binding preferences between
+ devices and nodes. Refer to k8s.io/kubernetes/pkg/apis/core NodeSelector
+ for more details
+ properties:
+ nodeSelectorTerms:
+ description: Required. A list of node selector terms. The terms
+ are ORed.
+ items:
+ description: A null or empty node selector term matches no objects.
+ The requirements of them are ANDed. The TopologySelectorTerm
+ type implements a subset of the NodeSelectorTerm.
+ properties:
+ matchExpressions:
+ description: A list of node selector requirements by node's
+ labels.
+ items:
+ description: A node selector requirement is a selector
+ that contains values, a key, and an operator that relates
+ the key and values.
+ properties:
+ key:
+ description: The label key that the selector applies
+ to.
+ type: string
+ operator:
+ description: Represents a key's relationship to a
+ set of values. Valid operators are In, NotIn, Exists,
+ DoesNotExist. Gt, and Lt.
+ type: string
+ values:
+ description: An array of string values. If the operator
+ is In or NotIn, the values array must be non-empty.
+ If the operator is Exists or DoesNotExist, the values
+ array must be empty. If the operator is Gt or Lt,
+ the values array must have a single element, which
+ will be interpreted as an integer. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ matchFields:
+ description: A list of node selector requirements by node's
+ fields.
+ items:
+ description: A node selector requirement is a selector
+ that contains values, a key, and an operator that relates
+ the key and values.
+ properties:
+ key:
+ description: The label key that the selector applies
+ to.
+ type: string
+ operator:
+ description: Represents a key's relationship to a
+ set of values. Valid operators are In, NotIn, Exists,
+ DoesNotExist. Gt, and Lt.
+ type: string
+ values:
+ description: An array of string values. If the operator
+ is In or NotIn, the values array must be non-empty.
+ If the operator is Exists or DoesNotExist, the values
+ array must be empty. If the operator is Gt or Lt,
+ the values array must have a single element, which
+ will be interpreted as an integer. This array is
+ replaced during a strategic merge patch.
+ items:
+ type: string
+ type: array
+ required:
+ - key
+ - operator
+ type: object
+ type: array
+ type: object
+ type: array
+ required:
+ - nodeSelectorTerms
+ type: object
+ propertyVisitors:
+ description: List of property visitors which describe how to access
+ the device properties. PropertyVisitors must unique by propertyVisitor.propertyName.
+ items:
+ description: DevicePropertyVisitor describes the specifics of accessing
+ a particular device property. Visitors are intended to be consumed
+ by device mappers which connect to devices and collect data /
+ perform actions on the device.
+ properties:
+ bluetooth:
+ description: Bluetooth represents a set of additional visitor
+ config fields of bluetooth protocol.
+ properties:
+ characteristicUUID:
+ description: 'Required: Unique ID of the corresponding operation'
+ type: string
+ dataConverter:
+ description: Responsible for converting the data being read
+ from the bluetooth device into a form that is understandable
+ by the platform
+ properties:
+ endIndex:
+ description: 'Required: Specifies the end index of incoming
+ byte stream to be considered to convert the data the
+ value specified should be inclusive for example if
+ 3 is specified it includes the third index'
+ type: integer
+ orderOfOperations:
+ description: Specifies in what order the operations(which
+ are required to be performed to convert incoming data
+ into understandable form) are performed
+ items:
+ description: Specify the operation that should be
+ performed to convert incoming data into understandable
+ form
+ properties:
+ operationType:
+ description: 'Required: Specifies the operation
+ to be performed to convert incoming data'
+ type: string
+ operationValue:
+ description: 'Required: Specifies with what value
+ the operation is to be performed'
+ type: number
+ type: object
+ type: array
+ shiftLeft:
+ description: Refers to the number of bits to shift left,
+ if left-shift operation is necessary for conversion
+ type: integer
+ shiftRight:
+ description: Refers to the number of bits to shift right,
+ if right-shift operation is necessary for conversion
+ type: integer
+ startIndex:
+ description: 'Required: Specifies the start index of
+ the incoming byte stream to be considered to convert
+ the data. For example: start-index:2, end-index:3
+ concatenates the value present at second and third
+ index of the incoming byte stream. If we want to reverse
+ the order we can give it as start-index:3, end-index:2'
+ type: integer
+ type: object
+ dataWrite:
+ additionalProperties:
+ format: byte
+ type: string
+ description: 'Responsible for converting the data coming
+ from the platform into a form that is understood by the
+ bluetooth device For example: "ON":[1], "OFF":[0]'
+ type: object
+ type: object
+ collectCycle:
+ description: Define how frequent mapper will collect from device.
+ format: int64
+ type: integer
+ customizedProtocol:
+ description: CustomizedProtocol represents a set of visitor
+ config fields of bluetooth protocol.
+ properties:
+ configData:
+ description: 'Required: The configData of customized protocol'
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ protocolName:
+ description: 'Required: name of customized protocol'
+ type: string
+ type: object
+ customizedValues:
+ description: Customized values for visitor of provided protocols
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ modbus:
+ description: Modbus represents a set of additional visitor config
+ fields of modbus protocol.
+ properties:
+ isRegisterSwap:
+ description: Indicates whether the high and low register
+ swapped. Defaults to false.
+ type: boolean
+ isSwap:
+ description: Indicates whether the high and low byte swapped.
+ Defaults to false.
+ type: boolean
+ limit:
+ description: 'Required: Limit number of registers to read/write.'
+ format: int64
+ type: integer
+ offset:
+ description: 'Required: Offset indicates the starting register
+ number to read/write data.'
+ format: int64
+ type: integer
+ register:
+ description: 'Required: Type of register'
+ enum:
+ - CoilRegister
+ - DiscreteInputRegister
+ - InputRegister
+ - HoldingRegister
+ type: string
+ scale:
+ description: The scale to convert raw property data into
+ final units. Defaults to 1.0
+ type: number
+ type: object
+ opcua:
+ description: Opcua represents a set of additional visitor config
+ fields of opc-ua protocol.
+ properties:
+ browseName:
+ description: The name of opc-ua node
+ type: string
+ nodeID:
+ description: 'Required: The ID of opc-ua node, e.g. "ns=1,i=1005"'
+ type: string
+ type: object
+ propertyName:
+ description: 'Required: The device property name to be accessed.
+ This should refer to one of the device properties defined
+ in the device model.'
+ type: string
+ reportCycle:
+ description: Define how frequent mapper will report the value.
+ format: int64
+ type: integer
+ type: object
+ type: array
+ protocol:
+ description: 'Required: The protocol configuration used to connect
+ to the device.'
+ properties:
+ bluetooth:
+ description: Protocol configuration for bluetooth
+ properties:
+ macAddress:
+ description: Unique identifier assigned to the device.
+ type: string
+ type: object
+ common:
+ description: Configuration for protocol common part
+ properties:
+ collectRetryTimes:
+ description: Define retry times of mapper will collect from
+ device.
+ format: int64
+ type: integer
+ collectTimeout:
+ description: Define timeout of mapper collect from device.
+ format: int64
+ type: integer
+ collectType:
+ description: Define collect type, sync or async.
+ enum:
+ - sync
+ - async
+ type: string
+ com:
+ properties:
+ baudRate:
+ description: Required. BaudRate 115200|57600|38400|19200|9600|4800|2400|1800|1200|600|300|200|150|134|110|75|50
+ enum:
+ - 115200
+ - 57600
+ - 38400
+ - 19200
+ - 9600
+ - 4800
+ - 2400
+ - 1800
+ - 1200
+ - 600
+ - 300
+ - 200
+ - 150
+ - 134
+ - 110
+ - 75
+ - 50
+ format: int64
+ type: integer
+ dataBits:
+ description: Required. Valid values are 8, 7, 6, 5.
+ enum:
+ - 8
+ - 7
+ - 6
+ - 5
+ format: int64
+ type: integer
+ parity:
+ description: Required. Valid options are "none", "even",
+ "odd". Defaults to "none".
+ enum:
+ - none
+ - even
+ - odd
+ type: string
+ serialPort:
+ description: Required.
+ type: string
+ stopBits:
+ description: Required. Bit that stops 1|2
+ enum:
+ - 1
+ - 2
+ format: int64
+ type: integer
+ type: object
+ commType:
+ description: Communication type, like tcp client, tcp server
+ or COM
+ type: string
+ customizedValues:
+ description: Customized values for provided protocol
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ reconnRetryTimes:
+ description: Reconnecting retry times
+ format: int64
+ type: integer
+ reconnTimeout:
+ description: Reconnection timeout
+ format: int64
+ type: integer
+ tcp:
+ properties:
+ ip:
+ description: Required.
+ type: string
+ port:
+ description: Required.
+ format: int64
+ type: integer
+ type: object
+ type: object
+ customizedProtocol:
+ description: Configuration for customized protocol
+ properties:
+ configData:
+ description: Any config data
+ type: object
+ x-kubernetes-preserve-unknown-fields: true
+ protocolName:
+ description: Unique protocol name Required.
+ type: string
+ type: object
+ modbus:
+ description: Protocol configuration for modbus
+ properties:
+ slaveID:
+ description: Required. 0-255
+ format: int64
+ type: integer
+ type: object
+ opcua:
+ description: Protocol configuration for opc-ua
+ properties:
+ certificate:
+ description: Certificate for access opc server.
+ type: string
+ password:
+ description: Password for access opc server.
+ type: string
+ privateKey:
+ description: PrivateKey for access opc server.
+ type: string
+ securityMode:
+ description: Defaults to "none".
+ type: string
+ securityPolicy:
+ description: Defaults to "none".
+ type: string
+ timeout:
+ description: Timeout seconds for the opc server connection.???
+ format: int64
+ type: integer
+ url:
+ description: 'Required: The URL for opc server endpoint.'
+ type: string
+ userName:
+ description: Username for access opc server.
+ type: string
+ type: object
+ type: object
+ type: object
+ status:
+ description: DeviceStatus reports the device state and the desired/reported
+ values of twin attributes.
+ properties:
+ twins:
+ description: 'A list of device twins containing desired/reported desired/reported
+ values of twin properties.. Optional: A passive device won''t have
+ twin properties and this list could be empty.'
+ items:
+ description: Twin provides a logical representation of control properties
+ (writable properties in the device model). The properties can
+ have a Desired state and a Reported state. The cloud configures
+ the `Desired`state of a device property and this configuration
+ update is pushed to the edge node. The mapper sends a command
+ to the device to change this property value as per the desired
+ state . It receives the `Reported` state of the property once
+ the previous operation is complete and sends the reported state
+ to the cloud. Offline device interaction in the edge is possible
+ via twin properties for control/command operations.
+ properties:
+ desired:
+ description: 'Required: the desired property value.'
+ properties:
+ metadata:
+ additionalProperties:
+ type: string
+ description: Additional metadata like timestamp when the
+ value was reported etc.
+ type: object
+ value:
+ description: 'Required: The value for this property.'
+ type: string
+ required:
+ - value
+ type: object
+ propertyName:
+ description: 'Required: The property name for which the desired/reported
+ values are specified. This property should be present in the
+ device model.'
+ type: string
+ reported:
+ description: 'Required: the reported property value.'
+ properties:
+ metadata:
+ additionalProperties:
+ type: string
+ description: Additional metadata like timestamp when the
+ value was reported etc.
+ type: object
+ value:
+ description: 'Required: The value for this property.'
+ type: string
+ required:
+ - value
+ type: object
+ type: object
+ type: array
+ type: object
+ type: object
+ served: true
+ storage: true
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/build/helm/cloudcore/crds/devices_v1alpha2_devicemodel.yaml b/build/helm/cloudcore/crds/devices_v1alpha2_devicemodel.yaml
new file mode 100644
index 000000000..eb10c666f
--- /dev/null
+++ b/build/helm/cloudcore/crds/devices_v1alpha2_devicemodel.yaml
@@ -0,0 +1,163 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ creationTimestamp: null
+ name: devicemodels.devices.kubeedge.io
+spec:
+ group: devices.kubeedge.io
+ names:
+ kind: DeviceModel
+ listKind: DeviceModelList
+ plural: devicemodels
+ singular: devicemodel
+ scope: Namespaced
+ versions:
+ - name: v1alpha2
+ schema:
+ openAPIV3Schema:
+ description: DeviceModel is the Schema for the device model API
+ 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/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: DeviceModelSpec defines the model / template for a device.It
+ is a blueprint which describes the device capabilities and access mechanism
+ via property visitors.
+ properties:
+ properties:
+ description: 'Required: List of device properties.'
+ items:
+ description: DeviceProperty describes an individual device property
+ / attribute like temperature / humidity etc.
+ properties:
+ description:
+ description: The device property description.
+ type: string
+ name:
+ description: 'Required: The device property name.'
+ type: string
+ type:
+ description: 'Required: PropertyType represents the type and
+ data validation of the property.'
+ properties:
+ boolean:
+ properties:
+ accessMode:
+ description: 'Required: Access mode of property, ReadWrite
+ or ReadOnly.'
+ enum:
+ - ReadWrite
+ - ReadOnly
+ type: string
+ defaultValue:
+ type: boolean
+ type: object
+ bytes:
+ properties:
+ accessMode:
+ description: 'Required: Access mode of property, ReadWrite
+ or ReadOnly.'
+ enum:
+ - ReadWrite
+ - ReadOnly
+ type: string
+ type: object
+ double:
+ properties:
+ accessMode:
+ description: 'Required: Access mode of property, ReadWrite
+ or ReadOnly.'
+ enum:
+ - ReadWrite
+ - ReadOnly
+ type: string
+ defaultValue:
+ type: number
+ maximum:
+ type: number
+ minimum:
+ type: number
+ unit:
+ description: The unit of the property
+ type: string
+ type: object
+ float:
+ properties:
+ accessMode:
+ description: 'Required: Access mode of property, ReadWrite
+ or ReadOnly.'
+ enum:
+ - ReadWrite
+ - ReadOnly
+ type: string
+ defaultValue:
+ type: number
+ maximum:
+ type: number
+ minimum:
+ type: number
+ unit:
+ description: The unit of the property
+ type: string
+ type: object
+ int:
+ properties:
+ accessMode:
+ description: 'Required: Access mode of property, ReadWrite
+ or ReadOnly.'
+ enum:
+ - ReadWrite
+ - ReadOnly
+ type: string
+ defaultValue:
+ format: int64
+ type: integer
+ maximum:
+ format: int64
+ type: integer
+ minimum:
+ format: int64
+ type: integer
+ unit:
+ description: The unit of the property
+ type: string
+ type: object
+ string:
+ properties:
+ accessMode:
+ description: 'Required: Access mode of property, ReadWrite
+ or ReadOnly.'
+ enum:
+ - ReadWrite
+ - ReadOnly
+ type: string
+ defaultValue:
+ type: string
+ type: object
+ type: object
+ type: object
+ type: array
+ type: object
+ type: object
+ served: true
+ storage: true
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/build/helm/cloudcore/crds/objectsync_v1alpha1.yaml b/build/helm/cloudcore/crds/objectsync_v1alpha1.yaml
new file mode 100644
index 000000000..851336c53
--- /dev/null
+++ b/build/helm/cloudcore/crds/objectsync_v1alpha1.yaml
@@ -0,0 +1,74 @@
+
+---
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ annotations:
+ controller-gen.kubebuilder.io/version: v0.6.2
+ creationTimestamp: null
+ name: objectsyncs.reliablesyncs.kubeedge.io
+spec:
+ group: reliablesyncs.kubeedge.io
+ names:
+ kind: ObjectSync
+ listKind: ObjectSyncList
+ plural: objectsyncs
+ singular: objectsync
+ scope: Namespaced
+ versions:
+ - name: v1alpha1
+ schema:
+ openAPIV3Schema:
+ description: ObjectSync stores the state of the namespaced object that was
+ successfully persisted to the edge node. ObjectSync name is a concatenation
+ of the node name which receiving the object and the object UUID.
+ 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/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: ObjectSyncSpec stores the details of objects that persist
+ to the edge.
+ properties:
+ objectAPIVersion:
+ description: ObjectAPIVersion is the APIVersion of the object that
+ was successfully persist to the edge node.
+ type: string
+ objectKind:
+ description: ObjectType is the kind of the object that was successfully
+ persist to the edge node.
+ type: string
+ objectName:
+ description: ObjectName is the name of the object that was successfully
+ persist to the edge node.
+ type: string
+ type: object
+ status:
+ description: ObjectSyncSpec stores the resourceversion of objects that
+ persist to the edge.
+ properties:
+ objectResourceVersion:
+ description: ObjectResourceVersion is the resourceversion of the object
+ that was successfully persist to the edge node.
+ type: string
+ type: object
+ type: object
+ served: true
+ storage: true
+ subresources:
+ status: {}
+status:
+ acceptedNames:
+ kind: ""
+ plural: ""
+ conditions: []
+ storedVersions: []
diff --git a/build/helm/cloudcore/crds/router_v1_rule.yaml b/build/helm/cloudcore/crds/router_v1_rule.yaml
new file mode 100644
index 000000000..e93930c3a
--- /dev/null
+++ b/build/helm/cloudcore/crds/router_v1_rule.yaml
@@ -0,0 +1,65 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: rules.rules.kubeedge.io
+spec:
+ group: rules.kubeedge.io
+ versions:
+ - name: v1
+ served: true
+ storage: true
+ schema:
+ openAPIV3Schema:
+ type: object
+ properties:
+ spec:
+ type: object
+ properties:
+ source:
+ description: |
+ source is a string value representing where the messages come from. Its
+ value is the same with ruleendpoint name. For example, my-rest or my-eventbus.
+ type: string
+ sourceResource:
+ description: |
+ sourceResource is a map representing the resource info of source. For rest
+ rule-endpoint type its value is {"path":"/test"}. For eventbus ruleendpoint type its
+ value is {"topic":"<user define string>","node_name":"edge-node"}
+ type: object
+ additionalProperties:
+ type: string
+ target:
+ description: |
+ target is a string value representing where the messages go to. its value is
+ the same with ruleendpoint name. For example, my-eventbus or my-rest or my-servicebus.
+ type: string
+ targetResource:
+ description: |
+ targetResource is a map representing the resource info of target. For rest
+ rule-endpoint type its value is {"resource":"http://a.com"}. For eventbus ruleendpoint
+ type its value is {"topic":"/test"}. For servicebus rule-endpoint type its value is
+ {"path":"/request_path"}.
+ type: object
+ additionalProperties:
+ type: string
+ required:
+ - source
+ - sourceResource
+ - target
+ - targetResource
+ status:
+ type: object
+ properties:
+ successMessages:
+ type: integer
+ failMessages:
+ type: integer
+ errors:
+ items:
+ type: string
+ type: array
+ scope: Namespaced
+ names:
+ plural: rules
+ singular: rule
+ kind: Rule
diff --git a/build/helm/cloudcore/crds/router_v1_ruleEndpoint.yaml b/build/helm/cloudcore/crds/router_v1_ruleEndpoint.yaml
new file mode 100644
index 000000000..cb5a1d6ae
--- /dev/null
+++ b/build/helm/cloudcore/crds/router_v1_ruleEndpoint.yaml
@@ -0,0 +1,43 @@
+apiVersion: apiextensions.k8s.io/v1
+kind: CustomResourceDefinition
+metadata:
+ name: ruleendpoints.rules.kubeedge.io
+spec:
+ group: rules.kubeedge.io
+ versions:
+ - name: v1
+ served: true
+ storage: true
+ schema:
+ openAPIV3Schema:
+ type: object
+ properties:
+ spec:
+ type: object
+ properties:
+ ruleEndpointType:
+ description: |
+ ruleEndpointType is a string value representing rule-endpoint type. its value is
+ one of rest/eventbus/servicebus.
+ type: string
+ enum:
+ - rest
+ - eventbus
+ - servicebus
+ properties:
+ description: |
+ properties is not required except for servicebus rule-endpoint type. It is a map
+ value representing rule-endpoint properties. When ruleEndpointType is servicebus,
+ its value is {"service_port":"8080"}.
+ type: object
+ additionalProperties:
+ type: string
+ required:
+ - ruleEndpointType
+ scope: Namespaced
+ names:
+ plural: ruleendpoints
+ singular: ruleendpoint
+ kind: RuleEndpoint
+ shortNames:
+ - re
diff --git a/build/helm/cloudcore/templates/_helpers.tpl b/build/helm/cloudcore/templates/_helpers.tpl
new file mode 100644
index 000000000..fd94bcc2e
--- /dev/null
+++ b/build/helm/cloudcore/templates/_helpers.tpl
@@ -0,0 +1,36 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "cloudcore.name" -}}
+{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{/*
+Create a default fully qualified app name.
+We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
+*/}}
+{{- define "cloudcore.fullname" -}}
+{{- if .Values.fullnameOverride -}}
+{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- $name := default .Chart.Name .Values.nameOverride -}}
+{{- if contains $name .Release.Name -}}
+{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
+{{- else -}}
+{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+{{- end -}}
+{{- end -}}
+
+{{/*
+Generate certificates for kubeedge cloudstream server
+*/}}
+{{- define "cloudcore.gen-certs" -}}
+{{- $altNames := list ( printf "%s.%s" (include "cloudcore.name" .) .Release.Namespace ) ( printf "%s.%s.svc" (include "cloudcore.name" .) .Release.Namespace ) -}}
+{{- $ca := genCA "cloudcore-ca" 365 -}}
+{{- $cert := genSignedCert ( include "cloudcore.name" . ) nil $altNames 365 $ca -}}
+streamCA.crt: {{ $ca.Cert | b64enc }}
+stream.crt: {{ $cert.Cert | b64enc }}
+stream.key: {{ $cert.Key | b64enc }}
+{{- end -}}
diff --git a/build/helm/cloudcore/templates/configmap_cloudcore.yaml b/build/helm/cloudcore/templates/configmap_cloudcore.yaml
new file mode 100644
index 000000000..31a291db0
--- /dev/null
+++ b/build/helm/cloudcore/templates/configmap_cloudcore.yaml
@@ -0,0 +1,48 @@
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: cloudcore
+ {{- with .Values.cloudCore.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+data:
+ cloudcore.yaml: |
+ apiVersion: cloudcore.config.kubeedge.io/v1alpha2
+ kind: CloudCore
+ kubeAPIConfig:
+ kubeConfig: ""
+ master: ""
+ modules:
+ cloudHub:
+ advertiseAddress:
+ {{- range .Values.cloudCore.modules.cloudHub.advertiseAddress }}
+ - {{ . }}
+ {{- end}}
+ nodeLimit: {{ .Values.cloudCore.modules.cloudHub.nodeLimit }}
+ tlsCAFile: /etc/kubeedge/ca/rootCA.crt
+ tlsCertFile: /etc/kubeedge/certs/edge.crt
+ tlsPrivateKeyFile: /etc/kubeedge/certs/edge.key
+ unixsocket:
+ address: unix:///var/lib/kubeedge/kubeedge.sock
+ enable: true
+ websocket:
+ address: 0.0.0.0
+ enable: {{ .Values.cloudCore.modules.cloudHub.websocket.enable }}
+ port: 10000
+ quic:
+ address: 0.0.0.0
+ enable: {{ .Values.cloudCore.modules.cloudHub.quic.enable }}
+ maxIncomingStreams: {{ .Values.cloudCore.modules.cloudHub.quic.maxIncomingStreams }}
+ port: 10001
+ https:
+ address: 0.0.0.0
+ enable: {{ .Values.cloudCore.modules.cloudHub.https.enable }}
+ port: 10002
+ cloudStream:
+ enable: {{ .Values.cloudCore.modules.cloudStream.enable }}
+ streamPort: 10003
+ tunnelPort: 10004
+ dynamicController:
+ enable: {{ .Values.cloudCore.modules.dynamicController.enable }}
+ router:
+ enable: {{ .Values.cloudCore.modules.router.enable }}
diff --git a/build/helm/cloudcore/templates/daemonset_iptablesmanager.yaml b/build/helm/cloudcore/templates/daemonset_iptablesmanager.yaml
new file mode 100644
index 000000000..1fe598381
--- /dev/null
+++ b/build/helm/cloudcore/templates/daemonset_iptablesmanager.yaml
@@ -0,0 +1,47 @@
+{{- if and (.Values.iptablesManager.enable) (eq .Values.iptablesManager.mode "external") }}
+kind: DaemonSet
+apiVersion: apps/v1
+metadata:
+ name: cloud-iptables-manager
+ {{- with .Values.iptablesManager.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+ {{- with .Values.iptablesManager.annotations }}
+ annotations: {{- toYaml . | nindent 4 }}
+ {{- end }}
+spec:
+ selector:
+ matchLabels:
+ {{- with .Values.iptablesManager.labels }}
+ {{- toYaml . | nindent 6 }}
+ {{- end }}
+ template:
+ metadata:
+ {{- with .Values.iptablesManager.labels }}
+ labels: {{- toYaml . | nindent 8 }}
+ {{- end }}
+ spec:
+ serviceAccount: iptables-manager-sa
+ hostNetwork: {{ .Values.iptablesManager.hostNetWork }}
+ {{- with .Values.iptablesManager.affinity }}
+ affinity: {{ toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.iptablesManager.tolerations }}
+ tolerations: {{ toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.iptablesManager.nodeSelector }}
+ nodeSelector: {{ toYaml . | nindent 8 }}
+ {{- end }}
+ restartPolicy: Always
+ containers:
+ - name: iptables-manager
+ command: ['iptables-manager']
+ image: {{ .Values.iptablesManager.image.repository }}:{{ .Values.iptablesManager.image.tag }}
+ imagePullPolicy: {{ .Values.iptablesManager.image.pullPolicy }}
+ {{- with .Values.iptablesManager.securityContext }}
+ securityContext: {{ toYaml . | nindent 10 }}
+ {{- end }}
+ {{- with .Values.iptablesManager.resources }}
+ resources: {{ toYaml . | nindent 10 }}
+ {{- end }}
+{{- end }} \ No newline at end of file
diff --git a/build/helm/cloudcore/templates/deployment_cloudcore.yaml b/build/helm/cloudcore/templates/deployment_cloudcore.yaml
new file mode 100644
index 000000000..6d759c889
--- /dev/null
+++ b/build/helm/cloudcore/templates/deployment_cloudcore.yaml
@@ -0,0 +1,98 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ {{- with .Values.cloudCore.annotations }}
+ annotations: {{- toYaml . | nindent 4 }}
+ {{- end }}
+ {{- with .Values.cloudCore.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+ name: cloudcore
+spec:
+ replicas: {{ .Values.cloudCore.replicaCount }}
+ selector:
+ {{- with .Values.cloudCore.labels }}
+ matchLabels: {{- toYaml . | nindent 6 }}
+ {{- end }}
+ template:
+ metadata:
+ {{- with .Values.cloudCore.labels }}
+ labels: {{- toYaml . | nindent 8 }}
+ {{- end }}
+ spec:
+ {{- if eq .Values.cloudCore.hostNetWork "true" }}
+ hostNetwork: {{ .Values.cloudCore.hostNetWork }}
+ dnsPolicy: ClusterFirstWithHostNet
+ {{- end }}
+ {{- with .Values.cloudCore.nodeSelector }}
+ nodeSelector: {{ toYaml . | nindent 8 }}
+ {{- end }}
+ restartPolicy: Always
+ {{- with .Values.cloudCore.affinity }}
+ affinity: {{ toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.cloudCore.tolerations }}
+ tolerations: {{ toYaml . | nindent 8 }}
+ {{- end }}
+ serviceAccount: cloudcore
+ {{- with .Values.imagePullSecrets }}
+ imagePullSecrets: {{- toYaml . | indent 8 }}
+ {{- end }}
+ containers:
+ - name: cloudcore
+ image: {{ .Values.cloudCore.image.repository }}:{{ .Values.cloudCore.image.tag }}
+ imagePullPolicy: {{ .Values.cloudCore.image.pullPolicy }}
+ ports:
+ - containerPort: 10000
+ name: cloudhub
+ protocol: TCP
+ - containerPort: 10001
+ name: cloudhub-quic
+ protocol: TCP
+ - containerPort: 10002
+ name: cloudhub-https
+ protocol: TCP
+ - containerPort: 10003
+ name: cloudstream
+ protocol: TCP
+ - containerPort: 10004
+ name: tunnelport
+ protocol: TCP
+ volumeMounts:
+ - name: conf
+ mountPath: /etc/kubeedge/config
+ - name: certs
+ mountPath: /etc/kubeedge
+ - name: sock
+ mountPath: /var/lib/kubeedge
+ - mountPath: /etc/localtime
+ name: host-time
+ readOnly: true
+ {{- with .Values.cloudCore.securityContext }}
+ securityContext: {{ toYaml . | nindent 10 }}
+ {{- end }}
+ {{- with .Values.cloudCore.resources }}
+ resources: {{ toYaml . | nindent 10 }}
+ {{- end }}
+ volumes:
+ - name: conf
+ configMap:
+ name: cloudcore
+ - name: certs
+ secret:
+ secretName: cloudcore
+ items:
+ - key: stream.crt
+ path: certs/stream.crt
+ - key: stream.key
+ path: certs/stream.key
+ - key: streamCA.crt
+ path: ca/streamCA.crt
+ - name: sock
+ hostPath:
+ path: /var/lib/kubeedge
+ type: DirectoryOrCreate
+ - hostPath:
+ path: /etc/localtime
+ type: ""
+ name: host-time
diff --git a/build/helm/cloudcore/templates/rbac_cloudcore.yaml b/build/helm/cloudcore/templates/rbac_cloudcore.yaml
new file mode 100644
index 000000000..2495920c7
--- /dev/null
+++ b/build/helm/cloudcore/templates/rbac_cloudcore.yaml
@@ -0,0 +1,61 @@
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: cloudcore
+ {{- with .Values.cloudCore.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+rules:
+- apiGroups: [""]
+ resources: ["nodes", "nodes/status", "configmaps", "pods", "pods/status", "secrets", "endpoints", "services","persistentvolumes","persistentvolumeclaims"]
+ verbs: ["get", "list", "watch", "create", "update"]
+- apiGroups: [""]
+ resources: ["namespaces"]
+ verbs: ["get", "create"]
+- apiGroups: [""]
+ resources: ["pods/status"]
+ verbs: ["patch"]
+- apiGroups: [""]
+ resources: ["pods"]
+ verbs: ["delete"]
+- apiGroups: ["coordination.k8s.io"]
+ resources: ["leases"]
+ verbs: ["get", "list", "watch", "create", "update"]
+- apiGroups: ["devices.kubeedge.io"]
+ resources: ["devices", "devicemodels", "devices/status", "devicemodels/status"]
+ verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
+- apiGroups: ["reliablesyncs.kubeedge.io"]
+ resources: ["objectsyncs", "clusterobjectsyncs", "objectsyncs/status", "clusterobjectsyncs/status"]
+ verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
+- apiGroups: ["rules.kubeedge.io"]
+ resources: ["rules", "ruleendpoints", "rules/status", "ruleendpoints/status"]
+ verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
+
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ {{- with .Values.cloudCore.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+ name: cloudcore
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: cloudcore
+ {{- with .Values.cloudCore.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: cloudcore
+subjects:
+- kind: ServiceAccount
+ name: cloudcore
+ namespace: {{ .Release.Namespace }}
+
+
diff --git a/build/helm/cloudcore/templates/rbac_iptablesmanager.yaml b/build/helm/cloudcore/templates/rbac_iptablesmanager.yaml
new file mode 100644
index 000000000..73c626e0a
--- /dev/null
+++ b/build/helm/cloudcore/templates/rbac_iptablesmanager.yaml
@@ -0,0 +1,40 @@
+{{- if and (.Values.iptablesManager.enable) (eq .Values.iptablesManager.mode "external") }}
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ {{- with .Values.iptablesManager.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+ name: iptables-manager-sa
+ namespace: {{ .Release.Namespace }}
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: iptables-manager
+ {{- with .Values.iptablesManager.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: iptables-manager
+subjects:
+- kind: ServiceAccount
+ name: iptables-manager-sa
+ namespace: {{ .Release.Namespace }}
+
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+ name: iptables-manager
+ {{- with .Values.iptablesManager.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+rules:
+- apiGroups: [""]
+ resources: ["configmaps"]
+ verbs: ["get", "list", "watch"]
+{{- end }} \ No newline at end of file
diff --git a/build/helm/cloudcore/templates/secret_cloudcore.yaml b/build/helm/cloudcore/templates/secret_cloudcore.yaml
new file mode 100644
index 000000000..e61c65243
--- /dev/null
+++ b/build/helm/cloudcore/templates/secret_cloudcore.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Secret
+metadata:
+ name: cloudcore
+ {{- with .Values.cloudCore.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+ annotations:
+ "helm.sh/hook": "pre-install"
+ "helm.sh/hook-delete-policy": "before-hook-creation"
+data:
+{{ ( include "cloudcore.gen-certs" . ) | indent 2 }} \ No newline at end of file
diff --git a/build/helm/cloudcore/templates/service_cloudcore.yaml b/build/helm/cloudcore/templates/service_cloudcore.yaml
new file mode 100644
index 000000000..4e0e743ae
--- /dev/null
+++ b/build/helm/cloudcore/templates/service_cloudcore.yaml
@@ -0,0 +1,50 @@
+{{- if and (.Values.cloudCore.service.enable) }}
+apiVersion: v1
+kind: Service
+metadata:
+ {{- with .Values.cloudCore.labels }}
+ labels: {{- toYaml . | nindent 4 }}
+ {{- end }}
+ name: cloudcore
+spec:
+ {{- if and (eq .Values.cloudCore.service.type "NodePort") (eq .Values.cloudCore.hostNetWork "false") }}
+ type: {{ .Values.cloudCore.service.type }}
+ {{- else }}
+ type: ClusterIP
+ {{- end }}
+ ports:
+ - port: 10000
+ targetPort: 10000
+ {{- if and (eq .Values.cloudCore.service.type "NodePort") (eq .Values.cloudCore.hostNetWork "false") }}
+ nodePort: {{ .Values.cloudCore.service.cloudhubNodePort }}
+ {{- end }}
+ name: cloudhub
+ - port: 10001
+ targetPort: 10001
+ {{- if and (eq .Values.cloudCore.service.type "NodePort") (eq .Values.cloudCore.hostNetWork "false") }}
+ nodePort: {{ .Values.cloudCore.service.cloudhubQuicNodePort }}
+ {{- end }}
+ name: cloudhub-quic
+ - port: 10002
+ targetPort: 10002
+ {{- if and (eq .Values.cloudCore.service.type "NodePort") (eq .Values.cloudCore.hostNetWork "false") }}
+ nodePort: {{ .Values.cloudCore.service.cloudhubHttpsNodePort }}
+ {{- end }}
+ name: cloudhub-https
+ - port: 10003
+ targetPort: 10003
+ {{- if and (eq .Values.cloudCore.service.type "NodePort") (eq .Values.cloudCore.hostNetWork "false") }}
+ nodePort: {{ .Values.cloudCore.service.cloudstreamNodePort }}
+ {{- end }}
+ name: cloudstream
+ - port: 10004
+ targetPort: 10004
+ {{- if and (eq .Values.cloudCore.service.type "NodePort") (eq .Values.cloudCore.hostNetWork "false") }}
+ nodePort: {{ .Values.cloudCore.service.tunnelNodePort }}
+ {{- end }}
+ name: tunnelport
+ selector:
+ {{- with .Values.cloudCore.labels }}
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+{{- end }} \ No newline at end of file
diff --git a/build/helm/cloudcore/values.yaml b/build/helm/cloudcore/values.yaml
new file mode 100644
index 000000000..2d7a58ee8
--- /dev/null
+++ b/build/helm/cloudcore/values.yaml
@@ -0,0 +1,96 @@
+# Default values for kubeedge.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+appVersion: "1.8.2"
+
+cloudCore:
+ replicaCount: 1
+ hostNetWork: "true"
+ image:
+ repository: "kubeedge/cloudcore"
+ tag: "v1.8.2"
+ pullPolicy: "IfNotPresent"
+ imagePullSecrets: []
+ securityContext:
+ privileged: true
+ labels:
+ k8s-app: kubeedge
+ kubeedge: cloudcore
+ annotations: {}
+ affinity:
+ nodeAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ nodeSelectorTerms:
+ - matchExpressions:
+ - key: node-role.kubernetes.io/edge
+ operator: DoesNotExist
+ tolerations: {}
+ nodeSelector: {}
+ resources:
+ limits:
+ cpu: 200m
+ memory: 1Gi
+ requests:
+ cpu: 100m
+ memory: 512Mi
+ modules:
+ cloudHub:
+ advertiseAddress: # Causion!: Leave this entry to empty will cause CloudCore to exit abnormally once KubeEdge is enabled.
+ - "" # At least a public IP Address or an IP which can be accessed by edge nodes must be provided!
+ nodeLimit: "1000"
+ websocket:
+ enable: "true"
+ quic:
+ enable: "false"
+ maxIncomingStreams: "10000"
+ https:
+ enable: "true"
+ cloudStream:
+ enable: "true"
+ dynamicController:
+ enable: "false"
+ router:
+ enable: "false"
+ service:
+ enable: "true"
+ type: "NodePort"
+ cloudhubNodePort: "30000"
+ cloudhubQuicNodePort: "30001"
+ cloudhubHttpsNodePort: "30002"
+ cloudstreamNodePort: "30003"
+ tunnelNodePort: "30004"
+
+iptablesManager:
+ enable: "true"
+ mode: "internal"
+ hostNetWork: true
+ image:
+ repository: "kubeedge/iptables-manager"
+ tag: "v1.8.2"
+ pullPolicy: "IfNotPresent"
+ imagePullSecrets: []
+ securityContext:
+ capabilities:
+ add:
+ - NET_ADMIN
+ - NET_RAW
+ labels:
+ k8s-app: iptables-manager
+ kubeedge: iptables-manager
+ annotations: {}
+ affinity:
+ nodeAffinity:
+ requiredDuringSchedulingIgnoredDuringExecution:
+ nodeSelectorTerms:
+ - matchExpressions:
+ - key: node-role.kubernetes.io/edge
+ operator: DoesNotExist
+ tolerations: {}
+ nodeSelector: {}
+ resources:
+ limits:
+ cpu: 200m
+ memory: 50Mi
+ requests:
+ cpu: 100m
+ memory: 25Mi \ No newline at end of file
diff --git a/build/helm/edgemesh/README.md b/build/helm/edgemesh/README.md
new file mode 100644
index 000000000..d1336acc7
--- /dev/null
+++ b/build/helm/edgemesh/README.md
@@ -0,0 +1,3 @@
+# EdgeMesh Application
+
+Visit https://github.com/kubeedge/edgemesh for more information. \ No newline at end of file