weaveworks / gitopssets-controller

Manages the GitOpsSet CRDs.
Apache License 2.0
9 stars 5 forks source link

panic when enabling `ImagePolicy` #112

Closed steve-fraser closed 1 year ago

steve-fraser commented 1 year ago
---
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImageRepository
metadata:
  name: flux
  namespace: default
spec:
  image: ghcr.io/fluxcd/flux-cli
  interval: 1h
  provider: generic
---
apiVersion: image.toolkit.fluxcd.io/v1beta2
kind: ImagePolicy
metadata:
  name: flux
  namespace: default
spec:
  imageRepositoryRef:
    name: flux
  policy:
    semver:
      range: 2.x.x
---
apiVersion: templates.weave.works/v1alpha1
kind: GitOpsSet
metadata:
  name: flux-auto-upgrade
  namespace: default
spec:
  generators:
    - matrix:
        generators:
          - imagePolicy:
             policyRef: flux
          - cluster:
              selector:
                matchLabels:
                  "weave.works/fluxupgrade": "Automatic"
  templates:
    - content:
        apiVersion: batch/v1
        kind: Job
        metadata:
          name: "{{ .Element.ClusterName }}-flux-upgrade-{{ .Element.latestImage }}"
          namespace: "{{ .Element.ClusterNamespace }}"
        spec:
          template:
            spec:
              containers:
                - name: "{{ .Element.ClusterName }}-flux-upgrade-{{ randNumeric 5 }}"
                  image: 'ghcr.io/fluxcd/flux-cli:{{ .Element.latestImage }}'
                  imagePullPolicy: Always
                  resources: {}
                  volumeMounts:
                    - name: kubeconfig
                      mountPath: "/etc/gitops"
                      readOnly: true
                  args:
                    [
                      "bootstrap",
                      "git",
                      "--kubeconfig=/etc/gitops/value",
                      "--url=ssh://git@github.com/weavegitops/sa-demo.git",
                      "--path=./clusters/default/{{ .ObjectMeta.Name }}",
                      "--private-key-file=/etc/private-key/identity",
                      "--insecure-skip-tls-verify",
                      "--silent",
                    ]
                  envFrom:
                    - secretRef:
                        name: tenant
              restartPolicy: Never
              volumes:
                - name: kubeconfig
                  secret:
                    secretName: "{{ .Element.ClusterName }}-kubeconfig"
    gitopssets-controller:
      controllerManager:
        manager:
          args:
          - --health-probe-bind-address=:8081
          - --metrics-bind-address=127.0.0.1:8080
          - --leader-elect
          - --enabled-generators=GitRepository,PullRequests,List,APIClient,Matrix,Config,Cluster,ImagePolicy
 manager panic: runtime error: index out of range [0] with length 0 [recovered]                                                                                     │
│ manager     panic: runtime error: index out of range [0] with length 0                                                                                             │
│ manager                                                                                                                                                            │
│ manager goroutine 585 [running]:                                                                                                                                   │
│ manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile.func1()                                                                     │
│ manager     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:119 +0x1fa                                                      │
│ manager panic({0x1b0e1e0, 0xc001706138})                                                                                                                           │
│ manager     /usr/local/go/src/runtime/panic.go:884 +0x213                                                                                                          │
│ manager github.com/weaveworks/gitopssets-controller/controllers/templates/generators/matrix.cartesian({0xc0002ccdc0?, 0x2, 0x0?})                                  │
│ manager     /workspace/controllers/templates/generators/matrix/matrix.go:205 +0x5ad                                                                                │
│ manager github.com/weaveworks/gitopssets-controller/controllers/templates/generators/matrix.(*MatrixGenerator).Generate(0xc000947b90, {0x1eef500, 0xc0009478f0}, 0 │
│ manager     /workspace/controllers/templates/generators/matrix/matrix.go:68 +0x2e7                                                                                 │
│ manager github.com/weaveworks/gitopssets-controller/controllers/templates.generate({0x1eef500, 0xc0009478f0}, {0x0, 0x0, 0x0, 0x0, 0xc00086e260, 0x0, 0x0, 0x0, .. │
│ manager     /workspace/controllers/templates/renderer.go:225 +0x17c                                                                                                │
│ manager github.com/weaveworks/gitopssets-controller/controllers/templates.Render({0x1eef500, 0xc0009478f0}, 0xc000a381a0, 0xc0021c6480?)                           │
│ manager     /workspace/controllers/templates/renderer.go:42 +0x16f                                                                                                 │
│ manager github.com/weaveworks/gitopssets-controller/controllers.(*GitOpsSetReconciler).renderAndReconcile(0xc001211920?, {0x1eef500, 0xc0009478f0}, {{0x1ef2b10?,  │
│ manager     /workspace/controllers/gitopsset_controller.go:225 +0x9f                                                                                               │
│ manager github.com/weaveworks/gitopssets-controller/controllers.(*GitOpsSetReconciler).reconcileResources(0xc000534380, {0x1eef500, 0xc0009478f0}, {0x1ef8d58, 0xc │
│ manager     /workspace/controllers/gitopsset_controller.go:211 +0x2b1                                                                                              │
│ manager github.com/weaveworks/gitopssets-controller/controllers.(*GitOpsSetReconciler).Reconcile(0xc000534380, {0x1eef500, 0xc0009478f0}, {{{0xc0008bfee0?, 0x0?}, │
│ manager     /workspace/controllers/gitopsset_controller.go:165 +0x605                                                                                              │
│ manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile(0x1eef500?, {0x1eef500?, 0xc0009478f0?}, {{{0xc0008bfee0?, 0x1941060?}, {0x │
│ manager     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:122 +0xc8                                                       │
│ manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler(0xc00042a140, {0x1eef458, 0xc00057eb40}, {0x1a4bde0?, 0xc00081bf00?} │
│ manager     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:323 +0x377                                                      │
│ manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem(0xc00042a140, {0x1eef458, 0xc00057eb40})                          │
│ manager     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:274 +0x1d9                                                      │
│ manager sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2()                                                                       │
│ manager     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:235 +0x85                                                       │
│ manager created by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2                                                                │
│ manager     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:231 +0x587                                                      │
│ Stream closed EOF for flux-system/gitopssets-controller-manager-6b4bfdd46b-l6ggp (manager)                     
bigkevmcd commented 1 year ago

I've got a failing test for this, so...should be able to figure it out :-)