Edit (Default Properties)

URL:
https://<root>/system/deployments/properties/<propertyTemplateID>/edit
Methods:
POST
Required Capability:
Access allowed only with the default administrator role
Version Introduced:
10.9

Description

The edit operation modifies the default scaling and resource allocation properties for a specific microservice within your organization. Once the default properties have been updated, all newly published microservices that match the type, provider, and mode values of the default template will have the updated properties assigned to them. You'll need to update preexisting deployment properties individually using the Edit deployment operation.

Starting at ArcGIS Enterprise 11.2 on Kubernetes, the edit operation can also be used to set the default node affinity and toleration values on GIS service microservices.

Scaling in ArcGIS Enterprise on Kubernetes

Either manual scaling or autoscaling can be set for a microservice using the propertyJson 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 (averageUtilization) 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

ParameterDetails

propertyJson

The JSON object representing the default property template that specifies the scaling (min and max) and resource allocations (memoryMin, cpuMin, memoryMax, and cpuMax) for a particular microservice type. For more information, see the Template properties section below.

Example
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
propertyJson={
  "mode": "Dedicated",
  "provider": "ArcObjects11",
  "id": "pflhvjnd6z3hy56dkfo55",
  "type": "GPSyncServer",
  "spec": {
    "replicas": {
      "min": 3,
      "max": 3,
      "scalingMode": "manual" //Added at 11.0
    },
    "containers": [
      {
        "name": "main-container",
        "resources": {
          "memoryMin": "1.5Gi",
          "memoryMax": "5Gi",
          "cpuMin": "0.125",
          "cpuMax": "2"
        },
        "containerImageKey": "GP_SERVER"
      },
      {
        "name": "filebeat",
        "resources": {
          "memoryMin": "32Mi",
          "memoryMax": "50Mi",
          "cpuMin": "0.05",
          "cpuMax": "0.25"
        },
        "containerImageKey": "FILEBEAT"
      }
    ]
  },
  "revision": 1618223886566
}

f

The response format. The default format is html.

Values: html | json | pjson

Template properties

The example below demonstrates a full JSON object of a property template.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
  "mode": "Dedicated",
  "provider": "ArcObjects11",
  "id": "pflhvjnd6z3hy56dkfo55",
  "type": "GPSyncServer",
  "spec": {
    "replicas": {
      "min": 3,
      "max": 3,
      "scalingMode": "manual" //Added at 11.0
    },
    "containers": [
      {
        "name": "main-container",
        "resources": {
          "memoryMin": "1.5Gi",
          "memoryMax": "5Gi",
          "cpuMin": "0.125",
          "cpuMax": "2"
        },
        "containerImageKey": "GP_SERVER"
      },
      {
        "name": "filebeat",
        "resources": {
          "memoryMin": "32Mi",
          "memoryMax": "50Mi",
          "cpuMin": "0.05",
          "cpuMax": "0.25"
        },
        "containerImageKey": "FILEBEAT"
      }
    ]
  },
  "revision": 1618223886566
}

The subsections below describe the individual properties included in the property template JSON object that can, and cannot, be updated using this operation.

Editable properties

The properties below can be updated using the edit operation.

PropertyDetails

replicas

The number of replicas for the microservice. The default value for manual scaling for min and max is 1. For manual scaling, both the min and max values must be the same.

Example
Use dark colors for code blocksCopy
1
2
3
4
5
"replicas": {
  "min": 3,
  "max": 3,
  "scalingMode": "manual"
},

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 min, max, scalingMode, and averageUtilization values.

Autoscaling can be enabled by adjusting the scalingMode value to auto. The averageUtilization value will act as the CPU utilization threshold for autoscaling. If the threshold is crossed, ArcGIS Enterprise on Kubernetes scales up to the number of pods specified by the max value, and will return to no lower than the default pod level (the value set for min) once utilization decreases.

Example
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"replicas": {
  "min": 1,
  "max": 10,
  "scalingMode": "auto",
  "autoscaling": {
    "hpaSpec": {
      "metrics": [
        {
          "resource": {
            "name": "cpu",
            "target": {
              "averageUtilization": "65",
              "type": "Utilization"
            }
          },
          "type": "Resource"
        }
      ],
      "hpaVersion": "autoscaling/v2"
    }
  }
},

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 min, max, scalingMode, and targetCPUUtilizationPercentage values:

Example
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
"replicas": {
  "min": 1,
  "max": 5,
  "scalingMode": "auto",
  "autoscaling": {
    "hpaSpec": {
      "targetCPUUtilizationPercentage": 50
    },
    "hpaVersion": "autoscaling/v1"
  }
}

podPlacementPolicy

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.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"nodeAffinity": {
  "requiredDuringSchedulingIgnoredDuringExecution": {
    "nodeSelectorTerms": [
      {
        "matchExpressions": [
          {
            "key": "affinity",
            "operator": "In",
            "values": [
              "true"
            ]
          }
        ]
      }
    ]
  }
}
Tolerations
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
"tolerations": [
  {
    "effect": "NoExecute",
    "key": "tolerates",
    "operator": "Equal",
    "value": "true"
  }
]

resources

The minimum and maximum resource allocations for the microservice, including the minimum memory (memoryMin) and minimum CPU (cpuMin) resources required for the microservice to start. The default values for memoryMin, cpuMin, memoryMax, and cpuMax are shown in the example below.

