Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: don't minimize CRD for WorkflowEventBinding and WorkflowArtifactGCTask. Fixes #12166 #13754

Merged
merged 2 commits into from
Oct 15, 2024

Conversation

MasonM
Copy link
Contributor

@MasonM MasonM commented Oct 14, 2024

Fixes #12166. Partial fix for #8190

Motivation

The CRDs under manifests/base/crds/minimal/ are minimized as a workaround for kubernetes/kubernetes#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:
    <empty>
FIELDS:
  apiVersion    <string>
  kind  <string>
  metadata      <ObjectMeta> -required-
    annotations <map[string]string>
    creationTimestamp   <string>
    deletionGracePeriodSeconds  <integer>
    deletionTimestamp   <string>
    finalizers  <[]string>
    generateName        <string>
    generation  <integer>
    labels      <map[string]string>
    managedFields       <[]ManagedFieldsEntry>
      apiVersion        <string>
      fieldsType        <string>
      fieldsV1  <FieldsV1>
      manager   <string>
      operation <string>
      subresource       <string>
      time      <string>
    name        <string>
    namespace   <string>
    ownerReferences     <[]OwnerReference>
      apiVersion        <string> -required-
      blockOwnerDeletion        <boolean>
      controller        <boolean>
      kind      <string> -required-
      name      <string> -required-
      uid       <string> -required-
    resourceVersion     <string>
    selfLink    <string>
    uid <string>
  spec  <Object> -required-
    event       <Object> -required-
      selector  <string> -required-
    submit      <Object>
      arguments <Object>
        artifacts       <[]Object>
          archive       <Object>
            none        <Object>
            tar <Object>
              compressionLevel  <integer>
            zip <Object>
          archiveLogs   <boolean>
          artifactGC    <Object>
            podMetadata <Object>
              annotations       <map[string]string>
              labels    <map[string]string>
            serviceAccountName  <string>
            strategy    <string>
          artifactory   <Object>
            passwordSecret      <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            url <string> -required-
            usernameSecret      <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
          azure <Object>
            accountKeySecret    <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            blob        <string> -required-
            container   <string> -required-
            endpoint    <string> -required-
            useSDKCreds <boolean>
          deleted       <boolean>
          from  <string>
          fromExpression        <string>
          gcs   <Object>
            bucket      <string>
            key <string> -required-
            serviceAccountKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
          git   <Object>
            branch      <string>
            depth       <integer>
            disableSubmodules   <boolean>
            fetch       <[]string>
            insecureIgnoreHostKey       <boolean>
            passwordSecret      <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            repo        <string> -required-
            revision    <string>
            singleBranch        <boolean>
            sshPrivateKeySecret <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            usernameSecret      <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
          globalName    <string>
          hdfs  <Object>
            addresses   <[]string>
            dataTransferProtection      <string>
            force       <boolean>
            hdfsUser    <string>
            krbCCacheSecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            krbConfigConfigMap  <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            krbKeytabSecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            krbRealm    <string>
            krbServicePrincipalName     <string>
            krbUsername <string>
            path        <string> -required-
          http  <Object>
            auth        <Object>
              basicAuth <Object>
                passwordSecret  <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
                usernameSecret  <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
              clientCert        <Object>
                clientCertSecret        <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
                clientKeySecret <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
              oauth2    <Object>
                clientIDSecret  <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
                clientSecretSecret      <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
                endpointParams  <[]Object>
                  key   <string> -required-
                  value <string>
                scopes  <[]string>
                tokenURLSecret  <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
            headers     <[]Object>
              name      <string> -required-
              value     <string> -required-
            url <string> -required-
          mode  <integer>
          name  <string> -required-
          optional      <boolean>
          oss   <Object>
            accessKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            bucket      <string>
            createBucketIfNotPresent    <boolean>
            endpoint    <string>
            key <string> -required-
            lifecycleRule       <Object>
              markDeletionAfterDays     <integer>
              markInfrequentAccessAfterDays     <integer>
            secretKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            securityToken       <string>
            useSDKCreds <boolean>
          path  <string>
          raw   <Object>
            data        <string> -required-
          recurseMode   <boolean>
          s3    <Object>
            accessKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            bucket      <string>
            caSecret    <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            createBucketIfNotPresent    <Object>
              objectLocking     <boolean>
            encryptionOptions   <Object>
              enableEncryption  <boolean>
              kmsEncryptionContext      <string>
              kmsKeyId  <string>
              serverSideCustomerKeySecret       <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
            endpoint    <string>
            insecure    <boolean>
            key <string>
            region      <string>
            roleARN     <string>
            secretKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            sessionTokenSecret  <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            useSDKCreds <boolean>
          subPath       <string>
        parameters      <[]Object>
          default       <string>
          description   <string>
          enum  <[]string>
          globalName    <string>
          name  <string> -required-
          value <string>
          valueFrom     <Object>
            configMapKeyRef     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            default     <string>
            event       <string>
            expression  <string>
            jqFilter    <string>
            jsonPath    <string>
            parameter   <string>
            path        <string>
            supplied    <Object>
      metadata  <Object>
      workflowTemplateRef       <Object> -required-
        clusterScope    <boolean>
        name    <string>
