<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:21:52 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[FOLIO-2601] PoC for hosted development environment for FOLIO teams</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-2601</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Provide hosted, FOLIO sandboxes for FOLIO development teams.   The idea is similar to FOLIO developer vagrant environments except hosted on AWS.  &lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Each team would be provided with capped AWS compute resources in a dedicated namespace on a Kubernetes cluster managed by Rancher.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Each team would be provided with a base set of FOLIO components and modules in each namespace that will be deployed via Jenkins and/or existing FOLIO Ansible playbooks that can be refreshed on-demand.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Each team would be able to build and deploy feature branches and additional modules to their namespace utilizing Rancher pipelines.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Each team will have the ability to configure their own tenant environments in their namespace.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Each team will have the ability to managed containers and access to the container logs and metrics in each namespace through the Rancher UI.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Each team will be provided with access to a AWS S3 bucket that can be used for additional data storage and simple web services like hosting Stripes bundles.  By default,  each team will have write access to their bucket.   Read-only access will be provided publicly so that data can be shared to non-team members.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="81627">FOLIO-2601</key>
            <summary>PoC for hosted development environment for FOLIO teams</summary>
                <type id="10000" iconUrl="https://folio-org.atlassian.net/images/icons/issuetypes/epic.svg">Epic</type>
                                            <priority id="10001" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p2.svg">P2</priority>
                        <status id="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10003">Done</resolution>
                                                        <assignee accountid="5f9abc1eb45b2e007453f423">John Malconian</assignee>
                                                                <reporter accountid="5f9abc1eb45b2e007453f423">John Malconian</reporter>
                                    <labels>
                    </labels>
                <created>Fri, 15 May 2020 12:34:38 +0000</created>
                <updated>Wed, 26 Aug 2020 13:13:06 +0000</updated>
                            <resolved>Wed, 26 Aug 2020 13:13:06 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>7</watches>
                                                                <comments>
                                                            <comment id="198664" author="5f9abc1eb45b2e007453f423" created="Fri, 15 May 2020 12:58:18 +0000"  >&lt;p&gt;Considerations: &lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Rancher provides Github oauth integration.   Access to the Rancher UI can therefore based on existing github/folio-org teams.  Rancher supports the notion of &quot;projects&quot; which includes specific K8s namespaces.    A Rancher project and associated namespace will be provisioned for each team.     CPU, memory, storage and other resources can be reserved and capped on a per project basis.   Access to container metrics and pipelines can also be specified on a per project basis as well.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Rancher pipelines can be stored as configuration files alongside project source code in Github similar existing Jenkins pipelines or they can be created and managed via the Rancher UI.    K8s deployments templates can also be stored in Github that are used by Rancher pipelines to deploy FOLIO components into the K8s namespace.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Postgresql, Kafka, and Okapi  containers will be pre-deployed to each team namespace.  Ingress to the Okapi instance will also be provided.   Beyond this,  we need to determine how much of the  FOLIO stack will be automatically deployed into each namespace and how that will be accomplished.   Need to also determine how team environments are cleaned up.&lt;/li&gt;
&lt;/ul&gt;


&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Documentation will need to be provided to teams on how to use their environments.&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="198666" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 18 May 2020 13:41:55 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5cffed1a5d548b0c51d6b19b&quot; class=&quot;user-hover&quot; rel=&quot;5cffed1a5d548b0c51d6b19b&quot; data-account-id=&quot;5cffed1a5d548b0c51d6b19b&quot; accountid=&quot;5cffed1a5d548b0c51d6b19b&quot; rel=&quot;noreferrer&quot;&gt;Anton Emelianov&lt;/a&gt; we are thinking about setting up the PoC rancher project for a team env based on &quot;platform-core&quot; rather than &quot;platform-complete&quot;. Did you guys consider which team would be testing the setup? We want to make sure they are OK with platform-core modules only. Thanks.&lt;/p&gt;</comment>
                                                            <comment id="198669" author="6291011f9c617b006a6f8d98" created="Fri, 22 May 2020 17:37:39 +0000"  >&lt;p&gt;This is a good layout and methodology, essentially what we are doing at Tamu for some aspects. I do have a few suggestions:&lt;/p&gt;

&lt;p&gt;It is best to set up the cloud-provider for storage classes before you create the clusters in Rancher. You can do it after the fact, but it is much better and straight forward to pass in that config at cluster creation time.&lt;/p&gt;

&lt;p&gt;The same can be said for Project and/or namespace resource limits. It is a little cumbersome to add those to namespaces after the fact.&lt;/p&gt;

