- URL:
- https://<root>/system/deployments/<deploymentID>/edit
- Methods:
POST
- Required Capability:
- Access allowed only with the default administrator role
- Version Introduced:
- 10.9
Description
The edit
operation sets the scaling (replicas
) and resource allocation (resources
) for a specific microservice. Starting at ArcGIS Enterprise 11.2 on Kubernetes, the edit
operation also allows administrators to set the node affinity and tolerations (pod
) that are applied to a GIS service's pods, as well as include either PersistentVolumeClaim (PVC) volumes or PVC volume templates that provide additional resources to a deployment's pods.
Scaling in ArcGIS Enterprise on Kubernetes
Either manual scaling or autoscaling can be set for a GIS service microservice using the deployment
parameter. Introduced at ArcGIS Enterprise on Kubernetes 10.9.1, autoscaling allows administrators to configure and deploy systems that respond to unexpected performance demands with minimal intervention and overhead. The ArcGIS Enterprise on Kubernetes autoscaling capability uses horizontal pod autoscaling, which, in response to an increase in resource usage, deploys additional pods according to the values set by the administrator.
When a specific CPU utilization threshold (average
) is crossed, ArcGIS Enterprise on Kubernetes scales the number of pods up to the maximum (max
) value set in the replicas
JSON object. When utilization drops, and the additional resources are no longer needed, the system scales itself back down to no lower than the minimum (min
) value set in the replicas
JSON object. For more information about enabling autoscaling, see the Editable properties section below.
Request parameters
Parameter | Details |
---|---|
| A JSON object that represents the properties of a microservice. Example
|
(Optional) | Introduced at 10.9.1. This parameter specifies whether the operation will run synchronously or asynchronously. If Values: |
| The response format. The default format is Values: |
Microservice properties
The following example demonstrates a full JSON object of a microservice:
{
"mode": "Primary",
"configuredState": "STARTED",
"provider": "Postgres",
"deploymentId": "ke84ls9uva6t7fvck8q5p",
"name": "relational-store-primary",
"type": "RelationalStore",
"spec": {
"replicas": {
"min": 3,
"max": 3,
"scalingMode": "manual" //Added at 11.0
},
"containers": [
{
"name": "filebeat",
"resources": {
"memoryMin": "32Mi",
"memoryMax": "50Mi",
"cpuMin": "0.05",
"cpuMax": "0.25"
},
"containerImageUrl": "container.image.com/info:1082",
"containerImageKey": "FILEBEAT"
},
{
"name": "main-container",
"resources": {
"memoryMin": "2Gi",
"memoryMax": "8Gi",
"cpuMin": "0.5",
"cpuMax": "4"
},
"containerImageUrl": "container.image.com/info:1082",
"containerImageKey": "STORE_POSTGRES"
}
]
},
"labels": {},
"revision": 1618223097333
}
The subsections below describe the individual properties included in the microservice JSON object that can, and cannot, be updated using this operation.
Editable properties
The properties below can be updated using the edit
operation.
Property | Details |
---|---|
| The number of replicas for the microservice. The default value for Example
For organizations using ArcGIS Enterprise 11.2 on Kubernetes or later versions, version 2 (v2) of the autoscaling feature can be enabled by passing in the JSON object below and modifying the Autoscaling can be enabled by adjusting the Example
Organizations using ArcGIS Enterprise on Kubernetes 10.9.1 can enable version 1 of the autoscaling feature by passing in the JSON object below and modifying the Example
|
| Introduced at 11.2. Sets the node affinity or tolerations applied that will be applied the pods of a GIS service deployment. For more information on configuring node affinity or tolerations, see the Edit placement policy operation. nodeAffinity
Tolerations
|
| Introduced at 11.2. An array that sets additional volumes for the deployment's pods to pull from. Administrators have the option to configure PVC volumes, which create a singular PVC volume that the pods of a deployment can directly request resources from, or configure PVC volume templates with the deployment, which will create separate volumes for each pod to use. For singular PVC volumes, administrators will only need to provide the volume's ID: Example
For PVC volume templates, administrators need to provide the volume template's ID as well as the volume's purpose. The purpose specifies the types of volumes being created. Currently, the only supported purpose is Example
|
| The minimum and maximum resource allocations for the microservice, including the minimum memory ( Example
Starting at ArcGIS Enterprise 11.3 on Kubernetes, organizations can implement device plugins to enable GPU nodes in their cluster to optimize workflows for raster analytics and deep learning. Requests and limits for GPU are set using the The following deployments will need to have
Values for The example below shows the accepted values for both Example
|
Uneditable properties
The following properties cannot be edited but are required to be passed through in the deployment
object:
Property | Details |
---|---|
| The microservice mode. A mode type of Values: |
| The microservice provider. Only microservices related to an ArcGIS service type have a provider type. A provider type of Values: |
| The template ID. Example
|
| The microservice type. For example, if the microservice is a shared feature server containing feature services, Values: |
| The JSON object representation of the template's specifications, including replicas and container resources. Example
|
| The date, in milliseconds from epoch format, of the latest revision to the template. Example
|
Example usage
The following is a sample POST request for the edit
operation that demonstrates autoscaling:
POST /context/admin/system/deployments/d23ae35d2-e81a-4e79-93de-90fcf1388908/edit HTTP/1.1
Host: organization.domain.com
Content-Type: application/x-www-form-urlencoded
Content-Length: []
deploymentJson={
"mode": "Primary",
"configuredState": "STARTED",
"provider": "Postgres",
"deploymentId": "ke84ls9uva6t7fvck8q5p",
"name": "relational-store-primary",
"type": "RelationalStore",
"spec": {
"replicas": {
"min": 1,
"max": 10,
"scalingMode": "auto",
"autoscaling": {
"hpaSpec": {
"metrics": [
{
"resource": {
"name": "cpu",
"target": {
"averageUtilization": "65",
"type": "Utilization"
}
},
"type": "Resource"
}
],
"hpaVersion": "autoscaling/v2"
}
}
},
"containers": [
{
"name": "filebeat",
"resources": {
"memoryMin": "32Mi",
"memoryMax": "50Mi",
"cpuMin": "0.05",
"cpuMax": "0.25"
},
"containerImageUrl": "container.image.com/info:1082",
"containerImageKey": "FILEBEAT"
},
{
"name": "main-container",
"resources": {
"memoryMin": "2Gi",
"memoryMax": "8Gi",
"cpuMin": "0.5",
"cpuMax": "4"
},
"containerImageUrl": "container.image.com/info:1082",
"containerImageKey": "STORE_POSTGRES"
}
]
},
"labels": {},
"revision": 1618223097333
}&f=pjson&token=B4SGXu8PifZbfOJxpbr-i3X66FvpOuDtp4UdaBqmodRHAxxI-El280UH26TsC9YBct-6TJ_6wYH8iJB39SCwJIB6Vl8_DXmhvROZxjWMk_boLq6J-hurAvVdsOwYLlE7uy7j5t7lpQBAOqvnXS1lxGCy1vwnr3OPLoKmOWY8S8dxP1ZNrRx_SlTSfshlnMP7yoYIArLIylO0Gga9gcyDa3DYsDeTKU8uKbkUQ6LEwo93g1cU9zAxFnxhlBdHw-9U
JSON Response examples
If async
is false
, the following response is returned:
{"status": "success"}
If async
is true
, the following response is returned. The value returned for jobs
can be used to access the job resource to track a job's status after it's been submitted. For more information, see the Job resource topic.
{
"jobsUrl": "https://organization.domain.com/context/admin/jobs/ja2ca1a35-881c-400c-a49a-b26883002d6c",
"jobID": "ja2ca1a35-881c-400c-a49a-b26883002d6c",
"jobStatus": "SUBMITTED"
}