kubeless icon indicating copy to clipboard operation
kubeless copied to clipboard

kubeless topic ls - panic: assignment to entry in nil map

Open nodesocket opened this issue 4 years ago • 4 comments

BUG REPORT

What happened:

kubeless topic ls
panic: assignment to entry in nil map

goroutine 1 [running]:
net/textproto.MIMEHeader.Set(...)
	/usr/local/Cellar/go/1.12.6/libexec/src/net/textproto/header.go:22
net/http.Header.Set(...)
	/usr/local/Cellar/go/1.12.6/libexec/src/net/http/header.go:37
github.com/kubeless/kubeless/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec.(*roundTripper).RoundTrip(0xc000497e80, 0xc000105400, 0xc000047bc0, 0x7, 0x200b38e)
	/private/tmp/kubeless-20190702-51707-1pec8sr/kubeless-1.0.4/src/github.com/kubeless/kubeless/vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/exec.go:176 +0x270
github.com/kubeless/kubeless/cmd/kubeless/topic.execCommand(0xc0001768c0, 0x22bd9e0, 0xc000132b40, 0x200b38e, 0x8, 0xc0001460a0, 0x5, 0x5, 0x2256400, 0xc0000ec000, ...)
	/private/tmp/kubeless-20190702-51707-1pec8sr/kubeless-1.0.4/src/github.com/kubeless/kubeless/cmd/kubeless/topic/topicCreate.go:103 +0x48f
github.com/kubeless/kubeless/cmd/kubeless/topic.listTopic(...)
	/private/tmp/kubeless-20190702-51707-1pec8sr/kubeless-1.0.4/src/github.com/kubeless/kubeless/cmd/kubeless/topic/topicList.go:60
github.com/kubeless/kubeless/cmd/kubeless/topic.glob..func4(0x2e1a780, 0x2e46e90, 0x0, 0x0)
	/private/tmp/kubeless-20190702-51707-1pec8sr/kubeless-1.0.4/src/github.com/kubeless/kubeless/cmd/kubeless/topic/topicList.go:47 +0x2bb
github.com/kubeless/kubeless/vendor/github.com/spf13/cobra.(*Command).execute(0x2e1a780, 0x2e46e90, 0x0, 0x0, 0x2e1a780, 0x2e46e90)
	/private/tmp/kubeless-20190702-51707-1pec8sr/kubeless-1.0.4/src/github.com/kubeless/kubeless/vendor/github.com/spf13/cobra/command.go:766 +0x2ae
github.com/kubeless/kubeless/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc000134500, 0x1d89f5a, 0xc0003e1f88, 0xc0000c0058)
	/private/tmp/kubeless-20190702-51707-1pec8sr/kubeless-1.0.4/src/github.com/kubeless/kubeless/vendor/github.com/spf13/cobra/command.go:852 +0x2ec
github.com/kubeless/kubeless/vendor/github.com/spf13/cobra.(*Command).Execute(...)
	/private/tmp/kubeless-20190702-51707-1pec8sr/kubeless-1.0.4/src/github.com/kubeless/kubeless/vendor/github.com/spf13/cobra/command.go:800
main.main()
	/private/tmp/kubeless-20190702-51707-1pec8sr/kubeless-1.0.4/src/github.com/kubeless/kubeless/cmd/kubeless/kubeless.go:48 +0x28

What you expected to happen:

List topics in Kafka.

Environment:

  • Kubernetes version (use kubectl version):
Client Version: version.Info{Major:"1", Minor:"13+", GitVersion:"v1.13.9-2+4a03651a7e7e04", GitCommit:"4a03651a7e7e04a0021b2ef087963dfb7bd0a17e", GitTreeState:"clean", BuildDate:"2019-08-16T19:08:17Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"13+", GitVersion:"v1.13.10-eks-5ac0f1", GitCommit:"5ac0f1d9ab2c254ea2b0ce3534fd72932094c6e1", GitTreeState:"clean", BuildDate:"2019-08-20T22:39:46Z", GoVersion:"go1.11.13", Compiler:"gc", Platform:"linux/amd64"}
  • Kubeless version (use kubeless version):
Kubeless version: v1.0.4
  • Cloud provider or physical cluster:
Amazon EKS
  • Installed the Kafka trigger with:
kubectl create -f https://github.com/kubeless/kafka-trigger/releases/download/v1.0.2/kafka-zookeeper-v1.0.2.yaml 
  • Listing of Kubeless pods:
kubectl get pods --namespace kubeless
NAME                                          READY   STATUS    RESTARTS   AGE
kafka-0                                       1/1     Running   0          2d23h
kafka-trigger-controller-69cf947d6b-nbc4v     1/1     Running   0          2d23h
kubeless-controller-manager-646876977-qb46g   3/3     Running   0          17d
zoo-0                                         1/1     Running   0          2d23h

nodesocket avatar Sep 13 '19 21:09 nodesocket

Any ideas on this? Blocker for me. Thanks

nodesocket avatar Sep 16 '19 22:09 nodesocket

The kubeless topic command assumes a few things in the cluster, it's mainly used for testing purposes (I wouldn't recommend using it for any production setup).

If you really want to do it, what the kubeless CLI does under the hood, is exec into the kafka pod and execute: /opt/bitnami/kafka/bin/kafka-topics.sh --zookeeper zookeeper.kubeless:2181 --list

https://github.com/kubeless/kubeless/blob/master/cmd/kubeless/topic/topicList.go#L56

You can manually run that using kubectl instead.

andresmgot avatar Sep 23 '19 11:09 andresmgot

@andresmgot thanks for the reply. Running:

MacBook-Pro ➜  ~ kubectl get pods --namespace kubeless
NAME                                          READY   STATUS    RESTARTS   AGE
kafka-0                                       1/1     Running   0          9d
kafka-trigger-controller-69cf947d6b-nbc4v     1/1     Running   0          9d
kubeless-controller-manager-646876977-qb46g   3/3     Running   0          24d
zoo-0                                         1/1     Running   0          9d

MacBook-Pro ➜  ~ kubectl --namespace kubeless exec -it kafka-0 -- /bin/bash
/opt/bitnami/kafka/bin/kafka-topics.sh --zookeeper zookeeper.kubeless:2181 --list

Worked. This seems to indicate an issue then in kubeless since go is crashing with panic: assignment to entry in nil map.

The kubeless topic command assumes a few things in the cluster, it's mainly used for testing purposes (I wouldn't recommend using it for any production setup).

What do you recommend then to create topics kubeless topic create and kubeless topic publish?

nodesocket avatar Sep 23 '19 19:09 nodesocket

Yes, probably something in the client-go library is wrong (or not updated) and that's why you are getting that error.

What do you recommend then to create topics kubeless topic create and kubeless topic publish?

You can follow the same approach, you can check what the commands do in the code:

https://github.com/kubeless/kubeless/blob/master/cmd/kubeless/topic/topicCreate.go#L61

https://github.com/kubeless/kubeless/blob/master/cmd/kubeless/topic/topicPublish.go#L67

In the case of the publish command you need to pipe the text to be published.

andresmgot avatar Sep 24 '19 08:09 andresmgot