diff --git a/charts/robot-operator/Chart.yaml b/charts/robot-operator/Chart.yaml index dc6e03f..ac5d8e1 100644 --- a/charts/robot-operator/Chart.yaml +++ b/charts/robot-operator/Chart.yaml @@ -13,9 +13,9 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.2.5-alpha.34 +version: 0.2.6-alpha.1 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "v0.2.5-alpha.34" +appVersion: "v0.2.6-alpha.1" diff --git a/charts/robot-operator/templates/discoveryserver-crd.yaml b/charts/robot-operator/templates/discoveryserver-crd.yaml index 8a398b8..8aec69d 100644 --- a/charts/robot-operator/templates/discoveryserver-crd.yaml +++ b/charts/robot-operator/templates/discoveryserver-crd.yaml @@ -43,7 +43,6 @@ spec: type is `Client`. type: string domainID: - default: 0 description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. maximum: 101 minimum: 0 diff --git a/charts/robot-operator/templates/robot-crd.yaml b/charts/robot-operator/templates/robot-crd.yaml index 9e205a9..c760fba 100644 --- a/charts/robot-operator/templates/robot-crd.yaml +++ b/charts/robot-operator/templates/robot-crd.yaml @@ -57,110 +57,204 @@ spec: spec: description: Specification of the desired behavior of the Robot. properties: - discoveryServerTemplate: - description: Discovery server configurational parameters. + environment: + description: Holds environment's configuration. Applied if `.spec.type` + is `Environment` and must be `nil` otherwise. properties: - cluster: - description: Cloud instance name that holds DiscoveryServer instance - with `Server` type. Should be empty if the type is `Server` since - it takes cloud instance's name automatically. Should be set if - the type is `Client`. - type: string - domainID: - default: 0 - description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. - maximum: 101 - minimum: 0 - type: integer - hostname: - description: If instance type is `Server`, it can be an arbitrary - value. If instance type is `Client`, it should be the same with - Server's hostname. Used for getting Server's IP over DNS. - type: string - reference: - description: Reference to the `Server` instance. It is used if `.spec.type` - is `Client`. Referenced object can be previously provisioned in - another cluster. In that case, cluster's name can be specified - in `.spec.cluster` field. + application: + description: Application properties. properties: - apiVersion: - description: API version of the referent. + name: + description: Application name. type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' + version: + description: Version of the application. type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + required: + - name + - version + type: object + devspace: + description: DevSpace image properties. + properties: + desktop: + description: Ubuntu desktop. type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + ubuntuDistro: + description: Ubuntu distribution of the environment. type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + version: + description: DevSpace image version. type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + required: + - desktop + - ubuntuDistro + - version + type: object + domain: + description: Domain of the environment. + type: string + required: + - application + - devspace + - domain + type: object + robot: + description: Holds robot's configuration. Applied if `.spec.type` is + `Robot` and must be `nil` otherwise. + properties: + discoveryServerTemplate: + description: Discovery server configurational parameters. + properties: + cluster: + description: Cloud instance name that holds DiscoveryServer + instance with `Server` type. Should be empty if the type is + `Server` since it takes cloud instance's name automatically. + Should be set if the type is `Client`. type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + domainID: + description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. + maximum: 101 + minimum: 0 + type: integer + hostname: + description: If instance type is `Server`, it can be an arbitrary + value. If instance type is `Client`, it should be the same + with Server's hostname. Used for getting Server's IP over + DNS. type: string + reference: + description: Reference to the `Server` instance. It is used + if `.spec.type` is `Client`. Referenced object can be previously + provisioned in another cluster. In that case, cluster's name + can be specified in `.spec.cluster` field. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead + of an entire object, this string should contain a valid + JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container + within a pod, this would take on a value like: "spec.containers{name}" + (where "name" refers to the name of the container that + triggered the event) or if no container name is specified + "spec.containers[2]" (container with index 2 in this pod). + This syntax is chosen only to have some well-defined way + of referencing a part of an object. TODO: this design + is not final and this field is subject to change in the + future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + x-kubernetes-map-type: atomic + subdomain: + description: If instance type is `Server`, it can be an arbitrary + value. If instance type is `Client`, it should be the same + with Server's subdomain. Used for getting Server's IP over + DNS. + type: string + type: + description: Instance type can be either `Server` or `Client`. + If `Server`, instance creates discovery server resources and + workloads. Other `Client` instances can connect to the `Server` + instance. If `Client`, instance tries to connect a `Server` + instance and hold `Server` configuration in a ConfigMap. + type: string + required: + - domainID type: object - x-kubernetes-map-type: atomic - subdomain: - description: If instance type is `Server`, it can be an arbitrary - value. If instance type is `Client`, it should be the same with - Server's subdomain. Used for getting Server's IP over DNS. - type: string - type: - description: Instance type can be either `Server` or `Client`. If - `Server`, instance creates discovery server resources and workloads. - Other `Client` instances can connect to the `Server` instance. - If `Client`, instance tries to connect a `Server` instance and - hold `Server` configuration in a ConfigMap. + distributions: + description: ROS 2 distributions to be used. You can select multiple + distributions if they are supported in the same underlying OS. + (eg. `foxy` and `galactic` are supported in Ubuntu Focal, so they + can be used together but both cannot be used with `humble`) + items: + description: ROS 2 distribution selection. Currently supported + distributions are Humble, Foxy, Galactic. + enum: + - foxy + - galactic + - humble + type: string + maxItems: 2 + minItems: 1 + type: array + domainID: + description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. + maximum: 101 + minimum: 0 + type: integer + rmwImplementation: + description: RMW implementation selection. Robot operator currently + supports only FastRTPS. See https://docs.ros.org/en/foxy/How-To-Guides/Working-with-multiple-RMW-implementations.html. + enum: + - rmw_fastrtps_cpp type: string + rosBridgeTemplate: + description: ROS bridge configurational parameters. + properties: + ingress: + description: '[*alpha*] ROSBridge will create an Ingress resource + if `true`.' + type: boolean + ros: + description: Configurational parameters for ROS bridge. + properties: + distro: + description: ROS distribution for bridge. + enum: + - foxy + - galactic + - humble + type: string + enabled: + description: If `true`, resources and workloads are created + by ROSBridge. + type: boolean + type: object + ros2: + description: Configurational parameters for ROS 2 bridge. + properties: + distro: + description: ROS distribution for bridge. + enum: + - foxy + - galactic + - humble + type: string + enabled: + description: If `true`, resources and workloads are created + by ROSBridge. + type: boolean + type: object + serviceType: + description: Service type of ROSBridge. `ClusterIP` and `NodePort` + is supported. + enum: + - ClusterIP + - NodePort + type: string + type: object required: - domainID type: object - distributions: - description: ROS 2 distributions to be used. You can select multiple - distributions if they are supported in the same underlying OS. (eg. - `foxy` and `galactic` are supported in Ubuntu Focal, so they can be - used together but both cannot be used with `humble`) - items: - description: ROS 2 distribution selection. Currently supported distributions - are Humble, Foxy, Galactic. - enum: - - foxy - - galactic - - humble - type: string - maxItems: 2 - minItems: 1 - type: array - domainID: - default: 0 - description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. - maximum: 101 - minimum: 0 - type: integer - rmwImplementation: - default: rmw_fastrtps_cpp - description: RMW implementation selection. Robot operator currently - supports only FastRTPS. See https://docs.ros.org/en/foxy/How-To-Guides/Working-with-multiple-RMW-implementations.html. - enum: - - rmw_fastrtps_cpp - type: string robotDevSuiteTemplate: description: Robot development suite template properties: @@ -326,52 +420,6 @@ spec: required: - host type: object - rosBridgeTemplate: - description: ROS bridge configurational parameters. - properties: - ingress: - description: '[*alpha*] ROSBridge will create an Ingress resource - if `true`.' - type: boolean - ros: - description: Configurational parameters for ROS bridge. - properties: - distro: - description: ROS distribution for bridge. - enum: - - foxy - - galactic - - humble - type: string - enabled: - description: If `true`, resources and workloads are created - by ROSBridge. - type: boolean - type: object - ros2: - description: Configurational parameters for ROS 2 bridge. - properties: - distro: - description: ROS distribution for bridge. - enum: - - foxy - - galactic - - humble - type: string - enabled: - description: If `true`, resources and workloads are created - by ROSBridge. - type: boolean - type: object - serviceType: - default: NodePort - description: Service type of ROSBridge. `ClusterIP` and `NodePort` - is supported. - enum: - - ClusterIP - - NodePort - type: string - type: object storage: description: Total storage amount to persist via Robot. Unit of measurement is MB. (eg. `10240` corresponds 10 GB) This amount is being shared @@ -407,6 +455,12 @@ spec: - name - namespace type: object + type: + description: Determines the object type. If "Environment", operator + will provision an environment according to the specifications. (`.spec.environment`) + If "Robot", operator will provision an environment specialized for + ROS 2 according to the specifications. (`.spec.robot`) + type: string workspaceManagerTemplate: description: Workspace manager template to configure ROS 2 workspaces. properties: @@ -478,10 +532,6 @@ spec: path. type: string type: object - required: - - distributions - - domainID - - rmwImplementation type: object status: description: Most recently observed status of the Robot. diff --git a/charts/robot-operator/templates/robotartifact-crd.yaml b/charts/robot-operator/templates/robotartifact-crd.yaml index 3ca338e..98eb171 100644 --- a/charts/robot-operator/templates/robotartifact-crd.yaml +++ b/charts/robot-operator/templates/robotartifact-crd.yaml @@ -36,110 +36,204 @@ spec: template: description: Holds Robot's `.spec`. properties: - discoveryServerTemplate: - description: Discovery server configurational parameters. + environment: + description: Holds environment's configuration. Applied if `.spec.type` + is `Environment` and must be `nil` otherwise. properties: - cluster: - description: Cloud instance name that holds DiscoveryServer instance - with `Server` type. Should be empty if the type is `Server` since - it takes cloud instance's name automatically. Should be set if - the type is `Client`. - type: string - domainID: - default: 0 - description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. - maximum: 101 - minimum: 0 - type: integer - hostname: - description: If instance type is `Server`, it can be an arbitrary - value. If instance type is `Client`, it should be the same with - Server's hostname. Used for getting Server's IP over DNS. - type: string - reference: - description: Reference to the `Server` instance. It is used if `.spec.type` - is `Client`. Referenced object can be previously provisioned in - another cluster. In that case, cluster's name can be specified - in `.spec.cluster` field. + application: + description: Application properties. properties: - apiVersion: - description: API version of the referent. + name: + description: Application name. type: string - fieldPath: - description: 'If referring to a piece of an object instead of - an entire object, this string should contain a valid JSON/Go - field access statement, such as desiredState.manifest.containers[2]. - For example, if the object reference is to a container within - a pod, this would take on a value like: "spec.containers{name}" - (where "name" refers to the name of the container that triggered - the event) or if no container name is specified "spec.containers[2]" - (container with index 2 in this pod). This syntax is chosen - only to have some well-defined way of referencing a part of - an object. TODO: this design is not final and this field is - subject to change in the future.' + version: + description: Version of the application. type: string - kind: - description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + required: + - name + - version + type: object + devspace: + description: DevSpace image properties. + properties: + desktop: + description: Ubuntu desktop. type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + ubuntuDistro: + description: Ubuntu distribution of the environment. type: string - namespace: - description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + version: + description: DevSpace image version. type: string - resourceVersion: - description: 'Specific resourceVersion to which this reference - is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + required: + - desktop + - ubuntuDistro + - version + type: object + domain: + description: Domain of the environment. + type: string + required: + - application + - devspace + - domain + type: object + robot: + description: Holds robot's configuration. Applied if `.spec.type` is + `Robot` and must be `nil` otherwise. + properties: + discoveryServerTemplate: + description: Discovery server configurational parameters. + properties: + cluster: + description: Cloud instance name that holds DiscoveryServer + instance with `Server` type. Should be empty if the type is + `Server` since it takes cloud instance's name automatically. + Should be set if the type is `Client`. type: string - uid: - description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + domainID: + description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. + maximum: 101 + minimum: 0 + type: integer + hostname: + description: If instance type is `Server`, it can be an arbitrary + value. If instance type is `Client`, it should be the same + with Server's hostname. Used for getting Server's IP over + DNS. type: string + reference: + description: Reference to the `Server` instance. It is used + if `.spec.type` is `Client`. Referenced object can be previously + provisioned in another cluster. In that case, cluster's name + can be specified in `.spec.cluster` field. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead + of an entire object, this string should contain a valid + JSON/Go field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container + within a pod, this would take on a value like: "spec.containers{name}" + (where "name" refers to the name of the container that + triggered the event) or if no container name is specified + "spec.containers[2]" (container with index 2 in this pod). + This syntax is chosen only to have some well-defined way + of referencing a part of an object. TODO: this design + is not final and this field is subject to change in the + future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + x-kubernetes-map-type: atomic + subdomain: + description: If instance type is `Server`, it can be an arbitrary + value. If instance type is `Client`, it should be the same + with Server's subdomain. Used for getting Server's IP over + DNS. + type: string + type: + description: Instance type can be either `Server` or `Client`. + If `Server`, instance creates discovery server resources and + workloads. Other `Client` instances can connect to the `Server` + instance. If `Client`, instance tries to connect a `Server` + instance and hold `Server` configuration in a ConfigMap. + type: string + required: + - domainID type: object - x-kubernetes-map-type: atomic - subdomain: - description: If instance type is `Server`, it can be an arbitrary - value. If instance type is `Client`, it should be the same with - Server's subdomain. Used for getting Server's IP over DNS. - type: string - type: - description: Instance type can be either `Server` or `Client`. If - `Server`, instance creates discovery server resources and workloads. - Other `Client` instances can connect to the `Server` instance. - If `Client`, instance tries to connect a `Server` instance and - hold `Server` configuration in a ConfigMap. + distributions: + description: ROS 2 distributions to be used. You can select multiple + distributions if they are supported in the same underlying OS. + (eg. `foxy` and `galactic` are supported in Ubuntu Focal, so they + can be used together but both cannot be used with `humble`) + items: + description: ROS 2 distribution selection. Currently supported + distributions are Humble, Foxy, Galactic. + enum: + - foxy + - galactic + - humble + type: string + maxItems: 2 + minItems: 1 + type: array + domainID: + description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. + maximum: 101 + minimum: 0 + type: integer + rmwImplementation: + description: RMW implementation selection. Robot operator currently + supports only FastRTPS. See https://docs.ros.org/en/foxy/How-To-Guides/Working-with-multiple-RMW-implementations.html. + enum: + - rmw_fastrtps_cpp type: string + rosBridgeTemplate: + description: ROS bridge configurational parameters. + properties: + ingress: + description: '[*alpha*] ROSBridge will create an Ingress resource + if `true`.' + type: boolean + ros: + description: Configurational parameters for ROS bridge. + properties: + distro: + description: ROS distribution for bridge. + enum: + - foxy + - galactic + - humble + type: string + enabled: + description: If `true`, resources and workloads are created + by ROSBridge. + type: boolean + type: object + ros2: + description: Configurational parameters for ROS 2 bridge. + properties: + distro: + description: ROS distribution for bridge. + enum: + - foxy + - galactic + - humble + type: string + enabled: + description: If `true`, resources and workloads are created + by ROSBridge. + type: boolean + type: object + serviceType: + description: Service type of ROSBridge. `ClusterIP` and `NodePort` + is supported. + enum: + - ClusterIP + - NodePort + type: string + type: object required: - domainID type: object - distributions: - description: ROS 2 distributions to be used. You can select multiple - distributions if they are supported in the same underlying OS. (eg. - `foxy` and `galactic` are supported in Ubuntu Focal, so they can be - used together but both cannot be used with `humble`) - items: - description: ROS 2 distribution selection. Currently supported distributions - are Humble, Foxy, Galactic. - enum: - - foxy - - galactic - - humble - type: string - maxItems: 2 - minItems: 1 - type: array - domainID: - default: 0 - description: ROS domain ID for robot. See https://docs.ros.org/en/foxy/Concepts/About-Domain-ID.html. - maximum: 101 - minimum: 0 - type: integer - rmwImplementation: - default: rmw_fastrtps_cpp - description: RMW implementation selection. Robot operator currently - supports only FastRTPS. See https://docs.ros.org/en/foxy/How-To-Guides/Working-with-multiple-RMW-implementations.html. - enum: - - rmw_fastrtps_cpp - type: string robotDevSuiteTemplate: description: Robot development suite template properties: @@ -305,52 +399,6 @@ spec: required: - host type: object - rosBridgeTemplate: - description: ROS bridge configurational parameters. - properties: - ingress: - description: '[*alpha*] ROSBridge will create an Ingress resource - if `true`.' - type: boolean - ros: - description: Configurational parameters for ROS bridge. - properties: - distro: - description: ROS distribution for bridge. - enum: - - foxy - - galactic - - humble - type: string - enabled: - description: If `true`, resources and workloads are created - by ROSBridge. - type: boolean - type: object - ros2: - description: Configurational parameters for ROS 2 bridge. - properties: - distro: - description: ROS distribution for bridge. - enum: - - foxy - - galactic - - humble - type: string - enabled: - description: If `true`, resources and workloads are created - by ROSBridge. - type: boolean - type: object - serviceType: - default: NodePort - description: Service type of ROSBridge. `ClusterIP` and `NodePort` - is supported. - enum: - - ClusterIP - - NodePort - type: string - type: object storage: description: Total storage amount to persist via Robot. Unit of measurement is MB. (eg. `10240` corresponds 10 GB) This amount is being shared @@ -386,6 +434,12 @@ spec: - name - namespace type: object + type: + description: Determines the object type. If "Environment", operator + will provision an environment according to the specifications. (`.spec.environment`) + If "Robot", operator will provision an environment specialized for + ROS 2 according to the specifications. (`.spec.robot`) + type: string workspaceManagerTemplate: description: Workspace manager template to configure ROS 2 workspaces. properties: @@ -457,10 +511,6 @@ spec: path. type: string type: object - required: - - distributions - - domainID - - rmwImplementation type: object type: object served: true diff --git a/charts/robot-operator/templates/rosbridge-crd.yaml b/charts/robot-operator/templates/rosbridge-crd.yaml index 14de108..74299a0 100644 --- a/charts/robot-operator/templates/rosbridge-crd.yaml +++ b/charts/robot-operator/templates/rosbridge-crd.yaml @@ -70,7 +70,6 @@ spec: type: boolean type: object serviceType: - default: NodePort description: Service type of ROSBridge. `ClusterIP` and `NodePort` is supported. enum: diff --git a/charts/robot-operator/values.yaml b/charts/robot-operator/values.yaml index e307e45..126f673 100644 --- a/charts/robot-operator/values.yaml +++ b/charts/robot-operator/values.yaml @@ -32,7 +32,7 @@ controllerManager: - ALL image: repository: robolaunchio/robot-controller-manager - tag: v0.2.5-alpha.34 + tag: v0.2.6-alpha.1 resources: limits: cpu: 500m