provider-argocd icon indicating copy to clipboard operation
provider-argocd copied to clipboard

provider fails due to nil pointer derefence

Open blut opened this issue 3 years ago • 6 comments

What happened?

As soon as I create a repository resource the provider fails with segfault.

This is the created resource (resource hashes might not match between example and error message. the resource is created as part of a composition.)

apiVersion: repositories.argocd.crossplane.io/v1alpha1
kind: Repository
metadata:
  name: test-app-m4d4m
spec:
  forProvider:
    passwordRef:
      key: token
      name: test-app-m4d4m-deploy-token
      namespace: crossplane-system
    repo: https://gitlab.com/b4221/demo-application.git
    type: git
    username: argocd
  providerConfigRef:
    name: argocd-provider

My providerConfig is created for a locally hosted argocd in the same cluster (as described by the readme):

// kg providerconfig.argocd argocd-provider -o yaml
apiVersion: argocd.crossplane.io/v1alpha1
kind: ProviderConfig
metadata:
  name: argocd-provider
spec:
  credentials:
    secretRef:
      key: authToken
      name: argocd-credentials
      namespace: crossplane-system
    source: Secret
  insecure: true
  serverAddr: argocd-server.argocd.svc:443
status:
  users: 1
// make run
22:30:52 [ .. ] go build linux_amd64
go build: -i flag is deprecated
22:30:58 [ OK ] go build linux_amd64
22:30:58 [ .. ] Running Crossplane locally out-of-cluster . . .
/home/blut/provider-argocd/_output/bin/linux_amd64/provider --debug
2022-02-16T22:30:59.473+0100    DEBUG   provider-argocd Starting        {"sync-period": "1h0m0s"}
I0216 22:31:00.526958   12499 request.go:655] Throttling request took 1.0375678s, request: GET:https://127.0.0.1:62477/apis/node.k8s.io/v1beta1?timeout=32s
2022-02-16T22:31:00.877+0100    INFO    controller-runtime.metrics      metrics server is starting to listen    {"addr": ":8080"}
2022-02-16T22:31:00.878+0100    INFO    controller-runtime.manager      starting metrics server {"path": "/metrics"}
2022-02-16T22:31:00.878+0100    INFO    controller-runtime.manager.controller.managed/cluster   Starting EventSource   {"reconciler group": "cluster.argocd.crossplane.io", "reconciler kind": "Cluster", "source": "kind source: /, Kind="}
2022-02-16T22:31:00.878+0100    INFO    controller-runtime.manager.controller.providerconfig/providerconfig.argocd.crossplane.io                                                                                                            Starting EventSource     {"reconciler group": "argocd.crossplane.io", "reconciler kind": "ProviderConfig", "source": "kind source: /, Kind="}
2022-02-16T22:31:00.879+0100    INFO    controller-runtime.manager.controller.managed/project   Starting EventSource   {"reconciler group": "projects.argocd.crossplane.io", "reconciler kind": "Project", "source": "kind source: /, Kind="}
2022-02-16T22:31:00.879+0100    INFO    controller-runtime.manager.controller.managed/repository        Starting EventSource                                                                                                                {"reconciler group": "repositories.argocd.crossplane.io", "reconciler kind": "Repository", "source": "kind source: /, Kind="}
2022-02-16T22:31:00.986+0100    INFO    controller-runtime.manager.controller.managed/cluster   Starting Controller    {"reconciler group": "cluster.argocd.crossplane.io", "reconciler kind": "Cluster"}
2022-02-16T22:31:00.986+0100    INFO    controller-runtime.manager.controller.managed/cluster   Starting workers       {"reconciler group": "cluster.argocd.crossplane.io", "reconciler kind": "Cluster", "worker count": 1}
2022-02-16T22:31:00.987+0100    INFO    controller-runtime.manager.controller.providerconfig/providerconfig.argocd.crossplane.io                                                                                                            Starting EventSource     {"reconciler group": "argocd.crossplane.io", "reconciler kind": "ProviderConfig", "source": "kind source: /, Kind="}
2022-02-16T22:31:00.987+0100    INFO    controller-runtime.manager.controller.managed/project   Starting Controller    {"reconciler group": "projects.argocd.crossplane.io", "reconciler kind": "Project"}
2022-02-16T22:31:00.996+0100    INFO    controller-runtime.manager.controller.managed/repository        Starting Controller                                                                                                                 {"reconciler group": "repositories.argocd.crossplane.io", "reconciler kind": "Repository"}
2022-02-16T22:31:00.997+0100    INFO    controller-runtime.manager.controller.managed/repository        Starting workers                                                                                                                    {"reconciler group": "repositories.argocd.crossplane.io", "reconciler kind": "Repository", "worker count": 1}
2022-02-16T22:31:00.997+0100    DEBUG   provider-argocd Reconciling     {"controller": "managed/repository", "request": "/test-app-68qcn"}
2022-02-16T22:31:01.089+0100    INFO    controller-runtime.manager.controller.managed/project   Starting workers       {"reconciler group": "projects.argocd.crossplane.io", "reconciler kind": "Project", "worker count": 1}
2022-02-16T22:31:01.089+0100    INFO    controller-runtime.manager.controller.providerconfig/providerconfig.argocd.crossplane.io                                                                                                            Starting Controller      {"reconciler group": "argocd.crossplane.io", "reconciler kind": "ProviderConfig"}
2022-02-16T22:31:01.091+0100    INFO    controller-runtime.manager.controller.providerconfig/providerconfig.argocd.crossplane.io                                                                                                            Starting workers {"reconciler group": "argocd.crossplane.io", "reconciler kind": "ProviderConfig", "worker count": 1}
2022-02-16T22:31:01.093+0100    DEBUG   provider-argocd Reconciling     {"controller": "providerconfig/providerconfig.argocd.crossplane.io", "request": "/argocd-provider"}
E0216 22:31:01.101309   12499 runtime.go:78] Observed a panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
goroutine 351 [running]:
k8s.io/apimachinery/pkg/util/runtime.logPanic({0x1b3fb00, 0x32adb40})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/runtime/runtime.go:74 +0x85
k8s.io/apimachinery/pkg/util/runtime.HandleCrash({0x0, 0x0, 0xc000b34000})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/runtime/runtime.go:48 +0x75
panic({0x1b3fb00, 0x32adb40})
        /home/blut/.go/src/runtime/panic.go:1038 +0x215
