Skip To Content
ArcGIS Developer
Dashboard

ArcGIS Enterprise on Kubernetes

Configure

  • URL:https://<root>/configure(POST only)
  • Version Introduced:10.9

Description

The configure operation is the first operation that must be invoked when ArcGIS Enterprise on Kubernetes is installed for the first time. During configuration, a number of tasks are performed, including the following:

  • Esri Docker images are downloaded for ArcGIS Enterprise on Kubernetes.
  • ArcGIS Enterprise containers are deployed to your Kubernetes cluster.
  • An organization is created.

Due to the number of tasks and processes performed during organization creation, the configure operation can be time consuming. Once the organization is created, you can publish GIS services and begin administering and configuring your organization.

Request parameters

ParameterDetails
username

(Required)

The initial administrator account username. Eligible usernames must be at least six characters in length, using alphanumeric values with only the following symbols allowed:

  • @
  • _
  • ,
  • -

Example

jsmithadmin
password

(Required)

The password for the initial administrator account. Eligible passwords must be at least eight characters in length and contain at least one letter (A-Z, a-z) and one number (0-9). All special characters are supported.

Example

test.pass1
email

(Required)

The email address associated with the initial administrator account.

Example

jsmith@domain.com
fullName

(Required)

The full name of the user being designated as the initial administrator.

Example

John Smith
firstName

(Optional)

The first name of the user being designated as the initial administrator.

Example

John
lastName

(Optional)

The last name of the user being designated as the initial administrator.

Example

Smith
description

(Optional)

A description of the account.

securityQuestionIdx

(Required)

The index of the secret question used to retrieve a forgotten password. The list of possible secret question indexes is below.

Example

1
securityQuestionAns

(Required)

The answer to the secret question specified in the securityQuestionIdx parameter.

Example

Redlands
userLicenseType

(Required)

The user type for the initial administrator account. The values listed below are the user types that are compatible with the Administrator role. For more information about roles and user types, see User types, roles, and privileges.

Values: creatorUT | GISProfessionalBasicUT | GISProfessionalStdUT | GISProfessionalAdvUT

licenseFile

(Required)

The ArcGIS Enterprise on Kubernetes license file (.json). This license file—which contains information regarding your user types, apps, and capabilities—is obtained from My Esri. For more information, see Obtain a license file.

Note:

For ArcGIS Enterprise on Kubernetes 10.9.1 and earlier, this parameter accepts the ArcGIS Enterprise portal license file as input.

serverLicenseFile
Note:

Support for this parameter has been deprecated at ArcGIS Enterprise 11.0.

A valid ArcGIS Server license file (either .ecp or .prvc).

volumesConfig

(Required)

A JSON array of default storage configurations for the eight persistent volumes that are required for the deployment.

Note:

The persistent volume for the metric viewer (Grafana) was removed at 10.9.1

By default, the storage provisioning type for each persistent volume is DYNAMIC, though they can be manually changed to STATIC to support static provisioning types.

Note:

When using static provisioning, the label selectors (labels) and size value for each persistent volume must be defined, as both properties are required . The labels and size properties can be manually updated to reflect custom label selectors and sizes for each persistent volume. Storage class names are required for dynamic provisioning types; if custom storage class names are used, update the storageClass property to reflect the user-specified names.

Example


{
  "volumesConfig": [
    {
      "provisioningType": "DYNAMIC",
      "component": "RELATIONAL_PRIMARY",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "postgres"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "RELATIONAL_SECONDARY",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "postgres"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "BLOB",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "ozone"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "IN_MEM_CACHE",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "ignite"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "QUEUE",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "queue",
        "arcgis/app": "rabbitmq"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "INDEXER",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "elasticsearch"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "SHARING",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "api",
        "arcgis/app": "sharing"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "REST_METRICS_API",
      "size": "30Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "prometheus"
      }
    }
  ]
}
logSettings

(Optional)

This parameter allows you to override some of the log settings for your organization. Currently, you can update the level at which logs will be recorded during configuration. The default log level is VERBOSE during configuration. Once the organization is configured, the log level will switch to WARNING. The log level can be changed after configuration using the edit operation.

Values: SEVERE | WARNING | INFO | FINE | VERBOSE | DEBUG

Example

{"logLevel": "VERBOSE"}
systemProperties

(Optional)

A JSON object that can be used to set up the system properties for the organization before it is configured. System properties can be set, updated, or removed after the organization has been configured using the update operation.

systemArchitectureProfile

The architecture profile set for the organization. Architecture profiles are predefined deployment profiles that correlate to varying levels of redundancy across pods. A brief summary of each of the three profiles is provided in the System architecture profiles section below. For more information about the available architecture profiles, see Architecture Profiles. The default profile is standard-availability.

Example

{"name": "standard-availability"}
folderPathsToRegister

(Optional)

Legacy:

