# Deprecations

## Deprecations

This document collects the features that have been deprecated in Garden 0.14.

## Old configuration syntax

### `hotReload` configuration field in modules <a href="#hotreload" id="hotreload"></a>

The module-level `hotReload` configuration field was removed in Garden 0.13 and has no effect. Please use actions with the `sync` mode instead.

See the [Code Synchronization Guide](https://docs.garden.io/edge-release/features/code-synchronization) for details.

### `serviceResource.hotReloadArgs` configuration field in `kubernetes` modules <a href="#hotreloadargs" id="hotreloadargs"></a>

The `serviceResource.hotReload` configuration field in `kubernetes` modules was removed in Garden 0.13 and has no effect. Please use actions with the `sync` mode instead.

See the [Code Synchronization Guide](https://docs.garden.io/edge-release/features/code-synchronization) for details.

### `spec.devMode` configuration field in actions <a href="#devmode" id="devmode"></a>

The `spec.devMode` configuration field in actions is deprecated in Garden 0.14. Please use `spec.sync` configuration field instead.

The old fields `spec.devMode` are automatically converted to `spec.sync` in Garden 0.14 when using `apiVersion: garden.io/v2` in the project-level configuration.

### `spec.localMode` configuration field in `helm`, `kubernetes` and `container` Deploy actions <a href="#localmode" id="localmode"></a>

The local-mode feature was completely removed in 0.14, and the `spec.localMode` configuration syntax has no effect. Please remove all `spec.localMode` entries from your configuration files.

### `resources.sync` config field in the `kubernetes` provider <a href="#kubernetesprovidersyncresourcelimit" id="kubernetesprovidersyncresourcelimit"></a>

The `resources.sync` config field in the `kubernetes` provider has no effect in Garden 0.13 and 0.14., Please remove it from your `kubernetes` provider configuration.

The `resources.sync` config field in the `kubernetes` provider was only used for the `cluster-docker` build mode, which was removed in Garden 0.13.",

### `spec.files` configuration field in `kubernetes-pod` action type <a href="#kubernetespodspecfiles" id="kubernetespodspecfiles"></a>

The `spec.files` configuration field in `kubernetes-pod` action type has no effect. Please remove it and use `spec.manifestFiles` or `spec.manifestTemplates` instead.

See the reference documentation for details.

For the `Run` action kind see [`spec.manifestFiles`](https://docs.garden.io/edge-release/reference/action-types/run/kubernetes-pod#spec.manifestfiles) and [`spec.manifestTemplates`](https://docs.garden.io/edge-release/reference/action-types/run/kubernetes-pod#spec.manifesttemplates). For the `Test` action kind see [`spec.manifestFiles`](https://docs.garden.io/edge-release/reference/action-types/test/kubernetes-pod#spec.manifestfiles) and [`spec.manifestTemplates`](https://docs.garden.io/edge-release/reference/action-types/test/kubernetes-pod#spec.manifesttemplates).

### `spec.limits` configuration field in `container` Deploy action <a href="#containerdeployactionlimits" id="containerdeployactionlimits"></a>

Please use the `cpu` and `memory` configuration fields instead.

Note! If the deprecated field [`spec.limits`](https://docs.garden.io/edge-release/reference/action-types/deploy/container#spec.limits) is defined in the `container` Deploy action config, Garden 0.14 automatically copies the field's contents to the `spec.cpu` and `spec.memory`, even if the latter are defined explicitly.

Please do not use both `spec.limits` and `spec.cpu` and/or `spec.memory` simultaneously, and use only the latter pair of fields. Otherwise, the values from the old field `spec.limits` will be used.

See [`spec.cpu`](https://docs.garden.io/edge-release/reference/action-types/deploy/container#spec.cpu) and [`spec.memory`](https://docs.garden.io/edge-release/reference/action-types/deploy/container#spec.memory) for the new syntax details.

## Unsupported commands

### `cleanup-cluster-registry` <a href="#kubernetesplugincleanupclusterregistrycommand" id="kubernetesplugincleanupclusterregistrycommand"></a>

The `cleanup-cluster-registry` command in the `kubernetes` and `local-kubernetes` plugins is not supported in Garden 0.14. This command no longer has any effect as of version 0.13! Please remove this from any pipelines running it.

## Deprecated configuration

### `podSelector` configuration field in sync mode <a href="#podselectorinsyncmode" id="podselectorinsyncmode"></a>

The `podSelector` configuration field is deprecated and has no effect in `spec.sync.overrides[].target` and `spec.sync.paths[].target` configurations of `kubernetes` and `helm` Deploy actions. Please, use the combination of `kind` and `name` configuration fields instead.

Usage of the `podSelector` as a target sync resource can cause unpredicted behaviour, because such selector picks up the first matching Pod in the cluster. Instead, a pair of `kind` and `name` should be used with one of the following kinds: `Deployment`, `DaemonSet` or `StatefulSet`. Garden ensures that each kind of these resources has exactly 1 Pod when running in sync mode.

For `kubernetes` Deploy actions see [`spec.sync.overrides[].target`](https://docs.garden.io/edge-release/reference/action-types/deploy/kubernetes#specsyncoverridestarget) and [`spec.sync.paths[].target`](https://docs.garden.io/edge-release/reference/action-types/deploy/kubernetes#specsyncpathstarget). For `helm` Deploy actions see [`spec.sync.overrides[].target`](https://docs.garden.io/edge-release/reference/action-types/deploy/helm#specsyncoverridestarget) and [`spec.sync.paths[].target`](https://docs.garden.io/edge-release/reference/action-types/deploy/helm#specsyncpathstarget).

### `spec.ports[].hostPort` configuration field in `container` Deploy action <a href="#containerdeployactionhostport" id="containerdeployactionhostport"></a>

It's generally not recommended to use the `hostPort` field of the `V1ContainerPort` spec. You can learn more about Kubernetes best practices at: <https://kubernetes.io/docs/concepts/configuration/overview/>

### Remote workflow configuration fields in Workflow configs <a href="#remoteworkflows" id="remoteworkflows"></a>

The remote workflows feature is deprecated and will be removed in a future release.

### `setupIngressController: nginx` in the `kubernetes` and `local-kubernetes` providers <a href="#nginxingresscontroller" id="nginxingresscontroller"></a>

The bundled nginx ingress controller is deprecated and will be removed in a future release. Garden now ships a Traefik ingress controller as a replacement. To migrate, run `garden plugins kubernetes migrate-ingress-controller` and set `setupIngressController: traefik` in your provider configuration.

The bundled nginx ingress controller is deprecated. Garden now ships Traefik as a replacement. To migrate:

1. Run `garden plugins kubernetes migrate-ingress-controller` to uninstall nginx and install Traefik.
2. Update your provider configuration to set `setupIngressController: traefik`.
3. Update `ingressClass` from `nginx` to `traefik` if explicitly set.
4. If you use any nginx-specific ingress annotations, you will need to migrate those manually.
