Skip to content
This repository has been archived by the owner on Apr 30, 2020. It is now read-only.

Document strategy for operator-based upgrades #39

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

JohnStrunk
Copy link
Member

@JohnStrunk JohnStrunk commented Aug 3, 2018

Describe what this PR does
This document describes how we plan to handle upgrades of the operator and lower-level components in a way that is compatible with OLM

Is there anything that requires special attention?
no

Related issues:
Fixes #38

@JohnStrunk JohnStrunk changed the title [WIP] Document strategy for operator-based upgrades Document strategy for operator-based upgrades Aug 3, 2018
updates, however, must be mindful of version compatibility between the
components. Particularly when upgrading across a series of releases, it may be
necessary to take intermediate upgrade steps to ensure client (CSI driver)
versions remain compatible with server (Gluster container) versions.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The client update has some limitation. The disturbance of fuse mounts could be an issue.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting point; thanks for bringing that up.
I suspect we'll see transport endpoint not connected when the CSI pod gets restarted on a node. I wonder if this means we need to drain nodes before upgrading the clients (and the implications for doing that in a rolling fashion w/ a DaemonSet).

# The components that go into the GCS "system"
components:
- name: gluster-csi-file
# Template is probably a Deployment or DaemonSet, etc.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what we need is below
Object/object group : ds or dc or statefulset
Object name: glusterfs
upgrade/desired Version: GCS 2.0

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think I understand your comment. My intent is to have the yaml for the kube object embedded here (DaemonSet, Deployment, etc). That would include everything such as the image:tag and resource limits. It would also probably have some sort of templatization like jinja2. The components list would exist for each "version" of GCS, and the operator would always move to the highest (my semver rules) version in the file.

I'm not following the "upgrade/desired" part of your comment.

@JohnStrunk JohnStrunk self-assigned this Sep 17, 2018
@JohnStrunk JohnStrunk added the do-not-merge This item should not be merged label Dec 15, 2018
@JohnStrunk
Copy link
Member Author

I need to rework this design. It does not account for changes to reconcile logic between versions.

Signed-off-by: John Strunk <jstrunk@redhat.com>
Signed-off-by: John Strunk <jstrunk@redhat.com>
@JohnStrunk
Copy link
Member Author

@sac @sabose I brought the upgrade document up-to-date w/ today's discussion and added a doc for modularizing the reconcile actions.

@JohnStrunk JohnStrunk removed the do-not-merge This item should not be merged label Dec 19, 2018
@JohnStrunk JohnStrunk mentioned this pull request Dec 22, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants