@@ -311,6 +311,183 @@ func TestWithContainerArgsValidateHook(t *testing.T) {
311311 deploymentName : certmanagerControllerDeployment ,
312312 wantErrMsg : `validation failed due to unsupported arg "--totally-unknown-flag"="value"` ,
313313 },
314+ {
315+ name : "controller accepts performance tuning flags" ,
316+ certManagerObj : v1alpha1.CertManager {
317+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
318+ Spec : v1alpha1.CertManagerSpec {
319+ ControllerConfig : & v1alpha1.DeploymentConfig {
320+ OverrideArgs : []string {
321+ "--concurrent-workers=20" ,
322+ "--kube-api-qps=150" ,
323+ "--kube-api-burst=300" ,
324+ "--max-concurrent-challenges=300" ,
325+ },
326+ },
327+ },
328+ },
329+ deploymentName : certmanagerControllerDeployment ,
330+ },
331+ {
332+ name : "controller accepts burst equal to qps" ,
333+ certManagerObj : v1alpha1.CertManager {
334+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
335+ Spec : v1alpha1.CertManagerSpec {
336+ ControllerConfig : & v1alpha1.DeploymentConfig {
337+ OverrideArgs : []string {
338+ "--kube-api-qps=100" ,
339+ "--kube-api-burst=100" ,
340+ },
341+ },
342+ },
343+ },
344+ deploymentName : certmanagerControllerDeployment ,
345+ },
346+ {
347+ name : "controller accepts only kube-api-qps without burst" ,
348+ certManagerObj : v1alpha1.CertManager {
349+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
350+ Spec : v1alpha1.CertManagerSpec {
351+ ControllerConfig : & v1alpha1.DeploymentConfig {
352+ OverrideArgs : []string {"--kube-api-qps=150" },
353+ },
354+ },
355+ },
356+ deploymentName : certmanagerControllerDeployment ,
357+ },
358+ {
359+ name : "controller accepts only kube-api-burst without qps" ,
360+ certManagerObj : v1alpha1.CertManager {
361+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
362+ Spec : v1alpha1.CertManagerSpec {
363+ ControllerConfig : & v1alpha1.DeploymentConfig {
364+ OverrideArgs : []string {"--kube-api-burst=200" },
365+ },
366+ },
367+ },
368+ deploymentName : certmanagerControllerDeployment ,
369+ },
370+ {
371+ name : "controller accepts decimal kube-api-qps value" ,
372+ certManagerObj : v1alpha1.CertManager {
373+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
374+ Spec : v1alpha1.CertManagerSpec {
375+ ControllerConfig : & v1alpha1.DeploymentConfig {
376+ OverrideArgs : []string {
377+ "--kube-api-qps=150.5" ,
378+ "--kube-api-burst=200" ,
379+ },
380+ },
381+ },
382+ },
383+ deploymentName : certmanagerControllerDeployment ,
384+ },
385+ {
386+ name : "controller rejects burst less than qps" ,
387+ certManagerObj : v1alpha1.CertManager {
388+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
389+ Spec : v1alpha1.CertManagerSpec {
390+ ControllerConfig : & v1alpha1.DeploymentConfig {
391+ OverrideArgs : []string {
392+ "--kube-api-qps=100" ,
393+ "--kube-api-burst=50" ,
394+ },
395+ },
396+ },
397+ },
398+ deploymentName : certmanagerControllerDeployment ,
399+ wantErrMsg : `validation failed: --kube-api-burst (50) must be >= --kube-api-qps (100)` ,
400+ },
401+ {
402+ name : "controller rejects non-numeric kube-api-qps" ,
403+ certManagerObj : v1alpha1.CertManager {
404+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
405+ Spec : v1alpha1.CertManagerSpec {
406+ ControllerConfig : & v1alpha1.DeploymentConfig {
407+ OverrideArgs : []string {
408+ "--kube-api-qps=abc" ,
409+ "--kube-api-burst=100" ,
410+ },
411+ },
412+ },
413+ },
414+ deploymentName : certmanagerControllerDeployment ,
415+ wantErrMsg : `validation failed: --kube-api-qps value must be numeric, got "abc"` ,
416+ },
417+ {
418+ name : "controller rejects non-numeric kube-api-burst" ,
419+ certManagerObj : v1alpha1.CertManager {
420+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
421+ Spec : v1alpha1.CertManagerSpec {
422+ ControllerConfig : & v1alpha1.DeploymentConfig {
423+ OverrideArgs : []string {
424+ "--kube-api-qps=100" ,
425+ "--kube-api-burst=xyz" ,
426+ },
427+ },
428+ },
429+ },
430+ deploymentName : certmanagerControllerDeployment ,
431+ wantErrMsg : `validation failed: --kube-api-burst value must be a positive integer, got "xyz"` ,
432+ },
433+ {
434+ name : "controller rejects zero concurrent-workers" ,
435+ certManagerObj : v1alpha1.CertManager {
436+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
437+ Spec : v1alpha1.CertManagerSpec {
438+ ControllerConfig : & v1alpha1.DeploymentConfig {
439+ OverrideArgs : []string {"--concurrent-workers=0" },
440+ },
441+ },
442+ },
443+ deploymentName : certmanagerControllerDeployment ,
444+ wantErrMsg : `validation failed: --concurrent-workers must be greater than 0, got 0` ,
445+ },
446+ {
447+ name : "controller rejects negative max-concurrent-challenges" ,
448+ certManagerObj : v1alpha1.CertManager {
449+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
450+ Spec : v1alpha1.CertManagerSpec {
451+ ControllerConfig : & v1alpha1.DeploymentConfig {
452+ OverrideArgs : []string {"--max-concurrent-challenges=-5" },
453+ },
454+ },
455+ },
456+ deploymentName : certmanagerControllerDeployment ,
457+ wantErrMsg : `validation failed: --max-concurrent-challenges must be greater than 0, got -5` ,
458+ },
459+ {
460+ name : "controller rejects zero kube-api-qps" ,
461+ certManagerObj : v1alpha1.CertManager {
462+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
463+ Spec : v1alpha1.CertManagerSpec {
464+ ControllerConfig : & v1alpha1.DeploymentConfig {
465+ OverrideArgs : []string {
466+ "--kube-api-qps=0" ,
467+ "--kube-api-burst=50" ,
468+ },
469+ },
470+ },
471+ },
472+ deploymentName : certmanagerControllerDeployment ,
473+ wantErrMsg : `validation failed: --kube-api-qps must be greater than 0, got 0` ,
474+ },
475+ {
476+ name : "controller rejects negative kube-api-burst" ,
477+ certManagerObj : v1alpha1.CertManager {
478+ ObjectMeta : metav1.ObjectMeta {Name : "cluster" },
479+ Spec : v1alpha1.CertManagerSpec {
480+ ControllerConfig : & v1alpha1.DeploymentConfig {
481+ OverrideArgs : []string {
482+ "--kube-api-qps=20" ,
483+ "--kube-api-burst=-1" ,
484+ },
485+ },
486+ },
487+ },
488+ deploymentName : certmanagerControllerDeployment ,
489+ wantErrMsg : `validation failed: --kube-api-burst must be greater than 0, got -1` ,
490+ },
314491 {
315492 name : "controller validates only controllerConfig webhook override args ignored" ,
316493 certManagerObj : v1alpha1.CertManager {
0 commit comments