I've rescheduled the meeting to 30th August (Wednesday) 1pm-2pm, as Lakmal
is unavailable today.


Regards,
Chamila de Alwis
Committer and PMC Member - Apache Stratos
Senior Software Engineer | WSO2
Blog: https://medium.com/@chamilad



On Wed, Aug 23, 2017 at 5:31 PM, Chamila De Alwis <[email protected]> wrote:

> I agree. We could omit Secure Vaulted or possible fields like "password"
> values from being logged.
>
> I've scheduled a meeting on 28th Monday 2.00PM. Let's consolidate these
> into a plan then.
>
>
> Regards,
> Chamila de Alwis
> Committer and PMC Member - Apache Stratos
> Senior Software Engineer | WSO2
> Blog: https://medium.com/@chamilad
>
>
>
> On Wed, Aug 23, 2017 at 5:26 PM, Nuwan Dias <[email protected]> wrote:
>
>> Logging might be tricky. Some of these configs we're talking about are
>> related to credentials. We shouldn't log credentials in any place. So we
>> probably will have to find a way to omit logging certain variables if we go
>> down the path of logging.
>>
>> On Wed, Aug 23, 2017 at 5:21 PM, Chamila De Alwis <[email protected]>
>> wrote:
>>
>>> I had an offline chat with IsuruH and Jayanga, during which following
>>> points came into light.
>>>
>>> 1. To address the troubleshooting story, a separate log can be written
>>> at the startup where the ConfigProvider executes that would contain the
>>> configurations overridden for the particular product. The security of this
>>> log should be handled in the same way for other logs. For debugging, this
>>> log file can be requested from a deployment.
>>> 2. There is a possibility that product start-up time might degrade if
>>> this logging is introduced.
>>> 3. Not all configurations need to be set via environment variables.
>>> There can be an attribute in the config annotation which denotes the
>>> environment variable that can be used to override the particular
>>> configuration. This can also help in filling the documentation gap that is
>>> introduced, i.e. the list of environment variables that can be used in a
>>> particular product can be autogenerated when configuration doc generation
>>> story is completed.
>>> 4. Complex types do not need to be supported in environment variable
>>> story. This would vary depending on the likelihood that configuration would
>>> be overridden through an environment variable.
>>>
>>> Let's schedule a meeting to discuss the concerns, including the above,
>>> and come to a conclusion.
>>>
>>>
>>> Regards,
>>> Chamila de Alwis
>>> Committer and PMC Member - Apache Stratos
>>> Senior Software Engineer | WSO2
>>> Blog: https://medium.com/@chamilad
>>>
>>>
>>>
>>> On Wed, Aug 23, 2017 at 3:01 PM, Chamila De Alwis <[email protected]>
>>> wrote:
>>>
>>>> IMO logging values would be a security risk. It would be more
>>>> manageable if information on where certain values are retrieved from can be
>>>> displayed if that log level is enabled.
>>>>
>>>>
>>>> Regards,
>>>> Chamila de Alwis
>>>> Committer and PMC Member - Apache Stratos
>>>> Senior Software Engineer | WSO2
>>>> Blog: https://medium.com/@chamilad
>>>>
>>>>
>>>>
>>>> On Wed, Aug 23, 2017 at 3:00 PM, Isuru Haththotuwa <[email protected]>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Wed, Aug 23, 2017 at 2:46 PM, Lakmal Warusawithana <[email protected]
>>>>> > wrote:
>>>>>
>>>>>>
>>>>>>
>>>>>> On Wed, Aug 23, 2017 at 2:39 PM, Isuru Haththotuwa <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> While I fully agree that its necessary to be able to inject configs
>>>>>>> via environment variables to be container friendly, I think Jayanga do 
>>>>>>> have
>>>>>>> a point. When we are troubleshooting an issue, the first thing to check 
>>>>>>> is
>>>>>>> the configurations. When up configuration values are looked up via
>>>>>>> environment variables, how do we know what are the configuration 
>>>>>>> parameters
>>>>>>> that are used in the system? One possible option is to write to a log as
>>>>>>> Chamila has mentioned, or else write the currently used config params 
>>>>>>> to a
>>>>>>> log file at startup. WDYT?  However this does not take into account the
>>>>>>> possibility of changing an environment value even after the server has
>>>>>>> started.
>>>>>>>
>>>>>>
>>>>>> @Isuru, it is coming with correct namespace right? and first priority
>>>>>> is given to environment variables. So there should not be an issue with
>>>>>> identifying the our config from environment variables IMO.
>>>>>>
>>>>> Yes. What I want to highlight is the troubleshooting perspective. We
>>>>> can have a particular set of config values coming from environment
>>>>> variables, another set of config values from deployment.yaml and defaults
>>>>> from the code. If we have log file file with all the currently used
>>>>> configurations values (irrespective of whether they are coming from
>>>>> environment variables, deployment.yaml or defaults in code), which can be
>>>>> written at server startup, it would be useful for the troubleshooting
>>>>> purpose IMHO.
>>>>>
>>>>>>
>>>>>>> On Wed, Aug 23, 2017 at 1:35 PM, Chamila De Alwis <[email protected]
>>>>>>> > wrote:
>>>>>>>
>>>>>>>> Hi Jayanga,
>>>>>>>>
>>>>>>>> From Support's point of view, requesting all the data that can have
>>>>>>>> an effect is not an overhead IMO. Especially since we already do that 
>>>>>>>> now,
>>>>>>>> we request for possible environmental factors, at least after all other
>>>>>>>> efforts are exhausted. When this change is introduced, we would not
>>>>>>>> additionally ask for anything.
>>>>>>>>
>>>>>>>> Furthermore, environment variables would mainly be used in
>>>>>>>> scenarios where Container Cluster Management systems are used, in which
>>>>>>>> case there is a clear cut definition of which environment variables 
>>>>>>>> with
>>>>>>>> what values are being applied to Containers. This is how most systems 
>>>>>>>> are
>>>>>>>> debugged in CMSs like Kubernetes even now, where commands like `kubectl
>>>>>>>> describe` would give you all the runtime information.
>>>>>>>>
>>>>>>>> Non-Containerized environments like VMs would mostly use the file
>>>>>>>> based approach where it is easy to be coupled with Config Automation 
>>>>>>>> tools
>>>>>>>> like Puppet.
>>>>>>>>
>>>>>>>> The concern of troubleshooting can be tackled by enabling a verbose
>>>>>>>> log that would display the environment variable name from which a 
>>>>>>>> certain
>>>>>>>> value was retrieved, at the time configs are loaded. This would 
>>>>>>>> obviously
>>>>>>>> have to be verbose than INFO, however it would greatly help any 
>>>>>>>> debugging
>>>>>>>> process. This is how tools like Puppet handle environment variable 
>>>>>>>> injected
>>>>>>>> configs.
>>>>>>>>
>>>>>>>> The argument for file-less environment variables in the lookup
>>>>>>>> hierarchy is how quickly it becomes cumbersome to handle configuration
>>>>>>>> files across different Container images. Having files would soon 
>>>>>>>> present us
>>>>>>>> with a situation similar to what we handle now in C4 with configuration
>>>>>>>> repositories for different "patterns" of deployment in Containers, that
>>>>>>>> requires a separate effort to be maintained for different releases. 
>>>>>>>> Having
>>>>>>>> low-config convention-based environment variables support is a valuable
>>>>>>>> addition to the C5 configuration lookup model since we've already 
>>>>>>>> reduced
>>>>>>>> the number of configuration files. deployment.yaml will anyway be 
>>>>>>>> there,
>>>>>>>> and I'm willing to bet that most clients would use that to make
>>>>>>>> configuration changes. However, there are a set of clients who would
>>>>>>>> require the convention-based environment variables for a
>>>>>>>> smoother integration to Containerization than others.
>>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Chamila de Alwis
>>>>>>>> Committer and PMC Member - Apache Stratos
>>>>>>>> Senior Software Engineer | WSO2
>>>>>>>> Blog: https://medium.com/@chamilad
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Aug 23, 2017 at 1:03 PM, Jayanga Dissanayake <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> @Nuwan, configs should be able to inject via
>>>>>>>>> environment properties. What I am saying is all these configs should 
>>>>>>>>> be
>>>>>>>>> specified the in the deployment.yaml as {env:placeholder name}.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Jayanga.
>>>>>>>>>
>>>>>>>>> *Jayanga Dissanayake*
>>>>>>>>> Associate Technical Lead
>>>>>>>>> WSO2 Inc. - http://wso2.com/
>>>>>>>>> lean . enterprise . middleware
>>>>>>>>> email: [email protected]
>>>>>>>>> mobile: +94772207259 <+94%2077%20220%207259>
>>>>>>>>> <http://wso2.com/signature>
>>>>>>>>>
>>>>>>>>> On Wed, Aug 23, 2017 at 12:51 PM, Nuwan Dias <[email protected]>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> @Jayanga, how do you make the server run elegantly on containers
>>>>>>>>>> without being able to inject properties via env variables?
>>>>>>>>>>
>>>>>>>>>> On Wed, Aug 23, 2017 at 12:43 PM, Jayanga Dissanayake <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi All,
>>>>>>>>>>>
>>>>>>>>>>> -1, for injecting configs without specifying it in the
>>>>>>>>>>> deployment.yaml
>>>>>>>>>>>
>>>>>>>>>>> Reason: When analyzing most of the issues we request config
>>>>>>>>>>> files (with C5 deployment.yaml) from the users to identify what are 
>>>>>>>>>>> the
>>>>>>>>>>> configuration changes. If we have at-least the place holders in the 
>>>>>>>>>>> config
>>>>>>>>>>> files, there is a guarantee that we know what are the injected
>>>>>>>>>>> configuration and we could request the actual values of the configs 
>>>>>>>>>>> we need.
>>>>>>>>>>>
>>>>>>>>>>> But with the suggested approach, we have to request the 1)config
>>>>>>>>>>> files, 2)all the environment variables and get the union to 
>>>>>>>>>>> identify the
>>>>>>>>>>> changed configurations. IMO an additional effort.
>>>>>>>>>>>
>>>>>>>>>>> Hence considering the overhead on the support front I am -1 for
>>>>>>>>>>> the suggested approach.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Jayanga.
>>>>>>>>>>>
>>>>>>>>>>> *Jayanga Dissanayake*
>>>>>>>>>>> Associate Technical Lead
>>>>>>>>>>> WSO2 Inc. - http://wso2.com/
>>>>>>>>>>> lean . enterprise . middleware
>>>>>>>>>>> email: [email protected]
>>>>>>>>>>> mobile: +94772207259 <+94%2077%20220%207259>
>>>>>>>>>>> <http://wso2.com/signature>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Aug 23, 2017 at 9:16 AM, Danesh Kuruppu <[email protected]
>>>>>>>>>>> > wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Created git issue[1] to track this improvement.
>>>>>>>>>>>>
>>>>>>>>>>>> 1. https://github.com/wso2/carbon-config/issues/48
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Aug 22, 2017 at 9:50 AM, Danesh Kuruppu <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Chamila,
>>>>>>>>>>>>>
>>>>>>>>>>>>> +1 for the suggested approach. So we can have both ways to set
>>>>>>>>>>>>> environment variables either from placeholder ${env:<key>} where 
>>>>>>>>>>>>> we can
>>>>>>>>>>>>> specify any key for the variable or from the new approach. For 
>>>>>>>>>>>>> the new
>>>>>>>>>>>>> approach, we need adhere to a certain format as suggested.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>> Danesh
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Mon, Aug 21, 2017 at 5:59 PM, Chamila De Alwis <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> In C5, the configuration lookup is done in the environment
>>>>>>>>>>>>>> variables, system properties, deployment.yaml file, and the 
>>>>>>>>>>>>>> value provided
>>>>>>>>>>>>>> in the configuration bean class, in that order. However, it 
>>>>>>>>>>>>>> looks like
>>>>>>>>>>>>>> environment variable lookup happens only if the particular 
>>>>>>>>>>>>>> configuration is
>>>>>>>>>>>>>> noted to do so in the deployment.yaml, specifically if the value 
>>>>>>>>>>>>>> of the
>>>>>>>>>>>>>> config is prefixed by a placeholder env:.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> gateWayEndpoint: ${env:gateWayEndpoint}
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> While this pattern may be easy to implement, it is cumbersome
>>>>>>>>>>>>>> to be followed in a Containerization approach and IMO breaks the 
>>>>>>>>>>>>>> 12Factor
>>>>>>>>>>>>>> approach to configuration. This is because of the need to edit a 
>>>>>>>>>>>>>> physical
>>>>>>>>>>>>>> file in order for the environment variables to be queried. This 
>>>>>>>>>>>>>> makes it
>>>>>>>>>>>>>> harder to maintain a single Container Image for different 
>>>>>>>>>>>>>> deployments, and
>>>>>>>>>>>>>> manipulate the Container runtimes via environment variables.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> AFAIU, this pattern emerges from the requirements in
>>>>>>>>>>>>>> SecureVault; having a ${sec:} prefix can mark the configuration 
>>>>>>>>>>>>>> value to be
>>>>>>>>>>>>>> resolved through Secure Vault resolver. However IMO this, value 
>>>>>>>>>>>>>> resolution,
>>>>>>>>>>>>>> is not the same as value lookup.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> IMO, the following should be the lookup order, without having
>>>>>>>>>>>>>> to mark a particular config in the deployment.yaml file.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 1. Environment variables: 
>>>>>>>>>>>>>> PREFIX_wso2.NAMESPACE_CONFIGKEY="value",
>>>>>>>>>>>>>> PREFIX_wso2.NAMESPACE_CONFIGPARENT_CONFIG2="value2"
>>>>>>>>>>>>>> 2. deployment.yaml:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> wso2.NAMESPACE:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> CONFIG_KEY: value
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> CONFIG_PARENT:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> CONFIG2: valu2
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 3. Default value in the code
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> This approach would be most Container friendly one as there
>>>>>>>>>>>>>> is no need to change files depending on deployment patterns, 
>>>>>>>>>>>>>> environments,
>>>>>>>>>>>>>> etc.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> WDYT?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>> Chamila de Alwis
>>>>>>>>>>>>>> Committer and PMC Member - Apache Stratos
>>>>>>>>>>>>>> Senior Software Engineer | WSO2
>>>>>>>>>>>>>> Blog: https://medium.com/@chamilad
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>>
>>>>>>>>>>>>> *Danesh Kuruppu*
>>>>>>>>>>>>> Senior Software Engineer | WSO2
>>>>>>>>>>>>>
>>>>>>>>>>>>> Email: [email protected]
>>>>>>>>>>>>> Mobile: +94 (77) 1690552 <+94%2077%20169%200552>
>>>>>>>>>>>>> Web: WSO2 Inc <https://wso2.com/signature>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>>
>>>>>>>>>>>> *Danesh Kuruppu*
>>>>>>>>>>>> Senior Software Engineer | WSO2
>>>>>>>>>>>>
>>>>>>>>>>>> Email: [email protected]
>>>>>>>>>>>> Mobile: +94 (77) 1690552 <+94%2077%20169%200552>
>>>>>>>>>>>> Web: WSO2 Inc <https://wso2.com/signature>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>>> [email protected]
>>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Architecture mailing list
>>>>>>>>>>> [email protected]
>>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Nuwan Dias
>>>>>>>>>>
>>>>>>>>>> Software Architect - WSO2, Inc. http://wso2.com
>>>>>>>>>> email : [email protected]
>>>>>>>>>> Phone : +94 777 775 729 <+94%2077%20777%205729>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Architecture mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Architecture mailing list
>>>>>>>>> [email protected]
>>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Thanks and Regards,
>>>>>>>
>>>>>>> Isuru H.
>>>>>>> +94 716 358 048 <+94%2071%20635%208048>* <http://wso2.com/>*
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Lakmal Warusawithana
>>>>>> Director - Cloud Architecture; WSO2 Inc.
>>>>>> Mobile : +94714289692 <071%20428%209692>
>>>>>> Blogs : https://medium.com/@lakwarus/
>>>>>>             http://lakmalsview.blogspot.com/
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Thanks and Regards,
>>>>>
>>>>> Isuru H.
>>>>> +94 716 358 048 <+94%2071%20635%208048>* <http://wso2.com/>*
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>>
>> --
>> Nuwan Dias
>>
>> Software Architect - WSO2, Inc. http://wso2.com
>> email : [email protected]
>> Phone : +94 777 775 729 <+94%2077%20777%205729>
>>
>
>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to