&lt;p&gt;I have not determined what a bare minimum amount of resources are to run Folio from a Project/namespace perspective. I have set up container resource reservations and limits for each Folio back-end module - however mine are not very conservative.&lt;br/&gt;
For example: With memory reservations, I am using the recommended minimum suggested that is needed to run each module provided by the launch/module descriptor. For maximums, that has been trial and error to determine what will keep a module running during some process (like loading data or doing heavy queries).&lt;/p&gt;

&lt;p&gt;There are however no cpu minimums that have been calculated. For now I have picked some arbitrarily low milli cpu amount for the Workload (like 10) and some arbitrarily high milli cpu for a limitation (like 500 or more).&lt;/p&gt;

&lt;p&gt;I do have monitoring and metrics set up for the cluster and Projects, so I could get a good minimum for each module, I just have not done so yet.&lt;/p&gt;</comment>
                                                            <comment id="198672" author="6291011f9c617b006a6f8d98" created="Fri, 22 May 2020 17:42:50 +0000"  >&lt;p&gt;A head&apos;s up I forgot to mention: Rancher just launched a certification program that is free right now. It is a great training tool to become more familiarized with Rancher and its workings: &lt;a href=&quot;https://academy.rancher.com/courses/course-v1:RANCHER+K101+2019/about&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://academy.rancher.com/courses/course-v1:RANCHER+K101+2019/about&lt;/a&gt;&lt;/p&gt;</comment>
                                                            <comment id="198674" author="63e2a2771b13d42998e4e706" created="Tue, 2 Jun 2020 16:25:48 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Ab8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; class=&quot;user-hover&quot; rel=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; data-account-id=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; accountid=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; rel=&quot;noreferrer&quot;&gt;Jakub Skoczen&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5cffed1a5d548b0c51d6b19b&quot; class=&quot;user-hover&quot; rel=&quot;5cffed1a5d548b0c51d6b19b&quot; data-account-id=&quot;5cffed1a5d548b0c51d6b19b&quot; accountid=&quot;5cffed1a5d548b0c51d6b19b&quot; rel=&quot;noreferrer&quot;&gt;Anton Emelianov&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Did you guys consider which team would be testing the setup? We want to make sure they are OK with platform-core modules only.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;It was my understanding that the pilot team for this is going to be FoliJet, that makes it unlikely that the core rather than complete is appropriate as their primary area of interest is data import.&lt;/p&gt;</comment>
                                                            <comment id="198676" author="5af5e627525ba96b58654f12" created="Tue, 2 Jun 2020 18:30:03 +0000"  >&lt;p&gt;Hi &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=63e2a2771b13d42998e4e706&quot; class=&quot;user-hover&quot; rel=&quot;63e2a2771b13d42998e4e706&quot; data-account-id=&quot;63e2a2771b13d42998e4e706&quot; accountid=&quot;63e2a2771b13d42998e4e706&quot; rel=&quot;noreferrer&quot;&gt;Marc Johnson&lt;/a&gt; If it&apos;s Folijet, only 1 of our modules is platform-core, though of course we interact lots with UIIN and MODINV. All the other data import apps (plus related ones like Export and quickMARC) are in platform-complete. Please let me know if that&apos;s an issue.&lt;/p&gt;</comment>
                                                            <comment id="198679" author="5f9abc1eb45b2e007453f423" created="Tue, 2 Jun 2020 19:44:14 +0000"  >&lt;p&gt;yeah,  initially we&apos;ll be looking at deployment of modules based on platform-core only.   So if Folijet is not the appropriate team, perhaps core-functional is.    We&apos;ll discuss on our next status call. &lt;/p&gt;</comment>
                                                            <comment id="198682" author="5af5e627525ba96b58654f12" created="Tue, 2 Jun 2020 20:57:29 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5f9abc1eb45b2e007453f423&quot; class=&quot;user-hover&quot; rel=&quot;5f9abc1eb45b2e007453f423&quot; data-account-id=&quot;5f9abc1eb45b2e007453f423&quot; accountid=&quot;5f9abc1eb45b2e007453f423&quot; rel=&quot;noreferrer&quot;&gt;John Malconian&lt;/a&gt; Hmm, that definitely limits the scope of possible teams. Not sure there would be any besides Core-fxn that would qualify.&lt;/p&gt;</comment>
                                                            <comment id="198684" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Wed, 3 Jun 2020 13:19:58 +0000"  >&lt;p&gt;This is likley going to be implemented in two phases:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Phase 1 setting up infrastrucutre for the team envs and preparing platform-core for deployment into the dedicated namespaces &amp;#8211; tickets have been created for this phase and linked to this Epic&lt;/li&gt;
	&lt;li&gt;Phase 2 tuning for deployment of feature branches &amp;#8211; tickets are not yet created for this phase, &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5f9abc1eb45b2e007453f423&quot; class=&quot;user-hover&quot; rel=&quot;5f9abc1eb45b2e007453f423&quot; data-account-id=&quot;5f9abc1eb45b2e007453f423&quot; accountid=&quot;5f9abc1eb45b2e007453f423&quot; rel=&quot;noreferrer&quot;&gt;John Malconian&lt;/a&gt; will be defining them in Sprint 90&lt;/li&gt;
