-
Notifications
You must be signed in to change notification settings - Fork 251
Description
Description of the problem/feature request
Currently, we are starting to migrate our applications from Kubernetes Deployments
to Argo Rollouts
, which provides advanced deployment strategies, like bluegreen or canary. As stated in the Argo Rollouts docs:
A Rollout is Kubernetes workload resource which is equivalent to a Kubernetes Deployment object.
It is intended to replace a Deployment object in scenarios when more advanced deployment or progressive
delivery functionality is needed
Description of the existing behavior vs. expected behavior
When deleting our deployment, the dangling-service
check included in kube-linter starts failing, because it can't match any pods, because in this case, the pods are now controlled by Argo Rollouts.
Input file:
apiVersion: v1
kind: Service
metadata:
labels:
run: my-app
name: my-app
namespace: default
spec:
ports:
- name: http
nodePort: 30395
port: 80
protocol: TCP
targetPort: 80
selector:
run: my-app
type: NodePort
---
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
annotations:
ignore-check.kube-linter.io/no-read-only-root-fs: Pending to validate if if works with read-only root filesystem
ignore-check.kube-linter.io/run-as-non-root: Pending to validate if the pod works with other user than root
owner: platform
name: my-app
namespace: default
spec:
minReadySeconds: 3
replicas: 2
selector:
matchLabels:
run: my-app
strategy:
canary:
steps:
- setWeight: 50
- pause:
duration: 10s
template:
metadata:
annotations:
owner: platform
labels:
run: my-app
spec:
containers:
- image: docker.io/my-app:1.0.0
imagePullPolicy: Always
name: my-app
ports:
- containerPort: 80
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
httpHeaders:
- name: Host
value: health
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 1
timeoutSeconds: 1
resources:
limits:
cpu: "1.5"
memory: 800Mi
requests:
cpu: "0.3"
memory: 200Mi
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
annotations:
owner: platform
name: my-app
namespace: default
spec:
maxReplicas: 15
metrics:
- resource:
name: cpu
target:
averageUtilization: 70
type: Utilization
type: Resource
minReplicas: 2
scaleTargetRef:
apiVersion: argoproj.io/v1alpha1
kind: Rollout
name: my-app
kube-linter execution:
kube-linter lint app.yml
KubeLinter 0.6.8
/Users/romanmartin/DeveloperCorner/my-app/deploy/my-app/app.yml: (object: default/my-app /v1, Kind=Service) no pods found matching service labels (map[run:my-app]) (check: dangling-service, remediation: Confirm that your service's selector correctly matches the labels on one of your deployments.)
Error: found 1 lint errors
Additional context
Add any other context or screenshots about the feature request here.