Domains and DNS
When you enable ingress for an application on GAP, the platform creates the default domain, DNS record, and TLS certificate automatically. For the standard setup, there is nothing extra your team needs to request or configure.
The GAP domain patterns documented on this page are intended for GAP-internal communication and platform-managed endpoints. It follows patterns defined in the Engagement Cloud Instance Reference.
The default domain is derived from the application name and the target instance:
| Instance | Environment | Pattern |
|---|---|---|
s-eu1-01 | EU staging | eu1-01.<app>.gap.s.sap.emarsys.com |
p-eu1-01 | EU production | eu1-01.<app>.gap.cloud.sap.emarsys.net |
s-us1-01 | US staging | us1-01.<app>.gap.s.sap.emarsys.com |
p-us1-01 | US production | us1-01.<app>.gap.cloud.sap.emarsys.net |
For an app named my-app on s-eu1-01 the domain would be eu1-01.my-app.gap.s.sap.emarsys.com.
The prefix always follows the instance name, for example eu1-01 or us1-01.
On EU instances (
s-eu1-01,p-eu1-01), the legacy domain patterns are still supported as well:
- staging:
<app>-staging.gservice.emarsys.com- production:
<app>.gservice.emarsys.net
When you set ingress.enabled: true in gap.yaml, GAP handles the rest:
- The GAP chart generates the Ingress with the default host name for the instance.
- Validation checks that the host matches the allowed pattern for that instance.
- The
external-dns.alpha.kubernetes.io/targetannotation is added for the correct load balancer. external-dnscreates the DNS record in Cloud DNS.cert-managerissues a TLS certificate through Let’s Encrypt.
For the default setup, no ticket and no manual DNS work are needed.
# gap/gap.yaml
name: my-app
namespace: my-team
deployments:
web:
command: ["node", "server.js"]
ingress:
enabled: true
With this configuration, GAP creates the default domain automatically on each instance where the application is deployed.
Ingress hosts must match the allowed domain pattern for the target instance. If they do not, the Ingress is rejected.
Validation checks that:
- the host is not empty
- the host includes the correct instance prefix, such as
eu1-01.orus1-01. - the host uses the correct domain suffix for the instance
For example, on s-us1-01, the host my-app.gap.s.sap.emarsys.com would be rejected because it is missing the us1-01. prefix.
On EU instances, the legacygservice.emarsys.comandgservice.emarsys.nethost patterns are not checked by this validation. Validation applies to the new*.gap.s.sap.emarsys.comand*.gap.cloud.sap.emarsys.netpatterns.
These domains are not part of the default automatic GAP domain flow and should be approved by the Central Architects.
If you need a customer-facing domain, request it in the ECINFRA Jira project.
Customer-facing domains use a different pattern, for example:
us1-01.<app>.cloud.sap.emarsys.net
If you want to add extra GAP host names, use ingress.hosts.
If you still want to keep the default domain, include it explicitly in the list together with any additional hosts.
If you need a customer-facing domain instead, use the ECINFRA ticket flow described above.
# gap/s-us1-01/gap.yaml
deployments:
web:
ingress:
enabled: true
hosts:
- us1-01.my-app.gap.s.sap.emarsys.com
- us1-01.my-custom-alias.gap.s.sap.emarsys.com
Every host in the list must follow the allowed pattern for that instance. Otherwise the Ingress is rejected.
When an application is removed from GAP, the related DNS records are cleaned up automatically.