Comments (8)
Validation needs to be made better for the CRD
from k8s-worker-pod-autoscaler.
Unable to edit min-replicas in kubernetes v1.18.0; Failing with error:
Invalid value: "": "spec" must validate one and only one schema (oneOf). Found 2 valid alternatives
from k8s-worker-pod-autoscaler.
Issue is happening because the WPA has got created and the object has both replicasSetName
and deploymentName
.
spec:
maxDisruption: null
maxReplicas: 1
minReplicas: 0
queueURI: URI-sample
replicaSetName: ""
deploymentName: mailsender
secondsToProcessOneJob: 0
targetMessagesPerWorker: 1
cc @matkam
from k8s-worker-pod-autoscaler.
I have the same issue as @adityabhatia02 with both deploymentName
and replicasSetName
having been set, however replicasSetName
got defaulted to "" when it was never specified in the yaml. I'm using Helm3 and k8s 1.15
from k8s-worker-pod-autoscaler.
I'm not too familiar with CRD validation rules. Is it possible to set the validation oneOf
to be "not empty/blank" instead of required
? Here's the CRD currently: https://github.com/practo/k8s-worker-pod-autoscaler/blob/master/artifacts/crd.yaml#L42
Would it make sense to use anyOf
instead of oneOf
validation? Or to even remove the oneOf
requirement and handle incorrect states in the operator code. If both fields exist, use deploymentName
first. If invalid, try replicaSetName
next. If both values are invalid, then throw an error.
from k8s-worker-pod-autoscaler.
To be honest I'm not either, as a temporary measure I did delete the restriction and everything is fine. What I'm trying to figure out and I think is ultimately the problem, is why is replicaName getting defaulted when it's not in my yaml.
from k8s-worker-pod-autoscaler.
oneOf
does work as we expect it to. Here is an example:
$ cat wpa.yaml
apiVersion: k8s.practo.dev/v1
kind: WorkerPodAutoScaler
metadata:
labels:
app: voice
name: testoneof
spec:
maxDisruption: null
maxReplicas: 1
minReplicas: 0
queueURI: beanstalk://beanstalkd/mail-sender
replicaSetName: ""
deploymentName: mailsender
secondsToProcessOneJob: 0
targetMessagesPerWorker: 1
$ k create -f wpa.yaml
The WorkerPodAutoScaler "testoneof" is invalid: : Invalid value: "": "spec" must validate one and only one schema (oneOf). Found 2 valid alternatives
oneOf prevents both replicaSetName and deploymetName to get set. As @aleclerc-sonrai we should may be find out how did the value get set? Was the CRD validation updated after the object was created?
from k8s-worker-pod-autoscaler.
No it wasn't. My current theory is that the operator itself, when it is updating the status, is somehow also updating the spec.replicaSetName
to ""
...my yaml definitely doesn't have the field specified anywhere.
from k8s-worker-pod-autoscaler.
Related Issues (20)
- Scaling with spiky queues HOT 6
- Deployment gets stuck MinimumReplicasUnavailable HOT 2
- Question: Gracefull shutdown? HOT 2
- Multi Queue support with one WPA object. HOT 4
- WPA Status is not updating in k8s1.19 - add support for k8s 1.19
- Scale based on: `numMessages +1` HOT 2
- How to achieve near realtime scheduling of pods? HOT 3
- What is the best way to access WPA controllers? HOT 6
- min=0, max=0 should not lead to scale up of deployments HOT 1
- Cannot get qMsgs if the WPA deleted and re-created HOT 3
- Queues scale temporarily for to -1 after autoscaler restart HOT 6
- Changes for Kubernetes 1.22 support
- does WPA support Amazon MQ, will it be provided in near future? HOT 1
- Deploymets scaled down very quickly despite low maxDisruption HOT 20
- Does WPA kill pods if the queue length decreases? HOT 7
- The manifest for public.ecr.aws/practo/workerpodautoscaler:v1.6.0 is not found on the public ECR HOT 3
- Unable to fetch queue messages HOT 8
- Does this support multiple SQS Queues monitoring? HOT 1
- Does't work with localstack
- IRSA (IAM Roles for Service Accounts) Support
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from k8s-worker-pod-autoscaler.