Click here for kubectl explain --recursive WorkflowArtifactGCTask output
$ kubectl explain --recursive WorkflowArtifactGCTask
GROUP:      argoproj.io
KIND:       WorkflowArtifactGCTask
VERSION:    v1alpha1

DESCRIPTION:
    <empty>
FIELDS:
  apiVersion    <string>
  kind  <string>
  metadata      <ObjectMeta> -required-
    annotations <map[string]string>
    creationTimestamp   <string>
    deletionGracePeriodSeconds  <integer>
    deletionTimestamp   <string>
    finalizers  <[]string>
    generateName        <string>
    generation  <integer>
    labels      <map[string]string>
    managedFields       <[]ManagedFieldsEntry>
      apiVersion        <string>
      fieldsType        <string>
      fieldsV1  <FieldsV1>
      manager   <string>
      operation <string>
      subresource       <string>
      time      <string>
    name        <string>
    namespace   <string>
    ownerReferences     <[]OwnerReference>
      apiVersion        <string> -required-
      blockOwnerDeletion        <boolean>
      controller        <boolean>
      kind      <string> -required-
      name      <string> -required-
      uid       <string> -required-
    resourceVersion     <string>
    selfLink    <string>
    uid <string>
  spec  <Object> -required-
    artifactsByNode     <map[string]Object>
      archiveLocation   <Object>
        archiveLogs     <boolean>
        artifactory     <Object>
          passwordSecret        <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          url   <string> -required-
          usernameSecret        <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
        azure   <Object>
          accountKeySecret      <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          blob  <string> -required-
          container     <string> -required-
          endpoint      <string> -required-
          useSDKCreds   <boolean>
        gcs     <Object>
          bucket        <string>
          key   <string> -required-
          serviceAccountKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
        git     <Object>
          branch        <string>
          depth <integer>
          disableSubmodules     <boolean>
          fetch <[]string>
          insecureIgnoreHostKey <boolean>
          passwordSecret        <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          repo  <string> -required-
          revision      <string>
          singleBranch  <boolean>
          sshPrivateKeySecret   <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          usernameSecret        <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
        hdfs    <Object>
          addresses     <[]string>
          dataTransferProtection        <string>
          force <boolean>
          hdfsUser      <string>
          krbCCacheSecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          krbConfigConfigMap    <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          krbKeytabSecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          krbRealm      <string>
          krbServicePrincipalName       <string>
          krbUsername   <string>
          path  <string> -required-
        http    <Object>
          auth  <Object>
            basicAuth   <Object>
              passwordSecret    <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
              usernameSecret    <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
            clientCert  <Object>
              clientCertSecret  <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
              clientKeySecret   <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
            oauth2      <Object>
              clientIDSecret    <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
              clientSecretSecret        <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
              endpointParams    <[]Object>
                key     <string> -required-
                value   <string>
              scopes    <[]string>
              tokenURLSecret    <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
          headers       <[]Object>
            name        <string> -required-
            value       <string> -required-
          url   <string> -required-
        oss     <Object>
          accessKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          bucket        <string>
          createBucketIfNotPresent      <boolean>
          endpoint      <string>
          key   <string> -required-
          lifecycleRule <Object>
            markDeletionAfterDays       <integer>
            markInfrequentAccessAfterDays       <integer>
          secretKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          securityToken <string>
          useSDKCreds   <boolean>
        raw     <Object>
          data  <string> -required-
        s3      <Object>
          accessKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          bucket        <string>
          caSecret      <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          createBucketIfNotPresent      <Object>
            objectLocking       <boolean>
          encryptionOptions     <Object>
            enableEncryption    <boolean>
            kmsEncryptionContext        <string>
            kmsKeyId    <string>
            serverSideCustomerKeySecret <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
          endpoint      <string>
          insecure      <boolean>
          key   <string>
          region        <string>
          roleARN       <string>
          secretKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          sessionTokenSecret    <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          useSDKCreds   <boolean>
      artifacts <map[string]Object>
        archive <Object>
          none  <Object>
          tar   <Object>
            compressionLevel    <integer>
          zip   <Object>
        archiveLogs     <boolean>
        artifactGC      <Object>
          podMetadata   <Object>
            annotations <map[string]string>
            labels      <map[string]string>
          serviceAccountName    <string>
          strategy      <string>
        artifactory     <Object>
          passwordSecret        <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          url   <string> -required-
          usernameSecret        <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
        azure   <Object>
          accountKeySecret      <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          blob  <string> -required-
          container     <string> -required-
          endpoint      <string> -required-
          useSDKCreds   <boolean>
        deleted <boolean>
        from    <string>
        fromExpression  <string>
        gcs     <Object>
          bucket        <string>
          key   <string> -required-
          serviceAccountKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
        git     <Object>
          branch        <string>
          depth <integer>
          disableSubmodules     <boolean>
          fetch <[]string>
          insecureIgnoreHostKey <boolean>
          passwordSecret        <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          repo  <string> -required-
          revision      <string>
          singleBranch  <boolean>
          sshPrivateKeySecret   <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          usernameSecret        <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
        globalName      <string>
        hdfs    <Object>
          addresses     <[]string>
          dataTransferProtection        <string>
          force <boolean>
          hdfsUser      <string>
          krbCCacheSecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          krbConfigConfigMap    <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          krbKeytabSecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          krbRealm      <string>
          krbServicePrincipalName       <string>
          krbUsername   <string>
          path  <string> -required-
        http    <Object>
          auth  <Object>
            basicAuth   <Object>
              passwordSecret    <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
              usernameSecret    <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
            clientCert  <Object>
              clientCertSecret  <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
              clientKeySecret   <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
            oauth2      <Object>
              clientIDSecret    <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
              clientSecretSecret        <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
              endpointParams    <[]Object>
                key     <string> -required-
                value   <string>
              scopes    <[]string>
              tokenURLSecret    <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
          headers       <[]Object>
            name        <string> -required-
            value       <string> -required-
          url   <string> -required-
        mode    <integer>
        name    <string> -required-
        optional        <boolean>
        oss     <Object>
          accessKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          bucket        <string>
          createBucketIfNotPresent      <boolean>
          endpoint      <string>
          key   <string> -required-
          lifecycleRule <Object>
            markDeletionAfterDays       <integer>
            markInfrequentAccessAfterDays       <integer>
          secretKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          securityToken <string>
          useSDKCreds   <boolean>
        path    <string>
        raw     <Object>
          data  <string> -required-
        recurseMode     <boolean>
        s3      <Object>
          accessKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          bucket        <string>
          caSecret      <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          createBucketIfNotPresent      <Object>
            objectLocking       <boolean>
          encryptionOptions     <Object>
            enableEncryption    <boolean>
            kmsEncryptionContext        <string>
            kmsKeyId    <string>
            serverSideCustomerKeySecret <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
          endpoint      <string>
          insecure      <boolean>
          key   <string>
          region        <string>
          roleARN       <string>
          secretKeySecret       <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          sessionTokenSecret    <Object>
            key <string> -required-
            name        <string>
            optional    <boolean>
          useSDKCreds   <boolean>
        subPath <string>
  status        <Object>
    artifactResultsByNode       <map[string]Object>
      artifactResults   <map[string]Object>
        error   <string>
        name    <string> -required-
        success <boolean>

