Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SPIKE] Make Epiphany upgrades selective (Kafka) #1901

Closed
sk4zuzu opened this issue Dec 9, 2020 · 6 comments
Closed

[SPIKE] Make Epiphany upgrades selective (Kafka) #1901

sk4zuzu opened this issue Dec 9, 2020 · 6 comments
Assignees
Milestone

Comments

@sk4zuzu
Copy link
Contributor

sk4zuzu commented Dec 9, 2020

Description

In this spike we want to consider an option with selective Kafka upgrades by Epicli.

It should be relatively simple (likely requires no changes in upgrade procedures themselves) to refactor Epiphany upgrades and make it possible for the user to control what components will be upgraded. That may bring value not only to users with legacy clusters but also to the process of testing.

  • It needs to be checked if Kafka supports upgrades from any version to any other version. If it requires incremental upgrades between versions, it have to be taken into account.
  • The output of this task is a PoC with selective Kafka upgrade by epicli.
  • If it's possible, design document can be created.

All the topics related to the Kafka module will be done separately and covered by #1976 task and tasks that will be created as a result of #1976.

Additional information

The original task contained additional options related to Kafka module, but to avoid dependencies and clarify a single topic per task, these options are not covered here:

2. In the near future we will start introducing modules that will replace classic Epiphany components (like Kafka clusters etc). If we'd do that soon enough then the question would be if there is a possiblity to reuse modules with exising legacy on-prem clusters and what needs to be done to achieve that.

3. Support both 1. and 2.

We'd like to understand how much work do these options require to be implemented.

We want a design-doc out of his research. 
@sk4zuzu
Copy link
Contributor Author

sk4zuzu commented Jan 19, 2021

To clarify this one is about preparing some Kafka solution for very old releases of Epiphany :). For customers that do not want or it's not easy for them to upgrade to newer versions.

@DaOsie
Copy link

DaOsie commented Jan 20, 2021

In my opinion there are 3 separate spikes "secretly" coded in the description:

  • checking whether selective upgrades of components are possible in the legacy versions of epiphany
  • checking whether modules will be able to be used in previous epiphany versions that do not use modules yet
  • find the best way to introduce kafka for older releases of Epiphany

At first sight, they seem to be connected with each other, however I think they aim for 3 different things. Shouldn't we just check the easiest way for introducing kafka on legacy clusters?

@mkyc
Copy link
Contributor

mkyc commented Jan 26, 2021

This one probably depends on #1976

@mkyc mkyc modified the milestones: S20210128, S20210211 Jan 28, 2021
@atsikham
Copy link
Contributor

atsikham commented Feb 2, 2021

As I described in this comment, we still have to investigate a lot related to the Kafka module. All things related to modules including comparison with Kafka component of epicli will be done in the scope of #1976 and other tasks that will be created after #1976 is done.

This task is only about selective upgrades for epicli, Kafka component. At the moment we upgrade all components by a single run even not asking (specifying) target components. It also needs to be checked if Kafka supports upgrades from any version to any other version. If it requires incremental upgrades between versions, it have to be taken into account.

@ar3ndt ar3ndt self-assigned this Feb 4, 2021
@mkyc mkyc modified the milestones: S20210211, S20210225 Feb 12, 2021
@mkyc mkyc modified the milestones: S20210225, S20210311 Feb 26, 2021
ar3ndt added a commit that referenced this issue Mar 2, 2021
@przemyslavic przemyslavic self-assigned this Mar 4, 2021
@przemyslavic
Copy link
Collaborator

przemyslavic commented Mar 5, 2021

@ar3ndt We urgently need these fixes:

  1. The when conditions are invalid. Regardless of what components we select for the upgrade, all of them will be upgraded, because the conditions are always resolved as true.

Instead of the condition when: ('"kafka" in upgrade_components') or upgrade_components|length == 0
the condition when: "'kafka' in upgrade_components or upgrade_components|length == 0" seems to work fine.
The first condition always returns true (thanks @to-bar for debugging this together).

  1. It looks like the condition is missing here at all which runs the kubernetes role even though I only set the kafka to be updated.
  2. It would be nice to have the values sorted alphabetically here and separated additionally by a space for readability.
    image.png

Moving this task back to TODO.

@przemyslavic
Copy link
Collaborator

1, 2, 3 Fixed.
User can run the upgrade command with an optional argument --upgrade-components providing the list of components to be updated.
Running the command without this argument will update all components.

@mkyc mkyc closed this as completed Mar 9, 2021
sbbroot pushed a commit to sbbroot/epiphany that referenced this issue Aug 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants