#12142 Move OpenShift apps from deploymentconfig to deployment
Opened 5 months ago by kevin. Modified 23 days ago

OpenShift is going to be dropping deploymentconfig at some point in favor of the vanilla k8s deployment

So, we need to migrate our apps away from deploymentconfig and to deployment.

List of apps using deploymentconfig:

./roles/openshift-apps/asknot/files/deploymentconfig.yml
./roles/openshift-apps/blockerbugs/templates/deploymentconfig.yml
./roles/openshift-apps/bodhi/templates/deploymentconfig.yml
./roles/openshift-apps/bugzilla2fedmsg/templates/deploymentconfig.yml
./roles/openshift-apps/compose-tracker/templates/deploymentconfig.yml
./roles/openshift-apps/coreos-cincinnati/templates/deploymentconfig.yml
./roles/openshift-apps/coreos-koji-tagger/templates/deploymentconfig.yml
./roles/openshift-apps/coreos-ostree-importer/templates/deploymentconfig.yml
./roles/openshift-apps/datagrepper/templates/deploymentconfig.yml
./roles/openshift-apps/datanommer/templates/deploymentconfig.yml
./roles/openshift-apps/discourse2fedmsg/templates/deploymentconfig.yml
./roles/openshift-apps/elections/files/deploymentconfig.yml
./roles/openshift-apps/fasjson/templates/deploymentconfig.yml
./roles/openshift-apps/fedocal/files/deploymentconfig.yml
./roles/openshift-apps/fedora-ostree-pruner/templates/deploymentconfig.yml
./roles/openshift-apps/fedora-packages-static/templates/deploymentconfig.yml
./roles/openshift-apps/flask-oidc-dev/templates/deploymentconfig.yml
./roles/openshift-apps/flatpak-indexer/templates/deploymentconfig.yml
./roles/openshift-apps/greenwave/templates/deploymentconfig.yml
./roles/openshift-apps/ipsilon-website/templates/deploymentconfig.yml
./roles/openshift-apps/kerneltest/files/deploymentconfig.yml
./roles/openshift-apps/mdapi/files/deploymentconfig.yml
./roles/openshift-apps/messaging-bridges/files/deploymentconfig.yml
./roles/openshift-apps/monitor-dashboard/templates/deploymentconfig.yml
./roles/openshift-apps/monitor-gating/templates/deploymentconfig.yml
./roles/openshift-apps/noggin/templates/deploymentconfig.yml
./roles/openshift-apps/oraculum/templates/deploymentconfig.yml
./roles/openshift-apps/release-monitoring/files/deploymentconfig.yml
./roles/openshift-apps/testdays/templates/deploymentconfig.yml
./roles/openshift-apps/the-new-hotness/templates/deploymentconfig.yml
./roles/openshift-apps/toddlers/templates/deploymentconfig.yml
./roles/openshift-apps/transtats/files/deploymentconfig.yml
./roles/openshift-apps/waiverdb/templates/deploymentconfig.yml
./roles/openshift-apps/zezere/templates/deploymentconfig.yml
./roles/openshift-apps/fmn/templates/deploymentconfig.yml
./roles/openshift-apps/badges/templates/deploymentconfig.yml
./roles/openshift-apps/easyfix/templates/deploymentconfig.yml
./roles/openshift-apps/maubot/files/deploymentconfig.yml
./roles/openshift-apps/mirrormanager/templates/deploymentconfig.yml
./roles/openshift-apps/kanban/templates/deploymentconfig.yml
./roles/openshift-apps/poddlers/templates/deploymentconfig.yml
./roles/openshift-apps/webhook2fedmsg/templates/deploymentconfig.yml

We don't have to do them all at once, but we should try and make steady progress on them.

A few other groups should be involved: QE, CoreOS, etc.


Metadata Update from @phsmoura:
- Issue tagged with: medium-gain

5 months ago

Metadata Update from @phsmoura:
- Issue priority set to: Waiting on Assignee (was: Needs Review)
- Issue tagged with: medium-trouble, ops

5 months ago

Here's some documentation:
- https://access.redhat.com/articles/7041372
- https://docs.openshift.com/container-platform/4.13/applications/deployments/what-deployments-are.html#deployments-comparing-deploymentconfigs_what-deployments-are

Reading those I see two possible migration issues:

  • deployments don't support more triggers than the ConfigChange. We usually have triggers on ImageChange: when a new image is built, a rollout is triggered. But this use case seems so natural that I would be surprised if there was no way to do it without DeploymentConfigs.

  • deployments don't support lifecycle hooks. We've used those in a few apps to upgrade the database if necessary during an update. What's the recommended way to do that without DeploymentConfigs?

Oh, apparently the upgrade can be done with Deployments only. Maybe they were talking about other lifecycle hooks? Nevermind.

Well, it doesn't look like it's in the k8s object actually. We'll have to test this.

I've already migrated Koschei, see commit 99a62cc.
Triggers on image change are not supported and I had to replace them with explicit deployment rollouts in manual playbooks, see e9993b5

Metadata Update from @ryanlerch:
- Issue assigned to ryanlerch

3 months ago

Thank you for putting this together @ryanlerch!

Hey @ryanlerch, any updates on this work? Thanks!

@jskladan is this the ticket you were talking about picking up?

@smilner yes!

@ryanlerch I can't edit the github board, but I've moved all the FedoraQA stuff over to deployment:
* blockerbugs
* kanban
* oraculum
* testdays

Could you mark it as done, please?

Only thing I'm not able to do is removing the old DC pods in production. I've worked around this by scaling all of them down to 0 replicas, but the "delete DeploymentConfig" button is greyed-out and the oc delete pod command also says I can't (works fine on stg).

Anyway, since I now (at least remotely) understand what I'm doing with the deploymentconfig -> deployment changes, I'm happy to help with some of the rest of the stuff too.

Log in to comment on this ticket.

Metadata
Boards 1
ops Status: Backlog