<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Thu Feb 08 23:17:26 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-1996] SPIKE: dynamic YAML service deployments (K8s)</title>
                <link>https://folio-org.atlassian.net/browse/FOLIO-1996</link>
                <project id="10290" key="FOLIO">FOLIO</project>
                    <description>&lt;p&gt;Investigate a way to generate YAML service deployment dynamically based on Okapi-provided dependency resolution. &lt;/p&gt;

&lt;p&gt;So far we have discussed the following approach:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;add Kubernets deployment mode to Okapi (in addition to the existing Docker and exec modes). In this mode Okapi would call K8s API (similarly how it calls the Docker API) when &lt;tt&gt;install&lt;/tt&gt; with deploy=true is called (see 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;OKAPI-736&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/OKAPI-736&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;PoC: Deploy through the Kubernetes API&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            OKAPI-736
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-complete jira-macro-single-issue-export-pdf&quot;&gt;Open&lt;/span&gt;
            &lt;/span&gt;
)&lt;/li&gt;
	&lt;li&gt;the YAML deployment would be generated directly within Okapi based on a template shipped with Okapi. In order to allow customisability of deployment, a custom template could be provided in the launchDescriptor. Okapi would &quot;inject&quot; template variables (like module name, version, type, etc) similarly to how Helm works.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;There could be also other approaches which are more elegant. We should investigate similar solution in the Kube ecosystem and propose a solution.&lt;/p&gt;</description>
                <environment></environment>
        <key id="81221">FOLIO-1996</key>
            <summary>SPIKE: dynamic YAML service deployments (K8s)</summary>
                <type id="10003" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10318?size=medium">Task</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</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="5c706fbb47a54a6728e59df2">Wayne Schneider</assignee>
                                                                <reporter accountid="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d">Jakub Skoczen</reporter>
                                    <labels>
                            <label>platform-backlog</label>
                    </labels>
                <created>Thu, 2 May 2019 13:29:05 +0000</created>
                <updated>Wed, 3 Jun 2020 16:39:46 +0000</updated>
                            <resolved>Tue, 25 Jun 2019 13:54:59 +0000</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                <comments>
                                                            <comment id="194100" author="5c706fbb47a54a6728e59df2" created="Wed, 15 May 2019 14:59:45 +0000"  >&lt;p&gt;A possible approach: Okapi could generate pod configuration from a template and post to Kubernetes. Using the metadata attached to the pod, we could create deployment configurations and service definitions that operate by matching the label metadata &amp;#8211; that may be something that needs to be separate from Okapi?&lt;/p&gt;

&lt;p&gt;One issue with this approach is that Okapi needs to communicate with a &lt;em&gt;service&lt;/em&gt;, not a pod, possibly using DNS resolution (see 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;OKAPI-729&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/OKAPI-729&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;Discovery: url pattern (DNS for service)&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            OKAPI-729
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-complete jira-macro-single-issue-export-pdf&quot;&gt;Open&lt;/span&gt;
            &lt;/span&gt;
), to allow the operator to scale and upgrade the service as needed. Perhaps Okapi should create the entire service and deployment configuration (including the pod )from a template?&lt;/p&gt;</comment>
                                                            <comment id="194101" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Thu, 16 May 2019 09:37:58 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5c706fbb47a54a6728e59df2&quot; class=&quot;user-hover&quot; rel=&quot;5c706fbb47a54a6728e59df2&quot; data-account-id=&quot;5c706fbb47a54a6728e59df2&quot; accountid=&quot;5c706fbb47a54a6728e59df2&quot; rel=&quot;noreferrer&quot;&gt;Wayne Schneider&lt;/a&gt; Yep &amp;#8211; i think the above approach is worth considering. This would be similar to how Helm works. Helm introduces templating to static K8s YAML files. Okapi&apos;s role would be similar &amp;#8211; we can either use the templating approach (like Helm) and pass the initial Deployment controller to Okapi and let Okapi &quot;fill out&quot; the blanks OR try to rely on selectors/labels. I still prefer the selectors/labels matching approach IFF it is flexible enough.&lt;/p&gt;</comment>
                                                            <comment id="194102" author="557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d" created="Mon, 17 Jun 2019 17:52:38 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=6291011f9c617b006a6f8d98&quot; class=&quot;user-hover&quot; rel=&quot;6291011f9c617b006a6f8d98&quot; data-account-id=&quot;6291011f9c617b006a6f8d98&quot; accountid=&quot;6291011f9c617b006a6f8d98&quot; rel=&quot;noreferrer&quot;&gt;jroot&lt;/a&gt; &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=5c706fbb47a54a6728e59df2&quot; class=&quot;user-hover&quot; rel=&quot;5c706fbb47a54a6728e59df2&quot; data-account-id=&quot;5c706fbb47a54a6728e59df2&quot; accountid=&quot;5c706fbb47a54a6728e59df2&quot; rel=&quot;noreferrer&quot;&gt;Wayne Schneider&lt;/a&gt; We discussed that Okapi producing K8s YAML that can subsequently be consumed by whatever orchestration tool is a more flexible approach (from the DevOps point of view) than calling the K8s API directly (experimented with through 
    &lt;span class=&quot;jira-issue-macro&quot; data-jira-key=&quot;OKAPI-736&quot; &gt;
                &lt;a href=&quot;https://folio-org.atlassian.net/browse/OKAPI-736&quot; class=&quot;jira-issue-macro-key issue-link&quot;  title=&quot;PoC: Deploy through the Kubernetes API&quot; &gt;
            &lt;img class=&quot;icon&quot; src=&quot;https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium&quot; /&gt;
            OKAPI-736
        &lt;/a&gt;
                                                    &lt;span class=&quot;aui-lozenge aui-lozenge-subtle aui-lozenge-complete jira-macro-single-issue-export-pdf&quot;&gt;Open&lt;/span&gt;
            &lt;/span&gt;
)&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="81340">FOLIO-2117</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="13064">UXPROD-1823</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="52848">OKAPI-736</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="10144"><![CDATA[Core: Platform]]></customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10044" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 15 May 2019 14:59:45 +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>