I might have joined the discussion a bit late.

My two cents:

   - I'm good with EVs overwriting the flink-conf.yaml. However, I'm a bit
   unsure about EVs overwriting the dynamic properties.
      - Currently, dynamic properties are expected to be the final
      effective configuration in many places. E.g., the active resource manager
      derives task managers' memory sizes from user configuration
(e.g. a min-max
      range), and writes the derived actual sizes through dynamic properties
      (e.g., set min & max to the same value). Making EVs the highest priority
      would require changes from using dynamic properties to using EVs for all
      such cases.
      - I think dynamic properties might be easier to use than EVs, in
      terms of overwriting the configurations. Using dynamic
properties, you can
      simply add `-Dkey=value` when executing `flink run`. I'm not
entirely sure
      if there's a way to set the EVs in a equally simple way, without
needing to
      change the image.
   - The naming conversions proposed in the FLIP seems not bijective to me.
   There could be problems if the configuration key contains underscores.
      - a_b -> FLINK_CONFIG_a_b
      - FLINK_CONFIG_a_b -> a.b


Thank you~

Xintong Song



On Tue, Jan 26, 2021 at 6:03 PM Ufuk Celebi <u...@apache.org> wrote:

> I'm including Steven and Yang into this discussion (cc'd) who raised some
> good points in the initial DISCUSS thread. Do you have any opinion on the
> current discussion here?
>
> On Tue, Jan 26, 2021, at 10:59 AM, Ufuk Celebi wrote:
> > Chesnay, thanks for bringing this up. I think it's an alternative that's
> worthwhile to discuss, although I do think that we should stick to the
> current proposal in the FLIP.
> >
> > My main concerns about the FLINK_PROPERTIES approach boil down to the
> following:
> > * A single env var per config option is a standard language-agnostic
> approach to configure systems.
> > * Having a single env var that encodes multiple config options makes it
> cumbersome to change individual entries.
> > * (minor) Explicitly mapping an env var to a config key is explicit
> (nice!), but also results in some repetition.
> >
> > I don't have much experience actually deploying Flink to production, so
> I would definitely give higher weight to feedback from people with more
> experience with production Flink deployments.
> >
> > Cheers,
> >
> > Ufuk
> >
> > On Tue, Jan 26, 2021, at 6:03 AM, Thomas Weise wrote:
> > > It appears that the discussion in FLIP-161 is primarily focussed on
> setting
> > > individual configuration entries?
> > >
> > > On the other hand, $FLINK_PROPERTIES (and envsubst) were introduced to
> set
> > > a fragment or the complete flink-conf.yaml. It's used by at least 2 of
> the
> > > Flink k8s operators.
> > >
> > > In these cases the configuration is supplied by the user in the flink
> conf
> > > format. It would be cumbersome to translate that into a set of
> environment
> > > variables to then translate those back into flink-conf.yaml.
> > >
> > > I remember at the time we discussed that Flink itself could perform the
> > > transformation of the config file. That would eliminate the
> restriction of
> > > only being applicable to the container entry point script.
> > >
> > > Thomas
> > >
> > > On Mon, Jan 25, 2021 at 11:16 AM Khachatryan Roman <
> > > khachatryan.ro...@gmail.com> wrote:
> > >
> > > > I agree with Till about $FLINK_PROPERTIES being only supported by a
> Flink
> > > > buildfile.
> > > > Besides that,
> > > > 1. having different ways of configuring different applications
> doesn't seem
> > > > convenient to me. For example, Kafka and ZK configured via usual
> properties
> > > > and Flink via concatenated one.
> > > > 2. It could also be problematic to re-use the configuration from
> non-java
> > > > apps (PyFlink?).
> > > > 3. And yes, this can also be used in tests.
> > > > 4. Having this logic in scripts means we have to test scripts
> instead of
> > > > java/python
> > > >
> > > > I probably missed something but what are your concerns regarding the
> "magic
> > > > syntax" (s3.access-key → FLINK_CONFIG_S3_ACCESS__KEY) you mentioned
> > > > earlier?
> > > >
> > > > Regards,
> > > > Roman
> > > >
> > > >
> > > > On Mon, Jan 25, 2021 at 6:48 PM Till Rohrmann <trohrm...@apache.org>
> > > > wrote:
> > > >
> > > > > The problem I see with $FLINK_PROPERTIES is that this is only
> supported
> > > > by
> > > > > Flink's Docker entrypoint.sh. In fact this variable was introduced
> as a
> > > > > temporary bridge to allow Docker users to change Flink's
> configuration
> > > > > dynamically. If we had had a proper way of configuring Flink
> processes
> > > > via
> > > > > env variables, then we wouldn't have introduced it.
> > > > >
> > > > > Cheers,
> > > > > Till
> > > > >
> > > > > On Mon, Jan 25, 2021 at 5:01 PM Ingo Bürk <i...@ververica.com>
> wrote:
> > > > >
> > > > > > Hi Chesnay,
> > > > > >
> > > > > > thanks for your input! After some thought I think your proposal
> makes a
> > > > > > lot of sense, i.e. if we have one single
> $FLINK_DYNAMIC_PROPERTIES
> > > > > > environment variable, in a Kubernetes environment we could do
> something
> > > > > like
> > > > > >
> > > > > > ```
> > > > > > env:
> > > > > >   - name: S3_KEY
> > > > > >     valueFrom: # get from secret
> > > > > >   - name: FLINK_DYNAMIC_PROPERTIES
> > > > > >     value: -Ds3.access-key=$(S3_KEY)
> > > > > > ```
> > > > > >
> > > > > > This, much like the substitution approach we rejected previously,
> > > > > requires
> > > > > > "intermediate" variables. However, they're all defined in the
> same
> > > > scope
> > > > > > here, and this solution certainly has the noteworthy benefit
> that no
> > > > > "magic
> > > > > > syntax" (s3.access-key → FLINK_CONFIG_S3_ACCESS__KEY) is needed,
> which
> > > > I
> > > > > > believe makes for a pretty good user experience here. I think
> > > > personally
> > > > > I
> > > > > > prefer this approach over the approach we currently have in the
> FLIP,
> > > > but
> > > > > > I'm definitely happy to hear thoughts from the others on this
> approach!
> > > > > > Especially maybe also regarding the test randomization point
> raised
> > > > > > by Khachatryan earlier in the discussion.
> > > > > >
> > > > > >
> > > > > > Regards
> > > > > > Ingo
> > > > > >
> > > > > > On Fri, Jan 22, 2021 at 5:18 PM Chesnay Schepler <
> ches...@apache.org>
> > > > > > wrote:
> > > > > >
> > > > > >> The FLIP seems to disregard the existence of dynamic
> properties, and
> > > > I'm
> > > > > >> wondering why that is the case.
> > > > > >> Don't they fulfill similar roles, in that they allow config
> options to
> > > > > >> be set on the command-line?
> > > > > >>
> > > > > >> What use-case do they currently not support?
> > > > > >> I assume it's something along the lines of setting some
> environment
> > > > > >> variable for containers, but at least for those based on our
> docker
> > > > > >> images we already have a mechanism to support that.
> > > > > >>
> > > > > >> In any case, wouldn't a single DYNAMIC_PROPERTIES variable
> suffice
> > > > that
> > > > > >> is automatically evaluated by all scripts?
> > > > > >> Why go through all the hassle with the environment variable
> names?
> > > > > >>
> > > > > >> On 1/22/2021 3:53 PM, Till Rohrmann wrote:
> > > > > >> > The updated design LGTM as well. Nice work Ingo!
> > > > > >> >
> > > > > >> > Cheers,
> > > > > >> > Till
> > > > > >> >
> > > > > >> > On Fri, Jan 22, 2021 at 3:33 PM Ingo Bürk <i...@ververica.com
> >
> > > > wrote:
> > > > > >> >
> > > > > >> >> Thanks, Ufuk. I think that makes sense, so I moved it from a
> > > > footnote
> > > > > >> to an
> > > > > >> >> addition to prevent that in the future as well.
> > > > > >> >>
> > > > > >> >> Ingo
> > > > > >> >>
> > > > > >> >> On Fri, Jan 22, 2021 at 3:10 PM Ufuk Celebi <u...@apache.org>
> > > > wrote:
> > > > > >> >>
> > > > > >> >>> LGTM. Let's see what the others think...
> > > > > >> >>>
> > > > > >> >>> On Thu, Jan 21, 2021, at 11:37 AM, Ingo Bürk wrote:
> > > > > >> >>>> Regarding env.java.opts, what special handling is needed
> there?
> > > > > >> AFAICT
> > > > > >> >>> only
> > > > > >> >>>> the rejected alternative of substituting values would've
> had an
> > > > > >> effect
> > > > > >> >> on
> > > > > >> >>>> this.
> > > > > >> >>> Makes sense 👍
> > > > > >> >>>
> > > > > >> >>>  From the FLIP:
> > > > > >> >>>> This mapping is not strictly bijective, but cases with
> > > > consecutive
> > > > > >> >>> periods or dashes in the key name are not considered here
> and
> > > > should
> > > > > >> not
> > > > > >> >>> (reasonably) be allowed.
> > > > > >> >>>
> > > > > >> >>> We could actually enforce such restrictions in the
> implementation
> > > > of
> > > > > >> >>> ConfigOption, avoiding any surprises down the line.
> > > > > >> >>>
> > > > > >> >>> – Ufuk
> > > > > >> >>>
> > > > > >>
> > > > > >>
> > > > >
> > > >
> > >
> >
>

Reply via email to