acryldata/datahub-helm

Error exposing endpoints using load balancer - aws deployment

drrezaem opened this issue · 3 comments

Hi,
I have deployed Datahub on a Kubernetes cluster on AWS, but am getting this error when trying to expose the frontend endpoint using a load balancer.

> kubectl logs datahub-datahub-frontend-78fb749766-bbzp2
03:25:27,736 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [datahub-frontend/conf/logback.xml] at [file:/datahub-frontend/conf/logback.xml]
03:25:27,861 |-INFO in ch.qos.logback.core.joran.action.TimestampAction - Using current interpretation time, i.e. now, as time reference.
03:25:27,861 |-INFO in ch.qos.logback.core.joran.action.TimestampAction - Adding property to the context with key="bySecond" and value="2023-09-06_03-25-27" to the LOCAL scope
03:25:27,861 |-INFO in ch.qos.logback.core.joran.action.TimestampAction - Using current interpretation time, i.e. now, as time reference.
03:25:27,862 |-INFO in ch.qos.logback.core.joran.action.TimestampAction - Adding property to the context with key="byDate" and value="2023-09-06" to the LOCAL scope
03:25:27,862 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
03:25:27,866 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
03:25:27,901 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - This appender no longer admits a layout as a sub-component, set an encoder instead.
03:25:27,902 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - To ensure compatibility, wrapping your layout in LayoutWrappingEncoder.
03:25:27,902 |-WARN in ch.qos.logback.core.ConsoleAppender[STDOUT] - See also http://logback.qos.ch/codes.html#layoutInsteadOfEncoder for details
03:25:27,902 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.rolling.RollingFileAppender]
03:25:27,908 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [FILE]
03:25:27,910 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
03:25:27,919 |-INFO in ch.qos.logback.core.rolling.FixedWindowRollingPolicy@6c7a164b - No compression will be used
03:25:27,923 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Active log file name: /tmp/datahub/logs/datahub-frontend-2023-09-06_03-25-27.log
03:25:27,923 |-INFO in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - File property is set to [/tmp/datahub/logs/datahub-frontend-2023-09-06_03-25-27.log]
03:25:27,925 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
03:25:27,925 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
03:25:27,925 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [FILE] to Logger[ROOT]
03:25:27,925 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
03:25:27,926 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@2e570ded - Registering current configuration as safe fallback point
03:25:28 [main] INFO  o.p.play.store.ShiroAesDataEncrypter - Generated key: 17044618335a4fee
Sep 06, 2023 3:25:28 AM com.google.inject.internal.MessageProcessor visit
INFO: An exception was caught and reported. Message: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'analytics.elastic.sslContext.sslProtocol'
com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'analytics.elastic.sslContext.sslProtocol'
        at com.typesafe.config.impl.SimpleConfig.findKeyOrNull(SimpleConfig.java:156)
        at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:174)
        at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:180)
        at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:180)
        at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:180)
        at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:188)
        at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:193)
        at com.typesafe.config.impl.SimpleConfig.getString(SimpleConfig.java:250)
        at react.analytics.AnalyticsServiceModule.createSSLContext(AnalyticsServiceModule.java:83)
        at react.analytics.AnalyticsServiceModule.configure(AnalyticsServiceModule.java:63)
        at com.google.inject.AbstractModule.configure(AbstractModule.java:61)
        at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:344)
        at com.google.inject.spi.Elements.getElements(Elements.java:103)
        at com.google.inject.util.Modules$OverrideModule.configure(Modules.java:173)
        at com.google.inject.AbstractModule.configure(AbstractModule.java:61)
        at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:344)
        at com.google.inject.spi.Elements.getElements(Elements.java:103)
        at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:137)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
        at com.google.inject.Guice.createInjector(Guice.java:87)
        at com.google.inject.Guice.createInjector(Guice.java:78)
        at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:185)
        at play.inject.guice.GuiceBuilder.injector(GuiceBuilder.java:221)
        at play.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.java:156)
        at play.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.java:34)
        at play.api.ApplicationLoader$JavaApplicationLoaderAdapter$1.load(ApplicationLoader.scala:87)
        at play.core.server.ProdServerStart$.start(ProdServerStart.scala:51)
        at play.core.server.ProdServerStart$.main(ProdServerStart.scala:25)
        at play.core.server.ProdServerStart.main(ProdServerStart.scala)

Oops, cannot start the server.
com.google.inject.CreationException: Unable to create injector, see the following errors:

