- URL:
- https://<root>/configure
- Methods:
POST
- Required Capability:
- Access allowed only with the default administrator role
- 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:
- EsriDocker 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
Parameter | Details |
---|---|
(Required) | The initial administrator account username. Valid usernames must be at least six characters in length, using alphanumeric values with only the following symbols allowed:
Example
|
(Required) | The password for the initial administrator account. Valid 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
|
(Required) | The email address associated with the initial administrator account. Example
|
(Required) | The full name of the user being designated as the initial administrator. Example
|
(Optional) | The first name of the user being designated as the initial administrator. Example
|
(Optional) | The last name of the user being designated as the initial administrator. Example
|
(Optional) | A description of the account. |
(Required) | The index of the secret question used to retrieve a forgotten password. The list of possible secret question indexes is below. Example
|
(Required) | The answer to the secret question specified in the Example
|
(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: |
(Required) | The ArcGIS Enterprise on Kubernetes license file ( |
| A valid ArcGIS Server license file (either |
(Required) | A JSON object containing the default storage configurations for the eight persistent volumes that are required for the deployment. By default, the storage provisioning type for each persistent volume is Example
|
| Introduced at 11.2. A JSON array containing the deployment's cloud storage configuration for cloud-native object stores and cloud-native relational data stores (added at ArcGIS Enterprise 11.4 on Kubernetes). For more information, see the Cloud configuration properties section below. Example
|
(Optional) | Specifies the level that can be used to override some log settings for your organization. Currently, you can update the level at which logs will be recorded during configuration. The default log level is Values: |
(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. |
| 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 Example
|
(Optional) | 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
|
| 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:
Example
|
| The response format. The default response format is Values: |
Additional parameter information
Secret questions and indexes
The security
parameter defines a security question that is used when retrieving forgotten passwords. The security questions and their associated index numbers are as follows:
- What city were you born in?
- What was your high school mascot?
- What is your mother's maiden name?
- What was the make of your first car?
- What high school did you go to?
- What is the last name of your best friend?
- What is the middle name of your youngest sibling?
- What is the name of the street on which you grew up?
- What is the name of your favorite fictional character?
- What is the name of your favorite pet?
- What is the name of your favorite restaurant?
- What is the title of your favorite book?
- What is your dream job?
- 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.
Cloud configuration properties
Starting at 11.2, ArcGIS Enterprise on Kubernetes supports cloud-native storage for object stores and, starting at 11.4, cloud-native storage for relational data stores. The configurations for cloud-native object stores and relational data stores are comprised of two main components: one that outlines the cloud service provider information, and one that outlines the specific services used in the deployment. The properties included in each component are described below:
The provider portion of a cloud storage configuration JSON array may consist of two properties:
-
name
: Specifies the name of the cloud provider. This property is required. -
credential
: Outlines the credentials needed to access the cloud service provider. This property is only needed if a cloud-native object store is being configured for the deployment.
The examples below show how these properties are used in an object store configuration, a relational data store configuration, and a configuration that includes both an object and relational data store:
[
{
"name": "AWS",
"credential": {
"type": "IAM-ROLE"
},
"cloudServices": [
{
"name": "AWS S3",
"type": "objectStore",
ArcGIS Enterprise on Kubernetes supports Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), and Google Kubernetes Engine (GKE) as cloud service providers. When configuring your organization, it is recommended to use cloud-native services that correspond to your environment's cloud provider. For example:
Cloud provider | Cloud-native object store | Cloud-native relational store |
---|---|---|
Amazon Elastic Kubernetes Service (EKS) | Amazon S3 | Amazon Relational Database Service (RDS) for PostgreSQL, Amazon Aurora for PostgreSQL |
Azure Kubernetes Service (AKS) | Azure Blob Storage | Azure Database for PostgreSQL flexible server |
Google Kubernetes Engine (GKE) | Google Cloud Store | Cloud SQL, AlloyDB for PostgreSQL |
The following sections provide JSON examples for the cloud
parameter for each supported cloud provider.
Amazon Elastic Kubernetes Service (EKS)
The tabs below provide sample JSON arrays for the cloud
parameter for EKS provided cloud services.
The following is a sample JSON array that demonstrates the configuration for the following:
- Amazon S3 using AWS Identity and Access Management (IAM) roles
- Amazon S3 using an access key
[
{
"name": "AWS",
"credential": {
"type": "IAM-ROLE"
},
"cloudServices": [
{
"name": "AWS S3",
"type": "objectStore",
"usage": "DEFAULT",
Azure Kubernetes Service (AKS)
The tabs below provide sample JSON arrays for the cloud
parameter for AKS provided cloud services.
The following is a sample JSON array that demonstrates the configuration for the following:
- Azure Blob Storage using system-assigned managed identities
- Azure Blob Storage using user-assigned managed identities
- Azure Blob Storage using Azure storage account key
[
{
"name": "AZURE",
"credential": {
"type": "SYSTEM-ASSIGNED-IDENTITY",
"secret": {
"storageAccountName": "<account_name>"
}
},
"cloudServices": [
{
Google Kubernetes Engine (GKE)
The tabs below provide sample JSON arrays for the cloud
parameter for GKE provided cloud services.
The following is a sample JSON array that demonstrates the configuration for Google Cloud Storage using Hash-Based Authentication Codes (HMAC) keys:
[
{
"name": "GCP",
"credential": {
"type": "HMAC-KEYS",
"secret": {
"secretKey": "<secret_key>",
"accessKey": "<access_key>"
}
},
"cloudServices": [
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="cloudConfig"
[
{
"name": "AWS",
"credential": {
"type": "IAM-ROLE"
},
"cloudServices": [
{
"name": "AWS RDS for PostgreSQL",
"category": "databases",
"type": "relationalStore",
"instanceProvided": true,
"usage": "DEFAULT",
"connection": {
"dbUri": "XXXXXXXXX",
"dbReadonlyUri": "XXXXXXXXX",
"dbPort": 5432,
"credential": {
"type": "databaseUser",
"databaseUsers": {
"adminUser": {
"authType": "PASSWORD",
"name": "XXXXXXXXX",
"password": "XXXXXXXXX"
}
}
}
}
},
{
"name": "AWS S3",
"type": "objectStore",
"usage": "DEFAULT",
"connection": {
"bucketName": "XXXXXXXXX",
"region": "XXXXXXXXX",
"regionEndpointUrl": "XXXXXXXXX",
"rootDir": "XXXXXXXXX"
},
"category": "storage"
}
]
}
]
------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": "11.2.0",
"resources": [
"orgs",
"logs",
"system",
"datastores",
"uploads",
"services"
],
"currentVersion": 11.2,
"status": {
"stages": [
{
"lastUpdated": 1687990855948,
"name": "License validation",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Configuration store",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Relational store",
"state": "not_started"
},
{
"lastUpdated": 1687990973648,
"name": "Cloud Native Storage",
"state": "not_applicable"
},
{
"lastUpdated": 1687990855948,
"name": "Queue store",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "In-memory store",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Object store",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Spatiotemporal and index store",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Portal REST API",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Services REST API",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Service lifecycle manager",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Usage Statistics",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "System and utility services",
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Pod replicas",
"state": "not_started"
}
],
"state": "in_progress",
"message": "Creating a new organization."
},
"info": {"build": "4938"}
}
The following response example illustrates the messages returned during configuration:
{
"fullVersion": "11.2.0",
"resources": [
"orgs",
"logs",
"system",
"datastores",
"uploads",
"services"
],
"currentVersion": 11.2,
"status": {
"warnings": [],
"stages": [
{
"lastUpdated": 1687990973551,
"name": "License validation",
"startTime": 1687990973435,
"state": "completed"
},
{
"lastUpdated": 1687990951001,
"name": "Configuration store",
"startTime": 1687990944565,
"state": "completed"
},
{
"lastUpdated": 1687990974847,
"name": "Relational store",
"startTime": 1687990974847,
"state": "in_progress"
},
{
"lastUpdated": 1687990973648,
"name": "Cloud Native Storage",
"startTime": 0,
"state": "not_applicable"
},
{
"lastUpdated": 1687991103134,
"name": "Queue store",
"startTime": 1687990975235,
"state": "completed"
},
{
"lastUpdated": 1687991043732,
"name": "In-memory store",
"startTime": 1687990974125,
"state": "completed"
},
{
"lastUpdated": 1687991149750,
"name": "Object store",
"startTime": 1687990973839,
"state": "completed"
},
{
"lastUpdated": 1687991113527,
"name": "Spatiotemporal and index store",
"startTime": 1687990974441,
"state": "completed"
},
{
"lastUpdated": 1687990855948,
"name": "Portal REST API",
"startTime": 0,
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Services REST API",
"startTime": 0,
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Service lifecycle manager",
"startTime": 0,
"state": "not_started"
},
{
"lastUpdated": 1687990976324,
"name": "Usage statistics",
"startTime": 1687990974642,
"state": "completed"
},
{
"lastUpdated": 1687990855948,
"name": "System and utility services",
"startTime": 0,
"state": "not_started"
},
{
"lastUpdated": 1687990855948,
"name": "Pod replicas",
"startTime": 0,
"state": "not_started"
}
],
"state": "in_progress",
"message": "Creating a new organization."
},
"info": {"build": "4938"}
}
The following response is returned by the root
resource when configuration is complete:
{
"fullVersion": "11.2.0",
"resources": [
"orgs",
"logs",
"system",
"datastores",
"uploads",
"services"
],
"currentVersion": 11.2,
"status": {
"warnings": [],
"stages": [
{
"lastUpdated": 1687948742412,
"name": "License validation",
"startTime": 1687948742290,
"state": "completed"
},
{
"lastUpdated": 1687948729565,
"name": "Configuration store",
"startTime": 1687948725322,
"state": "completed"
},
{
"lastUpdated": 1687948963682,
"name": "Relational store",
"startTime": 1687948743564,
"state": "completed"
},
{
"lastUpdated": 1687948742513,
"name": "Cloud Native Storage",
"startTime": 0,
"state": "not_applicable"
},
{
"lastUpdated": 1687948872082,
"name": "Queue store",
"startTime": 1687948743965,
"state": "completed"
},
{
"lastUpdated": 1687948804496,
"name": "In-memory store",
"startTime": 1687948744562,
"state": "completed"
},
{
"lastUpdated": 1687948879736,
"name": "Object store",
"startTime": 1687948743106,
"state": "completed"
},
{
"lastUpdated": 1687948888802,
"name": "Spatiotemporal and index store",
"startTime": 1687948744274,
"state": "completed"
},
{
"lastUpdated": 1687949385630,
"name": "Portal REST API",
"startTime": 1687948967043,
"state": "completed"
},
{
"lastUpdated": 1687949777879,
"name": "Services REST API",
"startTime": 1687949416130,
"state": "completed"
},
{
"lastUpdated": 1687949748757,
"name": "Service lifecycle manager",
"startTime": 1687949416334,
"state": "completed"
},
{
"lastUpdated": 1687948745274,
"name": "Usage statistics",
"startTime": 1687948742864,
"state": "completed"
},
{
"lastUpdated": 1687950918528,
"name": "System and utility services",
"startTime": 1687949778875,
"state": "completed"
},
{
"lastUpdated": 1687949470153,
"name": "Pod replicas",
"startTime": 1687949416536,
"state": "completed"
}
],
"state": "ready",
"message": "The process to create a new organization has completed successfully."
},
"info": {"build": "4938"}
}