Skip to content
This repository has been archived by the owner on Jun 29, 2022. It is now read-only.

Allow Lokomotive to be updated from a manifest and/or an artifact #1528

Open
iaguis opened this issue Jul 15, 2021 · 4 comments
Open

Allow Lokomotive to be updated from a manifest and/or an artifact #1528

iaguis opened this issue Jul 15, 2021 · 4 comments

Comments

@iaguis
Copy link
Contributor

iaguis commented Jul 15, 2021

To allow Lokomotive Component updates to be controlled by Nebraska we need to make Lokomotive releases be defined by a manifest and some kind of artifact.

The goal for this issue is to create an initial design and PoC that allows updates to be done from a release manifest and an optionally some kind of artifact.

For example, the manifest could specify Helm charts and versions of those charts and Lokomotive could have code to read that manifest, fetch Helm charts, and apply them. In this case there’s no artifact needed but we could also ship an artifact (linked in the manifest) containing Helm charts instead of having Lokomotive fetch them directly from a manifest.

For now we’ll just focus on Control Plane and Lokomotive Component updates (both using Helm).

Since this is a PoC we don’t need to care about getting the perfect design or backwards compatibility. Also, handling updated parameters for charts is out of scope of this issue.

@surajssd
Copy link
Member

surajssd commented Aug 6, 2021

I have pushed my changes to the branch surajssd/component-auto-update.

To try this out perform the following steps:

  • Install a Lokomotive cluster without any components.
  • Install flux binary locally on your machine.
  • Now install flux's components on the Lokomotive cluster by running the following commands:
kubectl create ns flux-system
kubectl -n flux-system create rolebinding privileged-psp --clusterrole=privileged-psp --group=system:serviceaccounts:flux-system
flux install --version=latest --namespace=flux-system --components=source-controller,helm-controller
  • Now checkout the branch surajssd/component-auto-update and run make install to build the binary.

  • Create the usual component.lokocfg file with the usual configs.

  • As of now you can install the following components:

    • cert-manager
    • contour
    • external-dns
    • httpbin
    • metallb
    • openebs-operator
    • openebs-storage-class
  • The installation command is lokoctl experimental components apply <component name> or to apply all components at once it is lokoctl experimental components apply.

@iaguis iaguis moved this from To do to In progress in cloud native updates PoC Aug 11, 2021
@iaguis iaguis removed the proposed/next-sprint Issues proposed for next sprint label Aug 13, 2021
@surajssd
Copy link
Member

@iaguis should we work on merging the existing code to some branch? Like a poc-something ? Then we can consider this issue completed?

@iaguis
Copy link
Contributor Author

iaguis commented Aug 24, 2021

Yes 👍

@surajssd
Copy link
Member

Created a PR as discussed so that you can have a look!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
Development

Successfully merging a pull request may close this issue.

2 participants