…tifactGCTask. Fixes argoproj#12166

The CRDs under `manifests/base/crds/minimal/` are minimized as a workaround for
kubernetes/kubernetes#82292. However,
`WorkflowEventBinding` and `WorkflowArtifactGCTask` are small enough
that minimization isn't necessary, and allows using `kubectl explain` to
view the spec.

<details>
<summary>Click for <code>kubectl explain --recursive WorkflowEventBinding</code></summary>

```
$ kubectl explain --recursive WorkflowEventBinding
GROUP:      argoproj.io
KIND:       WorkflowEventBinding
VERSION:    v1alpha1

DESCRIPTION:
    <empty>
FIELDS:
  apiVersion    <string>
  kind  <string>
  metadata      <ObjectMeta> -required-
    annotations <map[string]string>
    creationTimestamp   <string>
    deletionGracePeriodSeconds  <integer>
    deletionTimestamp   <string>
    finalizers  <[]string>
    generateName        <string>
    generation  <integer>
    labels      <map[string]string>
    managedFields       <[]ManagedFieldsEntry>
      apiVersion        <string>
      fieldsType        <string>
      fieldsV1  <FieldsV1>
      manager   <string>
      operation <string>
      subresource       <string>
      time      <string>
    name        <string>
    namespace   <string>
    ownerReferences     <[]OwnerReference>
      apiVersion        <string> -required-
      blockOwnerDeletion        <boolean>
      controller        <boolean>
      kind      <string> -required-
      name      <string> -required-
      uid       <string> -required-
    resourceVersion     <string>
    selfLink    <string>
    uid <string>
  spec  <Object> -required-
    event       <Object> -required-
      selector  <string> -required-
    submit      <Object>
      arguments <Object>
        artifacts       <[]Object>
          archive       <Object>
            none        <Object>
            tar <Object>
              compressionLevel  <integer>
            zip <Object>
          archiveLogs   <boolean>
          artifactGC    <Object>
            podMetadata <Object>
              annotations       <map[string]string>
              labels    <map[string]string>
            serviceAccountName  <string>
            strategy    <string>
          artifactory   <Object>
            passwordSecret      <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            url <string> -required-
            usernameSecret      <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
          azure <Object>
            accountKeySecret    <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            blob        <string> -required-
            container   <string> -required-
            endpoint    <string> -required-
            useSDKCreds <boolean>
          deleted       <boolean>
          from  <string>
          fromExpression        <string>
          gcs   <Object>
            bucket      <string>
            key <string> -required-
            serviceAccountKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
          git   <Object>
            branch      <string>
            depth       <integer>
            disableSubmodules   <boolean>
            fetch       <[]string>
            insecureIgnoreHostKey       <boolean>
            passwordSecret      <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            repo        <string> -required-
            revision    <string>
            singleBranch        <boolean>
            sshPrivateKeySecret <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            usernameSecret      <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
          globalName    <string>
          hdfs  <Object>
            addresses   <[]string>
            dataTransferProtection      <string>
            force       <boolean>
            hdfsUser    <string>
            krbCCacheSecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            krbConfigConfigMap  <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            krbKeytabSecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            krbRealm    <string>
            krbServicePrincipalName     <string>
            krbUsername <string>
            path        <string> -required-
          http  <Object>
            auth        <Object>
              basicAuth <Object>
                passwordSecret  <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
                usernameSecret  <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
              clientCert        <Object>
                clientCertSecret        <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
                clientKeySecret <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
              oauth2    <Object>
                clientIDSecret  <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
                clientSecretSecret      <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
                endpointParams  <[]Object>
                  key   <string> -required-
                  value <string>
                scopes  <[]string>
                tokenURLSecret  <Object>
                  key   <string> -required-
                  name  <string>
                  optional      <boolean>
            headers     <[]Object>
              name      <string> -required-
              value     <string> -required-
            url <string> -required-
          mode  <integer>
          name  <string> -required-
          optional      <boolean>
          oss   <Object>
            accessKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            bucket      <string>
            createBucketIfNotPresent    <boolean>
            endpoint    <string>
            key <string> -required-
            lifecycleRule       <Object>
              markDeletionAfterDays     <integer>
              markInfrequentAccessAfterDays     <integer>
            secretKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            securityToken       <string>
            useSDKCreds <boolean>
          path  <string>
          raw   <Object>
            data        <string> -required-
          recurseMode   <boolean>
          s3    <Object>
            accessKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            bucket      <string>
            caSecret    <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            createBucketIfNotPresent    <Object>
              objectLocking     <boolean>
            encryptionOptions   <Object>
              enableEncryption  <boolean>
              kmsEncryptionContext      <string>
              kmsKeyId  <string>
              serverSideCustomerKeySecret       <Object>
                key     <string> -required-
                name    <string>
                optional        <boolean>
            endpoint    <string>
            insecure    <boolean>
            key <string>
            region      <string>
            roleARN     <string>
            secretKeySecret     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            sessionTokenSecret  <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            useSDKCreds <boolean>
          subPath       <string>
        parameters      <[]Object>
          default       <string>
          description   <string>
          enum  <[]string>
          globalName    <string>
          name  <string> -required-
          value <string>
          valueFrom     <Object>
            configMapKeyRef     <Object>
              key       <string> -required-
              name      <string>
              optional  <boolean>
            default     <string>
            event       <string>
            expression  <string>
            jqFilter    <string>
            jsonPath    <string>
            parameter   <string>
            path        <string>
            supplied    <Object>
      metadata  <Object>
      workflowTemplateRef       <Object> -required-
        clusterScope    <boolean>
        name    <string>
```
</details>

