yugabyte / yugabyte-k8s-operator

Yugabyte K8s Operator
Apache License 2.0
12 stars 2 forks source link

Unable to set custom image repository for YBDB in YBUniverse #10

Open bhavin192 opened 3 months ago

bhavin192 commented 3 months ago

Describe the bug When running in an OpenShift environment we have UBI based images for YBDB. So, I created the CR like:

apiVersion: operator.yugabyte.io/v1alpha1                                                               
kind: YBUniverse                                                                                        
metadata:                                                                                               
  name: operator-universe-demo                                                                         
spec:
  # …
  kubernetesOverrides:                                                                                  
    Image:
      repository: "quay.io/yugabyte/yugabyte-ubi"
    resource:                                                                                           
      master:                                                                                           
        requests:                                                                                       
          cpu: 15m                                                                                        
          memory: 60Mi                                                                                   
        limits:                                                                                         
          cpu: 2                                                                                        
          memory: 2Gi 

With that we get the following error:

2024-06-07T07:23:32.818Z  [error]  Reflector.java:160 [-1156364630-pool-21-thread-1010] io.fabric8.kubernetes.client.informers.impl.cache.Reflector watch failed for operator.yugabyte.io/v1alpha1/namespaces/bhavin-test/ybuniverses, will stop
io.fabric8.kubernetes.client.WatcherException: Unexpected exception processing watch event
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.onMessage(AbstractWatchManager.java:385)
    at io.fabric8.kubernetes.client.dsl.internal.WatcherWebSocketListener.onMessage(WatcherWebSocketListener.java:52)
    at io.fabric8.kubernetes.client.okhttp.OkHttpWebSocketImpl$1.onMessage(OkHttpWebSocketImpl.java:116)
    at okhttp3.internal.ws.RealWebSocket.onReadMessage(RealWebSocket.kt:333)
    at okhttp3.internal.ws.WebSocketReader.readMessageFrame(WebSocketReader.kt:245)
    at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:106)
    at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
    at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
    at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.IllegalArgumentException: Unrecognized field "Image" (class io.yugabyte.operator.v1alpha1.ybuniversespec.KubernetesOverrides), not marked as ignorable (5 known properties: "nodeSelector", "master", "resource", "tserver", "serviceEndpoints"])
 at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: io.yugabyte.operator.v1alpha1.YBUniverse["spec"]->io.yugabyte.operator.v1alpha1.YBUniverseSpec["kubernetesOverrides"]->io.yugabyte.operator.v1alpha1.ybuniversespec.KubernetesOverrides["Image"])
    at com.fasterxml.jackson.databind.ObjectMapper._convert(ObjectMapper.java:4544)
    at com.fasterxml.jackson.databind.ObjectMapper.convertValue(ObjectMapper.java:4475)
    at io.fabric8.kubernetes.client.utils.KubernetesSerialization.convertValue(KubernetesSerialization.java:368)
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.eventReceived(AbstractWatchManager.java:282)
    at io.fabric8.kubernetes.client.dsl.internal.AbstractWatchManager.onMessage(AbstractWatchManager.java:372)
    ... 11 common frames omitted

Expected behavior It should be possible to specify a custom repository for the DB images. Another valid use-case could be using private/internal registries.

amannijhawan commented 3 weeks ago

I think this needs fixes in the schema for the CRD. @shubin-yb can you make these?