Closed yharish991 closed 3 years ago
halkyon operator pod crashes when an unsupported runtime is used to create an halkyon component, instead it should gracefully handle the unsupported runtime version
Sample halkyon component i created
apiVersion: halkyon.io/v1beta1 kind: Component metadata: name: http-rest-sb spec: deploymentMode: build exposeService: true port: 8080 buildConfig: type: s2i url: https://github.com/snowdrop/rest-http-example.git ref: 2.1.6-4 moduleDirName: . runtime: spring-boot version: 2.1.6
Note the version 2.1.6 is not a supported spring boot runtime by halkyon
Logs from the operator pod
2020-11-03T03:50:06.020Z INFO component-controller -> Component {"name": "http-rest-sb", "status": ""} 2020-11-03T03:50:06.047Z INFO component-controller Created successfully {"kind": "PersistentVolumeClaim", "name": "m2-data-http-rest-sb"} E1103 03:50:06.081760 1 runtime.go:69] Observed a panic: &errors.errorString{s:"couldn't find '2.1.6' version for 'spring-boot' runtime, known versions: 1.5.19.RELEASE,2.1.13.RELEASE,2.2.6.RELEASE"} (couldn't find '2.1.6' version for 'spring-boot' runtime, known versions: 1.5.19.RELEASE,2.1.13.RELEASE,2.2.6.RELEASE) /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/runtime/runtime.go:76 /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/runtime/runtime.go:65 /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/runtime/runtime.go:51 /usr/local/go/src/runtime/panic.go:679 /go/src/halkyon.io/operator/pkg/controller/component/deployment.go:82 /go/src/halkyon.io/operator/pkg/controller/component/build_deployment.go:75 /go/src/halkyon.io/operator/pkg/controller/component/build_deployment.go:21 /go/src/halkyon.io/operator/pkg/controller/component/deployment.go:32 /go/pkg/mod/halkyon.io/operator-framework@v1.0.0-beta.7/dependent.go:55 /go/pkg/mod/halkyon.io/operator-framework@v1.0.0-beta.7/baseresource.go:32 /go/src/halkyon.io/operator/pkg/controller/component/component.go:90 /go/pkg/mod/halkyon.io/operator-framework@v1.0.0-beta.7/generic.go:104 /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.1.10/pkg/internal/controller/controller.go:215 /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.1.10/pkg/internal/controller/controller.go:158 /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/wait/wait.go:133 /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/wait/wait.go:134 /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/wait/wait.go:88 /usr/local/go/src/runtime/asm_amd64.s:1357 panic: couldn't find '2.1.6' version for 'spring-boot' runtime, known versions: 1.5.19.RELEASE,2.1.13.RELEASE,2.2.6.RELEASE [recovered] panic: couldn't find '2.1.6' version for 'spring-boot' runtime, known versions: 1.5.19.RELEASE,2.1.13.RELEASE,2.2.6.RELEASE goroutine 125 [running]: k8s.io/apimachinery/pkg/util/runtime.HandleCrash(0x0, 0x0, 0x0) /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/runtime/runtime.go:58 +0x105 panic(0x179ece0, 0xc000cfcf60) /usr/local/go/src/runtime/panic.go:679 +0x1b2 halkyon.io/operator/pkg/controller/component.populatePodEnvVar(0xc0001aec80, 0x0, 0xc00026ddd0, 0x203000) /go/src/halkyon.io/operator/pkg/controller/component/deployment.go:82 +0x26d halkyon.io/operator/pkg/controller/component.getRuntimeContainerFor(0xc0001aec80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...) /go/src/halkyon.io/operator/pkg/controller/component/build_deployment.go:75 +0x61 halkyon.io/operator/pkg/controller/component.deployment.installBuild(0xc000d1c420, 0xc0007bad00, 0x0, 0xc000bf85d0, 0x2e, 0x19fe683, 0x8) /go/src/halkyon.io/operator/pkg/controller/component/build_deployment.go:21 +0x259 halkyon.io/operator/pkg/controller/component.deployment.Build(0xc000d1c420, 0xc0007bad00, 0x0, 0x19fe683, 0x8, 0xc0000868a0, 0x194) /go/src/halkyon.io/operator/pkg/controller/component/deployment.go:32 +0x125 halkyon.io/operator-framework.CreateOrUpdate(0x1d8b060, 0xc000d388a0, 0x0, 0x0) /go/pkg/mod/halkyon.io/operator-framework@v1.0.0-beta.7/dependent.go:55 +0x1b2 halkyon.io/operator-framework.(*BaseResource).CreateOrUpdateDependents(0xc000d36de0, 0x1, 0xc000d36e70) /go/pkg/mod/halkyon.io/operator-framework@v1.0.0-beta.7/baseresource.go:32 +0x8e halkyon.io/operator/pkg/controller/component.(*Component).CreateOrUpdate(0xc000d38840, 0x0, 0x0) /go/src/halkyon.io/operator/pkg/controller/component/component.go:90 +0x8a halkyon.io/operator-framework.(*GenericReconciler).Reconcile(0xc00018fa40, 0xc0006b6159, 0x7, 0xc0006b6144, 0xc, 0xc000ee86c0, 0x0, 0x0, 0x0) /go/pkg/mod/halkyon.io/operator-framework@v1.0.0-beta.7/generic.go:104 +0xcb0 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem(0xc00041edc0, 0xc0000a6600) /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.1.10/pkg/internal/controller/controller.go:215 +0x20a sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1() /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.1.10/pkg/internal/controller/controller.go:158 +0x36 k8s.io/apimachinery/pkg/util/wait.JitterUntil.func1(0xc000241820) /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/wait/wait.go:133 +0x5e k8s.io/apimachinery/pkg/util/wait.JitterUntil(0xc000241820, 0x3b9aca00, 0x0, 0x1, 0xc00020b740) /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/wait/wait.go:134 +0xf8 k8s.io/apimachinery/pkg/util/wait.Until(0xc000241820, 0x3b9aca00, 0xc00020b740) /go/pkg/mod/k8s.io/apimachinery@v0.0.0-20181127025237-2b1284ed4c93/pkg/util/wait/wait.go:88 +0x4d created by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start /go/pkg/mod/sigs.k8s.io/controller-runtime@v0.1.10/pkg/internal/controller/controller.go:157 +0x32e
screenshot of operator pod status
halkyon operator pod crashes when an unsupported runtime is used to create an halkyon component, instead it should gracefully handle the unsupported runtime version
Sample halkyon component i created
Note the version 2.1.6 is not a supported spring boot runtime by halkyon
Logs from the operator pod
screenshot of operator pod status