github.com/crossplane-contrib/provider-argocd/pkg/clients.UseProviderConfig({0x2090340, 0xc0002c2d20}, {0x20c8080, 0xc000400c80}, {0x20eb6e0, 0xc0008d9200})
        /home/blut/provider-argocd/pkg/clients/argocd.go:83 +0x2a3
github.com/crossplane-contrib/provider-argocd/pkg/clients.GetConfig({0x2090340, 0xc0002c2d20}, {0x20c8080, 0xc000400c80}, {0x20eb6e0, 0xc0008d9200})
        /home/blut/provider-argocd/pkg/clients/argocd.go:52 +0xd7
github.com/crossplane-contrib/provider-argocd/pkg/controller/repositories.(*connector).Connect(0xc0008bc9c0, {0x2090340, 0xc0002c2d20}, {0x20eb6e0, 0xc0008d9200})
        /home/blut/provider-argocd/pkg/controller/repositories/controller.go:81 +0x5f
github.com/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile(0xc00029a5a0, {0xc0002c4f00, 0x1b3c980}, {{{0x0, 0x1bfe3c0}, {0xc0008b44b0, 0xc000aa44c0}}})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/github.com/crossplane/[email protected]/pkg/reconciler/managed/reconciler.go:564 +0xb0a
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler(0xc00029a640, {0x20902d0, 0xc0002c4f00}, {0x1bc2ec0, 0xc000b34000})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:298 +0x303
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem(0xc00029a640, {0x20902d0, 0xc0002c4f00})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:253 +0x205
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1.2({0x20902d0, 0xc0002c4f00})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:216 +0x46
k8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext.func1()
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:185 +0x25
k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1(0x7f3d0ccb5c30)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:155 +0x67
k8s.io/apimachinery/pkg/util/wait.BackoffUntil(0x0, {0x20533a0, 0xc000ba9290}, 0x1, 0xc00055af00)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:156 +0xb6
k8s.io/apimachinery/pkg/util/wait.JitterUntil(0x20533a0, 0x3b9aca00, 0x0, 0xe0, 0x101000000020001)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:133 +0x89
k8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext({0x20902d0, 0xc0002c4f00}, 0xc000bac3b0, 0xc0007cc7a0, 0x1161aa6, 0x80)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:185 +0x99
k8s.io/apimachinery/pkg/util/wait.UntilWithContext({0x20902d0, 0xc0002c4f00}, 0xc0006ea4c0, 0xc0007cc7b8)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:99 +0x2b
created by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1
        /home/blut/provider-argocd/.work/pkg/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:213 +0x356
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x197bee3]

goroutine 351 [running]:
k8s.io/apimachinery/pkg/util/runtime.HandleCrash({0x0, 0x0, 0xc000b34000})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/runtime/runtime.go:55 +0xd8
panic({0x1b3fb00, 0x32adb40})
        /home/blut/.go/src/runtime/panic.go:1038 +0x215
