In Kubernetes, you can define multiple deployments within a single YAML file by separating them with — (three dashes) as a delimiter. Each deployment should have its own kind: Deployment block and a unique metadata.name field to differentiate them. Here’s an example of defining two deployments in a single file:
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-1
spec:
replicas: 3
selector:
matchLabels:
app: deployment-1
template:
metadata:
labels:
app: deployment-1
spec:
containers:
- name: app
image: your-image-1:latest
ports:
- containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-2
spec:
replicas: 2
selector:
matchLabels:
app: deployment-2
template:
metadata:
labels:
app: deployment-2
spec:
containers:
- name: app
image: your-image-2:latest
ports:
- containerPort: 8080
In the example above, we have two deployments: deployment-1 and deployment-2. Each deployment has its own set of specifications, such as the number of replicas, labels, and container definitions. The deployments are separated by — in the YAML file.
You can save this YAML file, e.g., deployments.yaml, and apply it to your Kubernetes cluster using the kubectl apply command:
kubectl apply -f deployments.yaml
This will create both deployments specified in the file, and Kubernetes will ensure they are running according to the specified specifications.
Note: It’s important to ensure that each deployment has a unique name within the file to avoid conflicts.