# KV2 CHANGES
> Latest changes will appear at top.

## v2.13.0.r5
- update core labels to always include Istio labels regardless if Istio is enabled.
- update deployment pod labels to include all not just selector.

## v2.13.0.r4
- refactor how Mock Service is enabled
  - replace `mock.enabled` for top level `isMockService`  within `values.yaml`.
  - replace `mock.grpc.serviceSubDomains` for `istio.gateway.grpc.mockSubDomains` within `values.yaml`.
  - update `_helpers.tpl` definition `istio.gateways` to manage mock hosts.
  - update Istio `gateway.yaml` & `virtual-service.yaml` templates to include mock hosts changes when enabled.
  - update `testing/mock.yaml` with changes, and include secondary public gateway to ensure hosts are only applied to the grpc `Istio Gateway` and `VirtualService` hosts.

## v2.13.0.r3
- AWS Account ID always set
  - defaults to nonprd account ID
  - defined regardless if cluster enabled

## v2.13.0.r2
- add `charts/` directory to `enviornments/`
  - update ENVIRONMENTS.md
  - add `.example.yaml` file
- update base environment helper text
- update `values.yaml` helper text

## v2.13.0.r1
- Add Argo Rollouts canary deployments support

## v2.13.0
- update node affinity support, applied to all cronjobs, jobs, deployments.
  - update certain tests to include node affinity.

## v2.12.23
- update Istio `virtual-service.yaml` template:
  - add custom config support to Global Accelerator
  - cleanup whitespace
- add custom config to test `istio-gateways-enabled-all.yaml`

## v2.12.22
- add `additionalConfigs` option to `configMap` to support multiple configmap creation.
- no changes to `deployments.yaml` (`volumeMounts` / `volumes`), additional configs must be added manually.
- update test `config-map.yaml` to include `additionalConfigs` option.

## v2.12.21
- add end of line breaks
- update NOTES.txt with warnings
- update k8s document links
- deprecate custom destination-rule.yaml
- update test custom-templates.yaml
- add test jobs-cronjobs.yaml

## v2.12.20
- add headless service creation
- add test for headless service 

## v2.12.19
- fix team & group name suffix checks.

## v2.12.18
- update logic to always include Datadog env vars and labels.
  - remove `forceDatadog` flag
  - remove `if $ddLables` check
  - remove `datadog.enabled` definition

## v2.12.17
- add `OTEL_METRIC_EXPORT_INTERVAL` to OTLP variables.
- add OTLP metrics to jobs/cronjobs and custom jobs/cronjobs.
- Split single OTLP metrics config in to custom jobs,cronjobs,workers configs.

## v2.12.16
- update logic for `aws.globalAccelerator.targetHostname` definition
- add `defaultGATarget (bool)` option to support backward compatibility
- add test file `global-accelerator.yaml`

## v2.12.15
- update how commandline arguments are passed and formatted.

## v2.12.14
- Add `external-dns.alpha.kubernetes.io/target` annotation only for external additional hosts

## v2.12.13
- Add `terminationGracePeriodSeconds` value for fine-tuning pods termination cycle

## v2.12.12
- Add `kvetch.aws.globalAccelerator.targetHostname` helper definition to manage target hostname for External DNS.
- Update VirtualService template to use `kvetch.aws.globalAccelerator.targetHostname` helper definition.

## v2.12.11
- Add `k8s.apiVersions` helper definition to support multiple apiVersions within resources.
- Update templates to use `k8s.apiVersions` helper definition.

## v2.12.10
- Fix workloadSelector labels for Sidecar
- Add Sidecar testing configuration

## v2.12.9
- refactor helpers:
  - layout & spacing
  - uniform workflow
  - enhance labels definitions to dict
  - enhance hostnames definition to list
  - add datadog enabled definition
- update templates for helper changes.
- append `forceDatadog: true` to `values-dev.yaml`.
- update tests with `debugCharts: true`.

## v2.12.8
- Remove `-ingressgateway` postfix from Gateway name in GA virtual service configuration

## v2.12.7
- Add new tag in OTEL_RESOURCE_ATTRIBUTES for deployment template

## v2.12.6
- Add targetPort option into `ServiceEntry` port configuration

## v2.12.5
- fix PodDisruptionBudge `minAvailable and maxUnavailable cannot be both set`.

