openshift / openshift/origin

Trigger rollouts based on diff between DC template and RC template

Open
#16,695 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

component/apps lifecycle/frozen priority/P2 sig/master
Dominant language
Go
Stars
8.7k
Forks
4.8k
Avg merge
4d 10h
Merged PRs (30d)
53

Description

Today, we trigger new config-change rollouts based on a difference between latest DC and the DC encoded in latest RC annotation. This allows for user modification of RC which are managed by deployment config controller. We should not allow modifications to those RC and follow the upstream behavior where a modification to RS causes deployment controller to reconcile and revert that change, since the deployment is the source of truth for the RS.

Since this is a big change, there are couple problems:

The DC template spec has optional 'ObjecMeta' field that we copy annotations and labels into every RC created by this DC. However, we don't copy other fields (like name or namespace or ownerRefs. This means creating a DC with these fields will cause endless chain of rollouts as those are not part of the latest RC and the diff between DC and latest RC results into a config change triggered rollout.
Fixing this is not trivial without risking a massive rollout for existing DC in large clusters. The "right" solution would be https://github.com/mfojtik/origin/commit/5d0e6ad3da which preserves the original template ObjectMeta and just add our labels/annotations.

I'm not sure about rollbacks and if they use the encoded DC as well.

Revealed here: https://github.com/openshift/origin/pull/14910

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the linked origin pull request 14910 and upstream commit 5d0e6ad3da, then trace how deployment configs, RC templates, and rollbacks use the encoded DC. Define how ObjectMeta is preserved without causing mass or endless rollouts, and clarify whether rollback behavior follows the same source of truth. Done means rollouts are triggered from the DC-versus-RC template diff while managed RC modifications are reconciled safely.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend, devops
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.