With the release of ArcGIS Enterprise on Kubernetes 10.9.1, this parameter is no longer recommended for registering folder paths during organization configuration. While folderPathsToRegister is still supported, it is recommended that you use the userManagedStores parameter below to register folder paths.

Registers the root folder paths for data stores. Registering folder paths during site creation allows you to avoid disruptions, such as the stopping of multiple services, that typically occur when registering folder paths after the organization has been configured.

Example

{"paths": ["/path/to/register", "/additional/folder/path"]}
userManagedStores

Introduced at 10.9.1. A JSON array that provides information to register the root folder paths for data stores using Network File Sharing (NFS). To register the root folder path, the following user-defined information must be provided:

  • clientPath—Either a drive or shared location where source data can be accessed and published by clients, such as ArcGIS Pro. If the clientPath value uses a drive location, an additional property (hostName) must be included as well.
  • fileServerHost—The machine name where shared data is stored and can be accessed through a NFS path.
  • filerServerPath—A NFS path on the host machine where shared data can be accessed across the organization.
Tip:

It is recommended that you register folder paths during site creation to avoid disruptions, such as the restarting of multiple services, which typically occur when registering folder paths after the organization has been configured.

Example


//Shared location
[
  {
    "clientPath": "\\\\sample_server\\SharedPath\Data",
    "type": "folder",
    "info": {
      "fileServerHost": "nfsHost.domain.com",
      "fileServerType": "nfs",
      "fileServerPath": "/SharedPath/Data"
    }
  }
]

//Drive location
{
  "clientPath": "C:\\data",
  "type": "folder",
  "info": {
    "fileServerHost": "nfsHost.domain.com",
    "fileServerType": "nfs",
    "fileServerPath": "/data",
    "hostName": "youclienthost.domain.com"
  }
}
f

The response format. The default response format is html.

Values: html | json | pjson

Secret questions and indexes

The securityQuestionIdx parameter defines a security question that is used when retrieving forgotten passwords. The security questions and their associated index numbers are as follows:

  1. What city were you born in?
  2. What was your high school mascot?
  3. What is your mother's maiden name?
  4. What was the make of your first car?
  5. What high school did you go to?
  6. What is the last name of your best friend?
  7. What is the middle name of your youngest sibling?
  8. What is the name of the street on which you grew up?
  9. What is the name of your favorite fictional character?
  10. What is the name of your favorite pet?
  11. What is the name of your favorite restaurant?
  12. What is the title of your favorite book?
  13. What is your dream job?
  14. Where did you go on your first date?

System architecture profiles

The predefined architecture profiles are described below. Both enhanced-availability and standard-availability are for high availability, and development is for development and nonproduction use. For more information, see Architecture Profiles.

enhanced-availability

The enhanced-availability profile is used in business or mission-critical production environments and is designed for the highest level of availability. Replicated pods are provided for publishing tools, storage, APIs, and ingress controllers with increased redundancy to support uninterrupted use in the event of unexpected failure or downtime. Of the three available profiles, enhanced-availability has the most hardware requirements and predefined redundancy across pods.

standard-availability

The standard-availability profile is the default profile when configuring an organization and is designed for use in production environments and those wanting to minimize unplanned downtime with redundancy across many pods. Replicated pods are provided for publishing tools and other essential pods such as storage, APIs, and ingress controllers to support continued use in the event of unexpected failure or downtime. The standard-availability profile has a moderate level of hardware requirements and predefined redundancy across pods.

development

The development profile is used in nonproduction environments, including those for testing and evaluation, and is not supported for production environments. Publishing tools are replicated to support multiple publishers in an organization. The development profile has minimal hardware requirements and predefined redundancy across pods.

Example usage

The following is a sample multipart POST request for the configure operation:


POST /context/admin/configure HTTP/1.1
Host: organization.domain.com
Content-Type: multipart/form-data; boundary=------boundary

------boundary
Content-Disposition: form-data; name="username"

jsmithadmin
------boundary
Content-Disposition: form-data; name="password"

test.pass1
------boundary
Content-Disposition: form-data; name="email"

jsmith@domain.com
------boundary
Content-Disposition: form-data; name="fullName"

John Smith
------boundary
Content-Disposition: form-data; name="firstName"


------boundary
Content-Disposition: form-data; name="lastName"


------boundary
Content-Disposition: form-data; name="description"

Initial Administrator Account
------boundary
Content-Disposition: form-data; name="securityQuestionIdx"

1
------boundary
Content-Disposition: form-data; name="securityQuestionAns"

Redlands
------boundary
Content-Disposition: form-data; name="userLicenseTypeId"

creatorUT
------boundary
Content-Disposition: form-data; name="licenseFile"; filename="kubernetesLicenseExample.json"
Content-Type: application/octet-stream

kubernetesLicenseExample.json
------boundary
Content-Disposition: form-data; name="logSettings"

{"logLevel": "VERBOSE"}
------boundary
Content-Disposition: form-data; name="systemProperties"