1) An exception was caught and reported. Message: No configuration setting found for key 'analytics.elastic.sslContext.sslProtocol'
  at com.google.inject.util.Modules$OverrideModule.configure(Modules.java:173)

2) Could not find a suitable constructor in react.analytics.AnalyticsService. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
  at react.analytics.AnalyticsService.class(AnalyticsService.java:37)
  while locating react.analytics.AnalyticsService
    for the 3rd parameter of react.controllers.GraphQLController.<init>(GraphQLController.java:51)
  while locating react.controllers.GraphQLController
    for the 11th parameter of router.Routes.<init>(Routes.scala:69)
  at play.api.inject.RoutesProvider$.bindingsFromConfiguration(BuiltinModule.scala:121):
Binding(class router.Routes to self) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)

2 errors
        at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:543)
        at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:159)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
        at com.google.inject.Guice.createInjector(Guice.java:87)
        at com.google.inject.Guice.createInjector(Guice.java:78)
        at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:185)
        at play.inject.guice.GuiceBuilder.injector(GuiceBuilder.java:221)
        at play.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.java:156)
        at play.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.java:34)
        at play.api.ApplicationLoader$JavaApplicationLoaderAdapter$1.load(ApplicationLoader.scala:87)
        at play.core.server.ProdServerStart$.start(ProdServerStart.scala:51)
        at play.core.server.ProdServerStart$.main(ProdServerStart.scala:25)
        at play.core.server.ProdServerStart.main(ProdServerStart.scala)
Caused by: com.typesafe.config.ConfigException$Missing: No configuration setting found for key 'analytics.elastic.sslContext.sslProtocol'
        at com.typesafe.config.impl.SimpleConfig.findKeyOrNull(SimpleConfig.java:156)
        at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:174)
        at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:180)
        at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:180)
        at com.typesafe.config.impl.SimpleConfig.findOrNull(SimpleConfig.java:180)
        at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:188)
        at com.typesafe.config.impl.SimpleConfig.find(SimpleConfig.java:193)
        at com.typesafe.config.impl.SimpleConfig.getString(SimpleConfig.java:250)
        at react.analytics.AnalyticsServiceModule.createSSLContext(AnalyticsServiceModule.java:83)
        at react.analytics.AnalyticsServiceModule.configure(AnalyticsServiceModule.java:63)
        at com.google.inject.AbstractModule.configure(AbstractModule.java:61)
        at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:344)
        at com.google.inject.spi.Elements.getElements(Elements.java:103)
        at com.google.inject.util.Modules$OverrideModule.configure(Modules.java:173)
        at com.google.inject.AbstractModule.configure(AbstractModule.java:61)
        at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:344)
        at com.google.inject.spi.Elements.getElements(Elements.java:103)
        at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:137)
        at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)

This is the output of kubectl get deployment -n kube-system aws-load-balancer-controller

AME                           READY   UP-TO-DATE   AVAILABLE   AGE
aws-load-balancer-controller   2/2     2            2           26d

And this the output of >kubectl get ingress

NAME                       CLASS    HOSTS               ADDRESS   PORTS   AGE
datahub-datahub-frontend   <none>   my.domain.com             80      90m

This is my values.yaml configuration for the front-end.

datahub-frontend:
  enabled: true
  image:
    repository: linkedin/datahub-frontend-react
    # tag: "v0.10.0" # # defaults to .global.datahub.version
    tag: "latest"
  # resources:
  #   limits:
  #     memory: 1400Mi
  #   requests:
  #     cpu: 100m
  #     memory: 512Mi
  # Set up ingress to expose react front-end
  ingress:
    enabled: true
    annotations:
      kubernetes.io/ingress.class: alb
      alb.ingress.kubernetes.io/scheme: internet-facing
      alb.ingress.kubernetes.io/target-type: instance
      alb.ingress.kubernetes.io/certificate-arn: <<my-arn>>
      alb.ingress.kubernetes.io/inbound-cidrs: 0.0.0.0/0
      alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
      alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
    hosts:
      - host: my.domain.com
        redirectPaths:
          - path: /*
            name: ssl-redirect
            port: use-annotation
        paths:
          - /*

I would appreciate any insights to help fix this. Thank you.

This issue is stale because it has been open for 30 days with no activity. If you believe this is still an issue on the latest DataHub release please leave a comment with the version that you tested it with. If this is a question/discussion please head to https://slack.datahubproject.io. For feature requests please use https://feature-requests.datahubproject.io

This issue was closed because it has been inactive for 30 days since being marked as stale.

Hello @drrezaem, did you ever figure this out? I'm running into the same error.