-
Couldn't load subscription status.
- Fork 258
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.