| // _base defines settings that apply to all cloud objects |
| // k8s is a set of Kubernetes-specific settings that will be merged in at |
| // the top-level. The allowed fields are type specfic. |
| deployment: [Name=_]: _base & { |
| // Allow any string, but take Name by default. |
| kind: *"deployment" | "stateful" | "daemon" |
| // expose port defines named ports that is exposed in the service |
| expose: port: [string]: int |
| // port defines named ports that is not exposed in the service. |
| args: [ for k, v in arg { "-\(k)=\(v)" } ] | [...string] |
| service: [Name=_]: _base & { |
| // define services implied by deployments |
| for k, spec in deployment if len(spec.expose.port) > 0 { |
| // Copy over all ports exposed from containers. |
| for Name, Port in spec.expose.port { |
| // Set default external port to Port. targetPort must be |
| // the respective containerPort (Port) if it differs from port. |