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
Metadata Update from @phsmoura: - Issue priority set to: Waiting on Assignee (was: Needs Review) - Issue tagged with: medium-trouble, ops
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
I thought you could use annotations for image changes:
https://docs.openshift.com/container-platform/4.16/openshift_images/triggering-updates-on-imagestream-changes.html
Metadata Update from @ryanlerch: - Issue assigned to ryanlerch
I have made a board to track the progress on this:
https://github.com/orgs/fedora-infra/projects/37
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).
oc delete pod
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.