我们有多个环境,例如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
答案 0 :(得分:2)
从部署定义中删除名称空间,并将其命名为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
您可以查看kustomize以获得更多选择和便利性
这样,您可以将相同的部署文件用于不同的环境。 每个环境都相互隔离
答案 1 :(得分:0)
您绝对可以在不同的名称空间中创建相同的部署。在不正确的环境/名称空间中更新部署时请小心。将名称空间用作shell提示的一部分可能会有用。