How to implement DTAP in k8s? Dev, Tst, Acc, Prd (DTAP) is about isolating multiple environments to ensure that data will not be mixed, e.g. production data in development or lost, e.g. database removal removes all production data. DTAP is also about environments that are identical, e.g. if a database in prd, then there should be a database in dev as well, but the data should not be mixed. It is about prediction. The more the environments are identical the bigger the change that if a certain change works in dev, then it will work in tst, acc and prd.

Discussion

There are at least two options, i.e. one k8s cluster or multiple.

one k8s cluster


Lower costs
Dangerous as pods from production environment could be removed, while the intention was to removed dev pods.


multiple k8s clusters


Higher costs
Lower change that data will be removed accidentally due to isolation
Kubernetes supports namespaces. 


  multiple virtual clusters backed by the same physical cluster


These namespaces can allow you to use one cluster for all your environments. You can also do fancy things in your CI/CD pipeline so that each branch or each commit gets its own namespace. Those pods in prod namespace can still speak to pods in dev namespace unless you segment with NACL's. Just make sure you CNI supports that.

That being said most large companies I have worked for are running a cluster per environment.

I don't think there are right or wrong answers here. Do what you think is best for your company/team/workload/environment etc.