Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Application deployment orchestration/workflow tool #1704

Closed
bgrant0607 opened this issue Oct 9, 2014 · 12 comments
Closed

Application deployment orchestration/workflow tool #1704

bgrant0607 opened this issue Oct 9, 2014 · 12 comments
Labels
area/app-lifecycle priority/awaiting-more-evidence Lowest priority. Possibly useful, but not yet enough support to actually get it done. sig/apps Categorizes an issue or PR as relevant to SIG Apps.

Comments

@bgrant0607
Copy link
Member

bgrant0607 commented Oct 9, 2014

Forked from #1007 and follow-on to #1702.

We ultimately want to automate most of the orchestration/workflow involved in deployment, so that most users don't need to write custom workflows or scripts. However, it's fairly complex, and we can't necessarily automate all of it in a domain-independent, use-case-independent manner.

In general, a full deployment would likely be comprised of multiple files, each containing multiple objects (see #1694). These objects may have inter-dependencies (e.g., right now services must be created before their clients are created), rolling updates require special treatment (#1353), and application-specific rollout logic may be required. Therefore, I recommend we keep this more general deployment workflow separate from the basic primitive mechanism that reconciles a single object (#1702), and ensure that the two are composable.

We should design the deployment orchestration/workflow tool/library to be:

  • configurable (e.g., inter-object ordering dependencies, group rate limits attached to label selectors),
  • selectable (just create/update/delete certain things), wrappable (so one could run another workflow around sub-workflows),
  • pluggable (so a workflow could be provided for updating microservices / replication controllers), and
  • hookable (so one could easily attach custom logic to a deployment workflow that largely works but needs to poke the application or something, or to externally control update rate/timing).

Other requirements:

  • Support for progressive deployment across multiple clusters (with or without federation)
  • Support for external (application or infrastructure) actions that aren't implemented by operators, initContainers, etc.

I haven't looked whether an off-the-shelf solution would largely work -- there certainly many workflow-y tools/systems out there.

@bgrant0607
Copy link
Member Author

@bgrant0607 bgrant0607 added the priority/awaiting-more-evidence Lowest priority. Possibly useful, but not yet enough support to actually get it done. label Dec 4, 2014
@jasonkuhrt
Copy link
Contributor

I haven't looked whether an off-the-shelf solution would largely work -- there certainly many workflow-y tools/systems out there.

Does this issue fall under the auspices of the continuous integration/delivery domain? e.g.:

At littleBits we are currently using https://circleci.com to glue a workflow that currently looks like:

local git -> Github -> CCI-Docker build ->

CCI-Docker test container -> CCI-Docker push to quay.io ->

CCI-kubekfg rolling update using image from quay.io

What's missing from above, and what we are currently working on, is how to get the basic information about:

  • App version
  • App branch
  • App environment

wired to the deploy destination:

  • What IP? FQDN? Port?
  • Annotating the image with a tag that makes image-selection in the pod.yam config clear

Surely much of this is outside the realm of kubernetes (?) yet most/all of the above outlined seems foundational and basic to the needs of many (most?) micro-architecture systems?

@bgrant0607
Copy link
Member Author

CI/CD is more ambitious than what I was considering with this issue, which is more focused on building blocks for deploying updated configurations and/or images.

Indeed, CI/CD would be outside the realm of Kubernetes. Another example of adding such functionality to Kubernetes would be OpenShift.

@jasonkuhrt
Copy link
Contributor

@bgrant0607 Yeah 100% agree. Especially after reading https://github.com/openshift/openshift-pep/blob/master/openshift-pep-013-openshift-3.md I see better now what should/could be built on top of Kubernetes.

@bgrant0607
Copy link
Member Author

Typical scenario: Rollout across several clusters.

@bgrant0607 bgrant0607 added the sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. label Feb 28, 2015
@zmerlynn
Copy link
Member

I'm trying to figure out how to change this subject line to properly reflect that it's covering deployment of Kube objects specifically. When I saw the subject I got excited because I thought there may have been discussion on a more robust tool to do cluster deployment and upgrade and replace kube-up.sh, which was an issue I was about to go write. These need disambiguation. :)

@bgrant0607 bgrant0607 changed the title Deployment orchestration/workflow tool Application deployment orchestration/workflow tool Mar 1, 2015
@bgrant0607
Copy link
Member Author

Disambiguated

@bgrant0607 bgrant0607 added team/ux and removed sig/api-machinery Categorizes an issue or PR as relevant to SIG API Machinery. labels Sep 16, 2015
@lewismarshall
Copy link

I've written a tool for CI / CD using kubectl to facilitate most of this - be happy to get feedback or maybe this could serve as a POC for kubectl features https://github.com/UKHomeOffice/kb8or

@eliaslevy
Copy link

Just a note that application deployment is usually the easy part. Client can usually retry until a service is available. A more difficult problem is application shutdown. These must usually be carefully orchestrated so as not to lose data. Data processors must be signaled to flush their data to the storage layer before they are terminate and the storage layer can't be terminated before all it's clients have finished their work.

@bgrant0607 bgrant0607 added priority/backlog Higher priority than priority/awaiting-more-evidence. and removed priority/awaiting-more-evidence Lowest priority. Possibly useful, but not yet enough support to actually get it done. labels Aug 26, 2016
@bgrant0607 bgrant0607 added sig/service-catalog Categorizes an issue or PR as relevant to SIG Service Catalog. and removed help-wanted labels Aug 30, 2016
@ash2k
Copy link
Member

ash2k commented Sep 19, 2016

https://github.com/atlassian/smith
Here is a prototype of a similar idea (if I understand this issue correctly). The idea came to me a while ago and then I found this and other similar issues. Hopefully it may be useful to someone for inspiration, etc. Any feedback is appreciated.

@bgrant0607 bgrant0607 added sig/apps Categorizes an issue or PR as relevant to SIG Apps. priority/awaiting-more-evidence Lowest priority. Possibly useful, but not yet enough support to actually get it done. triaged and removed kind/design Categorizes issue or PR as related to design. team/ux (deprecated - do not use) sig/service-catalog Categorizes an issue or PR as relevant to SIG Service Catalog. area/extensibility area/usability priority/backlog Higher priority than priority/awaiting-more-evidence. labels Mar 2, 2017
@0xmichalis
Copy link
Contributor

Closing as per discussion in #25067 (comment)

bertinatto pushed a commit to bertinatto/kubernetes that referenced this issue Sep 16, 2023
Update to new openshift/* dependencies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/app-lifecycle priority/awaiting-more-evidence Lowest priority. Possibly useful, but not yet enough support to actually get it done. sig/apps Categorizes an issue or PR as relevant to SIG Apps.
Projects
None yet
Development

No branches or pull requests

7 participants