GAP Documentation
GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Domains and DNS

Overview

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.

Default domain patterns

The default domain is derived from the application name and the target instance:

InstanceEnvironmentPattern
s-eu1-01EU stagingeu1-01.<app>.gap.s.sap.emarsys.com
p-eu1-01EU productioneu1-01.<app>.gap.cloud.sap.emarsys.net
s-us1-01US stagingus1-01.<app>.gap.s.sap.emarsys.com
p-us1-01US productionus1-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

What happens automatically

When you set ingress.enabled: true in gap.yaml, GAP handles the rest:

  1. The GAP chart generates the Ingress with the default host name for the instance.
  2. Validation checks that the host matches the allowed pattern for that instance.
  3. The external-dns.alpha.kubernetes.io/target annotation is added for the correct load balancer.
  4. external-dns creates the DNS record in Cloud DNS.
  5. cert-manager issues a TLS certificate through Let’s Encrypt.

For the default setup, no ticket and no manual DNS work are needed.

Minimal example

# 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.

Validation

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. or us1-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 legacy gservice.emarsys.com and gservice.emarsys.net host patterns are not checked by this validation. Validation applies to the new *.gap.s.sap.emarsys.com and *.gap.cloud.sap.emarsys.net patterns.

Customer-facing domains

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

Setting hosts manually

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.

Cleanup

When an application is removed from GAP, the related DNS records are cleaned up automatically.