github.com/crossplane-contrib/provider-argocd/pkg/clients.UseProviderConfig({0x2090340, 0xc0002c2d20}, {0x20c8080, 0xc000400c80}, {0x20eb6e0, 0xc0008d9200})
        /home/blut/provider-argocd/pkg/clients/argocd.go:83 +0x2a3
github.com/crossplane-contrib/provider-argocd/pkg/clients.GetConfig({0x2090340, 0xc0002c2d20}, {0x20c8080, 0xc000400c80}, {0x20eb6e0, 0xc0008d9200})
        /home/blut/provider-argocd/pkg/clients/argocd.go:52 +0xd7
github.com/crossplane-contrib/provider-argocd/pkg/controller/repositories.(*connector).Connect(0xc0008bc9c0, {0x2090340, 0xc0002c2d20}, {0x20eb6e0, 0xc0008d9200})
        /home/blut/provider-argocd/pkg/controller/repositories/controller.go:81 +0x5f
github.com/crossplane/crossplane-runtime/pkg/reconciler/managed.(*Reconciler).Reconcile(0xc00029a5a0, {0xc0002c4f00, 0x1b3c980}, {{{0x0, 0x1bfe3c0}, {0xc0008b44b0, 0xc000aa44c0}}})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/github.com/crossplane/[email protected]/pkg/reconciler/managed/reconciler.go:564 +0xb0a
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler(0xc00029a640, {0x20902d0, 0xc0002c4f00}, {0x1bc2ec0, 0xc000b34000})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:298 +0x303
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem(0xc00029a640, {0x20902d0, 0xc0002c4f00})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:253 +0x205
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1.2({0x20902d0, 0xc0002c4f00})
        /home/blut/provider-argocd/.work/pkg/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:216 +0x46
k8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext.func1()
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:185 +0x25
k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1(0x7f3d0ccb5c30)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:155 +0x67
k8s.io/apimachinery/pkg/util/wait.BackoffUntil(0x0, {0x20533a0, 0xc000ba9290}, 0x1, 0xc00055af00)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:156 +0xb6
k8s.io/apimachinery/pkg/util/wait.JitterUntil(0x20533a0, 0x3b9aca00, 0x0, 0xe0, 0x101000000020001)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:133 +0x89
k8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext({0x20902d0, 0xc0002c4f00}, 0xc000bac3b0, 0xc0007cc7a0, 0x1161aa6, 0x80)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:185 +0x99
k8s.io/apimachinery/pkg/util/wait.UntilWithContext({0x20902d0, 0xc0002c4f00}, 0xc0006ea4c0, 0xc0007cc7b8)
        /home/blut/provider-argocd/.work/pkg/pkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:99 +0x2b
created by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1
        /home/blut/provider-argocd/.work/pkg/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:213 +0x356
make: *** [Makefile:98: run] Error 2

How can we reproduce it?

Example resources have been included in the description.

What environment did it happen in?

crossplane v1.6.3 kubernetes kind v1.21.1 provider-argocd v0.1.0 argocd v2.2.5

blut avatar Feb 16 '22 21:02 blut

as a workaround, please try to set plainText in your providerconfig

janwillies avatar Feb 16 '22 22:02 janwillies

This resolves the nil pointer dereference, however the repository resource is still not created in argocd. It appears the controller does not reconcile the repository resource.

