apiVersion: v1 kind: Namespace metadata: labels: app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-system --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: {} creationTimestamp: null labels: app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: devicelinks.edge.cattle.io spec: group: edge.cattle.io names: kind: DeviceLink listKind: DeviceLinkList plural: devicelinks shortNames: - dl singular: devicelink scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .spec.model.kind name: KIND type: string - jsonPath: .spec.adaptor.node name: NODE type: string - jsonPath: .spec.adaptor.name name: ADAPTOR type: string - jsonPath: .status.conditions[-1].type name: PHASE type: string - jsonPath: .status.conditions[-1].reason name: STATUS type: string - jsonPath: .metadata.creationTimestamp name: AGE type: date name: v1alpha1 schema: openAPIV3Schema: description: DeviceLink is the Schema for the devicelinks 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: DeviceLinkSpec defines the desired state of DeviceLink properties: adaptor: description: Specifies the desired adaptor of a device properties: name: description: Specifies the name of adaptor to be used. type: string node: description: Specifies the node of adaptor to be matched. type: string parameters: description: '[Deprecated] Specifies the parameter of adaptor to be used. This field has been deprecated, it should define the connection parameter as a part of device model.' type: object x-kubernetes-preserve-unknown-fields: true type: object model: description: Specifies the desired model of a device. 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 type: object references: description: Specifies the references of device to be used. items: description: DeviceLinkReference defines the parameter that should be passed to the adaptor during connecting. properties: configMap: description: ConfigMap represents a ConfigMap of the same Namespace that should populate this connection. properties: items: description: Specifies the key of the ConfigMap's data. If not specified, all keys of the ConfigMap will be projected into the parameter values. If specified, the listed keys will be projected into the parameter value. If a key is specified which is not present in the ConfigMap, the connection will error unless it is marked optional. items: type: string type: array name: description: Specifies the name of the ConfigMap in the same Namespace to use. type: string required: - name type: object downwardAPI: description: DownwardAPI represents the downward API about the DeviceLink.¬ properties: items: description: Specifies a list of downward API. items: description: DeviceLinkReferenceDownwardAPISourceItem defines the downward API item for projecting the DeviceLink. properties: fieldRef: description: Specifies that how to select a field of the DeviceLink, only annotations, labels, name, namespace and status are supported. properties: apiVersion: description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: description: Path of the field to select in the specified API version. type: string required: - fieldPath type: object name: description: Specifies the key of the downward API's data. type: string required: - fieldRef - name type: object minItems: 1 type: array required: - items type: object name: description: Specifies the name of the parameter. type: string secret: description: Secret represents a Secret of the same Namespace that should populate this connection. properties: items: description: Specifies the key of the Secret's data. If not specified, all keys of the Secret will be projected into the parameter values. If specified, the listed keys will be projected into the parameter value. If a key is specified which is not present in the Secret, the connection will error unless it is marked optional. items: type: string type: array name: description: Specifies the name of the Secret in the same Namespace to use. type: string required: - name type: object type: object type: array template: description: Describe the device that will be created. properties: metadata: description: Standard object's metadata. properties: labels: additionalProperties: type: string description: Map of string keys and values that can be used to organize and categorize (scope and select) objects. type: object type: object spec: description: Specifies the desired behaviors of a device. type: object x-kubernetes-preserve-unknown-fields: true type: object required: - adaptor - model - template type: object status: description: DeviceLinkStatus defines the observed state of DeviceLink properties: adaptorName: description: Represents the observed adaptor name of the device. type: string conditions: description: Represents the latest available observations of the device's current state. items: description: DeviceLinkCondition describes the state of a device at a certain point. properties: lastTransitionTime: description: Last time the condition transitioned from one status to another. format: date-time type: string lastUpdateTime: description: The last time this condition was updated. format: date-time type: string message: description: A human readable message indicating details about the transition. type: string reason: description: The reason for the condition's last transition. type: string status: description: Status of the condition, one of True, False, Unknown. type: string type: description: Type of device condition. type: string required: - status - type type: object type: array model: description: Represents the observed model of the device. 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 type: object nodeExternalDNS: description: Represents the observed scheduled Node external DNS of the device. type: string nodeExternalIP: description: Represents the observed scheduled Node external IP of the device. type: string nodeHostName: description: Represents the observed scheduled Node hostname of the device. type: string nodeInternalDNS: description: Represents the observed scheduled Node internal DNS of the device. type: string nodeInternalIP: description: Represents the observed scheduled Node internal IP of the device. type: string nodeName: description: Represents the observed scheduled Node name of the device. type: string type: object type: object served: true storage: true subresources: status: {} status: acceptedNames: kind: "" plural: "" conditions: [] storedVersions: [] --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: labels: app.kubernetes.io/component: rbac app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-leader-election-role namespace: octopus-system rules: - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - create - update - patch - delete - apiGroups: - "" resources: - configmaps/status verbs: - get - update - patch - apiGroups: - "" resources: - events verbs: - create --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null labels: app.kubernetes.io/component: rbac app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-manager-role rules: - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - nodes verbs: - get - list - patch - update - watch - apiGroups: - "" resources: - secrets verbs: - get - list - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - patch - update - watch - apiGroups: - edge.cattle.io resources: - devicelinks verbs: - create - delete - get - list - patch - update - watch - apiGroups: - edge.cattle.io resources: - devicelinks/status verbs: - get - patch - update --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: labels: app.kubernetes.io/component: rbac app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-leader-election-rolebinding namespace: octopus-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: octopus-leader-election-role subjects: - kind: ServiceAccount name: default namespace: octopus-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: app.kubernetes.io/component: rbac app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-manager-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: octopus-manager-role subjects: - kind: ServiceAccount name: default namespace: octopus-system --- apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/component: brain app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-brain namespace: octopus-system spec: ports: - name: metrics port: 8080 targetPort: metrics selector: app.kubernetes.io/component: brain app.kubernetes.io/name: octopus app.kubernetes.io/version: master --- apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/component: limb app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-limb namespace: octopus-system spec: ports: - name: metrics port: 8080 targetPort: metrics selector: app.kubernetes.io/component: limb app.kubernetes.io/name: octopus app.kubernetes.io/version: master --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/component: brain app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-brain namespace: octopus-system spec: replicas: 1 selector: matchLabels: app.kubernetes.io/component: brain app.kubernetes.io/name: octopus app.kubernetes.io/version: master template: metadata: labels: app.kubernetes.io/component: brain app.kubernetes.io/name: octopus app.kubernetes.io/version: master spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: beta.kubernetes.io/os operator: In values: - linux - matchExpressions: - key: kubernetes.io/os operator: In values: - linux containers: - args: - brain - --enable-leader-election image: cnrancher/octopus:master imagePullPolicy: Always name: octopus ports: - containerPort: 8080 name: metrics terminationGracePeriodSeconds: 10 --- apiVersion: apps/v1 kind: DaemonSet metadata: labels: app.kubernetes.io/component: limb app.kubernetes.io/name: octopus app.kubernetes.io/version: master name: octopus-limb namespace: octopus-system spec: selector: matchLabels: app.kubernetes.io/component: limb app.kubernetes.io/name: octopus app.kubernetes.io/version: master template: metadata: labels: app.kubernetes.io/component: limb app.kubernetes.io/name: octopus app.kubernetes.io/version: master spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: beta.kubernetes.io/os operator: In values: - linux - matchExpressions: - key: kubernetes.io/os operator: In values: - linux containers: - args: - limb env: - name: NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName image: cnrancher/octopus:master imagePullPolicy: Always name: octopus ports: - containerPort: 8080 name: metrics volumeMounts: - mountPath: /var/lib/octopus/adaptors/ name: sockets terminationGracePeriodSeconds: 30 tolerations: - operator: Exists volumes: - hostPath: path: /var/lib/octopus/adaptors/ type: DirectoryOrCreate name: sockets