Web Apps
Note: The functionalities provided through the
Webappfeature are deprecated and will eventually be removed. We recommend using theServicefeature which offers a more comprehensive and flexible solution for managing web applications and API deployments.
Note: Only generic (EKS-based) Web Apps are supported with CLI.
Providing Instance Type in Web App
When creating a web-app, we can set the instance type by including it under the resources key in the following YAML format:
resources:
instanceTypeId: 1
To obtain a list of all available instances along with their corresponding instanceTypeId, we can use the following command:
peak tenants list-instance-options --entity-type webapp
Session Stickiness in Web App
By default, session stickiness is disabled (false). You can activate session stickiness by setting the sessionStickiness parameter to true.
Session stickiness ensures that each user’s requests are consistently directed to a particular server. This feature is especially valuable for stateful applications like web applications that rely on server-stored session data.
Note that employing session stickiness may lead to unpredictable behavior and is not recommended if you plan to scale your application.
Creating a Web App
We can create a web-app by providing payload like following.
# webapp.yaml
body:
name: my-webapp
title: New webapp
description: This is a new webapp
imageDetails:
imageId: 100
versionId: 100
resources:
instanceTypeId: 1
sessionStickiness: true
We can use the following command to create a web-app:
peak webapps create path/to/create_webapp.yaml -v path/to/webapp_params.yaml
Alternatively, we can also use the create command without having the need to provide a yaml.
This is possible using the command line options or optionally combining them with yaml template, with the command line options taking precedence.
peak webapps create --name my-webapp --description some-description --title my-title --image-id <image-id> --version-id <version-id> --instance-type-id 43 --session-stickiness
Above command will generate the following json body:
{
"name": "my-webapp",
"title": "my-title",
"description": "some-description",
"imageDetails": {
"imageId": "<image-id>",
"versionId": "<version-id>"
},
"resources": {
"instanceTypeId": 43
},
"sessionStickiness": true
}
Updating a Web App
When updating the web-app, it will trigger a redeployment only under specific conditions. Redeployment is triggered if you make changes to any of the following parameters: imageId, versionId, instanceTypeId or sessionStickiness. However, only modifying the title or description will not trigger a redeployment.
We can update the web-app by providing web-app id and payload like following.
# webapp.yaml
body:
title: Updated webapp
description: This is an updated webapp
imageDetails:
imageId: 200
versionId: 200
resources:
instanceTypeId: 1
sessionStickiness: true
We can use the following command to update a web-app:
peak webapps update -v path/to/webapp_params.yaml <webapp-id> path/to/update_webapp.yaml
Alternatively, we can also use the update command without having the need to provide a yaml.
This is possible using the command line options or optionally combining them with yaml template, with the command line options taking precedence.
peak webapps update <webapp-id> --description some-description --title my-title --image-id <image-id> --version-id <version-id> --instance-type-id 43 --session-stickiness
Above command will generate the following json body:
{
"title": "my-title",
"description": "some-description",
"imageDetails": {
"imageId": "<image-id>",
"versionId": "<version-id>"
},
"resources": {
"instanceTypeId": 43
},
"sessionStickiness": true
}
Using the create-or-update operation
The operation creates a new resource if it doesn’t exist and updates the resource in case it exists. The search is based on resource name field.
If the web-app is being updated, it will trigger a redeployment only under specific conditions. Redeployment is triggered if you make changes to any of the following parameters: imageId, versionId, instanceTypeId or sessionStickiness. However, only modifying the title or description will not trigger a redeployment.
Consider the following example for creating a web-app:
# webapp.yaml
body:
title: New webapp
description: This is an new webapp
imageDetails:
imageId: 100
versionId: 100
resources:
instanceTypeId: 1
sessionStickiness: true
peak webapps create-or-update -v path/to/webapp_params.yaml <webapp-id> path/to/create_or_update_webapp.yaml --image-id 3 --name my-webapp
Now we could update the web-app created with above command as follows:
# webapp_params.yaml
imageId: 2
versionId: 2
# webapp.yaml
body:
title: Updated webapp
description: This is an updated webapp
imageDetails:
imageId: {{ imageId }}
versionId: {{ versionId }}
resources:
instanceTypeId: 43
sessionStickiness: true
peak webapps create-or-update -v path/to/webapp_params.yaml <webapp-id> path/to/webapp.yaml --image-id 3 --name my-webapp --instance-type-id 43 --session-stickiness
In the above example, the imageId will be overwritten by the command line options and the final web-app body will look like:
{
"title": "Updated webapp",
"description": "This is an updated webapp",
"imageDetails": {
"imageId": 3,
"versionId": 2
},
"resources": {
"instanceTypeId": 43
},
"sessionStickiness": true
}