This message was deleted.
# fleet
a
This message was deleted.
j
This is the Bundle including an Ingress with various annotations:
Copy code
apiVersion: fleet.cattle.io/v1alpha1
kind: Bundle
metadata:
  creationTimestamp: '2024-09-23T14:47:23Z'
  finalizers:
    - fleet.cattle.io/bundle-finalizer
  generation: 12
  labels:
    cd.mdapi.ch: fleet
    cdenv.mdapi.ch: dev
    fleet.cattle.io/commit: 7aeae18f0a7be648902097d8b19dc7a00f9d42b8
    fleet.cattle.io/repo-name: mdapi-dev
  managedFields:
    - apiVersion: fleet.cattle.io/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:finalizers:
            .: {}
            v:"fleet.cattle.io/bundle-finalizer": {}
      manager: fleetcontroller
      operation: Update
      time: '2024-09-23T14:47:23Z'
    - apiVersion: fleet.cattle.io/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:labels:
            .: {}
            f:cd.mdapi.ch: {}
            f:cdenv.mdapi.ch: {}
            f:fleet.cattle.io/commit: {}
            f:fleet.cattle.io/repo-name: {}
        f:spec:
          .: {}
          f:correctDrift:
            .: {}
            f:enabled: {}
          f:defaultNamespace: {}
          f:dependsOn: {}
          f:forceSyncGeneration: {}
          f:ignore: {}
          f:namespace: {}
          f:namespaceLabels:
            .: {}
            f:cd.mdapi.ch: {}
            f:cdenv.mdapi.ch: {}
          f:resources: {}
          f:targetRestrictions: {}
          f:targets: {}
      manager: fleet
      operation: Update
      time: '2024-09-24T13:45:32Z'
    - apiVersion: fleet.cattle.io/v1alpha1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          .: {}
          f:conditions: {}
          f:display:
            .: {}
            f:readyClusters: {}
          f:maxNew: {}
          f:maxUnavailable: {}
          f:maxUnavailablePartitions: {}
          f:observedGeneration: {}
          f:partitions: {}
          f:resourceKey: {}
          f:resourcesSha256Sum: {}
          f:summary:
            .: {}
            f:desiredReady: {}
            f:ready: {}
          f:unavailable: {}
          f:unavailablePartitions: {}
      manager: fleetcontroller
      operation: Update
      subresource: status
      time: '2024-09-24T13:45:48Z'
  name: mdapi-dev-flame
  namespace: fleet-default
  resourceVersion: '7442526'
  uid: e0c9e4e8-3fcb-437e-9aed-b3c366195f8f
spec:
  correctDrift:
    enabled: true
  defaultNamespace: flame
  dependsOn:
    - name: mdapi-dev-cert-manager
  forceSyncGeneration: 12
  ignore: {}
  namespace: flame
  namespaceLabels:
    cd.mdapi.ch: fleet
    cdenv.mdapi.ch: dev
  resources:
    - content: |
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: flame
          namespace: flame
        spec:
          selector:
            matchLabels:
              app: flame
          replicas: 1
          template:
            metadata:
              labels:
                app: flame
            spec:
              serviceAccountName: flame
              containers:
              - name: flame
                image: ghcr.io/fdarveau/flame
                ports:
                - containerPort: 5005
      name: flame-deploy.yml
    - content: |
        apiVersion: networking.k8s.io/v1
        kind: Ingress
        metadata:
          name: flame
          namespace: flame
          annotations:
            cert-manager.io/issuer: letsencrypt-prod
            flame.pawelmalak/type: app
            flame.pawelmalak/name: MDAPI Home (dev)
            flame.pawelmalak/url: <https://dev.mdapi.ch>
            flame.pawelmalak/category: General
            flame.pawelmalak/icon: home
            flame.pawelmalak/order: 50
        spec:
          ingressClassName: nginx
          rules:
            - host: dev.mdapi.ch
              http:
                paths:
                  - backend:
                      service:
                        name: flame
                        port:
                          number: 5005
                    path: /
                    pathType: Prefix
          tls:
            - hosts:
              - dev.mdapi.ch
              secretName: flame-cert
      name: flame-ing.yml
    - content: |
        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: flame
          namespace: flame
      name: flame-sa.yml
    - content: |
        apiVersion: v1
        kind: Service
        metadata:
          name: flame
          namespace: flame
        spec:
          selector:
            app: flame
          ports:
            - name: http
              port: 5005
              protocol: TCP
              targetPort: 5005
          type: ClusterIP
      name: flame-svc.yml
    - content: |
        defaultNamespace: flame
        namespace: flame
        namespaceLabels:
          cd.mdapi.ch: fleet
          cdenv.mdapi.ch: dev
        dependsOn:
          - name: mdapi-dev-cert-manager
      name: fleet.yaml
    - content: |
        apiVersion: cert-manager.io/v1
        kind: Issuer
        metadata:
          name: letsencrypt-prod
          namespace: flame
        spec:
          acme:
            email: tillo@tillo.ch
            privateKeySecretRef:
              name: letsencrypt-prod
            server: <https://acme-v02.api.letsencrypt.org/directory>
            solvers:
              - dns01:
                  rfc2136:
                    nameserver: 31.3.135.237:53
                    tsigKeyName: mdapi
                    tsigAlgorithm: HMACSHA256
                    tsigSecretSecretRef:
                      name: tsig-secret
                      key: tsig-secret-key
              - http01:
                  ingress:
                    class: nginx
      name: letsencrypt-prod-issuer.yml
  targetRestrictions:
    - clusterGroup: dev
  targets:
    - clusterGroup: dev
      ignore: {}