// make run
09:53:44 [ .. ] go build linux_amd64
go build: -i flag is deprecated
09:54:51 [ OK ] go build linux_amd64
09:54:51 [ .. ] Running Crossplane locally out-of-cluster . . .
/home/blut/provider-argocd/_output/bin/linux_amd64/provider --debug
2022-02-17T09:54:52.734+0100    DEBUG   provider-argocd Starting        {"sync-period": "1h0m0s"}
I0217 09:54:53.793651    3128 request.go:655] Throttling request took 1.01386s, request: GET:https://127.0.0.1:62477/apis/authorization.k8s.io/v1?timeout=32s
2022-02-17T09:54:54.153+0100    INFO    controller-runtime.metrics      metrics server is starting to listen    {"addr": ":8080"}
2022-02-17T09:54:54.158+0100    INFO    controller-runtime.manager      starting metrics server {"path": "/metrics"}
2022-02-17T09:54:54.158+0100    INFO    controller-runtime.manager.controller.managed/project   Starting EventSource   {"reconciler group": "projects.argocd.crossplane.io", "reconciler kind": "Project", "source": "kind source: /, Kind="}
2022-02-17T09:54:54.159+0100    INFO    controller-runtime.manager.controller.managed/repository        Starting EventSource                                                                                                                {"reconciler group": "repositories.argocd.crossplane.io", "reconciler kind": "Repository", "source": "kind source: /, Kind="}
2022-02-17T09:54:54.158+0100    INFO    controller-runtime.manager.controller.providerconfig/providerconfig.argocd.crossplane.io                                                                                                            Starting EventSource     {"reconciler group": "argocd.crossplane.io", "reconciler kind": "ProviderConfig", "source": "kind source: /, Kind="}
2022-02-17T09:54:54.159+0100    INFO    controller-runtime.manager.controller.managed/cluster   Starting EventSource   {"reconciler group": "cluster.argocd.crossplane.io", "reconciler kind": "Cluster", "source": "kind source: /, Kind="}
2022-02-17T09:54:54.259+0100    INFO    controller-runtime.manager.controller.managed/project   Starting Controller    {"reconciler group": "projects.argocd.crossplane.io", "reconciler kind": "Project"}
2022-02-17T09:54:54.260+0100    INFO    controller-runtime.manager.controller.managed/project   Starting workers       {"reconciler group": "projects.argocd.crossplane.io", "reconciler kind": "Project", "worker count": 1}
2022-02-17T09:54:54.260+0100    INFO    controller-runtime.manager.controller.managed/repository        Starting Controller                                                                                                                 {"reconciler group": "repositories.argocd.crossplane.io", "reconciler kind": "Repository"}
2022-02-17T09:54:54.260+0100    INFO    controller-runtime.manager.controller.managed/repository        Starting workers                                                                                                                    {"reconciler group": "repositories.argocd.crossplane.io", "reconciler kind": "Repository", "worker count": 1}
2022-02-17T09:54:54.261+0100    INFO    controller-runtime.manager.controller.providerconfig/providerconfig.argocd.crossplane.io                                                                                                            Starting EventSource     {"reconciler group": "argocd.crossplane.io", "reconciler kind": "ProviderConfig", "source": "kind source: /, Kind="}
2022-02-17T09:54:54.261+0100    INFO    controller-runtime.manager.controller.managed/cluster   Starting Controller    {"reconciler group": "cluster.argocd.crossplane.io", "reconciler kind": "Cluster"}
2022-02-17T09:54:54.363+0100    INFO    controller-runtime.manager.controller.managed/cluster   Starting workers       {"reconciler group": "cluster.argocd.crossplane.io", "reconciler kind": "Cluster", "worker count": 1}
2022-02-17T09:54:54.364+0100    INFO    controller-runtime.manager.controller.providerconfig/providerconfig.argocd.crossplane.io                                                                                                            Starting Controller      {"reconciler group": "argocd.crossplane.io", "reconciler kind": "ProviderConfig"}
2022-02-17T09:54:54.370+0100    INFO    controller-runtime.manager.controller.providerconfig/providerconfig.argocd.crossplane.io                                                                                                            Starting workers {"reconciler group": "argocd.crossplane.io", "reconciler kind": "ProviderConfig", "worker count": 1}
2022-02-17T09:54:54.375+0100    DEBUG   provider-argocd Reconciling     {"controller": "providerconfig/providerconfig.argocd.crossplane.io", "request": "/argocd-provider"}

blut avatar Feb 17 '22 08:02 blut

Hmm, does it also happen when you install the provider via kubectl crossplane install provider crossplane/provider-argocd:v0.1.0?

janwillies avatar Feb 17 '22 09:02 janwillies

same behaviour, but without debug output (I can check if the same output is printed later)

blut avatar Feb 17 '22 09:02 blut

Crossplane does not currently have enough maintainers to address every issue and pull request. This issue has been automatically marked as stale because it has had no activity in the last 90 days. It will be closed in 7 days if no further activity occurs. Leaving a comment starting with /fresh will mark this issue as not stale.

github-actions[bot] avatar Sep 24 '22 03:09 github-actions[bot]

/fresh

janwillies avatar Sep 24 '22 06:09 janwillies

Crossplane does not currently have enough maintainers to address every issue and pull request. This issue has been automatically marked as stale because it has had no activity in the last 90 days. It will be closed in 7 days if no further activity occurs. Leaving a comment starting with /fresh will mark this issue as not stale.

github-actions[bot] avatar Dec 24 '22 02:12 github-actions[bot]

/fresh

MisterMX avatar Jan 18 '23 16:01 MisterMX

This appears to have been fixed in #31.

MisterMX avatar Mar 24 '23 14:03 MisterMX