我们有多个环境,如dev,qa,prepod等。我们有基于环境的命名空间。现在我们将环境命名为后缀的服务。例如。,
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-order-service-develop-deployment
namespace: dev
labels:
k8s-app: k8s-order-service-develop
spec:
selector:
matchLabels:
k8s-app: k8s-order-service-develop
相反,我可以在所有命名空间中使用以下内容吗?即deployment
是否每个命名空间都是唯一的?
在开发环境中:
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-order-service-deployment
namespace: dev
labels:
k8s-app: k8s-order-service
spec:
selector:
matchLabels:
k8s-app: k8s-order-service
在qa env:
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-order-service-deployment
namespace: qa
labels:
k8s-app: k8s-order-service
spec:
selector:
matchLabels:
k8s-app: k8s-order-service
从部署定义中删除命名空间,并将其命名为deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-order-service-develop-deployment
labels:
k8s-app: k8s-order-service-develop
spec:
selector:
matchLabels:
k8s-app: k8s-order-service-develop
然后,您可以使用以下命令将其部署在特定的命名空间中
kubectl create -f deploy.yaml -n <namespace-name>
ex:
kubectl create -f deploy.yaml -n dev
kubectl create -f deploy.yaml -n qa
你可以看一下qazxsw poi的更多选择和灵活性
这样,您可以为不同的环境使用相同的部署文件。并且每个环境都与另一个环境隔离开来
您绝对可以在不同的命名空间中创建相同的部署。在不正确的环境/命名空间中更新部署时要小心。使用命名空间作为shell提示符的一部分可能很有用。