For an on-paved road service, this is the only file in their deployment repo:

apiVersion: mycompany.com/v1alpha1
kind: WebService
metadata:
  name: my-service
spec:
  version: 13 # helm chart version
  # everything here goes into values.yaml
  values: # This is NOT an untyped object. The fields are defined and enforced with a JSON schema.
    # This is all stuff I pulled from the onboarding script. Maybe we need it, maybe we don't.
    artifactName:
    artifactEndpoint:
    registry:
    assetId:
    assetAlias:
    l1:
    l2:
    mesh:
      port:
      sidecarPort:
      policyId:
      excludeInboundPorts:
      excludeOutboundIpRanges:
    kubernetesServiceName: # Default is {baseArtifactId}-desired-service

  environmentOverrides:
  - name: e2e
    version: 14
    values:
      # All the fields from the top level spec.values, except environmentOverrides, can be overridden here.
      # The following additional fields are only available as environment overrides.
      # This stuff ends up in values-e2e.yaml
      ingressEndpoint:
      cluster:
      namespace:
      region:
      iksType:
    offPavedRoadKustomization:
      - reason: "Can't do the Mesh thing I wanted to do."
        patches:
        # You get the entire kustomization spec, minus `helmCharts`.
        - patch:
  - name: prd
---
apiVersion: mycompany.com/v1alpha1
kind: CronJob

If you run a CLI with the Service yaml as an input, we prepare the following files

$ service-render --help

Commands:

  prepare - does all the steps that happen before running `kustomize build`
  build {env} - renders manifests for the given env
  build {env} --exclude-off-paved-road-patches - renders everything, but leaves off the paved road patches
  build {env} --diff-off-paved-road-patches - renders with patches and then with patches, prints the diff
service-render prepare -i service.yaml

You get a directory tree like this:

service.yaml
e2e/
  kustomization.yaml
  values.yaml
  values-e2e.yaml
prd/
  kustomization.yaml
  values.yaml
  values-prd.yaml

/e2e/kustomization.yaml:

# we write a kustomization.yaml like this:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: my-service
  chart: service
  version: 14  # got overridden for this environment
  releaseName: my-service
  values:
  - values.yaml
  - values-e2e.yaml

/prd/kustomization.yaml:

# we write a kustomization.yaml like this:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: my-service
  chart: service
  version: 13  # came from the base
  releaseName: my-service
  values:
  - values.yaml
  - values-prd.yaml