keel-hq / keel

Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates
https://keel.sh
Mozilla Public License 2.0
2.45k stars 282 forks source link

Update keel-arm:latest to 0.14.2 #447

Open bsord opened 5 years ago

bsord commented 5 years ago

When deploying keelhq/keel-arm:latest it doesn't pull the seemingly latest version (0.14.2) which addresses this bug: https://github.com/keel-hq/keel/issues/388

Can you update latest to be 0.14.2 so a seperate tag definition is not needed upon deployment to work around this issue?

rusenask commented 5 years ago

hi, yes, found another problem in build now, will try to fix it today and publish new arm images.

bsord commented 5 years ago

That's great news! Thanks for quick response.

On Sun, Sep 29, 2019, 10:14 AM Karolis notifications@github.com wrote:

hi, yes, found another problem in build now, will try to fix it today and publish new arm images.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/keel-hq/keel/issues/447?email_source=notifications&email_token=AEKBZBTDQSQ3V7S26XSL343QMDA6HA5CNFSM4I3QTKXKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD73XPJY#issuecomment-536311719, or mute the thread https://github.com/notifications/unsubscribe-auth/AEKBZBWIHQV7NDOSVBQIAXTQMDA6HANCNFSM4I3QTKXA .

rusenask commented 5 years ago

Hi, could you please try out keelhq/keel-arm:0.15.0 version? I think it should work but it's quite late and I would need to set up my rpi :)

bsord commented 5 years ago

pulled keel-arm:015.0 and now i receive the error below. Looks like it still needs the extra work you mentioned about the sqlite lib references in the other issue?

level=warning msg="sql store connector: can't reach DB, waiting" error="Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 require s cgo to work. This is a stub" uri=/data/keel.db time="2019-09-30T01:27:10Z" level=warning msg="sql store connector: can't reach DB, waiting" error="Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub" uri=/data/keel.db

bsord commented 5 years ago

Any updates on this?

reireias commented 4 years ago

keelhq/keel-arm has 0.15.0 tag. https://hub.docker.com/r/keelhq/keel-arm/tags

But, this does not work. (go-sqlite3 error)

keel depends on go-sqlite3 for admin UI since 0.15.0. go-sqlite3 uses cgo, so I need to set CGO_ENABLED=1 at build. Build succeeded with the following command.

$ sudo apt install gcc-multilib g++-arm-linux-gnueabihf
$ make build-arm
 build-arm:
-       cd cmd/keel && env GOARCH=arm GOOS=linux go build -ldflags="$(ARMFLAGS)" -o release/keel-linux-arm
+       cd cmd/keel && env CC=arm-linux-gnueabihf-gcc CGO_ENABLED=1 GOARCH=arm GOOS=linux go build -ldflags="$(ARMFLAGS)" -o release/keel-linux-arm
        cd cmd/keel && env GOARCH=arm64 GOOS=linux go build -ldflags="$(ARMFLAGS)" -o release/keel-linux-aarc64
rusenask commented 4 years ago

that's great :) didn't have time to experiment but we can include this into drone build step and automate arm releases then

reireias commented 4 years ago

I did some additional experiments. I found these problems.

I did the following to avoid these issues and make an image that works on raspi(has arm32v7 cpu).

I successfully built the image and ran it on raspi.

See this repository for how to build an image that runs on raspi (arm32v7): reireias/keel-arm I think the addition of admin ui has complicated the dependencies in arm.

rusenask commented 4 years ago

Hi @reireias, thanks for the tips :) I have updated files according to your example but I don't have any arm hw at the moment to test it out, could you please try running keelhq/keel-arm:test-1 tag?

reireias commented 4 years ago

Hi @rusenask, thanks for fixing. I tried binary build and image build for raspi. Both of them work!

1. build binary for arm

Build image on Docker container.

$ docker run --rm -it golang:1.13-buster bash

# in docker container
$ apt update
$ apt install -y gcc-arm-linux-gnueabihf
$ go get github.com/keel-hq/keel
$ cd /go/src/github.com/keel-hq/keel
$ make build-arm

# send cmd/keel/release/keel-linux-arm to raspi(raspbian buster)
# run
pi@pikube01:~ $ ./keel-linux-arm 
INFO[0000] extension.credentialshelper: helper registered  name=aws
INFO[0000] extension.credentialshelper: helper registered  name=gcr
INFO[0000] bot: registered                               name=slack
INFO[0000] keel starting...                              arch=arm build_date=2020-03-06T220124Z go_version=go1.13.8 os=linux revision=1156d42e version=0.16.0
WARN[0001] sql store connector: can't reach DB, waiting  error="unable to open database file" uri=/data/keel.db
WARN[0002] sql store connector: can't reach DB, waiting  error="unable to open database file" uri=/data/keel.db
WARN[0003] sql store connector: can't reach DB, waiting  error="unable to open database file" uri=/data/keel.db
WARN[0004] sql store connector: can't reach DB, waiting  error="unable to open database file" uri=/data/keel.db

2. build image for arm

Build image on my GitHub Actions with Makefile and Dockerfile.armhf in keel-hq/keel. https://github.com/reireias/keel-arm/pull/4

Push image to my docker hub, deploy my k8s cluster on raspi.

It works!

reireias commented 4 years ago