## v2.12.4
- not generating `k8s.serviceAccountName` when `serviceAccount.forceDisabled` is true.

## v2.12.3
- refactor deployment strategy support:
  - deprecate `deployment.rollingUpdate`.
  - add `deployment.deploymentStrategy` (map):
    - `type` (string: `RollingUpdate`, `Recreate`)
    - `maxSurge` (int or string)
    - `maxUnavailable` (int or string)
  - update support for workers.
  - update helper text.
- add helper definition `k8s.deploymentStrategyRollingUpdateDefaults` to support deployment strategy defaults per cluster environment.
- update PodDisruptionBudget template to use `maxUnavailable` with default of `1%`, and auto enabled on `preprd` & `prd` clusters.

## v2.12.2
- global accelerator activation for Primary Clusters only (`nonprd`, `preprd`, `prd`)
  - blocked from activating when mock enabled

## v2.12.1
- remove quote after toJson for ConfigMap Json data

## v2.12.0
- refactor Istio Gateway & VirtualService templates:
  - add support for multiple gateways enabled.
  - add support for multiple virtual services (one per gateway, and one for additional hosts if provided) per enabled gateway.
  - add options for each gateway type:
    - `enabled` (bool, default: false)
    - `subDomainOverride` (string, default: "")
    - `includeHostnames` (bool, default: false)
    - `additionalHosts` (array, default: [])
- remove `additionalHosts` from top level values.
- update values `istio.gateway` helper text for enhanced details on how to configure.
- add `istio.gateways` definition to support multiple gateways and virtual service templates.
  - update definition helper text.
  - add logic for when to include `service.hostnames` within which Gateway and associated VirtualService.
  - when multiple Gateways are enabled and `includeHostnames` is not set for enabled gateways, then the first option that doesn't override the subdomain will be used in this order: `grpc` > `public` > `custom` > `internal`.
  - when more than one Gateway is enabled and `includeHostnames` is set to true for more than one Gateway, then it will error.
  - If assigned hosts or additional hosts are not unique across all gateways, it will error.
- remove `istio.gateway` definition.

## v2.11.28
- Implemented global rate limiting to manage and control the request rate across the service infrastructure.
- Moved local rate limiting under the `ratelimit.local` key.
- Added `applyTo` and `match` default values for local rate limiting configPatches.

## v2.11.27
- label changes per Kubernetes Policies v1.0 spec
  - update `k8s.teamLabels`:
    - remove `service`, `env` (logged in other labels)
    - group changed from optional to required
  - add definitions `service.teamName`, `service.groupName`
  - update `k8s.labels`:
    - move `k8s.teamLabels` down, ensuring `k8s.labels` are applied first
    - change `part-of` from default `"undefined"` to populate when `app.stack` provided 
- add `k8s.labels` to templates:
  - `istio/destination-rule.yaml`
  - `istio/envoy-filter.yaml`
  - `istio/service-entry.yaml`
  - `role-based-access-control.yaml`
  - `secret.yaml`
- update v2 tests to include required group and team names

## v2.11.26
- add support for cors to default envoy filter
- update security auth pol to only add rules when provided (no longer required)
- add istio envoyFilterCorsInlineCode definition to construct cors inline code

## v2.11.25
- include environment variables in deployment.yaml
  - PLUTO_DOCKER_IMAGE_TAG
  - PLUTO_KVETCH_CHART_VERSION

## v2.11.24
- adjust global accelerator destination route to use `<service-name>-ga-endpoint` instead of `default-ga`

## v2.11.23
- update `Chart.yaml`
  - add fields: `keywords`, `maintainers`, `sources`.

## v2.11.22
- fix additional whitespace within `service.hostnames` definition

## v2.11.21
- add `disableLiveHosts` top level key, (default: `false`)
- update definitions `Service Live Hostname`, `Service URIs` to support disabling live hosts, and cleanup whitespace.

## v2.11.20
- Update version to align with major version of kv2:
  - `0.11.20` -> `2.11.20`

## v0.11.20
- update kong default ingress class: `kong-oss` -> `kong-enterprise`.

## v0.11.19
- cleanup Acyl options:
  - remove environments file
  - cleanup helpers, values
- update SERVICES readme with issues to resolve before moving forward with this model.

## v0.11.18
- Added a condition where if one of the additional hosts includes hosted zone, the annotation about excluding 
- automatic DNS record creation will be deleted.

