A deployment is a rapyuta.io resource that represents a unique instantiation of a rapyuta.io package. It holds information about the package deployed, the configuration used and interfaces exposed. It possesses a unique identifier and provides a mechanism to introspect its phase and state that are needed to ascertain the state of a system.
Tooling such as logs, debug terminals and other automation leverage this uniquely identifiable resource to allow the operator to manage, debug and observe a particular running instance of their application.
Deployments may support linking and binding to allow the user to combine multiple different applications to help realize a potentially complex robotics solution.
The deployment object exposes information to help you introspect the state of the system and set policies on mechanisms that attempt recovery of the desired state on degradation.
The following sections let the developer learn more about
The lifecycle of a deployment consists of multiple phases. The DEPLOYMENT PHASE indicates the current phase of the deployment in its lifecycle.
The below table lists the phases of deployment as they appear in the lifecycle:
|In progress||accepts request to deploy a package and starts deployment process|
|Provisioning||pulls a docker image and creates a running instance of the image (docker container) for each executable of the component|
|Succeeded||each executable of every component is successfully started|
|Failed to start||error occurred during In progress phase|
|Partially deprovisioned||you deprovisioned a deployment, but there is at least one component that could not be deprovisioned|
|Deployment stopped||you deprovisioned a deployment, and all of its components are stopped|
rapyuta.io enables you to monitor the current status of each executable of a component that is deployed. The status of deployment depends on the combined status of all components participating in the deployment.
The following table lists the statuses you may see during the Provisioning deployment phase:
|Pending||docker image is being pulled, or docker container is being created|
|Error||error occurs while pulling a docker image or creating a docker container|
The following table lists the statuses you may see during the Succeeded deployment phase:
|Running||executables of components are running|
|Pending||restarting executable due to runtime error in the application or rapyuta.io software|
|Error||runtime error occurred|
|Unknown||rapyuta.io is unaware of the current status|
If the status of an executable reads Pending or Error, you are provided the cause of the status as Reason.
If the overall deployment STATUS is Error, rapyuta.io displays an error code along with a brief description of the error. The following table lists available error codes, short descriptions and the recommendations you should take:
|Error code||Description||Recommended action|
|DEP_E151||device is either offline or not reachable||check the internet connection of the device|
|DEP_E152||executables of the component deployed on the device either exited too early or failed||troubleshoot the failed component by analyzing deployment logs|
|DEP_E153||unable to either pull the docker image or build the source code for the component deployed on cloud||verify that the docker image provided while adding the package still exists at the specified registry endpoint|
|DEP_E154||executables of the component deployed on cloud exited too early||troubleshoot the failed component by analyzing deployment logs|
|DEP_E155||executables of the component deployed on cloud failed||troubleshoot the failed component by analyzing deployment logs|
|DEP_E156||dependent deployment is in error state||troubleshoot the dependent deployment that is in error state|
|DEP_E161||docker image not found for executables of components deployed on device||verify that the path of the docker image is valid|
|DEP_E162||Validation error. Cases include:
|DEP_E163||application has stopped and exited unexpectedly, and crashes continuously||debug the application using the corresponding deployment logs|
|DEP_E2xx||internal rapyuta.io error in the components deployed on cloud||report the issue together with the relevant details to the support team|
|DEP_E3xx||internal rapyuta.io error in the components deployed on a device||report the issue together with the relevant details to the support team|
|DEP_E4xx||internal rapyuta.io error||report the issue together with the relevant details to the support team|
Unlike deployments running on the cloud, which automatically restart if stopped due to an error, deployments that are running on devices do not automatically restart if exited due to an error or when devices are rebooted.
You can configure the behavior of deployments running on devices by setting their restart policies. There are three kinds of restart policies available for a device deployment:
There are a couple of exceptions while applying the restart policies:
You can modify or override the initial setting of restart policy while deploying a package. Read deploying a package topic to learn how to do so.
For a deployment running on a device, the variable Restart Count (on the deployment details page) represents the number of times the deployment has restarted due to restarting of deployment components.
To deploy a package in rapyuta.io, follow the steps:
The list of devices is a set of online devices, which are pre-filtered to match the architecture (amd64, arm32v7, arm64v8) and device runtime (docker or preinstalled) required by the component in question.
You will be redirected to the Details page of the newly created deployment. The package is successfully deployed when the green colored bar moves from In progress to Provisioning to Succeeded indicating that the DEPLOYMENT PHASE has succeeded and the deployment STATUS is Running.
Furthermore, if dependent deployments are added then each dependency’s STATUS must read Running.
You may analyze the corresponding deployment logs generated while deploying a package.
If a deployment fails, the DEPLOYMENT PHASE will read Failed to start. You may have to click Deprovision Deployment, delete the package, create the package all over again, and try deploying it.