Example
Use dark colors for code blocksCopy
1
2
3
4
5
6
"resources": {
  "memoryMin": "500Mi",
  "memoryMax": "2Gi",
  "cpuMin": "0.125",
  "cpuMax": "2"
},

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 customResources object.

The following deployments will need to have request and limits values set for GPU:

  • system-rasteranalysistools-gpsyncserver (used for training models)
  • system-rasterprocessinggpu-dpserver (used for processing)

Values for requests and limits only need to be set on main-container.

The example below shows the accepted values for both requests and limits:

Example
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"resources": {
  "memoryMin": "32Mi",
  "memoryMax": "50Mi",
  "cpuMin": "0.05",
  "cpuMax": "0.25",
  "customResources": {
    "limits": {
      "nvidia.com/gpu": "1"
    },
    "requests": {
      "nvidia.com/gpu": "1"
    }
  }
}

Uneditable properties

The following properties cannot be edited but are required to be passed through in the propertyJson object:

PropertyDetails

mode

The microservice mode. A mode type of Undefined is used when the microservice is system related (Admin API, portal sharing, ingress controller, and so on.). Only microservices related to an ArcGIS service type return Dedicated or Shared for this property.

Values: Shared | Dedicated | Undefined | Primary | Standby | Coordinator

provider

The microservice provider. Only microservices related to an ArcGIS service type have a provider type. A provider type of Undefined is used for microservices that are not service related (Admin API, portal sharing, ingress controller, and so on).

Values: SDS | ArcObjects11 | DMaps | Undefined | Postgres | Tiles | Ignite | MinIO | Elasticsearch | RabbitMQ | ArcObjectsRasterRendering

id

The template ID.

Example
Use dark colors for code blocksCopy
1
"id": "9375dd81-30d1-41c0-a802-cabb425159a9",

type

The microservice type. For example, if the microservice is a shared feature server containing feature services, the type will be FeatureServer. For microservices that are not service related, the type will be System.

Values: FeatureServer | GeometryServer | GPServer | GPSyncServer | MapServer | TileServer | System | InMemoryStore | ObjectStore | SpatiotemporalIndexStore | QueueServer | RelationalStore | WebhookProcessor (Added at 11.0)

spec

The JSON object representation of the template's specifications, including replicas and container resources.

Example
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
"spec": {
  "replicas": {
    "min": 3,
    "max": 3,
    "scalingMode": "manual"
  },
  "containers": [
    {
      "name": "main-container",
      "resources": {
        "memoryMin": "1.5Gi",
        "memoryMax": "4Gi",
        "cpuMin": "0.125",
        "cpuMax": "2"
      },
      "containerImageKey": "GP_SERVER"
    },
    {
      "name": "filebeat",
      "resources": {
        "memoryMin": "32Mi",
        "memoryMax": "50Mi",
        "cpuMin": "0.05",
        "cpuMax": "0.25"
      },
      "containerImageKey": "FILEBEAT"
    }
  ]
},

revision

The date, in milliseconds from epoch format, of the latest revision to the template.

Example
Use dark colors for code blocksCopy
1
"revision": 1598217421474

Example usage

The following is a sample POST request for the edit operation that demonstrates autoscaling, formatted for readability:

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
POST /context/admin/system/deployments/properties/9375dd81-30d1-41c0-a802-cabb425159a9/edit HTTP/1.1
Host: organization.domain.com
Content-Type: application/x-www-form-urlencoded
Content-Length: []

propertyJson={
  "mode": "Dedicated",
  "provider": "ArcObjects11",
  "id": "pflhvjnd6z3hy56dkfo55",
  "type": "GPSyncServer",
  "spec": {
    "replicas": {
      "min": 1,
      "max": 4,
      "scalingMode": "auto",
      "autoscaling": {
        "hpaSpec": {
          "metrics": [
            {
              "resource": {
                "name": "cpu",
                "target": {
                  "averageUtilization": "50",
                  "type": "Utilization"
                }
              },
              "type": "Resource"
            }
          ],
          "hpaVersion": "autoscaling/v2"
        }
      }
    },
    "containers": [
      {
        "name": "main-container",
        "resources": {
          "memoryMin": "1.5Gi",
          "memoryMax": "5Gi",
          "cpuMin": "0.125",
          "cpuMax": "2"
        },
        "containerImageKey": "GP_SERVER"
      },
      {
        "name": "filebeat",
        "resources": {
          "memoryMin": "32Mi",
          "memoryMax": "50Mi",
          "cpuMin": "0.05",
          "cpuMax": "0.25"
        },
        "containerImageKey": "FILEBEAT"
      }
    ]
  },
  "revision": 1618223886566
}
&f=pjson&token=ShyoW_1p9PjJNuVfR0D3a4qpLSAOJKVPoFWS6cEC6J3rXVkEWKEbD82VjAB0VQ_hWImd9pd-1h7AsHTt0m45N1_mzyzR-66Rqhu2Ydl7zc1Yk7JVRneVmQORFy2efBnc1ZndpXfuoKe41XRFGz3wl9LI8kG35lqAPGjM5F7v_hQMkhC1Ky37BDLizZCR4-xtq3h0Nb4VfYNtJRjwoKUUkgaaJSEUtilXj936p1yNBnPYQWb7dDjVuSVr502EzjvB

JSON Response example

Use dark colors for code blocksCopy
1
{"status": "success"}

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.