[ERROR] k8s spec.initContainers[0].image: Required value


Kubernetes에서 반나절을 귀찮게 했었던 에러가 있었다….

deployment manifest파일을 작성하여 kubectl apply ~를 했지만 왜인지 pod가 계속 생성되지 않았었고,

kubectl describe ~로 deployment와 replicaset을 확인한 결과 아래 에러가 계속 발생하고 있었다.

spec.initContainers[0].image: Required value

분명히 deployment.yaml에는 Container의 Image를 명시해줬는데 위 에러가 뜨길래 여러 삽질을 했었다…..





에러를 확인해보면 일반 Container가 아닌 initContainer의 image를 찾고 있는 것 처럼 보인다.

그 말은 즉슨 pod의 sidecar로 붙여놓은 Container들이 문제가 될 수 있음을 의미한다.

나의 경우에는 아래 annotations가 문제가 있다고 판단했다.

annotations:
        instrumentation.opentelemetry.io/inject-java: opentelemetry/otel-instrumentation

tracing을 위해 opentelemetry를 sidecar로 붙이고자 했는데 위의 annotations을 주석처리하니 pod가 정상적으로 떴었다.

그러면 이제 현상은 annotations란 것을 확인했으니 무엇이 원인인지를 분석해봤다.





업무를 하면서 계속 되뇌이는 문구인데, 진짜 찾기 힘든 에러일 수록 어처구니 없는 실수인 경우가 많았다.

나의 경우에는 annotations을 감지해서 optl을 올려주는 opentelemetry-operator 가 문제였다.

opentelemetry-operator.yaml 파일을 통해 올렸던 operator에는 따로 문제가 없었기에 지나쳤었지만 알고보니 해당 manifest파일에 오타가 있었다.

imagge:  <- image의 오타
  description: Image is a container image with NodeJS SDK and auto-instrumentation.

보면 image가 있어야할 곳에 imagge가 있어서 아래의 있는 image 정보들을 못 찾고 있었던 것이다…

역시나 모호한 에러일 수록 Syntax Error가 대부분이지 않나 싶다…