&lt;/ul&gt;
</comment>
                                                            <comment id="198687" author="5ced27478b03050f27825a93" created="Thu, 18 Jun 2020 18:33:54 +0000"  >&lt;p&gt;For budgeting/billing purposes, can the resources associated with these hosted development environments for teams be assigned AWS tags?  The FOLIO steering group would like to separate out the charges for these environments.&lt;/p&gt;</comment>
                                                            <comment id="198689" author="5ced27478b03050f27825a93" created="Mon, 29 Jun 2020 21:30:55 +0000"  >&lt;p&gt;Hey, &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Ab8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; class=&quot;user-hover&quot; rel=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; data-account-id=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; accountid=&quot;557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d&quot; rel=&quot;noreferrer&quot;&gt;Jakub Skoczen&lt;/a&gt; and &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5f9abc1eb45b2e007453f423&quot; class=&quot;user-hover&quot; rel=&quot;5f9abc1eb45b2e007453f423&quot; data-account-id=&quot;5f9abc1eb45b2e007453f423&quot; accountid=&quot;5f9abc1eb45b2e007453f423&quot; rel=&quot;noreferrer&quot;&gt;John Malconian&lt;/a&gt;: Just checking on the last comment here to see if the system setup will allow for an accounting of the costs of the hosted development environments as a separate item (e.g. with AWS tags?&#8212;I think I can create budget reports based on tags.)&lt;/p&gt;</comment>
                                                            <comment id="198691" author="5f9abc1eb45b2e007453f423" created="Tue, 30 Jun 2020 16:12:31 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5ced27478b03050f27825a93&quot; class=&quot;user-hover&quot; rel=&quot;5ced27478b03050f27825a93&quot; data-account-id=&quot;5ced27478b03050f27825a93&quot; accountid=&quot;5ced27478b03050f27825a93&quot; rel=&quot;noreferrer&quot;&gt;Peter Murray&lt;/a&gt; Yes,  eksctl,  the tool used to create AWS ec2 nodegroups for kubernetes,  does support the use of tags.  However,  Since nodegroups are mostly immutable, I&apos;d have to create two new nodegroups with the tags to replace the existing nodegroups which is a bit of pain.   I can do this migration but not right away.     If it is at all helpful,  I can tell you that all ec2 resources running in us-east-2 (ohio) and us-west-2 (oregon) are used almost exclusively for this project.  &lt;/p&gt;</comment>
                                                            <comment id="198693" author="5ced27478b03050f27825a93" created="Tue, 30 Jun 2020 17:03:23 +0000"  >&lt;p&gt;Sorry, John&#8212;I wasn&apos;t clear in my initial question.  The request is for the hosted development environments (the environments for the development teams) and not the hosted reference environments that the SIGs use.  Are they all being mixed into the same k8 cluster?&lt;/p&gt;</comment>
                                                            <comment id="198695" author="5f9abc1eb45b2e007453f423" created="Wed, 1 Jul 2020 15:38:29 +0000"  >&lt;p&gt;Not at this time,  &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5ced27478b03050f27825a93&quot; class=&quot;user-hover&quot; rel=&quot;5ced27478b03050f27825a93&quot; data-account-id=&quot;5ced27478b03050f27825a93&quot; accountid=&quot;5ced27478b03050f27825a93&quot; rel=&quot;noreferrer&quot;&gt;Peter Murray&lt;/a&gt;.   All resources in us-east-2 and us-west-2 are specifically utilized for the hosted dev environment.  &lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="79678">FOLIO-2675</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81708">FOLIO-2669</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="81832">FOLIO-2677</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10057" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Development Team</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10155"><![CDATA[FOLIO DevOps]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10011" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Hosted development environment for FOLIO teams</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10012" key="com.pyxis.greenhopper.jira:gh-epic-status">
                        <customfieldname>Epic Status</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10016"><![CDATA[To Do]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i00xpm:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1878">DevOps: sprint 90</customfieldvalue>
    <customfieldvalue id="11">DevOps: Sprint 95</customfieldvalue>
    <customfieldvalue id="1948">DevOps: Sprint 96</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10096" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date (migrated)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 25 May 2020 00:00:00 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 18 May 2020 13:41:55 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>