Hey,
Is working with channels actually the best way for quick dev iterations? Doesn’t that mean that every developer requires a separate channel and that you will end up with tons of different releases?
What about having 1 channel, which is deployed by each developer separately (i.e. containing latest main release) to a fresh VM (for example), where iteration happens inside the cluster, rather then over the channels?
An example process:
- Take
Staging
channel, which contains the changes from the latest main (maybe a GitHub action creates a new release every time you merge a branch or commit to main) - Run Replicated’s 1 liner (in case of embedded cluster)
- Once everything is installed, download manifests from local cluster.
kubectl kots download $APPSLUG --decrypt-password-values --dest $TMP_DIR --namespace $NAMESPACE
- Make any changes here inside your repository.
- Patch / replace downloaded manifests with the.changes you just made.
- Deploy new changes to the cluster.
kubectl kots upload --namespace $NAMESPACE --slug $APPSLUG $TMP_DIR/$APPSLUG/ --deploy --skip-preflights
The benefits I see here are:
- Only 1 channel needed for development (stops polluting vendor portal with X dev channels)
- The iteration cycles are very quick (commands usually takes 2-5 seconds to execute each)
- No need to create releases and pollute release sequence.
Let me know your thoughts! I am keen to understand if I miss-understood the preferred DevEx when iterating over the product.