In traditional deployments that may be some kind of "copy this thing over SSH and make it go!", in Kubernetes-land it's more like "lets just modify this API-state to point at the new image tag!".
Neither of those produce a consistent record of changes applied and state mutation like that is very error-prone.
We actually use Gitlab's CI at work, but we have our own deployment solutions built on it that end up making git commits into the NixOS & Kontemplate repositories which then run their own pipelines to deploy.
This way we can always answer the question "what set of applications at which versions was deployed at $time?" and also roll back consistently.