status:
  conditions:
    - lastUpdateTime: '2024-09-24T13:45:48Z'
      status: 'True'
      type: Ready
  display:
    readyClusters: 1/1
  maxNew: 50
  maxUnavailable: 1
  maxUnavailablePartitions: 0
  observedGeneration: 12
  partitions:
    - count: 1
      maxUnavailable: 1
      name: All
      summary:
        desiredReady: 1
        ready: 1
  resourceKey:
    - apiVersion: apps/v1
      kind: Deployment
      name: flame
      namespace: flame
    - apiVersion: networking.k8s.io/v1
      kind: Ingress
      name: flame
      namespace: flame
    - apiVersion: v1
      kind: ServiceAccount
      name: flame
      namespace: flame
    - apiVersion: v1
      kind: Service
      name: flame
      namespace: flame
    - apiVersion: cert-manager.io/v1
      kind: Issuer
      name: letsencrypt-prod
      namespace: flame
  resourcesSha256Sum: efa8aee4aa3bde310842a592eb2c276e2a2e17fda7b6ae98234bebf7a6601f94
  summary:
    desiredReady: 1
    ready: 1
  unavailable: 0
  unavailablePartitions: 0
And this is the resulting Ingress resource, which does have Helm-related annotations only:
Copy code
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    meta.helm.sh/release-name: mdapi-dev-flame
    meta.helm.sh/release-namespace: flame
    objectset.rio.cattle.io/id: default-mdapi-dev-flame
  creationTimestamp: '2024-09-24T13:45:47Z'
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
    objectset.rio.cattle.io/hash: 69148ad9c9843b2fcc4414020489bfc2e222a250
  managedFields:
    - apiVersion: networking.k8s.io/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:annotations:
            .: {}
            f:meta.helm.sh/release-name: {}
            f:meta.helm.sh/release-namespace: {}
            f:objectset.rio.cattle.io/id: {}
          f:labels:
            .: {}
            f:app.kubernetes.io/managed-by: {}
            f:objectset.rio.cattle.io/hash: {}
        f:spec:
          f:ingressClassName: {}
          f:rules: {}
          f:tls: {}
      manager: fleetagent
      operation: Update
      time: '2024-09-24T13:45:47Z'
  name: flame
  namespace: flame
  resourceVersion: '2098132'
  uid: 54fea8e0-9598-4800-890c-76fb97d0b7e7
spec:
  ingressClassName: nginx
  rules:
    - host: dev.mdapi.ch
      http:
        paths:
          - backend:
              service:
                name: flame
                port:
                  number: 5005
            path: /
            pathType: Prefix
  tls:
    - hosts:
        - dev.mdapi.ch
      secretName: flame-cert
status:
  loadBalancer: {}
I’ve moved my question to an Issue on GitHub: https://github.com/rancher/fleet/issues/2896
Welcome to YAML hell: I cannot use a number in an annotation, as it must be a string. I fixed it by using
flame.pawelmalak/order: '50'
instead of
flame.pawelmalak/order: 50
. Still, I had to deploy the manifest manually to reveal the mistake; I expect Fleet to report errors. I have updated the Issue title to reflect the nuance, and I’m reporting the “fix” here in case it helps anyone else.