Deprecation of the certificate-based integration with Kubernetes
## Sunsetting timeline plan
[The official deprecation notices](https://docs.gitlab.com/ee/update/deprecations.html#saas-certificate-based-integration-with-kubernetes) are the primary source of truth for the expected removal dates.
- After %"15.0" on GitLab SaaS, only existing users of the certificate-based integrations will be able to use the integrations. We will work with the current users to migrate them over to the agent as soon as possible.
- At the same time, we want to introduce a feature flag for Self-Managed users that will, by default, switch off the certificate-based features but can be switched on by the GitLab administrator.
- This feature flag will be removed from the product in a major GitLab version.
We identified a set of [issues that block the removal](https://gitlab.com/gitlab-org/configure/general/-/issues/199+ ) of the certificate-based integration. Once the related issues are shipped, we will provide at least six months for migrations before the final removal for Self-Managed customers.
## Proposal
Following the deprecation, the cluster-based integration and features built on top of it should receive the following support from ~"group::configure" :
- assure that the supported cluster versions work with these features too
- fix critical and security bugs
Together with this deprecation, the features that depend on the certificate-based integration, and there is no workaround to use them using the GitLab Kubernetes Agent are being deprecated as well. These are the following features:
- Instance, Group, Project level clusters
- Including the APIs managing these
- We have GraphQL API + git to manage the Agent, but we don't have [integrations with Terraform](https://gitlab.com/gitlab-org/gitlab/-/issues/227157)
- [Cluster integrations](https://docs.gitlab.com/ee/user/clusters/integrations.html)
- [Cluster Management Project](https://docs.gitlab.com/ee/user/clusters/management_project.html)
- **Note:** the cluster management project template is not deprecated
- **Note** setting up [a Prometheus integration manually](https://docs.gitlab.com/ee/user/project/integrations/prometheus.html#manual-configuration-of-prometheus) remains
- Direct support for the template is planned with the GitLab Kubernetes Agent
- [GitLab Managed Clusters](https://docs.gitlab.com/ee/user/project/clusters/gitlab_managed_clusters.html)
- A workaround is planned with the GitLab Kubernetes Agent
- [Cluster Cost Management](https://docs.gitlab.com/ee/user/clusters/cost_management.html)
- [Cluster environments](https://docs.gitlab.com/ee/user/clusters/environments.html)
- [Deploy boards](https://docs.gitlab.com/ee/user/project/deploy_boards.html)
- **Note** Deploy boards show the list of environments without a cluster connection, and this functionality is to stay.
- A workaround is planned with the GitLab Kubernetes Agent
- [Pod logs](https://docs.gitlab.com/ee/user/project/clusters/kubernetes_pod_logs.html)
- A workaround is planned with the GitLab Kubernetes Agent
- [Web terminals](https://docs.gitlab.com/ee/administration/integration/terminal.html)
- A workaround is planned with the GitLab Kubernetes Agent
- [Advanced Traffic control](https://docs.gitlab.com/ee/user/project/canary_deployments.html#advanced-traffic-control-with-canary-ingress) with Canary Ingress
- **Note** Other parts of Canary deployments, that rely on GitLab CI/CD only would remain supported.
- ~~[Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/stages.html#auto-deploy) is affected as well. We want to avoid deprecating it with https://gitlab.com/gitlab-org/gitlab/-/issues/299350~~
- ~~A workaround is planned with the GitLab Kubernetes Agent~~
- [Policy Editor UI](https://docs.gitlab.com/ee/user/application_security/policies/#container-network-policy)
We might remove features built on top of the certificate-based integration as we can provide alternative approaches using the Kubernetes Agent or decide to drop a use case. These removals are to be created separately of this deprecation notice.
## Issue readiness checklist
- [x] This issue/epic is shared with the team at a team meeting
- [x] The proposal clearly states what is being deprecated, mentioning potentially related areas and features that are not affected
- [ ] The (in-product) communication plan about the removal is described in the proposal
- [x] The documentation requirements of the removal are described in the proposal
- [ ] A preliminary timeline for the deprecation and removal is described in the proposal
- [ ] Deprecation message added to the `CHANGELOG.md` file: https://gitlab.com/gitlab-org/gitlab/merge_requests/XXX
- [x] Deprecation message posted in the release blog post: https://gitlab.com/gitlab-com/www-gitlab-org/merge_requests/XXX
- [ ] Deprecated code removed in %"16.0": https://gitlab.com/gitlab-org/gitlab/merge_requests/XXX
epic