{}
------boundary
Content-Disposition: form-data; name="systemArchitectureProfile"

{"name": "standard-availability"}
------boundary
Content-Disposition: form-data; name=folderPathsToRegister


------boundary
Content-Disposition: form-data; name=userManagedStores

[
  {
    "clientPath": "\\\\sample_server\\SharedPath\Data",
    "type": "folder",
    "info": {
      "fileServerHost": "host.domain.com",
      "fileServerType": "nfs",
      "fileServerPath": "/SharedPath/Data"
    }
  }
]
------boundary
Content-Disposition: form-data; name="volumesConfig"

{
  "volumesConfig": [
    {
      "provisioningType": "DYNAMIC",
      "component": "RELATIONAL_PRIMARY",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "postgres"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "RELATIONAL_SECONDARY",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "postgres"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "BLOB",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "ozone"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "IN_MEM_CACHE",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "ignite"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "QUEUE",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "queue",
        "arcgis/app": "rabbitmq"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "INDEXER",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "elasticsearch"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "SHARING",
      "size": "16Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "api",
        "arcgis/app": "sharing"
      }
    },
    {
      "provisioningType": "DYNAMIC",
      "component": "REST_METRICS_API",
      "size": "30Gi",
      "storageClass": "arcgis-storage-default",
      "labels": {
        "arcgis/tier": "storage",
        "arcgis/app": "prometheus"
      }
    }
  ]
}
------boundary
Content-Disposition: form-data; name="f"

pjson
------boundary--

JSON Response example

The following response is returned immediately once the configure operation has been submitted:


{
  "fullVersion": "10.9.0",
  "resources": [
    "orgs",
    "logs",
    "system",
    "datastores",
    "uploads",
    "services"
  ],
  "currentVersion": 10.9,
  "status": {
    "stages": [
      {
        "lastUpdated": 1617220064600,
        "name": "License validation",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Configuration store",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Relational store",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Queue store",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "In-memory store",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Object store",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Spatiotemporal and index store",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Usage Statistics",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Portal REST API",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Services REST API",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Service lifecycle manager",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "System and utility services",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Pod replicas",
        "state": "not_started"
      }
    ],
    "state": "in_progress",
    "message": "Creating a new organization."
  },
  "info": {"build": "1068"}
}

The following response example illustrates the messages returned during configuration:


{
  "fullVersion": "10.9.0",
  "resources": [
    "orgs",
    "logs",
    "system",
    "datastores",
    "uploads",
    "services"
  ],
  "currentVersion": 10.9,
  "status": {
    "stages": [
      {
        "lastUpdated": 1617220075488,
        "name": "License validation",
        "state": "completed"
      },
      {
        "lastUpdated": 1617220156821,
        "name": "Configuration store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617220441887,
        "name": "Relational store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617220397336,
        "name": "Queue store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617220316318,
        "name": "In-memory store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617220394397,
        "name": "Object store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617220180254,
        "name": "Spatiotemporal and index store",
        "state": "in_progress"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Usage Statistics",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Portal REST API",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Services REST API",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220182126,
        "name": "Service lifecycle manager",
        "state": "completed"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "System and utility services",
        "state": "not_started"
      },
      {
        "lastUpdated": 1617220064600,
        "name": "Pod replicas",
        "state": "not_started"
      }
    ],
    "state": "in_progress",
    "message": "Creating a new organization."
  },
  "info": {"build": "1068"}
}

The following response is returned by the root resource when configuration is complete:


{
  "fullVersion": "10.9.0",
  "resources": [
    "orgs",
    "logs",
    "system",
    "datastores",
    "uploads",
    "services"
  ],
  "currentVersion": 10.9,
  "status": {
    "stages": [
      {
        "lastUpdated": 1617618356580,
        "name": "License validation",
        "state": "completed"
      },
      {
        "lastUpdated": 1617618418617,
        "name": "Configuration store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617618650035,
        "name": "Relational store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617618583071,
        "name": "Queue store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617618478209,
        "name": "In-memory store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617618533529,
        "name": "Object store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617618568548,
        "name": "Spatiotemporal and index store",
        "state": "completed"
      },
      {
        "lastUpdated": 1617619386543,
        "name": "Portal REST API",
        "state": "completed"
      },
      {
        "lastUpdated": 1617619884644,
        "name": "Services REST API",
        "state": "completed"
      },
      {
        "lastUpdated": 1617619823957,
        "name": "Service lifecycle manager",
        "state": "completed"
      },
      {
        "lastUpdated": 1617618437743,
        "name": "Usage statistics",
        "state": "completed"
      },
      {
        "lastUpdated": 1617620838344,
        "name": "System and utility services",
        "state": "completed"
      },
      {
        "lastUpdated": 1617619729948,
        "name": "Pod replicas",
        "state": "completed"
      }
    ],
    "state": "ready",
    "message": "The process to create a new organization has completed successfully."
  },
  "info": {"build": "1068"}
}