Skip to end of banner
Go to start of banner

Questions about new development environment process

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

I've started reviewing the documentation for the new development environments and have some questions. As I cannot comment on a page in github I am writing them up here.

Each question takes the form of a quote and a follow up question. I can create more explicit separation if that might help?

Questions

Every project has its own Postgres, Okapi, pre-installed core backend modules, and Stripes Platform.

How are the modules included by default in a project determined?     for example, is it based upon a particular revision of a branch of a platform?

Select the default Cluster and your Project.

Are there any projects present at the moment, I could not find any in the list for the default cluster? How is a new project created?

FOLIO modules are installed from the FOLIO Helm repository.

How does this affect the process for introducing a new module into FOLIO?

All Projects have installed FOLIO Helm repository (Catalog in Rancher) which contains all backend modules

What is meant by module in this context? Does this catalog contain one entry for each module family (e.g. mod-inventory-storage) or one per version of a module (e.g. mod-inventory-storage 19.2.1)

By default the backend modules are pulled fromDockerHub/folioci repository with a 'latest' tag.

Is this latest at the point when the project was created?

All modules can be managed in the App menu in Rancher, where new modules can be added or existing ones can be upgraded.

Is this the Apps menu item at the top of the page? And when accessed from within a project it is specific to that project?

You can build your own module, and automatically deploy it with Rancher pipeline and Helm. To get started, create your own branch

Create your own branch of what, the Helm repository or the module repository?

The linked rancher configuration includes a tag docker.dev.folio.org/mod-pubsub:folijet-latest Does this mean that every custom module version is published to an FOLIO local docker repository and needs to be uniquely named to avoid conflicts?

Go to Workloads -> Pipelines, run pipeline for that branch, and then Rancher will deploy the new version of that module

Is this specific to a project or across the whole Rancher cluster? Are these the two separate menu items Workloads and Pipelines under the Resources menu?

Module registration runs automatically after the install or upgrade procedure.

What are the install or upgrade procedures (I haven't noticed them outlined elsewhere in the document)? 

Helm gets ModuleDescriptors from the FOLIO Registry (http://folio-registry.aws.indexdata.com) -- it gets the latest master branch snapshot descriptor.

Is this the case for versions of modules built from a branch? If so, what if the branch contains updated descriptors, are those ignored?

Docker commands can also be used to do registration manually

How are these Docker commands run? Are they executed from the Rancher UI?

Creating tenant (default 'diku')

Does this mean that each project is an isolated environment and can have separate tenants within it (that each could have different modules installed)?


As a developer, how do I complete the following:

Assuming that FOLIO system is running in a Rancher project (AKA team space):

Backend

  1. How to build, deploy and register a particular branch of a backend module (e.g mod-users/feature-x ) for diku tenant?

If you need replace a running module or add new one. Go to Workloads→Pipelines, select 'mod-users' repository, call Run, select 'feature-x' branch and start building process.

  1. How to provision another tenant?

Override 'tenantId' in module deployment, for example in App menu add 'answer' to deployment properties 'postJob.tenantId' = 'mytenant'. After module deployment, helm starts a registration job with new tenant name.

  1. How to build, deploy and register a particular branch of a backend module (e.g mod-users/feature-x ) for a tenant other than diku?

Change pipeline and add new answer parameter in Deploy stage ('postJob.tenantId' = 'mytenant')

  1. How can I CRUD pipelines available via Rancher?

It is available for Rancher admin users only

  1. How can I understand what branch and build number has been deployed for a module just by looking at Rancher UI?

You have to change pipeline and add Build number to image tag. Rancher pipeline has variable  ${CICD_EXECUTION_SEQUENCE} for that.

  1. How to deploy more than on branch of given module?  (mod-users/feature-x and mod-users/feature-y)?

If you need to setup new version of a module next to existing one, you have to change pipeline source and remove deploy step and change image tag, run pipeline, go to 'App' menu and deploy built image with new name, for example 'mod-users2'. After that you should prepare new DeploymentDescriptor, ModuleDescriptor and register that module with new tenant and another module version manually.

  1. How to deploy (with I believe includes proxy registration, discovery registration and tenant enablement) a custom module version that has changes to the module descriptor?

You should prepare new descriptors and do registration manually.

  1. How to deploy coordinated breaking compatibility changes across multiple modules? For example, 1 UI, 1 BL, and 1 Storage modules should be updated together?

You have to deploy/register modules in Rancher with appropriate order or use bulk registration command from documantation.

UI

  1. How to build, deploy and register a UI bundle which includes a particular branch of a front-end module (e.g ui-users/feature-A )?

Clone 'platform-core' or 'platform-complete' repository, in 'stripes.config.js' file add/change "@folio/ui-users": "git://github.com/folio-org/ui-users.git#feature-A", build and deploy docker image into the Rancher

  1. How to run more than one bundle (e.g. one with ui-users/feature-A an one with ui-users/feature-B ) for the same tenant?

Deploy two or more UI bundle images. Do override Ingess URL for each bundle.

  1. How to run 2 bundles (e.g. one with ui-users/feature-A an one with ui-users/feature-B ) for 2 different tenants?

Deploy two or more UI bundle images. Do override Ingess URL for each bundle. Use bulk registration command from documantation to register another tenants.

System wide updates

  1. How to do a soft reset of the whole system (start from scratch without DevOps help)?

Wipe out Postgres data with script (do not delete Okapi system tables), restart Okapi, use bulk registration command

  1. How to do a hard reset of the whole system (DevOps)?

Recreate Project with Terraform

  1. Is there a way to move the whole of the system onto the latest in one step?

DevOps script 'recreate_modules.sh' in Terraform folder

  1. How can I provision previous release system? For example, Flameflower. That would be important for schema updates testing.

It is very hard to implement. Needs a lot of manual job of deployment and registration

  1. Can I create my private container registry and point helm charts to it instead of folio-ci?

That is the main approach to build and deploy UI bundle now

  1. Can I have 2 FOLIO systems within 1 Rancher project?

It is very hard to implement. Better solution is to create a new Cluster

  1. I forgot that I was not using a system for a while. Is it going to be automatically deleted after predefined expiration interval?

It can be performed by Terraform and Jankins job

  1. I stopped using the system for today. Can I suspend it until tomorrow so it doesn't burn AWS resources?

You can swith all ReplicasCount for all modules to 0



  • No labels