Core
PaaS v2.x
2

Environments #

An environment belongs to a project and contains applications.

Controller: org-environment

Base HTTP route:

/organizations/:organizationId/projects/:projectId/environments

Environment fields (name, size, ...) are passed as query parameters, not as a request body.

Create an environment #

const environment = await kuzzle.query({
  controller: 'org-environment',
  action: 'create',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project',
  name: 'production',
  description: 'Production environment',
  size: 'M',
  initKeycloakRealm: 'true'
});

HTTP route:

POST /organizations/:organizationId/projects/:projectId/environments?name=production&size=M

Optional parameters:

  • description: human-readable description.
  • size: environment size (see Environment sizes).
  • tier: deployment tier, one of uat, staging or prod.
  • initKeycloakRealm: set to the string 'true' to also provision a Keycloak realm for the environment.

List environments #

const environments = await kuzzle.query({
  controller: 'org-environment',
  action: 'list',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project'
});

HTTP route:

GET /organizations/:organizationId/projects/:projectId/environments

Get an environment #

const environment = await kuzzle.query({
  controller: 'org-environment',
  action: 'get',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project',
  environmentId: 'production'
});

HTTP route:

GET /organizations/:organizationId/projects/:projectId/environments/:environmentId

Refresh an environment #

Reconciles an environment status with ArgoCD.

const environment = await kuzzle.query({
  controller: 'org-environment',
  action: 'refresh',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project',
  environmentId: 'production'
});

HTTP route:

POST /organizations/:organizationId/projects/:projectId/environments/:environmentId/_refresh

Disable an environment #

Disables the environment and its applications.

await kuzzle.query({
  controller: 'org-environment',
  action: 'disable',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project',
  environmentId: 'production'
});

HTTP route:

POST /organizations/:organizationId/projects/:projectId/environments/:environmentId/_disable

Enable an environment #

await kuzzle.query({
  controller: 'org-environment',
  action: 'enable',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project',
  environmentId: 'production'
});

HTTP route:

POST /organizations/:organizationId/projects/:projectId/environments/:environmentId/_enable

Delete an environment #

Deletes the environment and tears down its external resources (Keycloak realm, then monitoring).

await kuzzle.query({
  controller: 'org-environment',
  action: 'delete',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project',
  environmentId: 'production'
});

HTTP route:

DELETE /organizations/:organizationId/projects/:projectId/environments/:environmentId

Create a Keycloak realm #

Provisions a Keycloak realm for an existing environment.

const environment = await kuzzle.query({
  controller: 'org-environment',
  action: 'createKeycloakRealm',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project',
  environmentId: 'production'
});

HTTP route:

POST /organizations/:organizationId/projects/:projectId/environments/:environmentId/_keycloak

Create a Scaleway SMTP API key #

Creates a Scaleway SMTP API key for an environment (used for transactional email).

const apiKey = await kuzzle.query({
  controller: 'org-environment',
  action: 'createScalewaySmtpApiKey',
  organizationId: 'paas-org-my-company',
  projectId: 'my-project',
  environmentId: 'production'
});

HTTP route:

POST /organizations/:organizationId/projects/:projectId/environments/:environmentId/scaleway/smtp-api-key

GitHub deployment environment #

Owner/admin actions to wire an environment to GitHub Actions deployments (the project must be connected to a GitHub repository first — see Projects):

  • configureGithubEnvironment — creates the native GitHub Environment on the project repository (POST .../environments/:environmentId/github).
  • generateGithubDeploymentCredentials — creates a per-environment Harbor robot account and propagates it as GitHub secrets (POST .../environments/:environmentId/github/credentials).

Environment sizes #

Supported sizes:

  • S
  • S_SLA
  • M
  • L

Environment statuses #

Known statuses:

  • Deploying
  • Deployed
  • Upgrading
  • Disabled
  • Errored