## v0.11.17
- Custom configurations `additionalHostsConfigOverride` and `additionalHostsCustomConfig` were added in order to be 
- able to configure the virtual service for additional hosts.

## v0.11.16
- add support for app json config for standard deployments
  - added `appConfig` within `configMap` parent key with name override and filename options
  - must be enabled, and requires json file to be placed within `deploy/helm/v2/<service>/configs/` directory

## v0.11.15
- add `externalSecrets.secret.secrets` for check before `externalSecrets` creation. Now it is not necessary to provide only 
- `secretVariables` and `secretVariablesFrom` to create secrets and mount them to the pod you can just set `externalSecrets.secret.secrets`. 
- If you provide only `externalSecrets.secret.secrets`, then secrets will be created without mounting to the pod.

## v0.11.14
- add SeaLights Force Mode option with default

## v0.11.13
- added `team` label to namespace for easier RBAC access for teams to their namespaces

## v0.11.13
- removes additional hosts from Service URIs helper definition
- adds additional hosts directly to the Istio Gateway resource
- adds specific Istio VirtualService resource for additional hosts, and blocks external dns from creating records for these hosts

## v0.11.12
- add OTEL env vars to Deployment & Workers
- update logic to include Dev clusters not just Primary

## v0.11.11
- fixed annotations reference for `config-map.yaml` template for `configs/` files

## v0.11.10
- add docker `docker.imagePullPolicy` definition which defaults to `IfNotPresent`
  - definition updates to `Always` when `image.tag` equals `latest`, `main`, or `master`
- update `Jobs`, `CronJobs`, and `Deployments` to use helper definition as default if not otherwise set within the values or release
- remove defaulted `Always` from primary `values.yaml`, and include `Always` to `environments/acyl.yaml`, `environments/dev.yaml`, and `environments/sandbox.yaml` releases

## v0.11.9
- team labels `group-owner` and `financial-owner` have been removed. The special character `@` is not supported.

## v0.11.8
- new team labels to the Service resource. These are `env`, `service`, `team`, `group`, `group-owner`, and `financial-owner`.

## V0.11.7
- kong plugin support
  - add kong plugin template with support for multiple plugins
    - fail kong plugin when kong ingress not enabled
  - decouple Kong Ingress from `deployment.forceDisabled` check
  - update service template
    - support `externalName` field and required when type of `ExternalName` is utilized
    - enable if `kong.plugin.enabled=true` when `deployment.forceDisabled=true`
  - add values kong header key with helper text and examples
  - add kong plugin test
  - add testing `SKIP_VALIDATION` option on clusters for tests

## v0.11.6
- add Rate Limit configuration for Istio EnvoyFilter
- add test for Istio EnvoyFilter Rate Limit

## v0.11.5
- enhance how Istio Security AuthorizationPolicy is accessed
- improve helper text, adding examples for white & black listings
- add test for Istio Security AuthorizationPolicy

## v0.11.4
- add kong ingress support
  - https://docs.konghq.com/kubernetes-ingress-controller/2.11.x/references/annotations/

## v0.11.3
- fix destination-rule `with .subsets` template typo
- fix values.yaml readme sample structure and linting for `destinationRules`

## v0.11.2
- fix deployment template `topologySpreadConstraints` missing assigned variable
  - update any missing variables in `charts/`
  - update pod test to include all topologySpreadConstraints options

## v0.11.1
- move subdomain override within the Service Hostname helper definition to correctly override any logic when provided

## v0.11.0
- refactor envoy-filter template, reducing redundancy and improving ease of use from the client
  - supports generic http inbound and custom configuration with grpc check
  - value key name & nested changes
    - `filter.enabled` -> `envoyFilter.http.enabled`
    - `filter.inlineCode` -> `envoyFilter.http.inlineCode`
    - `customEnvoyFilter` -> `envoyFilter.custom`
    - removed unneeded `grpcEnvoyFilter`
  - add Istio EnvoyFilter test
- refactor ingress template
  - defaults host to `service.hostname` with optional override
  - update helper text, additional examples
  - optional second host override from within `rules`
  - key name changes
    - key `hosts` type `map` -> `rules` type `array`
  - add `ingress` test
- add `forceDatadog` toplevel option
  - update `datadog.labels` definition to account for `forceDatadog` boolean
  - refactor `Deployment`, `Job`, `CronJob` resources
  - update toplevel-overrides-03 test
