solarwinds / rkubelog

Send k8s Logs to Papertrail and Loggly Without DaemonSets (for Nodeless Clusters)
Apache License 2.0
23 stars 18 forks source link

Add Multiarch support #13

Open WisdomWolf opened 3 years ago

WisdomWolf commented 3 years ago

I really like the concept of rkubelog, but it suffers from the same problem as logspout in that there is no native support for Linux/arm/v6, Linux/arm/v7, or Linux/arm64 making it impossible to use with a Raspberry Pi cluster. It appears that if you remove the GOARCH=amd64 line from the Dockerfile it can be compiled for all of the architectures listed above. I've been able to build images for all the architectures mentioned both locally with docker buildx and via GitHub action. I'll be testing these on various Raspberry Pi machines later today and will report back if I run into any unexpected issues.

girishranganathan commented 3 years ago

@WisdomWolf great point. Thx a lot for your feedback.

Please feel free to create a PR with your change once you have tested it.

WisdomWolf commented 3 years ago

It looks like when I build the image myself and try to use it I'm getting a permissions error: "error while opening a local db instance: Error Creating Dir: \"./db\": mkdir ./db: permission denied" on all platforms including amd64. I'm a bit puzzled as to the cause of this. Any suggestions?

girishranganathan commented 3 years ago

Hello @WisdomWolf, Sorry I couldn't get back sooner. Can you please give the new updated version a try?

girishranganathan commented 3 years ago

I will close this issue for now. Please feel free to re-open it as needed

WisdomWolf commented 3 years ago

Looks like things have actually taken a step in the wrong direction. The newest r18 revision won't even build on ARM devices (aarch64 or arm/v7) anymore

------
 > [main 6/6] RUN CGO_ENABLED=0 GOOS=linux go build -mod vendor -ldflags='-w -s -extldflags "-static"' -a -o /rkubelog .:
#12 5.465 # github.com/dgraph-io/ristretto/z/simd
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:7: unrecognized instruction "MOVQ"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:8: unrecognized instruction "MOVQ"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:9: unrecognized instruction "MOVQ"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:12: unrecognized instruction "MOVQ"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:15: unrecognized instruction "XORL"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:19: unrecognized instruction "CMPQ"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:20: unrecognized instruction "JAE"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:23: unrecognized instruction "CMPQ"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:24: unrecognized instruction "JAE"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:27: unrecognized instruction "CMPQ"
#12 5.465 vendor/github.com/dgraph-io/ristretto/z/simd/search.s:28: unrecognized instruction "JAE"
#12 5.465 asm: too many errors
------
executor failed running [/bin/sh -c CGO_ENABLED=0 GOOS=linux go build -mod vendor -ldflags='-w -s -extldflags "-static"' -a -o /rkubelog .]: exit code: 2
girishranganathan commented 3 years ago

@WisdomWolf, thx for pointing this out. I have taken a different approach with this and was able to build docker image for armv7 using docker buildx. Can you please give this image a try: quay.io/solarwinds/rkubelog:r19-b2-armv7?

WisdomWolf commented 3 years ago

It looks like this works. I am running on an ARM64 device, so the only thing left to test is an image build natively for ARM64 and then you should be able to publish a single multi-arch image with the appropriate manifests so that we can deploy without constraining to nodes based on underlying architecture, right?

girishranganathan commented 3 years ago

Yes you are right.