But, keelhq/keel-arm:test-1 image doesn't work on raspi.

time="2020-03-06T22:38:32Z" level=info msg="extension.credentialshelper: helper registered" name=aws
time="2020-03-06T22:38:32Z" level=info msg="extension.credentialshelper: helper registered" name=gcr
time="2020-03-06T22:38:32Z" level=info msg="bot: registered" name=slack
time="2020-03-06T22:38:32Z" level=info msg="keel starting..." arch=arm build_date=2019-09-29T221913Z go_version=go1.12 os=linux revision=afe0771b version=0.15.0
time="2020-03-06T22:38:33Z" level=warning msg="sql store connector: can't reach DB, waiting" error="Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub" uri=/data/keel.db
time="2020-03-06T22:38:34Z" level=warning msg="sql store connector: can't reach DB, waiting" error="Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub" uri=/data/keel.db
time="2020-03-06T22:38:35Z" level=warning msg="sql store connector: can't reach DB, waiting" error="Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub" uri=/data/keel.db
rusenask commented 4 years ago

as I understand your raspi would want 64 bit aarch?

reireias commented 4 years ago

These are a infomation of my Raspberry Pi 4 + Rapbian OS Buster.

pi@pikube01:~ $ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

pi@pikube01:~ $ uname -a
Linux pikube01 4.19.93-v7l+ #1290 SMP Fri Jan 10 16:45:11 GMT 2020 armv7l GNU/Linux

pi@pikube01:~ $ uname -m
armv7l

Image build with keel-hq/keel master branch code works on my raspi, but keelhq/keel-arm:test-1 doesn't work. I feel that the difference of the build environment is affecting. My build condition is the follows. https://github.com/reireias/keel-arm/blob/fix/patch/.github/workflows/image.yml

R4V3NN0 commented 4 years ago

Is there some now information? I tried using keel but all arm-builds newer than 14.2 are failing with different errors.

rusenask commented 4 years ago

Could you share the errors you are seeing?

On 11 Oct 2020, at 13:27, Noah Raven notifications@github.com wrote:

 Is there some now information? I tried using keel but all arm-builds newer than 14.2 are failing with different errors.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

R4V3NN0 commented 4 years ago

Running in Microk8s on Raspberry Pi 4B 4GB:

tag 0.15.0 or tag test-1 produce following logs:

time="2020-10-11T21:35:55Z"`` level=info msg="extension.credentialshelper: helper registered" name=aws
time="2020-10-11T21:35:55Z" level=info msg="extension.credentialshelper: helper registered" name=gcr
time="2020-10-11T21:35:55Z" level=info msg="bot: registered" name=slack
time="2020-10-11T21:35:55Z" level=info msg="keel starting..." arch=arm build_date=2019-09-29T224119Z go_version=go1.12 os=linux revision=afe0771b version=0.15.0
time="2020-10-11T21:35:56Z" level=warning msg="sql store connector: can't reach DB, waiting" error="Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub" uri=/data/keel.db

Last message seems to repeat infinitively.

Tag: latest produces following logs:

time="2020-10-11T21:39:42Z" level=info msg="extension.credentialshelper: helper registered" name=aws
time="2020-10-11T21:39:42Z" level=info msg="bot: registered" name=slack
time="2020-10-11T21:39:42Z" level=info msg="keel starting..." arch=arm build_date=2018-10-07T190104Z go_version=go1.10.3 os=linux revision=f571b82c version=0.11.2
time="2020-10-11T21:39:42Z" level=info msg="provider.kubernetes: using in-cluster configuration"
time="2020-10-11T21:39:42Z" level=info msg="provider.defaultProviders: provider 'kubernetes' registered"
time="2020-10-11T21:39:42Z" level=info msg="extension.credentialshelper: helper registered" name=secrets
time="2020-10-11T21:39:42Z" level=info msg="bot.slack.Configure(): Slack approval bot is not configured"
time="2020-10-11T21:39:42Z" level=error msg="bot.Run(): can not get configuration for bot [slack]"
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x4 pc=0x1156c]
goroutine 59 [running]:
sync/atomic.addUint64(0x137994ac, 0x1, 0x0, 0x13436028, 0x0)
        /usr/local/go/src/sync/atomic/64bit_arm.go:31 +0x4c
github.com/keel-hq/keel/approvals.(*DefaultManager).SubscribeApproved(0x137994a0, 0xf446f0, 0x1373a0e0, 0x1373a0e0, 0x136040e0, 0x0)
        /home/karolis/go/src/github.com/keel-hq/keel/approvals/approvals.go:171 +0x40
github.com/keel-hq/keel/provider.(*DefaultProviders).subscribeToApproved(0x13547a30)
        /home/karolis/go/src/github.com/keel-hq/keel/provider/provider.go:60 +0x70
created by github.com/keel-hq/keel/provider.New
        /home/karolis/go/src/github.com/keel-hq/keel/provider/provider.go:45 +0x1d4

The tag 0.14.2 is running perfectly fine.

Maybe this should be moved to a new issue because this issue is just about changing the latest tag.

Could you share the errors you are seeing? On 11 Oct 2020, at 13:27, "#" @.***> wrote:  Is there some now information? I tried using keel but all arm-builds newer than 14.2 are failing with different errors. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.