- fix bug for missing environment within aws.hostedZone definition
- enhance `service.yaml` with type override and annotation support

## v0.10.9
- update acyl domain to use `plutotv.tech`
- default subdomain if/when env_name isn't provided as `<service name>-acyl`, this is simply a fallback, and shouldn't occur
- Testing
  - rename `basic` -> `nonprd` test
  - add `custom`, `dev`, `prd`, `preprd`, and `sandbox` tests

## v0.10.8
- rename acyl-dqa to simply acyl or acyl ephemeral environments
  - update `environments/`: `values-dqa` -> `values-acyl`
  - update helper definitions
  - enhance values helper text
- update tests
  - rename file `testing/` `dqa` -> `acyl`
  - update helper text within `testing/acyl.yaml`

## v0.10.7
- add custom cluster support
  - helper definition `aws.eksClusterEnabled` now checks `cluster.custom`
  - subdomain appends `-cluster` when `cluster.custom` enabled
  - domain environment defaults to `nonprd.pluto.tv` hosted zone when `cluster.custom` enabled
  - add release `environments/values-custom.yaml`

## v0.10.6
- adding istio/envoy-filter.yaml manifest to allow default envoy or custom envoy filter per services
- adding custom/destination-rule.yaml to allow custom rules in Istio
- Removed envoyFilter block from security.yaml
- Edited values.yaml: added custom envoyFilters values in section istio
- Edited values.yaml: added grpc envoyFilters values in section istio, apply it by default when istio GRPC is true

## v0.10.5
- disable harness versioning for secrets and configmap resources by default with option to enable

## v0.10.4
- fix helper overprovisioning definition: missing `nospace` command
- release files remove unnecessary `image` stubs
- docs HELM.md updates
  - modify helm template command
  - add Testing section
- add `testing/` folder with test files and bash script with results to automate the tests
  - `basic`
  - `config-map-volumes`
  - `custom-templates`
  - `dqa`
  - `external-secrets`
  - `istio-disabled`
  - `mock`
  - `node`
  - `overprovisioning`
  - `pod`
  - `toplevel-overrides-01`
  - `toplevel-overrides-02`
  - `toplevel-overrides-03`
  - `workers-node`
  - `workers-only`
- update `values.yaml`
  - specify k8s document urls to `1-24`
  - fix `node.tolerations` stub from map to array
  - helper text cleanup

## v0.10.3
- fix bug with helper definition `external-secrets.secretStoreName`

## v0.10.2
- update for helper text deprecation notation for cronjobs & jobs
  - `values.yaml`
  - `docs/STANDARDS.md`
- primary readme updated to reflect current standards, cleanup outdated text, add Changelog notation

## v0.10.1
- Making Service Account token custom created regardless the EKS version
  - `service-account`
  - `secret`

## v0.10.0
- added `CHANGELOG.md`
- refactored kv2 _helpers.tpl, seperated definitions by type
  - `service.`
  - `k8s.`
  - `open-telemetry.`
  - `aws.`
  - `istio.`
  - `datadog.`
  - `acyl-dqa.`
  - `docker.`
- key name changes
  - `externalSecret` -> `externalSecrets`
  - `rolebinding` -> `roleBinding`
- template folders added, files added, moved, and or renamed
  - `custom/`
    - `cronjob.yaml` -> `cron-job.yaml`
  - `external-secrets/`
    - `external-secret.yaml` -> `external-secrets.yaml`
  - `istio/`
    - `destinationrule.yaml` -> `destination-rule.yaml`
    - `gateway.yaml`
    - `security.yaml`
    - `se.yaml` -> `service-entry.yaml`
    - `sidecar.yaml`
    - `virtualservice.yaml` -> `virtual-service.yaml`
  - `configmap.yaml` -> `config-map.yaml`
  - `cronjob.yaml` -> `cron-job.yaml`
  - `hpa.yaml` -> `horizontal-pod-autoscaler.yaml`
  - `pvc.yaml` -> `persistent-volume-claim.yaml`
  - `rbac.yaml` -> `role-based-access-control.yaml`
  - `secret.yaml`
  - `sa.yaml` -> `service-account.yaml`
  - `vpa.yaml` -> `vertical-pod-autoscaler.yaml`
- refactored `role-based-access-control.yaml`, adding support for multiple roles & rolebindings, cluster rolebinding
