The CRDs under manifests/base/crds/minimal/ are minimized as a workaround for https://github.com/kubernetes/kubernetes/issues/82292. However, WorkflowEventBinding and WorkflowArtifactGCTask are small enough that minimization isn't necessary. Including the full CRD enables users to use kubectl explain to explore the CRD definitions.
Modifications
Rename removeCRDValidation() to minimizeCRD() so it more accurately describes what it's doing and add comments
Update minimizeCRD() to only minimize cronworkflows.argoproj.io, clusterworkflowtemplates.argoproj.io, workflows.argoproj.io, workflowtemplates.argoproj.io, workflowtasksets.argoproj.io, since the others are small enough they don't need to be minimized
Add more details to manifests/base/crds/full/README.md and manifests/base/crds/minimal/README.md
Verification
Ran make start and verified kubectl explain returns spec details for the CRDs:
Click here for kubectl explain --recursive WorkflowEventBinding output
```
$ kubectl explain --recursive WorkflowEventBinding
GROUP: argoproj.io
KIND: WorkflowEventBinding
VERSION: v1alpha1
DESCRIPTION:
FIELDS:
apiVersion
kind
metadata -required-
annotations Click here for kubectl explain --recursive WorkflowArtifactGCTask output
```
$ kubectl explain --recursive WorkflowArtifactGCTask
GROUP: argoproj.io
KIND: WorkflowArtifactGCTask
VERSION: v1alpha1
DESCRIPTION:
FIELDS:
apiVersion
kind
metadata -required-
annotations
creationTimestamp
deletionGracePeriodSeconds
deletionTimestamp
finalizers <[]string>
generateName
generation
labels
managedFields <[]ManagedFieldsEntry>
apiVersion
fieldsType
fieldsV1
manager
operation
subresource
time
name
namespace
ownerReferences <[]OwnerReference>
apiVersion -required-
blockOwnerDeletion
controller
kind -required-
name -required-
uid -required-
resourceVersion
selfLink
uid
spec -required-
artifactsByNode
archiveLocation
archiveLogs
artifactory
passwordSecret
key -required-
name
optional
url -required-
usernameSecret
key -required-
name
optional
azure
accountKeySecret
key -required-
name
optional
blob -required-
container -required-
endpoint -required-
useSDKCreds
gcs
bucket
key -required-
serviceAccountKeySecret
key -required-
name
optional
git
branch
depth
disableSubmodules
fetch <[]string>
insecureIgnoreHostKey
passwordSecret
key -required-
name
optional
repo -required-
revision
singleBranch
sshPrivateKeySecret
key -required-
name
optional
usernameSecret
key -required-
name
optional
hdfs
addresses <[]string>
dataTransferProtection
force
hdfsUser
krbCCacheSecret
key -required-
name
optional
krbConfigConfigMap
key -required-
name
optional
krbKeytabSecret
key -required-
name
optional
krbRealm
krbServicePrincipalName
krbUsername
path -required-
http
auth
basicAuth
passwordSecret
key -required-
name
optional
usernameSecret
key -required-
name
optional
clientCert
clientCertSecret
key -required-
name
optional
clientKeySecret
key -required-
name
optional
oauth2
clientIDSecret
key -required-
name
optional
clientSecretSecret
key -required-
name
optional
endpointParams <[]Object>
key -required-
value
scopes <[]string>
tokenURLSecret
key -required-
name
optional
headers <[]Object>
name -required-
value -required-
url -required-
oss
accessKeySecret
key -required-
name
optional
bucket
createBucketIfNotPresent
endpoint
key -required-
lifecycleRule
markDeletionAfterDays
markInfrequentAccessAfterDays
secretKeySecret
key -required-
name
optional
securityToken
useSDKCreds
raw
data -required-
s3
accessKeySecret
key -required-
name
optional
bucket
caSecret
key -required-
name
optional
createBucketIfNotPresent
objectLocking
encryptionOptions
enableEncryption
kmsEncryptionContext
kmsKeyId
serverSideCustomerKeySecret
key -required-
name
optional
endpoint
insecure
key
region
roleARN
secretKeySecret
key -required-
name
optional
sessionTokenSecret
key -required-
name
optional
useSDKCreds
artifacts
archive
none
tar
compressionLevel
zip
archiveLogs
artifactGC
podMetadata
annotations
labels
serviceAccountName
strategy
artifactory
passwordSecret
key -required-
name
optional
url -required-
usernameSecret
key -required-
name
optional
azure
accountKeySecret
key -required-
name
optional
blob -required-
container -required-
endpoint -required-
useSDKCreds
deleted
from
fromExpression
gcs
bucket
key -required-
serviceAccountKeySecret
key -required-
name
optional
git
branch
depth
disableSubmodules
fetch <[]string>
insecureIgnoreHostKey
passwordSecret
key -required-
name
optional
repo -required-
revision
singleBranch
sshPrivateKeySecret
key -required-
name
optional
usernameSecret
key -required-
name
optional
Fixes #12166. Partial fix for #8190
Motivation
The CRDs under
manifests/base/crds/minimal/
are minimized as a workaround for https://github.com/kubernetes/kubernetes/issues/82292. However,WorkflowEventBinding
andWorkflowArtifactGCTask
are small enough that minimization isn't necessary. Including the full CRD enables users to usekubectl explain
to explore the CRD definitions.Modifications
removeCRDValidation()
tominimizeCRD()
so it more accurately describes what it's doing and add commentsminimizeCRD()
to only minimizecronworkflows.argoproj.io
,clusterworkflowtemplates.argoproj.io
,workflows.argoproj.io
,workflowtemplates.argoproj.io
,workflowtasksets.argoproj.io
, since the others are small enough they don't need to be minimizedmanifests/base/crds/full/README.md
andmanifests/base/crds/minimal/README.md
Verification
Ran
make start
and verifiedkubectl explain
returns spec details for the CRDs:Click here for
``` $ kubectl explain --recursive WorkflowEventBinding GROUP: argoproj.io KIND: WorkflowEventBinding VERSION: v1alpha1 DESCRIPTION:kubectl explain --recursive WorkflowEventBinding
outputClick here for
``` $ kubectl explain --recursive WorkflowArtifactGCTask GROUP: argoproj.io KIND: WorkflowArtifactGCTask VERSION: v1alpha1 DESCRIPTION:kubectl explain --recursive WorkflowArtifactGCTask
output