Signed-off-by: Mason Malone <[email protected]>
@agilgur5 agilgur5 changed the title feat(cli): don't minimize CRD for WorkflowEventBinding and WorkflowArtifactGCTask. Fixes #12166 build: don't minimize CRD for WorkflowEventBinding and WorkflowArtifactGCTask. Fixes #12166 Oct 14, 2024
@agilgur5 agilgur5 added area/build Build or GithubAction/CI issues area/manifests labels Oct 14, 2024
Copy link
Member

@agilgur5 agilgur5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

However, WorkflowEventBinding and WorkflowArtifactGCTask are small enough that minimization isn't necessary.

For now. I think it would be good to add a size check in the script so there are no surprises in the future

manifests/base/crds/minimal/README.md Outdated Show resolved Hide resolved
manifests/base/crds/full/README.md Outdated Show resolved Hide resolved
@MasonM
Copy link
Contributor Author

MasonM commented Oct 14, 2024

@agilgur5 Thanks for the review! I added additional safeguards in a2ca080. I also discovered there's a secondary issue preventing us from generating the full CRDs for workflows.argoproj.io and a few others: k8s rejects it with errors like this:

The CustomResourceDefinition "workflowtasksets.argoproj.io" is invalid: 
* spec.validation.openAPIV3Schema.properties[spec].properties[tasks].additionalProperties.properties[dag].properties[tasks].items.properties[inline].type: Required value: must not be empty for specified object fields
* spec.validation.openAPIV3Schema.properties[spec].properties[tasks].additionalProperties.properties[steps].items.items: Required value: must be specifiedk

I think this is related to the kubebuilder issues mentioned at #3809 (comment)

@MasonM MasonM marked this pull request as ready for review October 15, 2024 00:16
@MasonM MasonM requested a review from agilgur5 October 15, 2024 00:16
Copy link
Member

@agilgur5 agilgur5 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I like the two safeguards too

@agilgur5 agilgur5 merged commit 9000c94 into argoproj:main Oct 15, 2024
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/build Build or GithubAction/CI issues area/manifests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

WorkflowEventBinding CRD has no documentation
2 participants