diff --git a/docs/reference/providers/kubernetes.md b/docs/reference/providers/kubernetes.md index d89a763713..635267501b 100644 --- a/docs/reference/providers/kubernetes.md +++ b/docs/reference/providers/kubernetes.md @@ -578,6 +578,14 @@ The external HTTPS port of the cluster's ingress controller. Specify which namespace to deploy services to (defaults to ). Note that the framework generates other namespaces as well with this name as a prefix. +| Type | Required | +| ---- | -------- | +| `string` | No +### `environments[].providers[].setupIngressController` +[environments](#environments) > [providers](#environments[].providers[]) > setupIngressController + +Set this to `nginx` to install/enable the NGINX ingress controller. + | Type | Required | | ---- | -------- | | `string` | No @@ -643,4 +651,5 @@ environments: ingressHttpPort: 80 ingressHttpsPort: 443 namespace: + setupIngressController: false ``` diff --git a/garden-service/src/plugins/kubernetes/config.ts b/garden-service/src/plugins/kubernetes/config.ts index be762f0477..eba89e9ce0 100644 --- a/garden-service/src/plugins/kubernetes/config.ts +++ b/garden-service/src/plugins/kubernetes/config.ts @@ -274,5 +274,9 @@ export const configSchema = kubernetesConfigBase "Specify which namespace to deploy services to (defaults to ). " + "Note that the framework generates other namespaces as well with this name as a prefix.", ), + setupIngressController: Joi.string() + .allow("nginx", false, null) + .default(false) + .description("Set this to `nginx` to install/enable the NGINX ingress controller."), _system: Joi.any().meta({ internal: true }), }) diff --git a/garden-service/src/plugins/kubernetes/kubernetes.ts b/garden-service/src/plugins/kubernetes/kubernetes.ts index acf76e99ed..2502795e17 100644 --- a/garden-service/src/plugins/kubernetes/kubernetes.ts +++ b/garden-service/src/plugins/kubernetes/kubernetes.ts @@ -26,10 +26,16 @@ import { ConfigurationError } from "../../exceptions" export const name = "kubernetes" export async function configureProvider({ projectName, config }: ConfigureProviderParams) { + config._systemServices = [] + if (!config.namespace) { config.namespace = projectName } + if (config.setupIngressController === "nginx") { + config._systemServices.push("ingress-controller", "default-backend") + } + if (config.buildMode === "cluster-docker") { if (config.deploymentRegistry) { throw new ConfigurationError( @@ -47,7 +53,7 @@ export async function configureProvider({ projectName, config }: ConfigureProvid } // Deploy build services on init - config._systemServices = ["docker-daemon", "docker-registry", "registry-proxy"] + config._systemServices.push("docker-daemon", "docker-registry", "registry-proxy") } else if (!config.deploymentRegistry) { throw new ConfigurationError(