Forge Container services is now in Preview, and therefore fully supported. However, it remains under active development and may be subject to shorter deprecation windows. Preview features are suitable for early adopters in production environments.
We release preview features so partners and developers can study, test, and integrate them prior to General Availability (GA). For more details, see Forge EAP, Preview, and GA.
Forge Container services are a set of tools and capabilities for managing containerised services for Forge apps. You can use Forge Container services to package a service’s code and dependencies, opening up a wider range of programming languages and frameworks.
With Forge Container services, you can run services from container images directly on Forge infrastructure. You can update, launch, scale, and otherwise manage the lifecycle of these services using Forge Container tools. In addition, hosted container services unblock important use cases like long-running compute, which were previously not possible with Forge functions.
ROADMAP
Stay informed about the latest and upcoming Forge Container updates, along with the current feature set and limitations.
Functions, events, UI elements, and triggers from your app can invoke endpoints exposed by your containerised service. Conversely, you can build containerised services that invoke Atlassian product APIs or any Forge capability (for example, hosted storage).
This implementation is similar to how Forge apps can integrate with your remote services via Forge Remote. The key difference is that Forge Container services let you host services directly on Atlassian-hosted compute. This lets you build microservice-based apps that can also leverage platform features like data residency and the Runs on Atlassian badge.
Forge Container services uses a canary deployment strategy to validate each deployment before it takes effect.
During deployment, Forge runs a series of health checks before rolling the update out to provisioned instances. If the health checks fail, the deployment is rolled back.
Container service instances are provisioned based on app installations: when your app is installed on a site, the infrastructure is provisioned for that site's region. On the first deployment with no existing installations, the canary validation still runs but no persistent service instances are provisioned — the canary is cleaned up automatically. See Managing containerised services for more details on provisioning.
During the canary validation phase, the new container version may run alongside existing instances. For this reason, your app's startup logic should be defensive — avoid performing destructive operations (such as schema migrations or cache invalidation) on startup, as the deployment may be rolled back if health checks fail.
The patch version of your app will be incremented automatically during the first installation (either via new installation or existing upgrade) for a new major version in a region. This is an internal versioning mechanism and does not affect your app's major or minor version.
Forge Container services follows the Kubernetes Restricted policy for security standards. This ensures a more secure approach to running service and container instances.
For more details about this standard, refer to the Kubernetes documentation.
In addition to this standard, Forge Container services deploys all container instances with restricted file system permissions. Each instance mounts a read-only root file system, except for the following directories (which remain writeable):
/var/tmp/var/run/tmpImages used by your apps are subject to our image security guidelines. These guidelines describe the hardening, egress, and tenant-isolation requirements that apply during Marketplace approval.
Forge Container services aims to enable use cases that wouldn't be possible otherwise without container support. However, our goal is not to provide a general-purpose container management platform. As such, Forge Container services is subject to the following constraints:
@forge/* SDK packages (such as @forge/api, @forge/kvs, and @forge/sql).latest won't work; we recommend using environment variables on your tagging scheme.1000
to execute container runtime commands.forge deploy. This means you won't be able to stop a containerised service manually.forge lint or forge deploy commands won't scan images for any problems or validation errors.services definition to an existing app's manifest for the first time, the next deployment creates a new major version of your app.key is limited to 19 characters due to infrastructure constraints. Choose concise service key names to avoid deployment failures.Forge Container services is now in Preview. Preview features are fully supported but remain under active development and may be subject to shorter deprecation windows.
See Forge Container services roadmap for more details about current limitations and our plans to address them in upcoming milestones.
Forge Container services provides built-in observability features to help you monitor the health and performance of your containerised services:
GLOSSARY
The implementation of Forge Container services varies slightly from how traditional containerised services work. Refer to the following Glossary to understand how specific terms are used in Forge Container services.
Rate this page: