)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"84b14379277f0758ba46c08d8321ee02e7039a6e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"related blueprint kolla-kubernetes"},{"line_number":10,"context_line":"Co-Authored-By: Michal Rostecki \u003cmrostecki@mirantis.com\u003e"},{"line_number":11,"context_line":"Co-Authored-By: Martin Andre \u003cmandre@redhat.com\u003e"},{"line_number":12,"context_line":"Co-Authored-By: Jeff Peeler \u003cjpeeler@redhat.com\u003e"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ib1023787fca096d22a21c583c1ef647ccf925f00"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a122d0e_fcc14fe5","line":11,"updated":"2016-04-27 15:33:35.000000000","message":"My address is m.andre@redhat.com","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"}],"specs/kubernetes-deployment.rst":[{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"84b14379277f0758ba46c08d8321ee02e7039a6e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Kubernetes was evaluated by the Kolla team in the first two months of the"},{"line_number":8,"context_line":"project and it was found to be problematic because it did not support net\u003dhost,"},{"line_number":9,"context_line":"pid\u003dhost, and --privileged features in docker.  Since then, it has developed"},{"line_number":10,"context_line":"these features. (https://github.com/kubernetes/kubernetes/releases/tag/v1.2.0)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Though Kolla deploys the containers using Ansible, we can leverage the current"},{"line_number":13,"context_line":"work by using the config generation and injecting the configs into"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_5cb3239a","line":10,"updated":"2016-04-27 15:33:35.000000000","message":"Can you make it a footnote?","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Kubernetes was evaluated by the Kolla team in the first two months of the"},{"line_number":8,"context_line":"project and it was found to be problematic because it did not support net\u003dhost,"},{"line_number":9,"context_line":"pid\u003dhost, and --privileged features in docker.  Since then, it has developed"},{"line_number":10,"context_line":"these features. (https://github.com/kubernetes/kubernetes/releases/tag/v1.2.0)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Though Kolla deploys the containers using Ansible, we can leverage the current"},{"line_number":13,"context_line":"work by using the config generation and injecting the configs into"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_aaabc973","line":10,"in_reply_to":"1a122d0e_5cb3239a","updated":"2016-04-29 15:43:37.000000000","message":"Done","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":9,"context_line":"pid\u003dhost, and --privileged features in docker.  Since then, it has developed"},{"line_number":10,"context_line":"these features. (https://github.com/kubernetes/kubernetes/releases/tag/v1.2.0)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Though Kolla deploys the containers using Ansible, we can leverage the current"},{"line_number":13,"context_line":"work by using the config generation and injecting the configs into"},{"line_number":14,"context_line":"Kubernetes to configure the services. Therefore, there will be community overlap"},{"line_number":15,"context_line":"between kolla-ansible, kolla, and kolla-kubernetes even though they will in"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_08ec6991","line":12,"updated":"2016-05-01 16:59:45.000000000","message":"instead of leverage, use the words \"reuse the Kolla communities experience and existing code base\"","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Though Kolla deploys the containers using Ansible, we can leverage the current"},{"line_number":13,"context_line":"work by using the config generation and injecting the configs into"},{"line_number":14,"context_line":"Kubernetes to configure the services. Therefore, there will be community overlap"},{"line_number":15,"context_line":"between kolla-ansible, kolla, and kolla-kubernetes even though they will in"},{"line_number":16,"context_line":"in seperate repos."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_e8f00d69","line":14,"updated":"2016-05-01 16:59:45.000000000","message":"I disagree completely with this sentence.  I prefer one client (kolla-ansible renamed to kolla) and one configuration file (globals.yml it is, since that is already defined) to describe the configuration.  There is no overlap at all.  What we are doing is adding a second type of orchestration engine to kolla in the /kolla top level directory - in addition to ansible.\n\nPlease try to reword this sentence based upon the above comment.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"84b14379277f0758ba46c08d8321ee02e7039a6e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Though Kolla deploys the containers using Ansible, we can leverage the current"},{"line_number":13,"context_line":"work by using the config generation and injecting the configs into"},{"line_number":14,"context_line":"Kubernetes to configure the services. Therefore, there will be community overlap"},{"line_number":15,"context_line":"between kolla-ansible, kolla, and kolla-kubernetes even though they will in"},{"line_number":16,"context_line":"in seperate repos."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_3cb8e774","line":15,"updated":"2016-04-27 15:33:35.000000000","message":"missing a word: they will *be*","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"Though Kolla deploys the containers using Ansible, we can leverage the current"},{"line_number":13,"context_line":"work by using the config generation and injecting the configs into"},{"line_number":14,"context_line":"Kubernetes to configure the services. Therefore, there will be community overlap"},{"line_number":15,"context_line":"between kolla-ansible, kolla, and kolla-kubernetes even though they will in"},{"line_number":16,"context_line":"in seperate repos."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_8aa6cda8","line":15,"in_reply_to":"1a122d0e_3cb8e774","updated":"2016-04-29 15:43:37.000000000","message":"Done","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":23,"context_line":"- life-cycle management: service monitoring, restarting, and scaling"},{"line_number":24,"context_line":"- upgrades: rolling"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Kubernetes has services/tools that can provide service monitoring, health"},{"line_number":27,"context_line":"checks, service scaling, and upgrades. We can use the scheduler to assign work"},{"line_number":28,"context_line":"loads to appropriate nodes. Kubernetes also has built in container health checks"},{"line_number":29,"context_line":"that will monitor a container\u0027s status. Finally, we can use the replication"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_48e661b1","line":26,"updated":"2016-05-01 16:59:45.000000000","message":"the word services hsould be fine here, no reason to say tools.\n\n\"That can provide\" \"That provide\"","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":24,"context_line":"- upgrades: rolling"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Kubernetes has services/tools that can provide service monitoring, health"},{"line_number":27,"context_line":"checks, service scaling, and upgrades. We can use the scheduler to assign work"},{"line_number":28,"context_line":"loads to appropriate nodes. Kubernetes also has built in container health checks"},{"line_number":29,"context_line":"that will monitor a container\u0027s status. Finally, we can use the replication"},{"line_number":30,"context_line":"controller to scale up and down our stack [1]."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_28eb257a","line":27,"updated":"2016-05-01 16:59:45.000000000","message":"pronouns!!  The Kolla community can use the Kubernetes scheduler to assign workloads","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":26,"context_line":"Kubernetes has services/tools that can provide service monitoring, health"},{"line_number":27,"context_line":"checks, service scaling, and upgrades. We can use the scheduler to assign work"},{"line_number":28,"context_line":"loads to appropriate nodes. Kubernetes also has built in container health checks"},{"line_number":29,"context_line":"that will monitor a container\u0027s status. Finally, we can use the replication"},{"line_number":30,"context_line":"controller to scale up and down our stack [1]."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For upgrades, Kubernetes has a tool called \u0027deployments\u0027[2], which will"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_a8f73558","line":29,"range":{"start_line":29,"start_character":5,"end_line":29,"end_character":9},"updated":"2016-05-01 16:59:45.000000000","message":"that will/that monitor.  Please speak in present tense.  The spec should represent things as they should be, not based upon speculation on what we can do :)","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"that will monitor a container\u0027s status. Finally, we can use the replication"},{"line_number":30,"context_line":"controller to scale up and down our stack [1]."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For upgrades, Kubernetes has a tool called \u0027deployments\u0027[2], which will"},{"line_number":33,"context_line":"detect when there is a config change in the container and start scaling"},{"line_number":34,"context_line":"down the current running container and scaling up the upgraded container. If"},{"line_number":35,"context_line":"the new container fails, it can roll back, a nice feature containers provide"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_d346febe","line":32,"updated":"2016-04-27 20:32:47.000000000","message":"\u0027deployment\u0027 is first available in Kubernetes 1.2.0 release. I think that brings in the version requirement for k8s \u003e\u003d1.2.0. Could you mention it somewhere in the spec?","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"that will monitor a container\u0027s status. Finally, we can use the replication"},{"line_number":30,"context_line":"controller to scale up and down our stack [1]."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For upgrades, Kubernetes has a tool called \u0027deployments\u0027[2], which will"},{"line_number":33,"context_line":"detect when there is a config change in the container and start scaling"},{"line_number":34,"context_line":"down the current running container and scaling up the upgraded container. If"},{"line_number":35,"context_line":"the new container fails, it can roll back, a nice feature containers provide"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_dba0d0f6","line":32,"in_reply_to":"1a122d0e_d346febe","updated":"2016-04-29 15:43:37.000000000","message":"Done","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":29,"context_line":"that will monitor a container\u0027s status. Finally, we can use the replication"},{"line_number":30,"context_line":"controller to scale up and down our stack [1]."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"For upgrades, Kubernetes has a tool called \u0027deployments\u0027[2], which will"},{"line_number":33,"context_line":"detect when there is a config change in the container and start scaling"},{"line_number":34,"context_line":"down the current running container and scaling up the upgraded container. If"},{"line_number":35,"context_line":"the new container fails, it can roll back, a nice feature containers provide"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_0893c901","line":32,"in_reply_to":"1a122d0e_dba0d0f6","updated":"2016-05-01 16:59:45.000000000","message":"is this a tool or an object type?which will/which detects","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":32,"context_line":"For upgrades, Kubernetes has a tool called \u0027deployments\u0027[2], which will"},{"line_number":33,"context_line":"detect when there is a config change in the container and start scaling"},{"line_number":34,"context_line":"down the current running container and scaling up the upgraded container. If"},{"line_number":35,"context_line":"the new container fails, it can roll back, a nice feature containers provide"},{"line_number":36,"context_line":"for us.  Though this is oversimplified for OpenStack, we can make use of this."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_8887d9b5","line":35,"updated":"2016-05-01 16:59:45.000000000","message":"this is a run on.  Just remove the stuff after the comma - nobody cares about nice feature opinions :)  Specs should be facts not opinions.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":13039,"name":"Martin André","email":"m.andre@redhat.com","username":"mandre"},"change_message_id":"84b14379277f0758ba46c08d8321ee02e7039a6e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"detect when there is a config change in the container and start scaling"},{"line_number":34,"context_line":"down the current running container and scaling up the upgraded container. If"},{"line_number":35,"context_line":"the new container fails, it can roll back, a nice feature containers provide"},{"line_number":36,"context_line":"for us.  Though this is oversimplified for OpenStack, we can make use of this."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_9cb13b92","line":36,"updated":"2016-04-27 15:33:35.000000000","message":"We keep talking about rollback, and how it is easily done with containers. How does it work in practice when the upgrade fails after a DB migration? Can we easily restore the data as they were before the failed upgrade?\n\nI\u0027m curious how this fits in the k8s model.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":33,"context_line":"detect when there is a config change in the container and start scaling"},{"line_number":34,"context_line":"down the current running container and scaling up the upgraded container. If"},{"line_number":35,"context_line":"the new container fails, it can roll back, a nice feature containers provide"},{"line_number":36,"context_line":"for us.  Though this is oversimplified for OpenStack, we can make use of this."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_a88e15ce","line":36,"in_reply_to":"1a122d0e_8adecdd7","updated":"2016-05-01 16:59:45.000000000","message":"us is a pronoun, but if you use the above comment this sentence will end up being removed.\n\nwe/The Kolla community can use this.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"detect when there is a config change in the container and start scaling"},{"line_number":34,"context_line":"down the current running container and scaling up the upgraded container. If"},{"line_number":35,"context_line":"the new container fails, it can roll back, a nice feature containers provide"},{"line_number":36,"context_line":"for us.  Though this is oversimplified for OpenStack, we can make use of this."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_8adecdd7","line":36,"in_reply_to":"1a122d0e_9cb13b92","updated":"2016-04-29 15:43:37.000000000","message":"Kubernetes manages deployments by monitoring whether something has changed.  We can roll back a version of an image and Kube will manage it just like an upgrade.\n\nRolling back on a failed DB migration is tricky.  I think it will be a matter of proper volume snap shotting.  But, that might be too simple of an answer.\n\nI wanted to mention it because it will be investigated.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"- Add a deployment specific git repo (kolla-kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Service Config Management"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_cebbf50d","line":42,"updated":"2016-04-27 20:32:47.000000000","message":"Regarding the branch model / compatibility, is it going to be one master capable of deploying several releases of Kolla images (Mikata, Newton, etc), or one stable branch for each stable release of Kolla image?\n\nIs it too early to discuss this in the spec, or do you want to have it covered?","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"- Add a deployment specific git repo (kolla-kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Service Config Management"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_e8be4d63","line":42,"in_reply_to":"1a122d0e_cebbf50d","updated":"2016-05-01 16:59:45.000000000","message":"Each bracnh of Kolla deploys that same branch of OpenStack.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"- Add a deployment specific git repo (kolla-kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Service Config Management"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_f541220b","line":42,"in_reply_to":"1a122d0e_cebbf50d","updated":"2016-04-29 15:43:37.000000000","message":"The branch model only applies to the deployment tool.  Kolla-kubernetes is a deployment tool. Kolla has containers that kolla-kubernetes consumes.\n\nKolla\u0027s container model is fairly stable, but they are subject to change. Ideally, you can the N+1 deployment tool with the N containers. That\u0027s not a guarantee. But, what I think you\u0027re really after is the service versions.  So in other words, using master deployment to deploy master containers with liberty packages.  You shouldn\u0027t have any problems with this.\n\nThere will be a Newton branch that will deploy kolla\u0027s Newton images that could be built with Liberty, Mitaka, or Newton packages.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"45aa52daa1990a21fd25bd92ae3c215f549b80d3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"Proposed change"},{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"- Add a deployment specific git repo (kolla-kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Service Config Management"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_4015b13d","line":42,"in_reply_to":"1a122d0e_f541220b","updated":"2016-04-29 18:07:20.000000000","message":"Hmm, that\u0027s the confusing part. If I understand this correctly:\n\nservice version means openstack service version\ncontainer version means tag version for the container images. With those images built by Kolla, that means \"openstack_release\" version in Ansible variable\n\nSo when you say master containers with liberty packages, are you suggesting liberty version of services built by master version Kolla? I know technically it is possible to do, but is it really supported? Build N service version images with N+2 version Kolla?\n\nI thought that\u0027s why we had Kolla stable/liberty branch for building stable/liberty version of services. And it can only deployed (supported) by deployment tool up to Mikata version (N+1).","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":40,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"- Add a deployment specific git repo (kolla-kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Service Config Management"},{"line_number":46,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_68ab5d1f","line":43,"range":{"start_line":43,"start_character":2,"end_line":43,"end_character":12},"updated":"2016-05-01 16:59:45.000000000","message":"Ryan.  The current (and my preferred) model is up for vote on the mailing list.  A completely integrated solution using either ansible or kubernetes as a deployment system.  This way we don\u0027t end up with variances or duplication it he implementation and we solve the \"second class citizen\" problem with COEs, and ESPECIALLY WITH THE COMMUNITY MEMBERS.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Service Config Management"},{"line_number":46,"context_line":"-------------------------"},{"line_number":47,"context_line":"Config generation will be completely decoupled from the deployment. The"},{"line_number":48,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":49,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":50,"context_line":"any tool to generate configs. But, because we want to reuse existing work, we"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_c8a8b123","line":47,"range":{"start_line":47,"start_character":18,"end_line":47,"end_character":22},"updated":"2016-05-01 16:59:45.000000000","message":"will be/is","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"d9ade28e03ab12ac76810b3f8f2b66e2d9541ff5","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"Service Config Management"},{"line_number":46,"context_line":"-------------------------"},{"line_number":47,"context_line":"Config generation will be completely decoupled from the deployment. The"},{"line_number":48,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":49,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":50,"context_line":"any tool to generate configs. But, because we want to reuse existing work, we"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_c4537538","line":47,"range":{"start_line":47,"start_character":18,"end_line":47,"end_character":22},"in_reply_to":"1a122d0e_c8a8b123","updated":"2016-05-02 13:02:12.000000000","message":"is would mean that it already exists.  There\u0027s no code down yet.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Config generation will be completely decoupled from the deployment. The"},{"line_number":48,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":49,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":50,"context_line":"any tool to generate configs. But, because we want to reuse existing work, we"},{"line_number":51,"context_line":"will use ansible and jinja2 templates to generate our config. The config files"},{"line_number":52,"context_line":"will be injected into the kubernetes configmap and loaded into the containers."},{"line_number":53,"context_line":"The containers will pick up the configs when they are launched and run with"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_08610912","line":50,"updated":"2016-05-01 16:59:45.000000000","message":"I disagree with this.  I believe we should reuse the ansible jinja-2 templates and symlink them or copy them for the defaults, and then use Kolla\u0027s ini merging technology to merge the configs to produce a json map.  Please make the spec say this :)","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"d9ade28e03ab12ac76810b3f8f2b66e2d9541ff5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Config generation will be completely decoupled from the deployment. The"},{"line_number":48,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":49,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":50,"context_line":"any tool to generate configs. But, because we want to reuse existing work, we"},{"line_number":51,"context_line":"will use ansible and jinja2 templates to generate our config. The config files"},{"line_number":52,"context_line":"will be injected into the kubernetes configmap and loaded into the containers."},{"line_number":53,"context_line":"The containers will pick up the configs when they are launched and run with"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_274b4b61","line":50,"in_reply_to":"1a122d0e_08610912","updated":"2016-05-02 13:02:12.000000000","message":"This is dependent on a repo merge.  So far, the ML doesn\u0027t argee.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":49,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":50,"context_line":"any tool to generate configs. But, because we want to reuse existing work, we"},{"line_number":51,"context_line":"will use ansible and jinja2 templates to generate our config. The config files"},{"line_number":52,"context_line":"will be injected into the kubernetes configmap and loaded into the containers."},{"line_number":53,"context_line":"The containers will pick up the configs when they are launched and run with"},{"line_number":54,"context_line":"them[3]."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_220b9d25","line":51,"updated":"2016-04-27 20:32:47.000000000","message":"Could you elaborate regarding how it gonna work with separate kolla-kubernetes repo model? Does that mean config generation part gonna stick with existing Kolla repo, while loading to configmap part goes into kolla-kubernetes repo?","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":49,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":50,"context_line":"any tool to generate configs. But, because we want to reuse existing work, we"},{"line_number":51,"context_line":"will use ansible and jinja2 templates to generate our config. The config files"},{"line_number":52,"context_line":"will be injected into the kubernetes configmap and loaded into the containers."},{"line_number":53,"context_line":"The containers will pick up the configs when they are launched and run with"},{"line_number":54,"context_line":"them[3]."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_b5a5eab5","line":51,"in_reply_to":"1a122d0e_220b9d25","updated":"2016-04-29 15:43:37.000000000","message":"Good question.  I\u0027d say that\u0027s up for debate as to if we copy that stuff over or we use the kolla repo.  One concern about copying it over is maintaining it in two places.  So it really depends if this is a copy + add a bunch of kubernetes customizations or just a copy.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"45aa52daa1990a21fd25bd92ae3c215f549b80d3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":49,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":50,"context_line":"any tool to generate configs. But, because we want to reuse existing work, we"},{"line_number":51,"context_line":"will use ansible and jinja2 templates to generate our config. The config files"},{"line_number":52,"context_line":"will be injected into the kubernetes configmap and loaded into the containers."},{"line_number":53,"context_line":"The containers will pick up the configs when they are launched and run with"},{"line_number":54,"context_line":"them[3]."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_60d42de8","line":51,"in_reply_to":"1a122d0e_b5a5eab5","updated":"2016-04-29 18:07:20.000000000","message":"Seems to me kubernetes customization is unavoidable. Take openstack service account credential for example, as a feature requirement, it is pretty nature to ask for credential management with k8s secrets. That means config generation part, existing Ansible model (based on variables) is not enough. And the example list can go on.\n\nMy original question derives from the concern of maintaining in two places (assuming it is just copy over). But even for simplified scenario, I still have concerns over the service endpoints (discovery) in existing Ansible config model.\n\nWith Ansible, service endpoints can be discovered by either predefined VIP (on haproxy), or IP for hosts in specific group (such as memcached servers). But in Kube world, since k8s is handling the service IP by itself, so the ideal way of discovering service endpoint, let it consumed by other services probably better go with some service discovery process.\n\nThat means the config generation part is even subject to more changes. I haven\u0027t really shaped the full idea of how to best handle it, but we can discuss.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":56,"context_line":"Bootstrapping"},{"line_number":57,"context_line":"-------------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":60,"context_line":"initialize the databases.  This task will run for all services and it will"},{"line_number":61,"context_line":"be the first task in deployment."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_2259dd35","line":59,"updated":"2016-04-27 20:32:47.000000000","message":"Is it going to be Jobs?\nhttp://kubernetes.io/docs/user-guide/jobs/","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"Bootstrapping"},{"line_number":57,"context_line":"-------------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":60,"context_line":"initialize the databases.  This task will run for all services and it will"},{"line_number":61,"context_line":"be the first task in deployment."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_f5abe285","line":59,"in_reply_to":"1a122d0e_2259dd35","updated":"2016-04-29 15:43:37.000000000","message":"I think it will be.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":56,"context_line":"Bootstrapping"},{"line_number":57,"context_line":"-------------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":60,"context_line":"initialize the databases.  This task will run for all services and it will"},{"line_number":61,"context_line":"be the first task in deployment."},{"line_number":62,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_486b01f2","line":59,"in_reply_to":"1a122d0e_f5abe285","updated":"2016-05-01 16:59:45.000000000","message":"then say so in the spec please.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":57,"context_line":"-------------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":60,"context_line":"initialize the databases.  This task will run for all services and it will"},{"line_number":61,"context_line":"be the first task in deployment."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_2537274e","line":60,"updated":"2016-04-27 20:32:47.000000000","message":"My understanding is that bootstrapping is not only for infra preparation (database setup), but also endpoint registration,openstack service account creation etc.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"-------------"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":60,"context_line":"initialize the databases.  This task will run for all services and it will"},{"line_number":61,"context_line":"be the first task in deployment."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_f582c2fd","line":60,"in_reply_to":"1a122d0e_2537274e","updated":"2016-04-29 15:43:37.000000000","message":"yes, there are more tasks than database init.  I\u0027ll add more detail.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":60,"context_line":"initialize the databases.  This task will run for all services and it will"},{"line_number":61,"context_line":"be the first task in deployment."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Dependencies"},{"line_number":64,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_db2bc7e9","line":61,"updated":"2016-05-01 16:59:45.000000000","message":"second task in the deployment - the first task is to deploy the database.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":60,"context_line":"initialize the databases.  This task will run for all services and it will"},{"line_number":61,"context_line":"be the first task in deployment."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Dependencies"},{"line_number":64,"context_line":"------------"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_e5d52f43","line":62,"updated":"2016-04-27 20:32:47.000000000","message":"I think we can have a separate section here to discuss credential management (using k8s secrets)","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":60,"context_line":"initialize the databases.  This task will run for all services and it will"},{"line_number":61,"context_line":"be the first task in deployment."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Dependencies"},{"line_number":64,"context_line":"------------"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_b5ba0abe","line":62,"in_reply_to":"1a122d0e_e5d52f43","updated":"2016-04-29 15:43:37.000000000","message":"I think that\u0027s important, but I want to focus on just the broad overview.  Those features being bootstrap, config, reconfigure, and upgrade.  Any other details outside of those categories should be blueprints after this spec lands.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Kubernetes does not have dependencies.  We will launch all the services as a"},{"line_number":67,"context_line":"group and use kubernetes health checks to stablize the deployment over time"},{"line_number":68,"context_line":"until it settles into a working state."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Upgrades"},{"line_number":71,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_057aebf0","line":68,"updated":"2016-04-27 20:32:47.000000000","message":"I saw there\u0027s a -1 vote on the centralized etcd / zookeeper option in Etherpad (https://etherpad.openstack.org/p/kolla-newton-summit-kolla-kubernetes-underlay). Could you brief it here as an alternative, and why we not going that way?","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Kubernetes does not have dependencies.  We will launch all the services as a"},{"line_number":67,"context_line":"group and use kubernetes health checks to stablize the deployment over time"},{"line_number":68,"context_line":"until it settles into a working state."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Upgrades"},{"line_number":71,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_b535eaf7","line":68,"in_reply_to":"1a122d0e_057aebf0","updated":"2016-04-29 15:43:37.000000000","message":"Kolla already has a centralized ABI that we want to maintain across all projects instead of having one per deployment tool.  I think it makes sense for us to consume kolla\u0027s containers in a unified fashion so we don\u0027t have to make any major customization to the images now or sometime down the road.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Kubernetes does not have dependencies.  We will launch all the services as a"},{"line_number":67,"context_line":"group and use kubernetes health checks to stablize the deployment over time"},{"line_number":68,"context_line":"until it settles into a working state."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Upgrades"},{"line_number":71,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_68723de5","line":68,"in_reply_to":"1a122d0e_b535eaf7","updated":"2016-05-01 16:59:45.000000000","message":"Ryan totally 100% agree.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"00801dcce40906a5b7c7909fed91e4b7c23ff5a2","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Kubernetes does not have dependencies.  We will launch all the services as a"},{"line_number":67,"context_line":"group and use kubernetes health checks to stablize the deployment over time"},{"line_number":68,"context_line":"until it settles into a working state."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Upgrades"},{"line_number":71,"context_line":"--------"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_95f3d372","line":69,"updated":"2016-04-27 15:03:31.000000000","message":"Instead, the boot strap script can create the db\u0027s with jobs, wait for those to be done, launch the keystone Deployment, launch a job to add all the service users to keystone completing the bootstrap, then can add all the other Deployments.\n\nFrom then on out, the cloud services should always be able to parallel start since they will have the right data when the services come up. Its usually the race of having services without data that isn\u0027t tested well in openstack.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Kubernetes does not have dependencies.  We will launch all the services as a"},{"line_number":67,"context_line":"group and use kubernetes health checks to stablize the deployment over time"},{"line_number":68,"context_line":"until it settles into a working state."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Upgrades"},{"line_number":71,"context_line":"--------"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_f53be2e7","line":69,"in_reply_to":"1a122d0e_95f3d372","updated":"2016-04-29 15:43:37.000000000","message":"Done","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":66,"context_line":"Kubernetes does not have dependencies.  We will launch all the services as a"},{"line_number":67,"context_line":"group and use kubernetes health checks to stablize the deployment over time"},{"line_number":68,"context_line":"until it settles into a working state."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Upgrades"},{"line_number":71,"context_line":"--------"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_c87f11aa","line":69,"in_reply_to":"1a122d0e_95f3d372","updated":"2016-05-01 16:59:45.000000000","message":"Kevin I agree.  I personally believe we want 5 phases\nstart the database\nbootstrap keystone\nstart keystone\nsyncrhonize on keystone and database being in ready state\nbootstrap *everything* else\n\nI\u0027d like the spec to state this unless there is argument with this approach..","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Upgrades"},{"line_number":71,"context_line":"--------"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Kubernetes has a tool called a Deployment, where you define a desired state for"},{"line_number":74,"context_line":"your pods and the deployment will move your cluster to the desired state when"},{"line_number":75,"context_line":"a change is detected [4]."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_a87c55b6","line":73,"updated":"2016-05-01 16:59:45.000000000","message":"you is a pronoun and doesnt belong in a spec :)","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Kubernetes has a tool called a Deployment, where you define a desired state for"},{"line_number":74,"context_line":"your pods and the deployment will move your cluster to the desired state when"},{"line_number":75,"context_line":"a change is detected [4]."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Reconfigure"},{"line_number":78,"context_line":"-----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_258567ce","line":75,"updated":"2016-04-27 20:32:47.000000000","message":"+1 for the Deployment","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":77,"context_line":"Reconfigure"},{"line_number":78,"context_line":"-----------"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"We generate a new config and load it into the Kubernetes configmap. We then"},{"line_number":81,"context_line":"create an action that will restart the container so that the service picks"},{"line_number":82,"context_line":"up the new config file and runs with it."},{"line_number":83,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_4842e169","line":80,"updated":"2016-05-01 16:59:45.000000000","message":"we is a pronoun.\n\n\"runs with it\" \"uses it\".","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"00801dcce40906a5b7c7909fed91e4b7c23ff5a2","unresolved":false,"context_lines":[{"line_number":80,"context_line":"We generate a new config and load it into the Kubernetes configmap. We then"},{"line_number":81,"context_line":"create an action that will restart the container so that the service picks"},{"line_number":82,"context_line":"up the new config file and runs with it."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Security impact"},{"line_number":85,"context_line":"---------------"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_d5a0ab44","line":83,"updated":"2016-04-27 15:03:31.000000000","message":"This seems like an optimization. If the Deployment just did a rolling upgrade and deleted/relaunched the container with the new config, it would work, but just slower. As the Deployment feature in k8s expands to support notification of config changes to the container, then we could implement this in a separate spec.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"2c17fb569e7413ab78f8f66ee80abfec1c5c0fc0","unresolved":false,"context_lines":[{"line_number":80,"context_line":"We generate a new config and load it into the Kubernetes configmap. We then"},{"line_number":81,"context_line":"create an action that will restart the container so that the service picks"},{"line_number":82,"context_line":"up the new config file and runs with it."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Security impact"},{"line_number":85,"context_line":"---------------"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_a2b17291","line":83,"in_reply_to":"1a122d0e_d5a0ab44","updated":"2016-04-27 16:30:56.000000000","message":"It was mentioned that configmap changes can be auto detected and trigger a container restart.  I like this method because it\u0027s so similar to the way we do it in Kolla and it\u0027s Kubernetes native.\n\nWe could look at a Deployment as a possibility because of the feedback look it\u0027ll provides us. If upgrades and reconfigure go through the same code path it would be a great way for us to tackle both those tasks with one mechanism.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":80,"context_line":"We generate a new config and load it into the Kubernetes configmap. We then"},{"line_number":81,"context_line":"create an action that will restart the container so that the service picks"},{"line_number":82,"context_line":"up the new config file and runs with it."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Security impact"},{"line_number":85,"context_line":"---------------"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_885cf94d","line":83,"in_reply_to":"1a122d0e_d5a0ab44","updated":"2016-05-01 16:59:45.000000000","message":"Kevin,\n\nWe don\u0027t do specs in kolla in general except for big ticket items.  That said, it is not an optimization, it is a matter of how Kolla reconfigure works.\n\nWe execute the following steps\n1. variable search and replace jinja2 defaults with their real values\n2. merge custom INI config files in /etc/kolla/configs directory into config ini\n3. load config.ini into config map","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Security impact"},{"line_number":85,"context_line":"---------------"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"We will run the containers as non root and use SELinux to make sure"},{"line_number":88,"context_line":"someone cannot break out of a container."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_68599d5b","line":87,"updated":"2016-05-01 16:59:45.000000000","message":"pronouns are killing me - death by a thousand needles.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"00801dcce40906a5b7c7909fed91e4b7c23ff5a2","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"We will run the containers as non root and use SELinux to make sure"},{"line_number":88,"context_line":"someone cannot break out of a container."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Performance Impact"},{"line_number":91,"context_line":"------------------"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_39f599ec","line":89,"updated":"2016-04-27 15:03:31.000000000","message":"\"When ever possible\"?","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"2c17fb569e7413ab78f8f66ee80abfec1c5c0fc0","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"We will run the containers as non root and use SELinux to make sure"},{"line_number":88,"context_line":"someone cannot break out of a container."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Performance Impact"},{"line_number":91,"context_line":"------------------"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_a2d212fe","line":89,"in_reply_to":"1a122d0e_39f599ec","updated":"2016-04-27 16:30:56.000000000","message":"Yes, whenever we can.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"ec0b0a40566e506fed3372b0d88389358d7ccfe6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  Jeff Peeler (jpeeler)"},{"line_number":111,"context_line":"  Martin Andre (mandre)"},{"line_number":112,"context_line":"  Ian Main (Slower)"},{"line_number":113,"context_line":"  \u003cPlease add your name here if you are getting involved in kolla-kubernetes\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Milestones"},{"line_number":116,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_6500ff34","line":113,"updated":"2016-04-27 20:32:47.000000000","message":"I\u0027d also like to contribute. Would be appreciated if you can put my name here in your next update.\n\nQiu Yu (unicell)","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  Jeff Peeler (jpeeler)"},{"line_number":111,"context_line":"  Martin Andre (mandre)"},{"line_number":112,"context_line":"  Ian Main (Slower)"},{"line_number":113,"context_line":"  \u003cPlease add your name here if you are getting involved in kolla-kubernetes\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Milestones"},{"line_number":116,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_c856f129","line":113,"in_reply_to":"1a122d0e_35227ab9","updated":"2016-05-01 16:59:45.000000000","message":"Ryan\nPlease add \"kolla-core\" at the top of the list, then alphebatically order by first name everyone the union of the two sets of this list and everyone in the etherpad","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"68bac4310c4c7bba9db2f0043be34b82da11051a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"  Jeff Peeler (jpeeler)"},{"line_number":111,"context_line":"  Martin Andre (mandre)"},{"line_number":112,"context_line":"  Ian Main (Slower)"},{"line_number":113,"context_line":"  \u003cPlease add your name here if you are getting involved in kolla-kubernetes\u003e"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Milestones"},{"line_number":116,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_35227ab9","line":113,"in_reply_to":"1a122d0e_6500ff34","updated":"2016-04-29 15:43:37.000000000","message":"Done","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Work Items"},{"line_number":122,"context_line":"----------"},{"line_number":123,"context_line":"1. Create kolla-kubernetes repo"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_483941f2","line":123,"updated":"2016-05-01 16:59:45.000000000","message":"we are not making a seperate repository\n\nBreak this down into the set of work items that need to be done at a high level.  THings like reconfigure are one - which can be decomposed further.  etc.","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"8f9a9e43b86ad8b74486f508aa521ae2d8e820bf","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"Documentation Impact"},{"line_number":135,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":136,"context_line":"Add a quick start guide, which will explain how to deploy kolla-kubernetes."},{"line_number":137,"context_line":"Add a developer guide on how to contribute, which also explains how the"},{"line_number":138,"context_line":"deployment works."},{"line_number":139,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"1a122d0e_283e85da","line":136,"updated":"2016-05-01 16:59:45.000000000","message":"I\u0027d recommend not calling it kolla-kubernetess since that is not a thing.   Lets use the language \"The Kubernetes orchestration engine in Kolla\".","commit_id":"9c9dcd2e2431be5c5a5be50ab7fd5d86ce23a37a"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Kubernetes"},{"line_number":23,"context_line":"- life-cycle management: service monitoring, health checks, and scaling"},{"line_number":24,"context_line":"- upgrades: rolling"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Kubernetes has services that provide Kolla-Kubernetes with service monitoring,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_54e70146","line":23,"updated":"2016-05-03 00:30:17.000000000","message":"HA (load balancing) seems to be another problem solved by Kubernetes. So instead of deploying/managing haproxy by ourselves, Kubernetes already taking care of that by \"Service\" abstraction.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":31,"context_line":"down our stack [3]."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"For upgrades, Kubernetes has an object called \u0027deployments\u0027[4], which detects"},{"line_number":34,"context_line":"when there is a config change in the container. It starts to scale down the"},{"line_number":35,"context_line":"current running container and scaling up the upgraded container. If the new"},{"line_number":36,"context_line":"container fails, it can roll back. Though this is oversimplified for OpenStack,"},{"line_number":37,"context_line":"the community can make use of this."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_349ec5b8","line":34,"updated":"2016-05-03 00:30:17.000000000","message":"To avoid confusion, it should be Kubernetes Pod spec change, instead of config change for openstack services.\n\nIt is mentioned in Etherpad[1], the feature to notify/bounce Pod once configmap changes is still not there yet on Kubernestes side[2]\n[1] https://etherpad.openstack.org/p/kolla-newton-summit-kolla-kubernetes-underlay\n[2] https://github.com/kubernetes/kubernetes/issues/24957","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) to contain the"},{"line_number":44,"context_line":"  Kubernetes deployment code."},{"line_number":45,"context_line":"- Use Kubernetes version \u003e\u003d 1.2.0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_763fa587","line":44,"updated":"2016-05-02 22:47:32.000000000","message":"this is still up for vote on the mailing list.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Bootstrapping"},{"line_number":60,"context_line":"-------------"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":63,"context_line":"initialize the databases and create the users.  This task will run for all"},{"line_number":64,"context_line":"services and it will be the second task in deployment. The bootstrapping task"},{"line_number":65,"context_line":"will be a Kubernetes Job, which will run the task until completion then teminate"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_d65039d7","line":62,"updated":"2016-05-02 22:47:32.000000000","message":"have to start the database first.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":60,"context_line":"-------------"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":63,"context_line":"initialize the databases and create the users.  This task will run for all"},{"line_number":64,"context_line":"services and it will be the second task in deployment. The bootstrapping task"},{"line_number":65,"context_line":"will be a Kubernetes Job, which will run the task until completion then teminate"},{"line_number":66,"context_line":"the pods [6]."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_b90ace25","line":63,"updated":"2016-05-03 00:30:17.000000000","message":"why it has to be single task for all services? What if later on deployer decide to add new openstack service to their cluster? Can this task / job repeatedly run? What would the bootstrapping process be like in adding new service case (as discussed in patchset v2, it involves more than just database init)","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":63,"context_line":"initialize the databases and create the users.  This task will run for all"},{"line_number":64,"context_line":"services and it will be the second task in deployment. The bootstrapping task"},{"line_number":65,"context_line":"will be a Kubernetes Job, which will run the task until completion then teminate"},{"line_number":66,"context_line":"the pods [6]."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_f6bc5508","line":65,"range":{"start_line":65,"start_character":72,"end_line":65,"end_character":80},"updated":"2016-05-02 22:47:32.000000000","message":"terminate","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":62,"context_line":"Bootstrapping the Kolla containers involves running a single task that will"},{"line_number":63,"context_line":"initialize the databases and create the users.  This task will run for all"},{"line_number":64,"context_line":"services and it will be the second task in deployment. The bootstrapping task"},{"line_number":65,"context_line":"will be a Kubernetes Job, which will run the task until completion then teminate"},{"line_number":66,"context_line":"the pods [6]."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_7412fd0a","line":65,"range":{"start_line":65,"start_character":72,"end_line":65,"end_character":80},"in_reply_to":"1a122d0e_f6bc5508","updated":"2016-05-03 00:30:17.000000000","message":"Also, does it (using k8s Job for bootstrapping) change the Kolla container ABI? That \"BOOTSTRAP\" env means starting container in bootstrap mode and run necessary thing for bootstrapping from there.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Dependencies"},{"line_number":69,"context_line":"------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Kubernetes does not have dependencies.  The user will launch all the services as"},{"line_number":72,"context_line":"a group and use kubernetes health checks to stabilize the deployment over time."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Upgrades"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_963a4133","line":71,"updated":"2016-05-02 22:47:32.000000000","message":"user/operator","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Kubernetes does not have dependencies.  The user will launch all the services as"},{"line_number":72,"context_line":"a group and use kubernetes health checks to stabilize the deployment over time."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Upgrades"},{"line_number":75,"context_line":"--------"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_16075182","line":73,"updated":"2016-05-02 22:47:32.000000000","message":"somewhere in here add a CLI section which describes the cli operations expected out of the system.  they should match kolla-ansible\u0027s cli operations and in the end, we should have one tool which deploys both models.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"Upgrades"},{"line_number":75,"context_line":"--------"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Kubernetes has a tool called a Deployment, where the user defines a desired"},{"line_number":78,"context_line":"state for the pods and the deployment will move the cluster to the desired"},{"line_number":79,"context_line":"state when a change is detected."},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_36936d02","line":77,"range":{"start_line":77,"start_character":17,"end_line":77,"end_character":21},"updated":"2016-05-02 22:47:32.000000000","message":"is this a tool or an object?","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":74,"context_line":"Upgrades"},{"line_number":75,"context_line":"--------"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Kubernetes has a tool called a Deployment, where the user defines a desired"},{"line_number":78,"context_line":"state for the pods and the deployment will move the cluster to the desired"},{"line_number":79,"context_line":"state when a change is detected."},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_b4f495cf","line":77,"range":{"start_line":77,"start_character":17,"end_line":77,"end_character":21},"in_reply_to":"1a122d0e_36936d02","updated":"2016-05-03 00:30:17.000000000","message":"Probably better to refer it as API object, to avoid confusing with all other type of objects.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Reconfigure"},{"line_number":82,"context_line":"-----------"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"The user generates a new config and loads it into the Kubernetes configmap."},{"line_number":85,"context_line":"Kubernetes will look for services to detect a change in the configmap. If there"},{"line_number":86,"context_line":"is a change, the container will restart picking up the change."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_1402a9b4","line":84,"range":{"start_line":84,"start_character":4,"end_line":84,"end_character":8},"updated":"2016-05-03 00:30:17.000000000","message":"s/user/operator ?","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"The user generates a new config and loads it into the Kubernetes configmap."},{"line_number":85,"context_line":"Kubernetes will look for services to detect a change in the configmap. If there"},{"line_number":86,"context_line":"is a change, the container will restart picking up the change."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"HA Architecture"},{"line_number":89,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_b4c5b53e","line":86,"updated":"2016-05-03 00:30:17.000000000","message":"Same above, I don\u0027t think Kubernetes, for now, has to capability to bounce Pod for configmap change. It can only do for Pod spec change (like container image version bumping)","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Kubernetes uses health checks to bring up the services.  Kolla-Kubernetes can"},{"line_number":92,"context_line":"use the same checks here when monitoring if a service is active.  When a"},{"line_number":93,"context_line":"service fails, the replication controller will be responsible for bringing up"},{"line_number":94,"context_line":"a new container in its place."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes doesn\u0027t have a form of fencing for high availability, but the user"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_34e085cc","line":93,"updated":"2016-05-03 00:30:17.000000000","message":"or replica sets\nhttp://kubernetes.io/docs/user-guide/replicasets/","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b95ccfe6a35db117ee9899689de1a9f57af6bfec","unresolved":false,"context_lines":[{"line_number":94,"context_line":"a new container in its place."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes doesn\u0027t have a form of fencing for high availability, but the user"},{"line_number":97,"context_line":"can use ceph backed storage to solve this problem [7][8].  This would be"},{"line_number":98,"context_line":"opinionated, but would provide Kolla-Kubernetes with a production ready"},{"line_number":99,"context_line":"solution if Kubernetes cannot."},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_74eb1d79","line":97,"updated":"2016-05-03 00:30:17.000000000","message":"Do we really have fencing capability for exsiting Ansible deployment model? If it is not a feature with existing Ansible deployment, I don\u0027t think we need to mention in this spec. \n\nWhat is the problem we\u0027re trying to solve here?\n\nAlso, Kolla has the capability to deploy Ceph cluster. Making assumption of Kolla-Kubernetes can access to pre-deployed Ceph cluster seems not a solution good enough for me.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"3bbd8f4baa18dad48434f80edfbb2ce625e2d6d4","unresolved":false,"context_lines":[{"line_number":94,"context_line":"a new container in its place."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes doesn\u0027t have a form of fencing for high availability, but the user"},{"line_number":97,"context_line":"can use ceph backed storage to solve this problem [7][8].  This would be"},{"line_number":98,"context_line":"opinionated, but would provide Kolla-Kubernetes with a production ready"},{"line_number":99,"context_line":"solution if Kubernetes cannot."},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_ca49aa34","line":97,"in_reply_to":"1a122d0e_74eb1d79","updated":"2016-05-03 02:08:12.000000000","message":"Problem we\u0027re solving is situation, when node running mariadb gets out of cluster, but keeps running. We need to fence it somehow and we can do it on storage level. I don\u0027t see problem of k8s accessing external ceph, you need that kind of capability to get real data persistence and avoid netsplit corrupting your data.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes doesn\u0027t have a form of fencing for high availability, but the user"},{"line_number":97,"context_line":"can use ceph backed storage to solve this problem [7][8].  This would be"},{"line_number":98,"context_line":"opinionated, but would provide Kolla-Kubernetes with a production ready"},{"line_number":99,"context_line":"solution if Kubernetes cannot."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_d61b19c9","line":98,"updated":"2016-05-02 22:47:32.000000000","message":"remove opinionated - there woudl be a second option to use persistent storage separate of ceph","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Kubernetes doesn\u0027t have a form of fencing for high availability, but the user"},{"line_number":97,"context_line":"can use ceph backed storage to solve this problem [7][8].  This would be"},{"line_number":98,"context_line":"opinionated, but would provide Kolla-Kubernetes with a production ready"},{"line_number":99,"context_line":"solution if Kubernetes cannot."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Security impact"},{"line_number":102,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_d68e79cf","line":99,"updated":"2016-05-02 22:47:32.000000000","message":"please mention k8s built in load balancing in here somewhere","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"can use ceph backed storage to solve this problem [7][8].  This would be"},{"line_number":98,"context_line":"opinionated, but would provide Kolla-Kubernetes with a production ready"},{"line_number":99,"context_line":"solution if Kubernetes cannot."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Security impact"},{"line_number":102,"context_line":"---------------"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_362a4d30","line":100,"updated":"2016-05-02 22:47:32.000000000","message":"i\u0027d like to see a section on persistent storage of the database and other system data.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":102,"context_line":"---------------"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible and use"},{"line_number":105,"context_line":"SELinux to make sure someone cannot break out of a container."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Performance Impact"},{"line_number":108,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_f618d520","line":105,"updated":"2016-05-02 22:47:32.000000000","message":"SELinux or AppArmor to make sure if someone breaks out of the container, the ability of the bad actor to cause damage is limited.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Since Kolla-Kubernetes is not using dependencies for the service deployment, the"},{"line_number":111,"context_line":"services will take a different amount of time to start up for each deployment"},{"line_number":112,"context_line":"because the order will always vary when the services become actvie."},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_76e5e5da","line":112,"updated":"2016-05-02 22:47:32.000000000","message":"As such, the true performance impact to the various actions is unknown.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  Ryan Hallisey (rhallisey)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Other contributor(s):"},{"line_number":123,"context_line":"  kolla-core team"},{"line_number":124,"context_line":"  Alex Polvi (polvi)"},{"line_number":125,"context_line":"  Alicja Kwasniewska"},{"line_number":126,"context_line":"  Andrew Battye"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_b6cc9d8b","line":123,"updated":"2016-05-02 22:47:32.000000000","message":"add a link to the current core team here: https://review.openstack.org/#/admin/groups/460,members","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":122,"context_line":"Other contributor(s):"},{"line_number":123,"context_line":"  kolla-core team"},{"line_number":124,"context_line":"  Alex Polvi (polvi)"},{"line_number":125,"context_line":"  Alicja Kwasniewska"},{"line_number":126,"context_line":"  Andrew Battye"},{"line_number":127,"context_line":"  Brandon Jozsa (v1k0d3n)"},{"line_number":128,"context_line":"  Britt Houser"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_56e0a9fa","line":125,"updated":"2016-05-02 22:47:32.000000000","message":"alicja is in the kolla-core team","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  Alicja Kwasniewska"},{"line_number":126,"context_line":"  Andrew Battye"},{"line_number":127,"context_line":"  Brandon Jozsa (v1k0d3n)"},{"line_number":128,"context_line":"  Britt Houser"},{"line_number":129,"context_line":"  Davanum Srinivas (dims)"},{"line_number":130,"context_line":"  Egor Guz (eghobo)"},{"line_number":131,"context_line":"  Hui Kang (huikang)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_3686cd16","line":128,"updated":"2016-05-02 22:47:32.000000000","message":"try to get irc handles","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":133,"context_line":"  Jinay Vora (jvora)"},{"line_number":134,"context_line":"  Keith Byrne (kbyrne)"},{"line_number":135,"context_line":"  Kevin Fox (kfox1111)"},{"line_number":136,"context_line":"  kolla-core team"},{"line_number":137,"context_line":"  Marga Millet (fragatina)"},{"line_number":138,"context_line":"  Marian Schwarz"},{"line_number":139,"context_line":"  mark casey"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_f6c61567","line":136,"updated":"2016-05-02 22:47:32.000000000","message":"duplicate","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  kolla-core team"},{"line_number":137,"context_line":"  Marga Millet (fragatina)"},{"line_number":138,"context_line":"  Marian Schwarz"},{"line_number":139,"context_line":"  mark casey"},{"line_number":140,"context_line":"  MD NADEEM (mail2nadeem92)"},{"line_number":141,"context_line":"  Michael Schmidt"},{"line_number":142,"context_line":"  Michal Rostecki (mrostecki)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_b693fd5b","line":139,"updated":"2016-05-02 22:47:32.000000000","message":"Capitalize Names","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":151,"context_line":"Milestones"},{"line_number":152,"context_line":"----------"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Target Milestone for completion:"},{"line_number":155,"context_line":"  Newton"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_5686e9db","line":154,"updated":"2016-05-02 22:47:32.000000000","message":"for technical preview quality code:","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Work Items"},{"line_number":158,"context_line":"----------"},{"line_number":159,"context_line":"1. Create Kolla-Kubernetes repo"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_f6745537","line":159,"updated":"2016-05-02 22:47:32.000000000","message":"expand the work items into actionalable steps","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Functional tests will be implemented in the OpenStack check/gating system to"},{"line_number":166,"context_line":"automatically test that the Kubernetes deployment works for an AIO"},{"line_number":167,"context_line":"environment."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_7697a53a","line":167,"updated":"2016-05-02 22:47:32.000000000","message":"add a link to the functional testing etherpad we produced during ods.","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"0187a9c26ab3c7785dc8f2cf59b54b0f8450c6d2","unresolved":false,"context_lines":[{"line_number":170,"context_line":"Documentation Impact"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":172,"context_line":"Add a quick start guide, which explains how to deploy Kolla-Kubernetes."},{"line_number":173,"context_line":"Add a developer guide on how to contribute, which also explains how the"},{"line_number":174,"context_line":"deployment works."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_56b389e9","line":173,"range":{"start_line":173,"start_character":43,"end_line":173,"end_character":44},"updated":"2016-05-02 22:47:32.000000000","message":"contribute which explains","commit_id":"aa4807619cf199e644f3501e0d757efc8e59be5f"},{"author":{"_account_id":3098,"name":"Jeff Peeler","email":"jpeeler@redhat.com","username":"jpeeler-z"},"change_message_id":"9b417e11d526df2da6f81e734d3d7c1efa141882","unresolved":false,"context_lines":[{"line_number":34,"context_line":"For upgrades, Kubernetes has an object called \u0027deployments\u0027[4], which detects"},{"line_number":35,"context_line":"when a pod needs to change. It starts to scale down the current running"},{"line_number":36,"context_line":"pods and scale up the new pods. If the new container fails within a pod, it"},{"line_number":37,"context_line":"can roll back."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a122d0e_a6b0988c","line":37,"updated":"2016-05-04 19:53:06.000000000","message":"Is it known how a migrated database is rolled back? You mentioned snapshotting in the comments, maybe that\u0027s worth putting here too.","commit_id":"bd1705959c1086fccc7ebc08739b3f084ac67a67"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"2fba117ad212430167f71100659d7069762fe1f1","unresolved":false,"context_lines":[{"line_number":34,"context_line":"For upgrades, Kubernetes has an object called \u0027deployments\u0027[4], which detects"},{"line_number":35,"context_line":"when a pod needs to change. It starts to scale down the current running"},{"line_number":36,"context_line":"pods and scale up the new pods. If the new container fails within a pod, it"},{"line_number":37,"context_line":"can roll back."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Proposed change"}],"source_content_type":"text/x-rst","patch_set":7,"id":"1a122d0e_cc517332","line":37,"in_reply_to":"1a122d0e_a6b0988c","updated":"2016-05-04 20:40:17.000000000","message":"I might just drop it.  I added it here because kubernetes has a \u0027roll-back\u0027 call.  I think it will be a bp that will come down the road.","commit_id":"bd1705959c1086fccc7ebc08739b3f084ac67a67"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"0868ec51a28854e395cb7b0734f6fa638d70206a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":"- Kubernetes \u003e\u003d 1.2.0"},{"line_number":45,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Service Config Management"},{"line_number":48,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a122d0e_3fce1e83","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":18},"updated":"2016-05-05 16:16:38.000000000","message":"@Ryan: could you elaborate about this Docker version? any specific dependencies?","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":19384,"name":"Serguei Bezverkhi","email":"sbezverk@cisco.com","username":"sbezverk"},"change_message_id":"0e65090d1ae9758b41e208d3877c48620fbe0c4c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":"- Kubernetes \u003e\u003d 1.2.0"},{"line_number":45,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Service Config Management"},{"line_number":48,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_7406c621","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":18},"updated":"2016-05-05 21:20:08.000000000","message":"Current version of Kubernetes forces to use Docker version 1.9.1, if Docker 1.10 is required, it might cause some issue until Kubernetes moves to support higher version than 1.9.1","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"da88c58c063c3d671d4d1e5566ddf629b972f868","unresolved":false,"context_lines":[{"line_number":42,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":"- Kubernetes \u003e\u003d 1.2.0"},{"line_number":45,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Service Config Management"},{"line_number":48,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"faac7902_3202903f","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":18},"in_reply_to":"1a122d0e_3fce1e83","updated":"2016-05-05 20:43:11.000000000","message":"Sure. In order to run neutron in \u0027thin containers\u0027, in other words one service per container, we need mount propagation from Docker. Docker added it in 1.10.\n\nMount propagation will allow us to specify \u0027shared\u0027 so that when we mount in \u0027/run/netns/\u0027, network namespaces will be shared between the neutron containers and the host.","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"423d78312f5d878fc4b26193448bc62875956fb7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":"- Kubernetes \u003e\u003d 1.2.0"},{"line_number":45,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Service Config Management"},{"line_number":48,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_d72a142c","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":18},"in_reply_to":"dab17558_7406c621","updated":"2016-05-05 21:51:43.000000000","message":"Fascinating. That mount propagation thing will help me on another project. Thanks for mentioning it. :)\n\nKubernetes has a patch in flight to enable the mount propagation feature too:\nhttps://github.com/kubernetes/kubernetes/pull/20698\nPlease jump into the conversation there.\n\nSo we may want to bump the k8s ver to 1.3.0?","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"6ff3f92a5e30a54645b3e68759f0de6d86245b94","unresolved":false,"context_lines":[{"line_number":42,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":"- Kubernetes \u003e\u003d 1.2.0"},{"line_number":45,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Service Config Management"},{"line_number":48,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_9ad43148","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":18},"in_reply_to":"dab17558_7406c621","updated":"2016-05-05 21:50:51.000000000","message":"I\u0027m able to run docker 1.10.2 with kubernetes 1.2 using hypercube (containerized kubernetes).  I think we will have to run from source initially.","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"b4f5b491fe91250326b556d7103b7ccc18a3f23b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) to contain the"},{"line_number":43,"context_line":"  Kubernetes deployment code."},{"line_number":44,"context_line":"- Kubernetes \u003e\u003d 1.2.0"},{"line_number":45,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Service Config Management"},{"line_number":48,"context_line":"-------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_c0fec804","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":18},"in_reply_to":"dab17558_d72a142c","updated":"2016-05-05 22:49:40.000000000","message":"That would be per pod mount propagation which would be cooler than setting to \u0027shared\u0027 everywhere.","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"0868ec51a28854e395cb7b0734f6fa638d70206a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Bootstrapping"},{"line_number":59,"context_line":"-------------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":62,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":63,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":64,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a122d0e_1fc7e245","line":61,"range":{"start_line":61,"start_character":61,"end_line":61,"end_character":77},"updated":"2016-05-05 16:16:38.000000000","message":"@Ryan: just idea ;), it will be nice to try put bootstrap code to the same pod. In this case we will get whole service like one deployment unit.","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"da88c58c063c3d671d4d1e5566ddf629b972f868","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Bootstrapping"},{"line_number":59,"context_line":"-------------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":62,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":63,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":64,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"}],"source_content_type":"text/x-rst","patch_set":8,"id":"faac7902_92089c93","line":61,"range":{"start_line":61,"start_character":61,"end_line":61,"end_character":77},"in_reply_to":"1a122d0e_1fc7e245","updated":"2016-05-05 20:43:11.000000000","message":"It is an interesting idea.  We tried this back when kolla did docker-compose.\n\nWe would deploy all the services and have them do a db sync to setup the database.  One issue we ran into was glance-api would run its db sync and try and see if keystone was around.  Keystone would want to do its db sync, but it was being hit by glance requests. This would cause keystone to fail and glance to get stuck restarting.\n\nWe could get around this issue if instead of the containers being constantly restarted on failure, they get replaced. Kubernetes would do this. So it\u0027s possible that we go this route.\n\nOne thing to note though. If we decouple the bootstrapping from the deployment it allows for the operator to have more control over each task.  So there could be some scenarios down the road where we want things decoupled.","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"057d36b7deee12b2598eae754a3d47bb645a8e30","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Bootstrapping"},{"line_number":59,"context_line":"-------------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":62,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":63,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":64,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a122d0e_28838104","line":61,"range":{"start_line":61,"start_character":61,"end_line":61,"end_character":77},"in_reply_to":"1a122d0e_1fc7e245","updated":"2016-05-05 19:18:22.000000000","message":"Yeah, same here. Bootstrapping job is a direct mapping from Ansible orchestration role to Kubernetes world, but it is not Kubernetes native way of doing things.\n\nI\u0027m not sure if we need to fix the detail plan in this spec, as it should be the one to kick off the Kolla-kubernetes effort. But can we list sidecar approach (extra container in Pod taking care of service registry or discovery) as an alternative here?","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"423d78312f5d878fc4b26193448bc62875956fb7","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Bootstrapping"},{"line_number":59,"context_line":"-------------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":62,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":63,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":64,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_bae81518","line":61,"range":{"start_line":61,"start_character":61,"end_line":61,"end_character":77},"in_reply_to":"faac7902_92089c93","updated":"2016-05-05 21:51:43.000000000","message":"Doing db sync in the startup of the service containers scared me deeply the last time it was there. I\u0027ve had production systems go really wrong when that sort of thing has been around. Please, Please don\u0027t do that. The database/general upgrade workflow is separate from services and should be kept that way so that it can be carefully be orchestrated in the right order when necessary. In addition, I don\u0027t think any of the services test db syncs in parallel over multiple containers at once, so races are also a potential issue.\n\nI\u0027ve had at least one case where one of the services in the docs said, you don\u0027t have to do the phase 2 db sync before the server upgrade, but it bombed out on one of our clouds since it had vm\u0027s that have been around since icehouse and they never tested upgrading with data that old. We had to run the phase 2 db sync right away to unbreak things. It did end up fixing things to reorder the upgrades. Having the ability to manually run all the upgrade steps when needed is important too.","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"c64fb37ef77db4b5a539b27e8cde39fc2892c73a","unresolved":false,"context_lines":[{"line_number":58,"context_line":"Bootstrapping"},{"line_number":59,"context_line":"-------------"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":62,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":63,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":64,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_b4730eb4","line":61,"range":{"start_line":61,"start_character":61,"end_line":61,"end_character":77},"in_reply_to":"faac7902_92089c93","updated":"2016-05-05 20:53:30.000000000","message":"I\u0027ll make note of the alternative bootstrapping method","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"057d36b7deee12b2598eae754a3d47bb645a8e30","unresolved":false,"context_lines":[{"line_number":100,"context_line":"a new container in its place [8][9].  Also, Kubernetes has a built in load"},{"line_number":101,"context_line":"balancer."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"However, Kubernetes does not cover all the HA corner cases.  For instance,"},{"line_number":104,"context_line":"fencing. But, there are ways the operator can get around this. For example, to"},{"line_number":105,"context_line":"deal with storage fencing, the operator can use ceph backed storage [10][11]."},{"line_number":106,"context_line":"This is an option that the community can document in order to provide"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a122d0e_2836e150","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":59},"updated":"2016-05-05 19:18:22.000000000","message":"There\u0027s some effort going in Kubernetes contrib project.\nhttps://github.com/kubernetes/contrib/tree/master/keepalived-vip","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"da88c58c063c3d671d4d1e5566ddf629b972f868","unresolved":false,"context_lines":[{"line_number":100,"context_line":"a new container in its place [8][9].  Also, Kubernetes has a built in load"},{"line_number":101,"context_line":"balancer."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"However, Kubernetes does not cover all the HA corner cases.  For instance,"},{"line_number":104,"context_line":"fencing. But, there are ways the operator can get around this. For example, to"},{"line_number":105,"context_line":"deal with storage fencing, the operator can use ceph backed storage [10][11]."},{"line_number":106,"context_line":"This is an option that the community can document in order to provide"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_11482c2d","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":59},"in_reply_to":"1a122d0e_2836e150","updated":"2016-05-05 20:43:11.000000000","message":"thanks for the link!","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"0868ec51a28854e395cb7b0734f6fa638d70206a","unresolved":false,"context_lines":[{"line_number":101,"context_line":"balancer."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"However, Kubernetes does not cover all the HA corner cases.  For instance,"},{"line_number":104,"context_line":"fencing. But, there are ways the operator can get around this. For example, to"},{"line_number":105,"context_line":"deal with storage fencing, the operator can use ceph backed storage [10][11]."},{"line_number":106,"context_line":"This is an option that the community can document in order to provide"},{"line_number":107,"context_line":"Kolla-Kubernetes with a production ready solution if Kubernetes cannot."}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a122d0e_7ffff6aa","line":104,"updated":"2016-05-05 16:16:38.000000000","message":"@Ryan: there is interesting approach how to build leader election on top of kub api (http://blog.kubernetes.io/2016/01/simple-leader-election-with-Kubernetes.html)","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"da88c58c063c3d671d4d1e5566ddf629b972f868","unresolved":false,"context_lines":[{"line_number":101,"context_line":"balancer."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"However, Kubernetes does not cover all the HA corner cases.  For instance,"},{"line_number":104,"context_line":"fencing. But, there are ways the operator can get around this. For example, to"},{"line_number":105,"context_line":"deal with storage fencing, the operator can use ceph backed storage [10][11]."},{"line_number":106,"context_line":"This is an option that the community can document in order to provide"},{"line_number":107,"context_line":"Kolla-Kubernetes with a production ready solution if Kubernetes cannot."}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_917d3cea","line":104,"in_reply_to":"1a122d0e_7ffff6aa","updated":"2016-05-05 20:43:11.000000000","message":"cool will take note of it, thanks!","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"0868ec51a28854e395cb7b0734f6fa638d70206a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"---------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible and use"},{"line_number":123,"context_line":"SELinux to make sure someone cannot break out of a container."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Performance Impact"},{"line_number":126,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a122d0e_ff3f86dc","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":7},"updated":"2016-05-05 16:16:38.000000000","message":"@Ryan: just curious, does SELinux work well at Ubuntu (all Docker security examples use apparmor)?","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"da88c58c063c3d671d4d1e5566ddf629b972f868","unresolved":false,"context_lines":[{"line_number":120,"context_line":"---------------"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible and use"},{"line_number":123,"context_line":"SELinux to make sure someone cannot break out of a container."},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Performance Impact"},{"line_number":126,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_913b7c9c","line":123,"range":{"start_line":123,"start_character":0,"end_line":123,"end_character":7},"in_reply_to":"1a122d0e_ff3f86dc","updated":"2016-05-05 20:43:11.000000000","message":"Apparmor. There was a comment about this in the last review and I forgot to change it. I\u0027ll fix it on the next iteration.","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"41015757411435d7c726a9864e86653ff4f55fd0","unresolved":false,"context_lines":[{"line_number":160,"context_line":"  Rajath Agasthya (rajathagasthya)"},{"line_number":161,"context_line":"  Rob Mason"},{"line_number":162,"context_line":"  sean mooney (sean-k-mooney)"},{"line_number":163,"context_line":"  Sidharth Surana (ssurana)"},{"line_number":164,"context_line":"  Zdenek Janda (xdeu)"},{"line_number":165,"context_line":"  \u003cPlease add your name here if you are getting involved in Kolla-Kubernetes\u003e"},{"line_number":166,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a122d0e_7373b716","line":163,"updated":"2016-05-05 15:04:20.000000000","message":"Serguei Bezverkhi (sbezverk)\n\nForgot to add Serguei.  Will add him in if there is another revision.","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"057d36b7deee12b2598eae754a3d47bb645a8e30","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Work Items"},{"line_number":174,"context_line":"----------"},{"line_number":175,"context_line":"1. Create Kolla-Kubernetes repo"},{"line_number":176,"context_line":"2. Build yaml files for each service"},{"line_number":177,"context_line":"3. Orchestration tools"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":8,"id":"1a122d0e_886d7534","line":176,"updated":"2016-05-05 19:18:22.000000000","message":"Are we going to support different types of image for the same service? (centos, ubuntu, source..)","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"da88c58c063c3d671d4d1e5566ddf629b972f868","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Work Items"},{"line_number":174,"context_line":"----------"},{"line_number":175,"context_line":"1. Create Kolla-Kubernetes repo"},{"line_number":176,"context_line":"2. Build yaml files for each service"},{"line_number":177,"context_line":"3. Orchestration tools"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":8,"id":"dab17558_91d41c48","line":176,"in_reply_to":"1a122d0e_886d7534","updated":"2016-05-05 20:43:11.000000000","message":"yes","commit_id":"b5959759bc299b87b896e83c0f048a32b9579505"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"be81275ad481b0e01777a9a25801b6dab077d88c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Alternativly, we can add a bootstrap container to every pod that will do the"},{"line_number":72,"context_line":"bootstrap and exit.  This would couple together the bootstrapping process with"},{"line_number":73,"context_line":"each pod and be more Kubernetes like [8]."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Dependencies"},{"line_number":76,"context_line":"------------"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_20acf4ec","line":74,"updated":"2016-05-05 23:15:29.000000000","message":"If we\u0027re going to mention this here, we should mention the drawbacks with the approach listed in the other review. Or move the section to an Alternatives section.\n\nI don\u0027t think doing jobs \u0026 deployments are unkubernetes like. To me, it seems to have been built with the idea that some external tool would drive job/deployment creation and image version selection for upgrades. Way too much is hardcoded in the typical kubernetes template, so thats really the only way to manage it at any scale. The ordering of submitting those jobs/deployments should be all we need to create a proper cluster instead of launching everything at once and hoping things eventually converge into something useful.","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"1a47c3ec444c8208de80bc4a22f05c8998a4545c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Alternativly, we can add a bootstrap container to every pod that will do the"},{"line_number":72,"context_line":"bootstrap and exit.  This would couple together the bootstrapping process with"},{"line_number":73,"context_line":"each pod and be more Kubernetes like [8]."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Dependencies"},{"line_number":76,"context_line":"------------"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_8cf696d5","line":74,"in_reply_to":"dab17558_090e3434","updated":"2016-05-06 17:10:39.000000000","message":"Yeah, thats my concern. As an op, the control isn\u0027t fine grained enough and may bite us. Can we get that written up somewhere?\n\nThanks for the link. I think that helps clear up that use case a little bit. I think this is a good tool for some things but not for others.\n\nThis init in pod thing looks to be quite useful for init\u0027ing volumes that haven\u0027t been inited before. So, like, ensure a fresh db volume is available for a local mysql cluster node if it hasn\u0027t had one before on the same host.\n\nI don\u0027t think it is well suited to initing sql databases with initial schema/entries though or performing schema migrations. I think k8s jobs are much better for that case.\n\nSo, yeah, I think we should consider using init pods but carefully consider on a case by case basis which technology should be used for each type of init task. job or podinit.","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"81b37577149a38b8e41a380604d18a0bb740d3a3","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Alternativly, we can add a bootstrap container to every pod that will do the"},{"line_number":72,"context_line":"bootstrap and exit.  This would couple together the bootstrapping process with"},{"line_number":73,"context_line":"each pod and be more Kubernetes like [8]."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Dependencies"},{"line_number":76,"context_line":"------------"},{"line_number":77,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_090e3434","line":74,"in_reply_to":"dab17558_20acf4ec","updated":"2016-05-06 04:16:23.000000000","message":"@Kevin, I fully understand your concern here. Putting bootstrap container inside pod, is kind of making operator feel less control over their cluster.\n\nBut it is also a true pattern other Kubernetes users talking about[1]. Also init container support is now targeting Kubernetes 1.3 release.\n\nI just want it to be mentioned here so that we don\u0027t close the door too early for alternative way of doing things.\n\n[1] https://github.com/kubernetes/kubernetes/issues/1589\n[2] https://github.com/kubernetes/kubernetes/pull/23567","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"be81275ad481b0e01777a9a25801b6dab077d88c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"over time."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Dependencies can be handled at the orchestration level, but aren\u0027t necessary."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Upgrades"},{"line_number":85,"context_line":"--------"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_80c84076","line":83,"updated":"2016-05-05 23:15:29.000000000","message":"I pretty much agree, outside the initial bootstrapping of a service.\n\nI think it would be much better to have the bootstrapping procedure be serial (or semiparallel) and a separate activity then starting back up an existing cloud. The serial process just submits jobs/deployments via kubectl/the k8s api until the bootstrapping is done, then adds all the remaining deployments.\n\nThis could allow you to skip bootstrapping steps too.\n\nFor example, I have an existing cloud. I\u0027ve already bootstrapped everything. I may want to install kubernetes on all the controller nodes, disable nova-api locally, then skip the bootstrap part for nova and just have it deploy the Deployment for nova-api. I\u0027ve then switched out a piece of my cloud to Kolla. If I do that enough times, I can get my whole cloud to Kolla without loosing things.","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"81b37577149a38b8e41a380604d18a0bb740d3a3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"over time."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Dependencies can be handled at the orchestration level, but aren\u0027t necessary."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Upgrades"},{"line_number":85,"context_line":"--------"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_8e7eaaac","line":83,"in_reply_to":"dab17558_80c84076","updated":"2016-05-06 04:16:23.000000000","message":"Migration of existing cloud is a great example.\n\nFor \"bootstrap container inside Pod\" approach, it\u0027s also possible by passing different env variables (idea similar to how KOLLA_BOOTSTRAP changes the behavior of bootstrap container)","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"1a47c3ec444c8208de80bc4a22f05c8998a4545c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"over time."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Dependencies can be handled at the orchestration level, but aren\u0027t necessary."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Upgrades"},{"line_number":85,"context_line":"--------"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_8cc7b644","line":83,"in_reply_to":"dab17558_8e7eaaac","updated":"2016-05-06 17:10:39.000000000","message":"yeah, that might work, or a flag to whatever\u0027s generating the templates to just skip adding the init containers as needed?\n\nI still think the bits that I\u0027m concerned about (cloud state things: db schema, keystone users, endpoint registration) are probably best handled with jobs. The other init tasks probably could/should be init containers, since those seem to be more about initing the host the pod is to be run on or initing the pod, not initing the greater system the pod is a part of.","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"be81275ad481b0e01777a9a25801b6dab077d88c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"},{"line_number":100,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_8076803c","line":97,"updated":"2016-05-05 23:15:29.000000000","message":"all the containers or the relevant ones? I\u0027m comfortable restarting neutron-server say, but not openvswitch-agent/l3-agent usually. We may have to carefully separate configmaps out so its easy to know which services will get restarted, potentially causing things like network outages to vm\u0027s.","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"be81275ad481b0e01777a9a25801b6dab077d88c","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":120,"context_line":"different storage offerings to provide persistent storage."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Security impact"},{"line_number":123,"context_line":"---------------"},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_00e730e5","line":121,"updated":"2016-05-05 23:15:29.000000000","message":"Should we talk about this one more in this spec or elsewhere? It almost seems like a chicken and the egg problem. \"Do you need cinder deployed to give you persistent volumes so you can deploy a database with Kubernetes for subsequently deploying Cinder?\" :)\n\nMaybe cephfs might work for this use case...","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"be81275ad481b0e01777a9a25801b6dab077d88c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"Add a quick start guide, which explains how to deploy Kolla-Kubernetes."},{"line_number":195,"context_line":"Add a developer guide on how to contribute which also explains how the"},{"line_number":196,"context_line":"deployment works."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"References"},{"line_number":200,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_c07888fb","line":197,"updated":"2016-05-05 23:15:29.000000000","message":"An operator guide will be created with a minimum of:\n * Base requirements of a Kubernetes system (extra volume plugins, etc) that are needed to properly deploy Kolla-Kubernetes\n * Procedures for safely recovering your Cloud after power failure.\n * A list of things needing backups for disaster recovery.","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"81b37577149a38b8e41a380604d18a0bb740d3a3","unresolved":false,"context_lines":[{"line_number":215,"context_line":"- [14] http://kubernetes.io/docs/user-guide/volumes/"},{"line_number":216,"context_line":"- [15] https://review.openstack.org/#/admin/groups/460,members"},{"line_number":217,"context_line":"- [16] https://etherpad.openstack.org/p/kolla-newton-summit-kolla-gate-walkthru"},{"line_number":218,"context_line":"- https://github.com/kubernetes/kubernetes"}],"source_content_type":"text/x-rst","patch_set":9,"id":"dab17558_c92a6c7e","line":218,"updated":"2016-05-06 04:16:23.000000000","message":"number is missing here after patchset v9 version","commit_id":"628d8f0510899d44cdf97e06bec586e9510eb9e9"},{"author":{"_account_id":13642,"name":"Vikram Hosakote","email":"vikram.ganesh@gmail.com","username":"vhosakot"},"change_message_id":"7956c18f868dc1739223987249af0fbf71aac928","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Deploy Kolla images with Kubernetes"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/kolla/+spec/kolla-kubernetes"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Kubernetes was evaluated by the Kolla team in the first two months of the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_78e95e1a","line":4,"updated":"2016-05-07 03:34:13.000000000","message":"This looks great Ryan!  Some comments.\n\n\nCan you add a section about \"Use cases\".\n\n\nhttps://github.com/openstack/neutron-specs/blame/master/specs/newton/vlan-aware-vms.rst#L33\n\n\nUses cases:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n* Use kubernestes underlay for OpenStack.\n* Use container scheduling algorithm provided by kubernetes.\n* Use kubernetes primitives for health checking and replicating apps in the cloud.\n* Use CoreOS as the host OS.\netc\n\n\nCan you add a section about \"Community Impact\" and describe how Kolla-Kubernetes affects the OpenStack community.\n\n\nhttps://github.com/openstack/neutron-specs/blame/master/specs/newton/routed-networks.rst#L406-L412\n\n\nWe might be asked about IPv6 in Kolla-Kubernetes.  Can you add a section \"IPv6 Impact\" and describe about IPv6 in Kolla-Kubernetes.\n\n\nhttps://github.com/openstack/neutron-specs/blame/master/specs/newton/routed-networks.rst#L367-L370\n\n\nLooks like kubernetes does not support IPv6 yet due to Docker v6 issues:\n\n\nhttps://github.com/kubernetes/kubernetes/blame/master/docs/design/networking.md#L208-L216","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"91cd3c811fef0ccd2289eee142ebff8daba5032a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Deploy Kolla images with Kubernetes"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/kolla/+spec/kolla-kubernetes"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Kubernetes was evaluated by the Kolla team in the first two months of the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_efe0c2fc","line":4,"in_reply_to":"dab17558_78e95e1a","updated":"2016-05-10 11:40:48.000000000","message":"I\u0027ll add \u0027use cases\u0027.  I think IPV6 is a topic a little but down the road.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":50,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":51,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":52,"context_line":"any tool to generate configs. But, because Kolla-Kubernetes wants to reuse"},{"line_number":53,"context_line":"existing work, the community will use customized ansible and jinja2 templates"},{"line_number":54,"context_line":"to generate the config. The config files will be injected into the kubernetes"},{"line_number":55,"context_line":"configmap and loaded into the containers. The containers will pick up the"},{"line_number":56,"context_line":"configs when they are launched and run with them [5][6]."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_ec6c829e","line":53,"updated":"2016-05-06 17:28:47.000000000","message":"I think you should reference an example when you talk about the customized ansible and inja2 template.  A link I would use is:\nhttps://github.com/openstack/kolla/tree/master/ansible/roles/keystone/templates\n\nThis may require installing kolla alongside kolla-kubernete so we don\u0027t have to maintain these files in two places which would be problematic.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":54,"context_line":"to generate the config. The config files will be injected into the kubernetes"},{"line_number":55,"context_line":"configmap and loaded into the containers. The containers will pick up the"},{"line_number":56,"context_line":"configs when they are launched and run with them [5][6]."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Bootstrapping"},{"line_number":59,"context_line":"-------------"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_accefa80","line":57,"updated":"2016-05-06 17:28:47.000000000","message":"I\u0027d like to see some mention of reading globals.yml and all.yml to produce a list of default config values with their customization.  This customization can then parse the pod.yaml.j2 (and friends) and produce what is ultimately used in the config map.  a reconfigure is simply running this operation again and reloading the config map (with later versions of kubernetes where this configmap feature is promised iiuc).  It may even be a different section entirely.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Each service will have a bootstrap task so that when we upgrade, we can re-use"},{"line_number":68,"context_line":"the bootstrap tasks to upgrade the database.  This will allow deployment and"},{"line_number":69,"context_line":"upgrades to follow the same pipeline."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternativly, we can add a bootstrap container to every pod that will do the"},{"line_number":72,"context_line":"bootstrap and exit.  This would couple together the bootstrapping process with"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_ecc48241","line":69,"updated":"2016-05-06 17:28:47.000000000","message":"approach sounds good.  Why have an alternate in the spec?  I think its just confusing.  Lets stick with one approach until we find it unworkable and then figure out next steps from there.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":19300,"name":"Eric Lemoine","email":"elemoine@mirantis.com","username":"elemoine"},"change_message_id":"06700b5ea30779ca1f40b2998b59793fad3871f4","unresolved":false,"context_lines":[{"line_number":68,"context_line":"the bootstrap tasks to upgrade the database.  This will allow deployment and"},{"line_number":69,"context_line":"upgrades to follow the same pipeline."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternativly, we can add a bootstrap container to every pod that will do the"},{"line_number":72,"context_line":"bootstrap and exit.  This would couple together the bootstrapping process with"},{"line_number":73,"context_line":"each pod and be more Kubernetes like [8]."},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_485af184","line":71,"updated":"2016-05-06 10:20:50.000000000","message":"s/Alternativly/Alternatively","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"913642fbaefe11a9692c0372f02905a0c02512ab","unresolved":false,"context_lines":[{"line_number":68,"context_line":"the bootstrap tasks to upgrade the database.  This will allow deployment and"},{"line_number":69,"context_line":"upgrades to follow the same pipeline."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternativly, we can add a bootstrap container to every pod that will do the"},{"line_number":72,"context_line":"bootstrap and exit.  This would couple together the bootstrapping process with"},{"line_number":73,"context_line":"each pod and be more Kubernetes like [8]."},{"line_number":74,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_1c182684","line":71,"in_reply_to":"dab17558_485af184","updated":"2016-05-06 13:06:12.000000000","message":"Done","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternativly, we can add a bootstrap container to every pod that will do the"},{"line_number":72,"context_line":"bootstrap and exit.  This would couple together the bootstrapping process with"},{"line_number":73,"context_line":"each pod and be more Kubernetes like [8]."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Dependencies"},{"line_number":76,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_ecf2c299","line":73,"updated":"2016-05-06 17:28:47.000000000","message":"does the bootstrap only run once?  Is that a kubernetes new feature since 1.0?  prior to 1.0, no such thing existed.  I don\u0027t want to rely on checking if the database has been created to create it.  This was, as we found with kolla juno and prior a little flakey.  It worked 19 out of 20 times, which gave a warm fuzzy but was hardly production ready ;)\n\nI\u0027d suggest just removing this entire section.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"c1862f89c2fac411d2f9a037983cedf8e9f2787f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Alternativly, we can add a bootstrap container to every pod that will do the"},{"line_number":72,"context_line":"bootstrap and exit.  This would couple together the bootstrapping process with"},{"line_number":73,"context_line":"each pod and be more Kubernetes like [8]."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Dependencies"},{"line_number":76,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_efad9489","line":73,"in_reply_to":"dab17558_ecf2c299","updated":"2016-05-06 17:59:59.000000000","message":"The feature may be added to 1.3. Its not fully baked yet.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":75,"context_line":"Dependencies"},{"line_number":76,"context_line":"------------"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Kubernetes does not have dependencies.  The operator will launch all the"},{"line_number":79,"context_line":"services and use kubernetes health checks to stabilize the deployment"},{"line_number":80,"context_line":"over time."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_0c1746a4","line":78,"updated":"2016-05-06 17:28:47.000000000","message":"the dependencies we use should go in this section.  Kubernetes is only one of them.  Others I see are docker and jinja2.  We may also end up with a dependency on kolla itself to pull in the default configuration.\n\nVersion numbers of minimum deps would be helpful\njinja2.8, docker.1.10, k8s1.3","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":19384,"name":"Serguei Bezverkhi","email":"sbezverk@cisco.com","username":"sbezverk"},"change_message_id":"ca39d17e7bb7cac048b7404abfdfb929edf3d4cc","unresolved":false,"context_lines":[{"line_number":88,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":89,"context_line":"desired state when a change is detected."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Reconfigure"},{"line_number":92,"context_line":"-----------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_a13a93cb","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":11},"updated":"2016-05-06 11:35:56.000000000","message":"After reading documentation about configmap, I have doubt that it is a suitable mechanism when reconfiguration is required. I could not find any commands which will let updating existing configmap, it seems the only way then would be to destroy configmap and to re-create it with new configuration files. In this case container must be restarted to pick up new change. As an alternative approach I would like to suggest to use a tiny iSCSI volume, which is supported by Kubernetes, persistent and accessible by others. Others (reconfiguration in whichever form you want to see it), access iSCSI config drive, change configuration and trigger container process to re-read it. Just an idea :-)","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":88,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":89,"context_line":"desired state when a change is detected."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Reconfigure"},{"line_number":92,"context_line":"-----------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_cc741eff","line":91,"in_reply_to":"dab17558_6d237a06","updated":"2016-05-06 17:28:47.000000000","message":"lets get these two issues linked in the spec so we can get people working on them upstream to know they are issues for our implementation.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":19300,"name":"Eric Lemoine","email":"elemoine@mirantis.com","username":"elemoine"},"change_message_id":"e3217b7b2fc9f7a7ac2050bf08c5b39b0ea1ee74","unresolved":false,"context_lines":[{"line_number":88,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":89,"context_line":"desired state when a change is detected."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Reconfigure"},{"line_number":92,"context_line":"-----------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_6d237a06","line":91,"in_reply_to":"dab17558_7c8692ba","updated":"2016-05-06 13:58:12.000000000","message":"Yes, https://github.com/kubernetes/kubernetes/issues/24957 is also closely related.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"768f34d2553d51f10fb0704ccd2b397ae54f00cc","unresolved":false,"context_lines":[{"line_number":88,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":89,"context_line":"desired state when a change is detected."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Reconfigure"},{"line_number":92,"context_line":"-----------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_167e39e4","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":11},"in_reply_to":"dab17558_a13a93cb","updated":"2016-05-06 16:23:06.000000000","message":"@Serguei: I belive kubectl apply/replace apply to any resource include ConfigMap.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"913642fbaefe11a9692c0372f02905a0c02512ab","unresolved":false,"context_lines":[{"line_number":88,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":89,"context_line":"desired state when a change is detected."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Reconfigure"},{"line_number":92,"context_line":"-----------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_7c8692ba","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":11},"in_reply_to":"dab17558_a13a93cb","updated":"2016-05-06 13:06:12.000000000","message":"At the fishbowl for kolla-kubernetes, someone from kubernetes mentioned that this feature is not implemented yet, but is on the roadmap. \n\nhttps://github.com/kubernetes/kubernetes/issues/18372","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":88,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":89,"context_line":"desired state when a change is detected."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Reconfigure"},{"line_number":92,"context_line":"-----------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_0c7e26e4","line":91,"range":{"start_line":91,"start_character":0,"end_line":91,"end_character":11},"in_reply_to":"dab17558_a13a93cb","updated":"2016-05-06 17:28:47.000000000","message":"groan on idea of iscsi volume :(","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":19300,"name":"Eric Lemoine","email":"elemoine@mirantis.com","username":"elemoine"},"change_message_id":"06700b5ea30779ca1f40b2998b59793fad3871f4","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_d4bafcbf","line":96,"updated":"2016-05-06 10:20:50.000000000","message":"As I understand it Kubernetes/ConfigMap won\u0027t restart or SIGHUP the service after a configuration update. Do we already have ideas on how the \"re-read configuration\" action will be triggered?","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_ccf9be4f","line":96,"in_reply_to":"dab17558_13bad023","updated":"2016-05-06 17:28:47.000000000","message":"I\u0027d really prefer the deployment of kubernetes for the moment to be handled by the \"saltstack 2.0\" effort to make a deployment tool for kubernetes from bare metal PXE booting -\u003e full kubernetes cluster.  That way we don\u0027t have to duplicate that work and SMEs can focus on that area.\n\nThat said, we will be responsible for orchestrating the orchestrator :) (something about turtles comes to mind...).\n\nWe can do this with python or ansible or even shell.  I htink we can leave it open in the implementation.  I don\u0027t want to force people to use Ansible if they think Kubernetes is the right answer until this saltstack 2.0 effort finishes and we can integrate our work with that.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"9139d3e88ac1247d5376f99426ff0a36f3806c90","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_13bad023","line":96,"in_reply_to":"dab17558_4d63151b","updated":"2016-05-06 14:38:05.000000000","message":"Since kolla already has an ansible deployment mechanism it\u0027s likely the community will also use it here.  But, it\u0027s not the only way to orchestrate kubernetes. Other projects may have other orchestration tools which are welcome here.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":19300,"name":"Eric Lemoine","email":"elemoine@mirantis.com","username":"elemoine"},"change_message_id":"e3217b7b2fc9f7a7ac2050bf08c5b39b0ea1ee74","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_4d63151b","line":96,"in_reply_to":"dab17558_52357744","updated":"2016-05-06 13:58:12.000000000","message":"Yes.\n\nSpeaking of Ansible, will Ansible be used to orchestrate the creation of Kubernetes objects (services, replicasets, etc.)? It sounds like Ansible provides a module for exactly this [*].\n\n[*] \u003chttp://docs.ansible.com/ansible/kubernetes_module.html\u003e","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"c1862f89c2fac411d2f9a037983cedf8e9f2787f","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_ef4e34c0","line":96,"in_reply_to":"dab17558_6c441274","updated":"2016-05-06 17:59:59.000000000","message":"Ah... I was kind of assuming there would be several config maps, one per Deployment or OpenStack Service type (neutron, glance, etc) to kind of match up with openstack config files. But if stuff like passwords were stored in SecretVolumes instead of config maps, maybe one config map to rule them all probably would be just fine?","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_6c441274","line":96,"in_reply_to":"dab17558_79fe966c","updated":"2016-05-06 17:28:47.000000000","message":"Kevin,\n\nGood idea, but we definately want one version # for ALL the containers, and not a mixmash of version numbers.  The only use case I have heard that even makes sense for separate version numbers of containers is to (e.g. deploy Mitaka version of Keystone with Liberty versions of other containers).  This can already be done in Ansible by modifying the  globals.yaml file (but its undocumented) or alternately building the keystone mitaka container with the tag 1.1.0.\n\nWe really only want one version number for all containers imo and I\u0027d like it stated in the spec so people don\u0027t go wild with things that become unmaintainable from the CR team\u0027s perspectives of either repo.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"e96e4da75cd5c92888e5a2c796173a04462b3e6b","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_79fe966c","line":96,"in_reply_to":"dab17558_b65e4d43","updated":"2016-05-06 16:56:41.000000000","message":"Until Kubernetes has better support for the use case, what about just adding a version number into the config map name, incrementing it on change, and then updating the deployments to point to the new number? the Deployment rolling upgrade procedure should then kick in and deal with restarting all the containers safely.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"c1862f89c2fac411d2f9a037983cedf8e9f2787f","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_af026c3c","line":96,"in_reply_to":"dab17558_ccf9be4f","updated":"2016-05-06 17:59:59.000000000","message":"+1. That gives TripeO a place to work too. they can provide bare metal and maybe k8s deployment. Then we take it from there.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"a7cc2f6f29a1ba318102529534ff414f7575eb85","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_b65e4d43","line":96,"in_reply_to":"dab17558_d4bafcbf","updated":"2016-05-06 16:27:36.000000000","message":"@Eric: you can always add container to the pod which will monitor file and restart service/container","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"913642fbaefe11a9692c0372f02905a0c02512ab","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":95,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":96,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"HA Architecture"},{"line_number":99,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_52357744","line":96,"in_reply_to":"dab17558_d4bafcbf","updated":"2016-05-06 13:06:12.000000000","message":"same comment as above.\n\nAnsible could be the backup plan, but they plan on making this a feature.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":113,"context_line":"------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Kubernetes has many types of persistent storage [14]. Since Kubernetes doesn\u0027t"},{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_ac0c3a43","line":116,"updated":"2016-05-06 17:28:47.000000000","message":"I have heard over and over strong customer requirements for this use case (controllers should be co-located, compute should be on one node and not mixed with other workloads).  Is locking a set of pods to a specific kube node not achievable?  If not, we need an upstream issue tracked for that bug to make our case in and linked in this review.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"c1862f89c2fac411d2f9a037983cedf8e9f2787f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"------------------"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Kubernetes has many types of persistent storage [14]. Since Kubernetes doesn\u0027t"},{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_0a91e699","line":116,"in_reply_to":"dab17558_ac0c3a43","updated":"2016-05-06 17:59:59.000000000","message":"Slightly more tricky then that... so, the pieces:\n * k8s nodes can be labeled. say, kolla_node_type\u003dcontroller/compute\n * k8s nodes can be labled at a hostname like level. kolla_host\u003dcontroller1\n\nYou could ensure a pod lands on a specific controller by selecting the host specifically. But then you really can\u0027t use Deployments or any of the nice features like rolling upgrades and such.\n\nInstead, you can target a Controller Deployment to the label kolla_node_type\u003dcontroller to keep them away from the computes. It buys you rolling upgrades and such but you can\u0027t easily choose where one lands then. This is where the Persistance layer comes in. If a node fails, it can move the pod to one of the other nodes automatically.\n\nThere are very very few services that really need to persist their data though. Mostly just mysql I think, so maybe just skipping Deployments for that service might be good enough? If not, the next best bet is to build up a small ceph on the kolla_node_type\u003dcontroller nodes and then persist the mysql volumes there. Then they can move around automatically. Since each controller\u0027s the same as the rest, it should be pretty fault tolerant then. There will be a performance hit doing that though.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":21307,"name":"Brandon B. Jozsa","email":"bjozsa@jinkit.com","username":"v1k0d3n"},"change_message_id":"1d81efdab00b2c507ed3657742f253389548bfa6","unresolved":false,"context_lines":[{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":120,"context_line":"different storage offerings to provide persistent storage."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_6dceda5b","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":18},"updated":"2016-05-06 13:25:58.000000000","message":"I think storage can be tricky. (Someone mentioned chicken egg). We may be able to solve this by letting the operator choose their existing Ceph storage if they already have it (and ansible --skip-tags for build-ceph roles) or allow them to build out a Ceph cluster first, taking roles from the Ceph-Ansible container build repo. Something like this would allow for a flexible deployment, but also allow pre-checks for common storage to ensure a successful build. Once we have one common storage solution like Ceph, we can add others for the operators based on what the community wants.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"c1862f89c2fac411d2f9a037983cedf8e9f2787f","unresolved":false,"context_lines":[{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":120,"context_line":"different storage offerings to provide persistent storage."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_eabbc20c","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":18},"in_reply_to":"dab17558_2f4ddc72","updated":"2016-05-06 17:59:59.000000000","message":"That would work too. But it would be nice to use kolla-k8s to deploy it if it is reasonable to do so. That way an op doesn\u0027t have to learn two different toolchains.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"9139d3e88ac1247d5376f99426ff0a36f3806c90","unresolved":false,"context_lines":[{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":120,"context_line":"different storage offerings to provide persistent storage."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_b31dc411","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":18},"in_reply_to":"dab17558_6dceda5b","updated":"2016-05-06 14:38:05.000000000","message":"Right, there\u0027s a lot of flexibility here.  There are also many ways this could be orchestrated. \n\nIdeally the community should decouple this so that there is plenty of room for choice.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"e96e4da75cd5c92888e5a2c796173a04462b3e6b","unresolved":false,"context_lines":[{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":120,"context_line":"different storage offerings to provide persistent storage."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_b902be3c","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":18},"in_reply_to":"dab17558_b31dc411","updated":"2016-05-06 16:56:41.000000000","message":"+1 to supporting existing storage on k8s clusters.\n\nBut, in the vain of Kolla providing a batteries included solution to make things easier, what can we do to provide a default solution that would work if the base k8s has no persistence?\n\nI haven\u0027t played with persistence yet. Does the K8s deployer have to configure it, or is it entirely up to the k8s user?\n\nIf the latter, we should be able to use k8s to deploy the persistence layer. maybe we just provide some Deployments for deploying a 3 node ceph on the controller nodes, just for controller state persistence, and then if the user wants to deploy a separate ceph for actual storage for the cloud, that would be a second ceph deployment?","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":120,"context_line":"different storage offerings to provide persistent storage."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_2f4ddc72","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":18},"in_reply_to":"dab17558_b902be3c","updated":"2016-05-06 17:28:47.000000000","message":"kevin,\n\nRyna\u0027s proposal was to use ansible to deploy our ceph containers on bare metal (IIUC) and use ceph as our persistent storage driver with k8s.  An operator of course would be free to change this default, but we should probably make a case in the spec for how the default will operate.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"dfd63deb2b2e22dc9176246f1ac586f7ff02a50e","unresolved":false,"context_lines":[{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":120,"context_line":"different storage offerings to provide persistent storage."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_fbff1532","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":18},"in_reply_to":"dab17558_eabbc20c","updated":"2016-05-06 19:55:53.000000000","message":"I\u0027m indifferent to what actually does any of the orchestration as long as the community documents all the solutions and maintains them.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"61f20ef204f54553ae4bf1df4ae153f7cf023ee0","unresolved":false,"context_lines":[{"line_number":116,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":117,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":120,"context_line":"different storage offerings to provide persistent storage."},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_ec262bb9","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":18},"in_reply_to":"dab17558_fbff1532","updated":"2016-05-07 14:31:17.000000000","message":"It looks like whether k8s needs to be preconfigured or not varies per volume plugin.\n\nThe good news is, the rbd volume plugin seems to be configurable completely in the pod:\nhttps://github.com/kubernetes/kubernetes/blob/release-1.2/examples/rbd/rbd-with-secret.json\n\nSo launching kolla-k8s on a k8s cluster with no volume support preconfigured should work. The config for talking to ceph could be done entirely per Deployment or Pod and launching a ceph cluster on k8s should be possible.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":21307,"name":"Brandon B. Jozsa","email":"bjozsa@jinkit.com","username":"v1k0d3n"},"change_message_id":"52b18d4c7c6f552cf83b374d0af971efb0451200","unresolved":false,"context_lines":[{"line_number":123,"context_line":"---------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible."},{"line_number":126,"context_line":"SELinux or AppArmor will be in place to make sure if someone breaks out of a"},{"line_number":127,"context_line":"container, their ability to do damage is limited."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_52445773","line":126,"range":{"start_line":126,"start_character":0,"end_line":126,"end_character":19},"updated":"2016-05-06 13:14:19.000000000","message":"Can I suggest we handle security similar to the way that Openstack-Ansible does? This way we can maintain a separate repository for STIG and CIS best practices that can be applied as the the operator sees fit for their organization: https://github.com/openstack/openstack-ansible-security","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"9139d3e88ac1247d5376f99426ff0a36f3806c90","unresolved":false,"context_lines":[{"line_number":123,"context_line":"---------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible."},{"line_number":126,"context_line":"SELinux or AppArmor will be in place to make sure if someone breaks out of a"},{"line_number":127,"context_line":"container, their ability to do damage is limited."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_735fdc72","line":126,"range":{"start_line":126,"start_character":0,"end_line":126,"end_character":19},"in_reply_to":"dab17558_52445773","updated":"2016-05-06 14:38:05.000000000","message":"Interesting idea.  Ideally, security would be built into the containers because they can be consumed by other projects, but if there is a desire to handle security as a separate repo I think it would be a neat idea.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":123,"context_line":"---------------"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible."},{"line_number":126,"context_line":"SELinux or AppArmor will be in place to make sure if someone breaks out of a"},{"line_number":127,"context_line":"container, their ability to do damage is limited."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_0f873862","line":126,"range":{"start_line":126,"start_character":0,"end_line":126,"end_character":19},"in_reply_to":"dab17558_735fdc72","updated":"2016-05-06 17:28:47.000000000","message":"groan to more repos.  +2 to working together on common strategies for securing OpenStack and container workloads.  I do agree though, that security should be built-in as we do today with drop-root and our other security mechanisms in place (including the future work of dropping all unnecessary capabilities).\n\nBTW, please add something about the cap drop work and determine if capabilities may be set per pod currently in k8s or if this will be an ansible-only feature.","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":180,"context_line":"----------"},{"line_number":181,"context_line":"1. Create Kolla-Kubernetes repo"},{"line_number":182,"context_line":"2. Build yaml files for each service"},{"line_number":183,"context_line":"3. Orchestration tools"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Testing"},{"line_number":186,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_8fda0877","line":183,"updated":"2016-05-06 17:28:47.000000000","message":"create globals.yaml python parser that translates jinja2 yaml files for k8s into usable globals.yaml files.\n\nNeed m0ar work items to distribute the load of  development (to create blueprints mainly).  Please add them here if you got em ;)\nRyan invite poeple to add their work items to the spec by adding a specific line \n\n\u003cPlease add your work items to the review so they may be integrated into the specification\u003e","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"39132ad9d1c8978878384b6a037ec7d5df5dcc32","unresolved":false,"context_lines":[{"line_number":195,"context_line":"Add a quick start guide, which explains how to deploy Kolla-Kubernetes."},{"line_number":196,"context_line":"Add a developer guide on how to contribute which also explains how the"},{"line_number":197,"context_line":"deployment works."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"References"},{"line_number":201,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_cfbb700d","line":198,"updated":"2016-05-06 17:28:47.000000000","message":"Are we going to take an AIO approach first and then focus on multinode second?  I think this makes the most sense so we don\u0027t overcomplicate what is already a complicated thing :)","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"c1862f89c2fac411d2f9a037983cedf8e9f2787f","unresolved":false,"context_lines":[{"line_number":195,"context_line":"Add a quick start guide, which explains how to deploy Kolla-Kubernetes."},{"line_number":196,"context_line":"Add a developer guide on how to contribute which also explains how the"},{"line_number":197,"context_line":"deployment works."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"References"},{"line_number":201,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":10,"id":"dab17558_caf99eca","line":198,"in_reply_to":"dab17558_cfbb700d","updated":"2016-05-06 17:59:59.000000000","message":"Are AIO and multinode really much different when k8s is involved? Its intended to hide most of that stuff.\n\nPlease add my ops documentation comment from the other review (9 I think?).","commit_id":"c5e396d006f8344a1855058e01031b6f68593795"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Deploy Kolla images with Kubernetes"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/kolla/+spec/kolla-kubernetes"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_59dd570d","line":3,"updated":"2016-05-09 15:12:39.000000000","message":"specs should be written in the present tense and be pronoun free.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Deploy Kolla images with Kubernetes"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/kolla/+spec/kolla-kubernetes"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_82961fee","line":3,"in_reply_to":"dab17558_59dd570d","updated":"2016-05-10 11:40:43.000000000","message":"Agree with pronoun free.  I think it should be future tense since there is no code.  Present tense for Kubernetes related stuff that already exists.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9927,"name":"Britt Houser","email":"bhouser@cisco.com","username":"britthouser"},"change_message_id":"5834cb1f125a2c6bd8044615205d88c9313642e7","unresolved":false,"context_lines":[{"line_number":14,"context_line":"into Kubernetes to configure the services. Therefore, there will be community"},{"line_number":15,"context_line":"overlap between kolla and Kolla-Kubernetes even though they will be in"},{"line_number":16,"context_line":"separate repos."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_59c0b77b","line":17,"updated":"2016-05-09 15:17:27.000000000","message":"Do we want to add a statement here, or maybe under \"Proposed Change\" that states the end state of a deployment using either ansible or kubernetes should be the same (or as close to the same as possible)?","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":14,"context_line":"into Kubernetes to configure the services. Therefore, there will be community"},{"line_number":15,"context_line":"overlap between kolla and Kolla-Kubernetes even though they will be in"},{"line_number":16,"context_line":"separate repos."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Problem description"},{"line_number":20,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_2255b31c","line":17,"in_reply_to":"dab17558_59c0b77b","updated":"2016-05-10 11:40:43.000000000","message":"Sure.  I would describe the aim for both as \u0027production ready\u0027, which I will add.  Good point.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"scheduler and node affinity trait to assign work loads to appropriate nodes [2]."},{"line_number":30,"context_line":"Kubernetes also has built in health checks that monitors a container\u0027s status."},{"line_number":31,"context_line":"Finally, Kolla-Kubernetes can use the replication controller to scale up and"},{"line_number":32,"context_line":"down our stack [3]."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"For upgrades, Kubernetes has an object called \u0027deployments\u0027[4], which detects"},{"line_number":35,"context_line":"when a pod needs to change. It starts to scale down the current running"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_6e996f1f","line":32,"updated":"2016-05-09 15:12:39.000000000","message":"pronouns are evil :) please s ay \"Kolla\u0027s stack\"","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":29,"context_line":"scheduler and node affinity trait to assign work loads to appropriate nodes [2]."},{"line_number":30,"context_line":"Kubernetes also has built in health checks that monitors a container\u0027s status."},{"line_number":31,"context_line":"Finally, Kolla-Kubernetes can use the replication controller to scale up and"},{"line_number":32,"context_line":"down our stack [3]."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"For upgrades, Kubernetes has an object called \u0027deployments\u0027[4], which detects"},{"line_number":35,"context_line":"when a pod needs to change. It starts to scale down the current running"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_ba2431af","line":32,"in_reply_to":"dab17558_6e996f1f","updated":"2016-05-10 11:40:43.000000000","message":"Done","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"- Solution for HA around containers."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) under the kolla to"},{"line_number":51,"context_line":"  governance that contains the Kubernetes deployment code."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_4e83cb98","line":48,"updated":"2016-05-09 15:12:39.000000000","message":"perfect!","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) under the kolla to"},{"line_number":51,"context_line":"  governance that contains the Kubernetes deployment code."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Orchestration"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_54afde80","line":50,"range":{"start_line":50,"start_character":71,"end_line":50,"end_character":74},"updated":"2016-05-09 17:52:52.000000000","message":"extra \u0027to\u0027 here.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"Proposed change"},{"line_number":48,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"- Add a deployment specific git repo (Kolla-Kubernetes) under the kolla to"},{"line_number":51,"context_line":"  governance that contains the Kubernetes deployment code."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Orchestration"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_4eac6b34","line":50,"updated":"2016-05-09 15:12:39.000000000","message":"lets get the case to match what the actual repository is","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"-------------"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"OpenStack on Kubernetes has the ability to be orchestrated by outside tools in"},{"line_number":57,"context_line":"order to create a production level OpenStack environment.  The Kolla-Kubernetes"},{"line_number":58,"context_line":"repo is meant to be a place where any deployment tool can join the community and"},{"line_number":59,"context_line":"be a part of orchestrating a Kolla-Kubernetes deployment."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_0e2703cb","line":57,"updated":"2016-05-09 15:12:39.000000000","message":"big search and replace on Kolla-Kubernetess/kolla-kubernetes","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"OpenStack on Kubernetes has the ability to be orchestrated by outside tools in"},{"line_number":57,"context_line":"order to create a production level OpenStack environment.  The Kolla-Kubernetes"},{"line_number":58,"context_line":"repo is meant to be a place where any deployment tool can join the community and"},{"line_number":59,"context_line":"be a part of orchestrating a Kolla-Kubernetes deployment."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Service Config Management"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_d90ae720","line":58,"updated":"2016-05-09 15:12:39.000000000","message":"reword it either does or does not, meant has variable definitions - need something concrete here.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"OpenStack on Kubernetes has the ability to be orchestrated by outside tools in"},{"line_number":57,"context_line":"order to create a production level OpenStack environment.  The Kolla-Kubernetes"},{"line_number":58,"context_line":"repo is meant to be a place where any deployment tool can join the community and"},{"line_number":59,"context_line":"be a part of orchestrating a Kolla-Kubernetes deployment."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Service Config Management"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_7d2d9e45","line":58,"in_reply_to":"dab17558_d90ae720","updated":"2016-05-10 11:40:43.000000000","message":"agreed.  Fix should sound much better.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":57,"context_line":"order to create a production level OpenStack environment.  The Kolla-Kubernetes"},{"line_number":58,"context_line":"repo is meant to be a place where any deployment tool can join the community and"},{"line_number":59,"context_line":"be a part of orchestrating a Kolla-Kubernetes deployment."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Service Config Management"},{"line_number":62,"context_line":"-------------------------"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_94de660f","line":60,"updated":"2016-05-09 17:52:52.000000000","message":"+1 to the general idea.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Service Config Management"},{"line_number":62,"context_line":"-------------------------"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Config generation will be completely decoupled from the deployment. The"},{"line_number":65,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":66,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":67,"context_line":"any tool to generate configs.  The Kolla-Kubernetes community will evaluate any"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_193c6fc7","line":64,"range":{"start_line":64,"start_character":22,"end_line":64,"end_character":23},"updated":"2016-05-09 15:12:39.000000000","message":"will be/is","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"-------------------------"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Config generation will be completely decoupled from the deployment. The"},{"line_number":65,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":66,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":67,"context_line":"any tool to generate configs.  The Kolla-Kubernetes community will evaluate any"},{"line_number":68,"context_line":"config generation tool, but will likely settle on the ansbile config method in"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_5936f7e6","line":65,"updated":"2016-05-09 15:12:39.000000000","message":"land/be present","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"Config generation will be completely decoupled from the deployment. The"},{"line_number":65,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":66,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":67,"context_line":"any tool to generate configs.  The Kolla-Kubernetes community will evaluate any"},{"line_number":68,"context_line":"config generation tool, but will likely settle on the ansbile config method in"},{"line_number":69,"context_line":"order to reuse existing work from the community.  This solution uses customized"},{"line_number":70,"context_line":"ansible and jinja2 templates to generate the config. There is a maintained set"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_1943cf43","line":67,"updated":"2016-05-09 15:12:39.000000000","message":"configs/config files","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":66,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":67,"context_line":"any tool to generate configs.  The Kolla-Kubernetes community will evaluate any"},{"line_number":68,"context_line":"config generation tool, but will likely settle on the ansbile config method in"},{"line_number":69,"context_line":"order to reuse existing work from the community.  This solution uses customized"},{"line_number":70,"context_line":"ansible and jinja2 templates to generate the config. There is a maintained set"},{"line_number":71,"context_line":"of defaults and a global yaml file that can override the defaults."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_d96f87c3","line":68,"updated":"2016-05-09 15:12:39.000000000","message":"Ansible is a name - hence capitalize :)","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":65,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":66,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":67,"context_line":"any tool to generate configs.  The Kolla-Kubernetes community will evaluate any"},{"line_number":68,"context_line":"config generation tool, but will likely settle on the ansbile config method in"},{"line_number":69,"context_line":"order to reuse existing work from the community.  This solution uses customized"},{"line_number":70,"context_line":"ansible and jinja2 templates to generate the config. There is a maintained set"},{"line_number":71,"context_line":"of defaults and a global yaml file that can override the defaults."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_d4362e51","line":68,"range":{"start_line":68,"start_character":33,"end_line":68,"end_character":53},"updated":"2016-05-09 17:52:52.000000000","message":"s/likely settle on the/initially implement an/ ?","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":67,"context_line":"any tool to generate configs.  The Kolla-Kubernetes community will evaluate any"},{"line_number":68,"context_line":"config generation tool, but will likely settle on the ansbile config method in"},{"line_number":69,"context_line":"order to reuse existing work from the community.  This solution uses customized"},{"line_number":70,"context_line":"ansible and jinja2 templates to generate the config. There is a maintained set"},{"line_number":71,"context_line":"of defaults and a global yaml file that can override the defaults."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The config files will be injected into the kubernetes configmap and loaded into"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_799f7bb4","line":70,"updated":"2016-05-09 15:12:39.000000000","message":"big search and replace with config/configuration files\nThere is a/There are maintained sets","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":70,"context_line":"ansible and jinja2 templates to generate the config. There is a maintained set"},{"line_number":71,"context_line":"of defaults and a global yaml file that can override the defaults."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The config files will be injected into the kubernetes configmap and loaded into"},{"line_number":74,"context_line":"the containers. The containers will pick up the configs when they are launched"},{"line_number":75,"context_line":"and run with them [5][6]."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_f469b226","line":73,"range":{"start_line":73,"start_character":39,"end_line":73,"end_character":42},"updated":"2016-05-09 17:52:52.000000000","message":"I think \"the ... configmap\" is still up for design? Could there be multiple config maps? I think for better flexibility for ops, maybe there should be. If they are being generated by a template engine, multiple aren\u0027t so bad.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"ansible and jinja2 templates to generate the config. There is a maintained set"},{"line_number":71,"context_line":"of defaults and a global yaml file that can override the defaults."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The config files will be injected into the kubernetes configmap and loaded into"},{"line_number":74,"context_line":"the containers. The containers will pick up the configs when they are launched"},{"line_number":75,"context_line":"and run with them [5][6]."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_39b6933d","line":73,"updated":"2016-05-09 15:12:39.000000000","message":"will be/is","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"ansible and jinja2 templates to generate the config. There is a maintained set"},{"line_number":71,"context_line":"of defaults and a global yaml file that can override the defaults."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The config files will be injected into the kubernetes configmap and loaded into"},{"line_number":74,"context_line":"the containers. The containers will pick up the configs when they are launched"},{"line_number":75,"context_line":"and run with them [5][6]."},{"line_number":76,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_f3553f50","line":73,"range":{"start_line":73,"start_character":39,"end_line":73,"end_character":42},"in_reply_to":"dab17558_f469b226","updated":"2016-05-10 11:40:43.000000000","message":"An operator can use multiple configmaps.  Configmaps can be whole config files.  Operators can create them whenever needed and attach them to a pod.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"The config files will be injected into the kubernetes configmap and loaded into"},{"line_number":74,"context_line":"the containers. The containers will pick up the configs when they are launched"},{"line_number":75,"context_line":"and run with them [5][6]."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"Bootstrapping"},{"line_number":78,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_39bb3310","line":75,"updated":"2016-05-09 15:12:39.000000000","message":"run with them is awkward - how about \"The containers will configure themselves based upon configuration files loaded into the appropriate directory inside the container.\"","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"-------------"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":81,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":82,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":83,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"},{"line_number":84,"context_line":"run the task until completion then terminate the pods [7]."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_f947eb1a","line":81,"updated":"2016-05-09 15:12:39.000000000","message":"will run/runs","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":81,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":82,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":83,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"},{"line_number":84,"context_line":"run the task until completion then terminate the pods [7]."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_995fbfe4","line":82,"updated":"2016-05-09 15:12:39.000000000","message":"will be/is","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":81,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":82,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":83,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"},{"line_number":84,"context_line":"run the task until completion then terminate the pods [7]."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Each service will have a bootstrap task so that when we upgrade, we can re-use"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_596ef795","line":83,"updated":"2016-05-09 15:12:39.000000000","message":"this sentence should be restructed to what is first, followed by what is second not inverse as it is now :)","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":81,"context_line":"that will initialize the databases and create the users.  This task will run"},{"line_number":82,"context_line":"for all services and it will be the second task in deployment, after the"},{"line_number":83,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"},{"line_number":84,"context_line":"run the task until completion then terminate the pods [7]."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Each service will have a bootstrap task so that when we upgrade, we can re-use"},{"line_number":87,"context_line":"the bootstrap tasks to upgrade the database.  This will allow deployment and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_f9f52bcb","line":84,"range":{"start_line":84,"start_character":12,"end_line":84,"end_character":13},"updated":"2016-05-09 15:12:39.000000000","message":"will run/runs","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"database is created. The bootstrapping task will be a Kubernetes Job, which will"},{"line_number":84,"context_line":"run the task until completion then terminate the pods [7]."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Each service will have a bootstrap task so that when we upgrade, we can re-use"},{"line_number":87,"context_line":"the bootstrap tasks to upgrade the database.  This will allow deployment and"},{"line_number":88,"context_line":"upgrades to follow the same pipeline."},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_590557ba","line":86,"updated":"2016-05-09 15:12:39.000000000","message":"will have/has\nwe/when Kolla is upgraded,\nwe can re-use, Kolla can re-use","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"run the task until completion then terminate the pods [7]."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"Each service will have a bootstrap task so that when we upgrade, we can re-use"},{"line_number":87,"context_line":"the bootstrap tasks to upgrade the database.  This will allow deployment and"},{"line_number":88,"context_line":"upgrades to follow the same pipeline."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_99d4df20","line":87,"updated":"2016-05-09 15:12:39.000000000","message":"This will allow/This allows","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"------------"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"- Kubernetes \u003e\u003d 1.3.0"},{"line_number":94,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes does not have dependencies.  The operator will launch all the"},{"line_number":97,"context_line":"services and use kubernetes health checks to stabilize the deployment"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_f9e36b03","line":94,"updated":"2016-05-09 15:12:39.000000000","message":"jinja2 \u003e\u003d 2.8.0","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":91,"context_line":"------------"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"- Kubernetes \u003e\u003d 1.3.0"},{"line_number":94,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes does not have dependencies.  The operator will launch all the"},{"line_number":97,"context_line":"services and use kubernetes health checks to stabilize the deployment"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_3a48415b","line":94,"in_reply_to":"dab17558_f9e36b03","updated":"2016-05-10 11:40:43.000000000","message":"My mistake, I thought this was something specific to ansible but it\u0027s not.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":93,"context_line":"- Kubernetes \u003e\u003d 1.3.0"},{"line_number":94,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes does not have dependencies.  The operator will launch all the"},{"line_number":97,"context_line":"services and use kubernetes health checks to stabilize the deployment"},{"line_number":98,"context_line":"over time."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_9f75df99","line":96,"range":{"start_line":96,"start_character":19,"end_line":96,"end_character":37},"updated":"2016-05-09 17:52:52.000000000","message":"This confused me for a bit... Maybe reword it like:\n\nKubernetes does not have support for launching containers in any particular dependency order for containers that have the need.\n\nAlso, instead of pushing it to the operator here, maybe just say, the containers startup scripts will be reworked to properly support out of order bringup? This is only intended for post bootstrap operation. Most probably don\u0027t require any changes and will simply wait for their dependencies to show.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"- Kubernetes \u003e\u003d 1.3.0"},{"line_number":94,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes does not have dependencies.  The operator will launch all the"},{"line_number":97,"context_line":"services and use kubernetes health checks to stabilize the deployment"},{"line_number":98,"context_line":"over time."},{"line_number":99,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_19d0ef1e","line":96,"updated":"2016-05-09 15:12:39.000000000","message":"will launch/launches","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Kubernetes does not have dependencies.  The operator will launch all the"},{"line_number":97,"context_line":"services and use kubernetes health checks to stabilize the deployment"},{"line_number":98,"context_line":"over time."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dependencies can be handled at the orchestration level, but aren\u0027t necessary."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_197e2f19","line":97,"updated":"2016-05-09 15:12:39.000000000","message":"to reach a steady operational state.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"services and use kubernetes health checks to stabilize the deployment"},{"line_number":98,"context_line":"over time."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Dependencies can be handled at the orchestration level, but aren\u0027t necessary."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"Upgrades"},{"line_number":103,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_99905f45","line":100,"updated":"2016-05-09 15:12:39.000000000","message":"explain why or delete sentence pls","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"-----------"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":113,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":114,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"HA Architecture"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_d9b147e3","line":113,"updated":"2016-05-09 15:12:39.000000000","message":"will detect/detects","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":113,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":114,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"HA Architecture"},{"line_number":117,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_39c1732f","line":114,"updated":"2016-05-09 15:12:39.000000000","message":"will restart/restart","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":113,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":114,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"HA Architecture"},{"line_number":117,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_7f30fb9e","line":114,"in_reply_to":"dab17558_39c1732f","updated":"2016-05-09 17:52:52.000000000","message":"Does it? This one worries me a little. We don\u0027t want pods detecting the change and restarting all at once. We want a Deployment to get the change, and go through its rolling upgrade (or rolling config update once supported) procedure to ensure enough pods remain up while the reconfigure happens.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"The operator generates a new config and loads it into the Kubernetes configmap."},{"line_number":113,"context_line":"Kubernetes will detect if a pod has a change in the configmap. If there"},{"line_number":114,"context_line":"is a change, the containers in that pod will restart, picking up the change [6]."},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"HA Architecture"},{"line_number":117,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_d642a83d","line":114,"in_reply_to":"dab17558_7f30fb9e","updated":"2016-05-10 11:40:43.000000000","message":"I don\u0027t know how it will be implemented since it\u0027s still WIP.  Your idea about versioning and running a rolling upgrade is a great idea.\n\nI know you mentioned on earlier reviews, but I\u0027m starting to like the idea a lot more considering we don\u0027t know yet what the configmap trigger will do.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"HA Architecture"},{"line_number":117,"context_line":"---------------"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Kubernetes uses health checks to bring up the services.  Kolla-Kubernetes will"},{"line_number":120,"context_line":"use the same checks when monitoring if a service is active.  When a service"},{"line_number":121,"context_line":"fails, the replication controller will be responsible for bringing up"},{"line_number":122,"context_line":"a new container in its place [8][9]."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_d9ff8765","line":119,"updated":"2016-05-09 15:12:39.000000000","message":"will use/uses","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"---------------"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Kubernetes uses health checks to bring up the services.  Kolla-Kubernetes will"},{"line_number":120,"context_line":"use the same checks when monitoring if a service is active.  When a service"},{"line_number":121,"context_line":"fails, the replication controller will be responsible for bringing up"},{"line_number":122,"context_line":"a new container in its place [8][9]."},{"line_number":123,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_992cdf03","line":120,"updated":"2016-05-09 15:12:39.000000000","message":"active/healthy","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Kubernetes uses health checks to bring up the services.  Kolla-Kubernetes will"},{"line_number":120,"context_line":"use the same checks when monitoring if a service is active.  When a service"},{"line_number":121,"context_line":"fails, the replication controller will be responsible for bringing up"},{"line_number":122,"context_line":"a new container in its place [8][9]."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"However, Kubernetes does not cover all the HA corner cases. For instance,"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_19410faa","line":121,"updated":"2016-05-09 15:12:39.000000000","message":"will be/is","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":121,"context_line":"fails, the replication controller will be responsible for bringing up"},{"line_number":122,"context_line":"a new container in its place [8][9]."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"However, Kubernetes does not cover all the HA corner cases. For instance,"},{"line_number":125,"context_line":"fencing. But, there are ways the operator can get around this [10]. For example,"},{"line_number":126,"context_line":"to deal with storage fencing, the operator can use ceph backed storage [11][12]."},{"line_number":127,"context_line":"This is an option that the community can document in order to provide"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_391df3bd","line":124,"updated":"2016-05-09 15:12:39.000000000","message":"For instance, fencing is not a proper sentence.  One semi-awkward way to handle this is \"corner cases (e.g. fencing)\".","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":122,"context_line":"a new container in its place [8][9]."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"However, Kubernetes does not cover all the HA corner cases. For instance,"},{"line_number":125,"context_line":"fencing. But, there are ways the operator can get around this [10]. For example,"},{"line_number":126,"context_line":"to deal with storage fencing, the operator can use ceph backed storage [11][12]."},{"line_number":127,"context_line":"This is an option that the community can document in order to provide"},{"line_number":128,"context_line":"Kolla-Kubernetes with a production ready solution if Kubernetes cannot."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_d95b0786","line":125,"updated":"2016-05-09 15:12:39.000000000","message":"can get around this is super awkward.  How about there are best known practices for managing HA situations related to kubernetes [10].","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"However, Kubernetes does not cover all the HA corner cases. For instance,"},{"line_number":125,"context_line":"fencing. But, there are ways the operator can get around this [10]. For example,"},{"line_number":126,"context_line":"to deal with storage fencing, the operator can use ceph backed storage [11][12]."},{"line_number":127,"context_line":"This is an option that the community can document in order to provide"},{"line_number":128,"context_line":"Kolla-Kubernetes with a production ready solution if Kubernetes cannot."},{"line_number":129,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_f9508b60","line":126,"updated":"2016-05-09 15:12:39.000000000","message":"to deal with/to implement","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":131,"context_line":"------------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Kubernetes has many types of persistent storage [13]. Since Kubernetes doesn\u0027t"},{"line_number":134,"context_line":"guarantee a pod will always land on a host, it makes node based persistent"},{"line_number":135,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_3955f31c","line":134,"updated":"2016-05-09 15:12:39.000000000","message":"land on a host/is scheduled to a host","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":135,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":138,"context_line":"different storage offerings to provide persistent storage."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Service Roles"},{"line_number":141,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_19274fcb","line":138,"updated":"2016-05-09 15:12:39.000000000","message":"this section needs serious fleshing out","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":135,"context_line":"storage unlikely, unless we use node affinity."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Persistent storage in Kolla-Kubernetes will come from volumes backed by"},{"line_number":138,"context_line":"different storage offerings to provide persistent storage."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"Service Roles"},{"line_number":141,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_bfb8a3e6","line":138,"in_reply_to":"dab17558_19274fcb","updated":"2016-05-09 17:52:52.000000000","message":"+1. A lot of important details to work out.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":140,"context_line":"Service Roles"},{"line_number":141,"context_line":"-------------"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"OpenStack can split up into two main roles, Controller and Compute. With"},{"line_number":144,"context_line":"Kubernetes, the role definition layer changes. Kolla-Kubernetes will still"},{"line_number":145,"context_line":"need to define Compute nodes, but not Controller nodes.  Compute nodes hold the"},{"line_number":146,"context_line":"libvirt container and the running vms.  That service cannont migrate because the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_392cd3aa","line":143,"updated":"2016-05-09 15:12:39.000000000","message":"what about network and storage?","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":140,"context_line":"Service Roles"},{"line_number":141,"context_line":"-------------"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"OpenStack can split up into two main roles, Controller and Compute. With"},{"line_number":144,"context_line":"Kubernetes, the role definition layer changes. Kolla-Kubernetes will still"},{"line_number":145,"context_line":"need to define Compute nodes, but not Controller nodes.  Compute nodes hold the"},{"line_number":146,"context_line":"libvirt container and the running vms.  That service cannont migrate because the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_3967a526","line":143,"in_reply_to":"dab17558_392cd3aa","updated":"2016-05-10 11:40:43.000000000","message":"Storage is going to need labels and I *think* network will too.  I\u0027ll come back to this.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":19384,"name":"Serguei Bezverkhi","email":"sbezverk@cisco.com","username":"sbezverk"},"change_message_id":"6cb5cc0a4da2e7984790b4cad2582d27db8d8bf0","unresolved":false,"context_lines":[{"line_number":143,"context_line":"OpenStack can split up into two main roles, Controller and Compute. With"},{"line_number":144,"context_line":"Kubernetes, the role definition layer changes. Kolla-Kubernetes will still"},{"line_number":145,"context_line":"need to define Compute nodes, but not Controller nodes.  Compute nodes hold the"},{"line_number":146,"context_line":"libvirt container and the running vms.  That service cannont migrate because the"},{"line_number":147,"context_line":"vms associated with it exist on the node.  However, the Controller role is more"},{"line_number":148,"context_line":"flexible.  The Kubernetes layer makes sure that APIs will remain active"},{"line_number":149,"context_line":"somewhere, but the operator doesn\u0027t need to know where [14]. Kolla-Kubernetes"},{"line_number":150,"context_line":"can direct Controller services away from the Compute node using labels, while"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_442a877f","line":147,"range":{"start_line":146,"start_character":40,"end_line":147,"end_character":40},"updated":"2016-05-09 16:48:43.000000000","message":"Cinder volume container also is less flexible as it has to stay within the host with VG. Are we planning to leverage kubernetes native iscsi support?","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":143,"context_line":"OpenStack can split up into two main roles, Controller and Compute. With"},{"line_number":144,"context_line":"Kubernetes, the role definition layer changes. Kolla-Kubernetes will still"},{"line_number":145,"context_line":"need to define Compute nodes, but not Controller nodes.  Compute nodes hold the"},{"line_number":146,"context_line":"libvirt container and the running vms.  That service cannont migrate because the"},{"line_number":147,"context_line":"vms associated with it exist on the node.  However, the Controller role is more"},{"line_number":148,"context_line":"flexible.  The Kubernetes layer makes sure that APIs will remain active"},{"line_number":149,"context_line":"somewhere, but the operator doesn\u0027t need to know where [14]. Kolla-Kubernetes"},{"line_number":150,"context_line":"can direct Controller services away from the Compute node using labels, while"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_62305b9f","line":147,"range":{"start_line":146,"start_character":40,"end_line":147,"end_character":40},"in_reply_to":"dab17558_442a877f","updated":"2016-05-09 17:52:52.000000000","message":"-1 to iscsi. It tends to just push the problem to a different layer of the stack rather then solving it.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":145,"context_line":"need to define Compute nodes, but not Controller nodes.  Compute nodes hold the"},{"line_number":146,"context_line":"libvirt container and the running vms.  That service cannont migrate because the"},{"line_number":147,"context_line":"vms associated with it exist on the node.  However, the Controller role is more"},{"line_number":148,"context_line":"flexible.  The Kubernetes layer makes sure that APIs will remain active"},{"line_number":149,"context_line":"somewhere, but the operator doesn\u0027t need to know where [14]. Kolla-Kubernetes"},{"line_number":150,"context_line":"can direct Controller services away from the Compute node using labels, while"},{"line_number":151,"context_line":"managing Compute services more strictly."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_541fde5e","line":148,"updated":"2016-05-09 15:12:39.000000000","message":"The Kubernetes layer provides IP persistence so that APIs will remain active and abstracted from operator view.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":147,"context_line":"vms associated with it exist on the node.  However, the Controller role is more"},{"line_number":148,"context_line":"flexible.  The Kubernetes layer makes sure that APIs will remain active"},{"line_number":149,"context_line":"somewhere, but the operator doesn\u0027t need to know where [14]. Kolla-Kubernetes"},{"line_number":150,"context_line":"can direct Controller services away from the Compute node using labels, while"},{"line_number":151,"context_line":"managing Compute services more strictly."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_5436bee6","line":150,"updated":"2016-05-09 15:12:39.000000000","message":"while managing/permitting the management of Compute services more strictly.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":153,"context_line":"Security impact"},{"line_number":154,"context_line":"---------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible."},{"line_number":157,"context_line":"SELinux or AppArmor will be in place to make sure if someone breaks out of a"},{"line_number":158,"context_line":"container, their ability to do damage is limited. Also, Kubernetes is working to"},{"line_number":159,"context_line":"adding capabilities to the pod level [15]."}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_944e666d","line":156,"updated":"2016-05-09 15:12:39.000000000","message":"will run/runs","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"---------------"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible."},{"line_number":157,"context_line":"SELinux or AppArmor will be in place to make sure if someone breaks out of a"},{"line_number":158,"context_line":"container, their ability to do damage is limited. Also, Kubernetes is working to"},{"line_number":159,"context_line":"adding capabilities to the pod level [15]."},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_d46f4ec3","line":157,"updated":"2016-05-09 15:12:39.000000000","message":"will be/are in place to limit damage from container breakouts.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":155,"context_line":""},{"line_number":156,"context_line":"Kolla-Kubernetes will run the containers as non root wherever possible."},{"line_number":157,"context_line":"SELinux or AppArmor will be in place to make sure if someone breaks out of a"},{"line_number":158,"context_line":"container, their ability to do damage is limited. Also, Kubernetes is working to"},{"line_number":159,"context_line":"adding capabilities to the pod level [15]."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_949ca6c1","line":158,"updated":"2016-05-09 15:12:39.000000000","message":"capabilities should be on a separate line as its a separate subject in my mind :)","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"dae52da561fdeec0d14d602da579e3b6918ba0db","unresolved":false,"context_lines":[{"line_number":165,"context_line":"services will take a different amount of time to start up for each deployment"},{"line_number":166,"context_line":"because the order will always vary when the services become active."},{"line_number":167,"context_line":"As such, the true performance impact to the various actions is unknown."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Implementation"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_1f044f48","line":168,"updated":"2016-05-09 17:52:52.000000000","message":"I don\u0027t think this is particular to kolla-kubernetes. single node openstacks in many flavors have the same issue.\n\nMany config management type deployments have even worse timings then that.\n\nI\u0027m not really sure there are any performance impacts related to how the cloud\u0027s deployed?\n\nOr is this intended to contrast kolla-ansible to kolla-kubernetes?","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"f75d177ef53b01f6545e1f33b51e505974a291b6","unresolved":false,"context_lines":[{"line_number":165,"context_line":"services will take a different amount of time to start up for each deployment"},{"line_number":166,"context_line":"because the order will always vary when the services become active."},{"line_number":167,"context_line":"As such, the true performance impact to the various actions is unknown."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Implementation"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_bc36e3e4","line":168,"in_reply_to":"dab17558_1f044f48","updated":"2016-05-10 11:40:43.000000000","message":"This is meant to highlight the concept of health checks.  The performance impact is very small.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":19384,"name":"Serguei Bezverkhi","email":"sbezverk@cisco.com","username":"sbezverk"},"change_message_id":"90224fdfc1f0b9c6aa223918f12fa32c1f93b6f5","unresolved":false,"context_lines":[{"line_number":166,"context_line":"because the order will always vary when the services become active."},{"line_number":167,"context_line":"As such, the true performance impact to the various actions is unknown."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Implementation"},{"line_number":171,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_472a897f","line":169,"updated":"2016-05-09 17:12:00.000000000","message":"Networking\n-------------------------\nI think we should add networking section as there are multiple aspects of connectivity within Kubernetes cluster, which should be covered at least in general terms in specs.\nEven though Kolla does not build kubernetes network, it has to be aware and be flexible enough to be able to use it.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":218,"context_line":"6. Startup docs"},{"line_number":219,"context_line":"\u003cPlease add new work items that are worth mentioning in the spec\u003e"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"The community should focus on getting an all-in-one environment working for"},{"line_number":222,"context_line":"development. Then, the community will be focused on building multinode"},{"line_number":223,"context_line":"deployment."},{"line_number":224,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_94d1465a","line":221,"updated":"2016-05-09 15:12:39.000000000","message":"The spec author recommends the Kolla community to focus on all-in-one environments first.  Then the Kolla community can tackle multinode deployment second.","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"82333dbe4b6cf55efa206d3dbdc2e068a237469c","unresolved":false,"context_lines":[{"line_number":238,"context_line":""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"References"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"- [1] https://github.com/kubernetes/kubernetes/releases/tag/v1.2.0"},{"line_number":244,"context_line":"- [2] http://kubernetes.io/docs/user-guide/node-selection/"}],"source_content_type":"text/x-rst","patch_set":11,"id":"dab17558_b4ce0ab2","line":241,"updated":"2016-05-09 15:12:39.000000000","message":"lots of references, wish there were this many work items :)","commit_id":"dcaa309474b6fcfb24fe099e15b17ab4747eff31"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"4e6015fc1d17107e436dac5e5777319a01c71240","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Dependencies"},{"line_number":90,"context_line":"------------"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"- Kubernetes \u003e\u003d 1.3.0"},{"line_number":93,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":94,"context_line":"- Jinja2 \u003e\u003d 2.8.0"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dab17558_66369d53","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":21},"updated":"2016-05-10 04:22:51.000000000","message":"@Ryan: sorry, maybe I missed it but why 1.3 (it will  be released in June timeframe)? I believe 1.2 already has min features set.","commit_id":"6882c14845a82d08b18a9e49aa13d3ce80b33862"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"ee757c40486869d28a018b57b991eaf19584750c","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Dependencies"},{"line_number":90,"context_line":"------------"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"- Kubernetes \u003e\u003d 1.3.0"},{"line_number":93,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":94,"context_line":"- Jinja2 \u003e\u003d 2.8.0"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-rst","patch_set":12,"id":"dab17558_29456fb2","line":92,"range":{"start_line":92,"start_character":16,"end_line":92,"end_character":21},"in_reply_to":"dab17558_66369d53","updated":"2016-05-10 11:48:57.000000000","message":"It\u0027s actually not a hard requirement to 1.3 now that I think about it. I don\u0027t know all the planned 1.3, but per pod mount propogation and some changes to configmap are some of the things.","commit_id":"6882c14845a82d08b18a9e49aa13d3ce80b33862"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"4e6015fc1d17107e436dac5e5777319a01c71240","unresolved":false,"context_lines":[{"line_number":141,"context_line":"Persistent Storage"},{"line_number":142,"context_line":"------------------"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"Kubernetes has many types of persistent storage [13]. Since Kubernetes doesn\u0027t"},{"line_number":145,"context_line":"guarantee a pod will always be scheduled to a host, it makes node based"},{"line_number":146,"context_line":"persistent storage unlikely, unless the community uses labels everywhere."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"Persistent storage in kolla-kubernetes will come from volumes backed by"}],"source_content_type":"text/x-rst","patch_set":12,"id":"dab17558_a6552551","line":145,"range":{"start_line":144,"start_character":54,"end_line":145,"end_character":50},"updated":"2016-05-10 04:22:51.000000000","message":"@Ryan: you can guaranty it with NodeSelector. but you will have the problem if node/host died.","commit_id":"6882c14845a82d08b18a9e49aa13d3ce80b33862"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"1612b071fc7ad0f0228766978b9a38a95fbb7280","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Bootstrapping"},{"line_number":77,"context_line":"-------------"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":80,"context_line":"that will initialize the databases and create the users. The bootstrapping task"},{"line_number":81,"context_line":"will be a Kubernetes Job, which will run the task until completion then"},{"line_number":82,"context_line":"terminate the pods [7]. This task will run for all services and it will be the"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_2263ea42","line":79,"range":{"start_line":79,"start_character":0,"end_line":79,"end_character":77},"updated":"2016-05-14 16:25:50.000000000","message":"There\u0027s a counter argument to this approach.\n\nKubernetes handles an upgrade in a single operation by scaling down the old running containers and scaling up new containers. If kolla-kubernetes has a separate operation for bootstrapping it means that the native kubernetes upgrade can\u0027t be used.  The upgrade would require the operator to tell Kubernetes to scale down a service\u0027s running containers, do a data base sync for that service, and scale back up the new services.\n\nI think the above solution is a possibility, but would require heavy orchestration.\n\nOther options:\n\n1)\nCreate 2 pods per OpenStack service.  One pod is designed to do the bootstrapping/db_sync while the other pod runs as the normal service.  This will also require some orchestration and the bootstrap pod will need to be setup to never restart or be replicated.\n\n2)\nUse a sidecar container in the pod to handle the database sync with proper health checking to make sure the services are coming up healthy.  The big difference between kolla\u0027s old docker-compose solution and Kubernetes, is that docker-compose would only restart the containers.  Kubernetes will completely reschedule them.  Which means, removing the pod and restarting it.  The reason this would fix that race condition failure kolla saw from docker-compose is because glance would be rescheduled on failure allowing keystone to get a chance to sync with the database and become active.  There can also be health checks around this to help determine order.\n\nIf kolla-kubernetes used this sidecar approach, it would regain the use of native Kubernetes upgrades.\n\nhttp://blog.kubernetes.io/2015/06/the-distributed-system-toolkit-patterns.html","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"5485e89d5fce101314fcf10ced6da4c436684f64","unresolved":false,"context_lines":[{"line_number":83,"context_line":"second task in deployment, after the database is created."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Each service will have a bootstrap task so that when the operator upgrades,"},{"line_number":86,"context_line":"the bootstrap tasks are re used to upgrade the database.  This will allow"},{"line_number":87,"context_line":"deployment and upgrades to follow the same pipeline."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_1d8169fb","line":86,"updated":"2016-05-11 23:57:10.000000000","message":"\"re used\" -\u003e \"reused\" if you post another revision.","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"5485e89d5fce101314fcf10ced6da4c436684f64","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Kolla-kubernetes will initially use \u0027net\u003dhost\u0027 everywhere until the community"},{"line_number":192,"context_line":"reaches a point where it needs to be reevaluated as to which services will run"},{"line_number":193,"context_line":"without \u0027net\u003dhost\u0027 in order to gain additionally functionality."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_fdff4563","line":193,"updated":"2016-05-11 23:57:10.000000000","message":"\"additional\" if you post another revision","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":7488,"name":"Jeffrey Zhang","email":"zhang.lei.fly@gmail.com","username":"Jeffrey4l"},"change_message_id":"26719fe0c71ac19615a0a7bffb4b5ae805a4ef44","unresolved":false,"context_lines":[{"line_number":192,"context_line":"reaches a point where it needs to be reevaluated as to which services will run"},{"line_number":193,"context_line":"without \u0027net\u003dhost\u0027 in order to gain additionally functionality."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Implementation"},{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_4eab19d7","line":195,"updated":"2016-05-12 12:47:11.000000000","message":"I am agree with Serguei,\nI think not all the components that OpenStack used could write\nlogs to stdout.\nexpecially for ifra service, like mysql and rabbitmq.","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":19384,"name":"Serguei Bezverkhi","email":"sbezverk@cisco.com","username":"sbezverk"},"change_message_id":"31ad5d024f36d0c3c99ab908ab26775618d30f34","unresolved":false,"context_lines":[{"line_number":192,"context_line":"reaches a point where it needs to be reevaluated as to which services will run"},{"line_number":193,"context_line":"without \u0027net\u003dhost\u0027 in order to gain additionally functionality."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Implementation"},{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_a64db2c5","line":195,"updated":"2016-05-11 21:05:29.000000000","message":"Logging\n\nFor logging I would like to suggest the following solution in order to achieve centralized logging but without sharing volumes between pods. Since we have a pod per service and we can run multiple containers in the pod, I propose to have a logging container per service running in the same pod. The purpose of this container is to have shared volume with a service which is mapped to the location where the service example keystone, stores its logs and to transfer/push to central logging pod for storage. This solution will allow much more flexible approach, as the location of centralized logging could change and service\u0027s logging container is capable to discover where the centralized logging pod is and push info towards it.","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":19384,"name":"Serguei Bezverkhi","email":"sbezverk@cisco.com","username":"sbezverk"},"change_message_id":"862e7ee4833ac550c17f016bfd7deb52180842dd","unresolved":false,"context_lines":[{"line_number":192,"context_line":"reaches a point where it needs to be reevaluated as to which services will run"},{"line_number":193,"context_line":"without \u0027net\u003dhost\u0027 in order to gain additionally functionality."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Implementation"},{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_25e198ff","line":195,"in_reply_to":"dab17558_a64db2c5","updated":"2016-05-12 12:12:30.000000000","message":"@Egor. I am not 100% positive that ALL logs generated by OpenStack components are sent to stdout, but if it is the case, then thank you for pointing out simpler solution. I would still double check about logging.","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":8143,"name":"Egor Guz","email":"egor.guz@gmail.com","username":"eghobo"},"change_message_id":"6a3c4fda3b92c8cc49fbc8fa54a7ee3c1a64ba90","unresolved":false,"context_lines":[{"line_number":192,"context_line":"reaches a point where it needs to be reevaluated as to which services will run"},{"line_number":193,"context_line":"without \u0027net\u003dhost\u0027 in order to gain additionally functionality."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"Implementation"},{"line_number":197,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_c0337112","line":195,"in_reply_to":"dab17558_a64db2c5","updated":"2016-05-12 04:06:02.000000000","message":"@Serguei: why not use standard approach? Containers write everything to stdout and fluentd/logstash through DaemonSet push everything to Elastic Search.","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":16233,"name":"Mauricio Lima","email":"mauriciolimab@gmail.com","username":"limamauricio"},"change_message_id":"7116f974fcf099a4658cc5fe9c2711d413fad92e","unresolved":false,"context_lines":[{"line_number":226,"context_line":"  Serguei Bezverkhi (sbezverk)"},{"line_number":227,"context_line":"  Sidharth Surana (ssurana)"},{"line_number":228,"context_line":"  Zdenek Janda (xdeu)"},{"line_number":229,"context_line":"  \u003cPlease add your name here if you are getting involved in kolla-kubernetes\u003e"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Milestones"},{"line_number":232,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_8937f64b","line":229,"updated":"2016-05-11 14:13:17.000000000","message":"Add Mauricio Lima (mlima)","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":16233,"name":"Mauricio Lima","email":"mauriciolimab@gmail.com","username":"limamauricio"},"change_message_id":"7116f974fcf099a4658cc5fe9c2711d413fad92e","unresolved":false,"context_lines":[{"line_number":249,"context_line":"11. Multinode docs"},{"line_number":250,"context_line":"12. Implement reconfigure by templating configmaps"},{"line_number":251,"context_line":"13. Implement upgrades"},{"line_number":252,"context_line":"14. Advancted deployment docs"},{"line_number":253,"context_line":"\u003cPlease add new work items that are worth mentioning in the spec\u003e"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_69073282","line":252,"updated":"2016-05-11 14:13:17.000000000","message":"I think this can be added here:\n15. Implement tests","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":5623,"name":"David Lyle","email":"dklyle0@gmail.com","username":"david-lyle"},"change_message_id":"5485e89d5fce101314fcf10ced6da4c436684f64","unresolved":false,"context_lines":[{"line_number":249,"context_line":"11. Multinode docs"},{"line_number":250,"context_line":"12. Implement reconfigure by templating configmaps"},{"line_number":251,"context_line":"13. Implement upgrades"},{"line_number":252,"context_line":"14. Advancted deployment docs"},{"line_number":253,"context_line":"\u003cPlease add new work items that are worth mentioning in the spec\u003e"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":14,"id":"dab17558_fd6f45c1","line":252,"in_reply_to":"dab17558_69073282","updated":"2016-05-11 23:57:10.000000000","message":"I would hope this was part of each of the previous steps, not an after-thought. Or were you thinking of a different layer of tests?","commit_id":"838b6ef0e668bb9489f6ed26c10f76d7d526087c"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"459b635b18bc9fc4b552435c24a8fb49e04e1897","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Kolla-kubernetes\u0027 goal is to create a tool using Kubernetes and the Kolla"},{"line_number":13,"context_line":"containers to deploy and manage a containerized production ready OpenStack"},{"line_number":14,"context_line":"environment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_a049da90","line":14,"updated":"2016-06-02 21:41:08.000000000","message":"The objective is to manage the lifecycle of OpenStack service containers as k8s \"services\" controlled by replication controllers in order to obtain the self-healing and upgrade capabilities inherent in k8s.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"f404e71e9469d9f3cab178b633b4d1ed8461b5bf","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Kolla-kubernetes\u0027 goal is to create a tool using Kubernetes and the Kolla"},{"line_number":13,"context_line":"containers to deploy and manage a containerized production ready OpenStack"},{"line_number":14,"context_line":"environment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_77695725","line":14,"in_reply_to":"7aa08908_da17d252","updated":"2016-06-06 21:16:55.000000000","message":"What I was trying to convey is a description of what done looks like in a way that was appropriate for an introduction.  Not so much of WHY.  I will fix","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Kolla-kubernetes\u0027 goal is to create a tool using Kubernetes and the Kolla"},{"line_number":13,"context_line":"containers to deploy and manage a containerized production ready OpenStack"},{"line_number":14,"context_line":"environment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_eb8766d5","line":14,"in_reply_to":"7aa08908_f17be279","updated":"2016-06-04 15:02:08.000000000","message":"Done","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":14103,"name":"wangtianfa","email":"wang.tianfa@99cloud.net","username":"wangtianfa"},"change_message_id":"6a1b81a65ace24d7aafd0070a501a9d672e407e7","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Kolla-kubernetes\u0027 goal is to create a tool using Kubernetes and the Kolla"},{"line_number":13,"context_line":"containers to deploy and manage a containerized production ready OpenStack"},{"line_number":14,"context_line":"environment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_f17be279","line":14,"in_reply_to":"9abb7d3a_a049da90","updated":"2016-06-04 02:09:54.000000000","message":"Done","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"d5416506efedb8b8ec8e18186d68126f7fb42867","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Kolla-kubernetes\u0027 goal is to create a tool using Kubernetes and the Kolla"},{"line_number":13,"context_line":"containers to deploy and manage a containerized production ready OpenStack"},{"line_number":14,"context_line":"environment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_66beea00","line":14,"in_reply_to":"9abb7d3a_a049da90","updated":"2016-06-02 22:11:38.000000000","message":"Done","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Kolla-kubernetes\u0027 goal is to create a tool using Kubernetes and the Kolla"},{"line_number":13,"context_line":"containers to deploy and manage a containerized production ready OpenStack"},{"line_number":14,"context_line":"environment."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_da17d252","line":14,"in_reply_to":"9abb7d3a_a049da90","updated":"2016-06-05 06:52:28.000000000","message":"Greg,\n\nI think the objective you point out goes into WHY we are doing this.  The spec should be WHAT we are doing.  I am good with WHYs being in the specification, but each W in the Principle of the five Ws are orthogonal.  They should be separately addressed per paragraph.\n\nCould you propose two separate sentences that keep the original goal intact for Ryan to integrate?\n\nTIA","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":39,"context_line":"- Kubernetes to handle container scheduling."},{"line_number":40,"context_line":"- Feedback loop when using Kubernetes health checks during deployment and"},{"line_number":41,"context_line":"  upgrade."},{"line_number":42,"context_line":"- Solution for HA around containers."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_fa160e54","line":42,"range":{"start_line":42,"start_character":18,"end_line":42,"end_character":24},"updated":"2016-06-05 06:52:28.000000000","message":"the word Solution and around is awkward here - if you rev the  spec I\u0027d recommend\n\"High Availability (HA) for individual containers.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"f404e71e9469d9f3cab178b633b4d1ed8461b5bf","unresolved":false,"context_lines":[{"line_number":39,"context_line":"- Kubernetes to handle container scheduling."},{"line_number":40,"context_line":"- Feedback loop when using Kubernetes health checks during deployment and"},{"line_number":41,"context_line":"  upgrade."},{"line_number":42,"context_line":"- Solution for HA around containers."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_576edb01","line":42,"range":{"start_line":42,"start_character":18,"end_line":42,"end_character":24},"in_reply_to":"7aa08908_fa160e54","updated":"2016-06-06 21:16:55.000000000","message":"Done","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Config generation will be completely decoupled from the deployment. The"},{"line_number":62,"context_line":"containers only expect a config file to land in a specific directory in"},{"line_number":63,"context_line":"the container in order to run.  With this decoupled model, anyone can use"},{"line_number":64,"context_line":"any tool to generate config files.  The kolla-kubernetes community will evaluate"},{"line_number":65,"context_line":"any config generation tool, but will likely use Ansible for config generation"},{"line_number":66,"context_line":"in order to reuse existing work from the community.  This solution uses"},{"line_number":67,"context_line":"customized Ansible and jinja2 templates to generate the config. Also, there will"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_3a09b632","line":64,"range":{"start_line":63,"start_character":59,"end_line":64,"end_character":8},"updated":"2016-06-05 06:52:28.000000000","message":"anyone is a pronoun and offers zero value to the sentence.  I am a pronoun hater :) - i\u0027d go with \"With this decoupled model, any tool could be used to generate config files\".","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"3806c27760f5c4fa7bb39a6baa8b65fd60d44f3b","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Bootstrapping"},{"line_number":77,"context_line":"-------------"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":80,"context_line":"that will initialize the databases and create the users. The bootstrapping task"},{"line_number":81,"context_line":"will be a Kubernetes Job, which will run the task until completion then"},{"line_number":82,"context_line":"terminate the pods [7]. This task will run for all services and it will be the"},{"line_number":83,"context_line":"second task in deployment, after the database is created."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Each service will have a bootstrap task so that when the operator upgrades,"},{"line_number":86,"context_line":"the bootstrap tasks are reused to upgrade the database.  This will allow"}],"source_content_type":"text/x-rst","patch_set":15,"id":"dab17558_ae4e806c","line":83,"range":{"start_line":79,"start_character":0,"end_line":83,"end_character":57},"updated":"2016-05-16 12:12:06.000000000","message":"There\u0027s a counter argument to this approach.\n\nKubernetes handles an upgrade in a single operation by scaling down the old running containers and scaling up new containers. If kolla-kubernetes has a separate operation for bootstrapping it means that the native kubernetes upgrade can\u0027t be used.  The upgrade would require the operator to tell Kubernetes to scale down a service\u0027s running containers, do a data base sync for that service, and scale back up the new services.\n\nI think the above solution is a possibility, but would require heavy orchestration.\n\nI added some alternative bootstrap approaches below.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"d5416506efedb8b8ec8e18186d68126f7fb42867","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Bootstrapping"},{"line_number":77,"context_line":"-------------"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":80,"context_line":"that will initialize the databases and create the users. The bootstrapping task"},{"line_number":81,"context_line":"will be a Kubernetes Job, which will run the task until completion then"},{"line_number":82,"context_line":"terminate the pods [7]. This task will run for all services and it will be the"},{"line_number":83,"context_line":"second task in deployment, after the database is created."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Each service will have a bootstrap task so that when the operator upgrades,"},{"line_number":86,"context_line":"the bootstrap tasks are reused to upgrade the database.  This will allow"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_a303a475","line":83,"range":{"start_line":79,"start_character":0,"end_line":83,"end_character":57},"in_reply_to":"bab6814e_ee2bc331","updated":"2016-06-02 22:11:38.000000000","message":"Done","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"6642799d8ab3c77d7e295575670543defb808c08","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Bootstrapping"},{"line_number":77,"context_line":"-------------"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":80,"context_line":"that will initialize the databases and create the users. The bootstrapping task"},{"line_number":81,"context_line":"will be a Kubernetes Job, which will run the task until completion then"},{"line_number":82,"context_line":"terminate the pods [7]. This task will run for all services and it will be the"},{"line_number":83,"context_line":"second task in deployment, after the database is created."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Each service will have a bootstrap task so that when the operator upgrades,"},{"line_number":86,"context_line":"the bootstrap tasks are reused to upgrade the database.  This will allow"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_fba87179","line":83,"range":{"start_line":79,"start_character":0,"end_line":83,"end_character":57},"in_reply_to":"bab6814e_ee2bc331","updated":"2016-06-03 19:54:24.000000000","message":"Yeah, simple upgrades (point releases) should just work with deployments. deployments/sidecars are not suitable for bootstrapping/major upgrades due to workflow/operator requirements. Jobs can be put into a proper workflow or manually be executed by an operator as needed for proper operation.\n\nSince we keep taking about that, I think we probably need to get this reasoning into the spec explicitly.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21996,"name":"Ken Wronkiewicz","email":"wh-openstack@wirewd.com","username":"bowtie"},"change_message_id":"f5755f72b9fe6ccfddbb0050049533f4d35a4174","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Bootstrapping"},{"line_number":77,"context_line":"-------------"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":80,"context_line":"that will initialize the databases and create the users. The bootstrapping task"},{"line_number":81,"context_line":"will be a Kubernetes Job, which will run the task until completion then"},{"line_number":82,"context_line":"terminate the pods [7]. This task will run for all services and it will be the"},{"line_number":83,"context_line":"second task in deployment, after the database is created."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"Each service will have a bootstrap task so that when the operator upgrades,"},{"line_number":86,"context_line":"the bootstrap tasks are reused to upgrade the database.  This will allow"}],"source_content_type":"text/x-rst","patch_set":15,"id":"bab6814e_ee2bc331","line":83,"range":{"start_line":79,"start_character":0,"end_line":83,"end_character":57},"in_reply_to":"dab17558_ae4e806c","updated":"2016-05-24 21:07:37.000000000","message":"There are two separate concerns going on here.\n\nFirst: Triggering the bootstrap (or update -- these should be implemented identially).  This can be done manually by submitting a Job to Kubernetes via Ansible.  Or you can run it as a sidecar or as a proper service.  The sidecar, of course, needs to avoid unnecessarily triggering multiple bootstraps at around the same time.\n\nSecond: Actually running the bootstrap.  This should be a Kubernetes Job.\n\nBootstrap processes and version upgrades (e.g. not just a bugfix release of the executables, but an actual different database schema) need to be handled in the same fashion.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21996,"name":"Ken Wronkiewicz","email":"wh-openstack@wirewd.com","username":"bowtie"},"change_message_id":"f5755f72b9fe6ccfddbb0050049533f4d35a4174","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Upgrades"},{"line_number":127,"context_line":"--------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Kubernetes has an object called a Deployment, where the operator defines a"},{"line_number":130,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":131,"context_line":"desired state when a change is detected."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"bab6814e_9167b6b6","line":129,"updated":"2016-05-24 21:07:37.000000000","message":"The biggest operator headache is major version upgrades.  Unless kolla-kubernetes make these upgrades seamless, it will be a mere toy.  Version upgrades have often come with disruptive changes like SQL schema changes.\n\nKubernetes Deployments will handle the lifecycle of the individual processes but contains no higher-level support for triggering a workload.\n\nUsing the same mechanism as bootstrap (a Job kicked off potentially by multiple different potential mechanisms), kolla-kubernetes needs to be able to execute upgrades with migrations.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Upgrades"},{"line_number":127,"context_line":"--------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Kubernetes has an object called a Deployment, where the operator defines a"},{"line_number":130,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":131,"context_line":"desired state when a change is detected."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_bc3483de","line":129,"in_reply_to":"7aa08908_4bc4ba91","updated":"2016-06-05 06:52:28.000000000","message":"Flexibility makes upgrades much more challenging.  If we keep it tightly bounded, we should have a better outcome.\n\n Lets take an incremental approach by doing AIO, then multinode.  Upgrade really only affects multinode, because AIO\u0027s use case is for evaluation.  Multinode is months out - lets work with the Kolla core devs that have gone to work on Kubernetes full time to get whatever requirements we need here implemented more quickly.\n\nSpecifically these folks are:\nasalkeld\nnihilfer\ndims\n\nWhat we really need is an enumerated list of requirements around upgrade (not necessarily in the specification) as it relates to Kubernetes so we can feed that to our Kubernetes trio above to sort out.  Ryan can you start a mailing list thread on this topic?","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"2dcb515e0e106956d1fedb350663f043a03b0dc6","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Upgrades"},{"line_number":127,"context_line":"--------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Kubernetes has an object called a Deployment, where the operator defines a"},{"line_number":130,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":131,"context_line":"desired state when a change is detected."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_2e4d2ec4","line":129,"in_reply_to":"7aa08908_bc3483de","updated":"2016-06-14 15:46:56.000000000","message":"At this point, what I can see is we need the ability to execute jobs in a deployment.  Or health checks that are cluster aware.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":126,"context_line":"Upgrades"},{"line_number":127,"context_line":"--------"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Kubernetes has an object called a Deployment, where the operator defines a"},{"line_number":130,"context_line":"desired state for the pods and the deployment will move the cluster to the"},{"line_number":131,"context_line":"desired state when a change is detected."},{"line_number":132,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_4bc4ba91","line":129,"in_reply_to":"bab6814e_9167b6b6","updated":"2016-06-04 15:02:08.000000000","message":"Like Kevin mentioned above, operators will have workflow requirements with major upgrades.  Our job at the very least, would be to provide a means for the operator to handle a major upgrade by having a lot of flexibility.\n\nI\u0027ve talked with some kubernetes folks and having actions as part of an upgrade process is something that is on their radar, but won\u0027t be implemented for a few months.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"d5416506efedb8b8ec8e18186d68126f7fb42867","unresolved":false,"context_lines":[{"line_number":157,"context_line":"around this [10]. For example, to implement storage fencing, the operator can"},{"line_number":158,"context_line":"use ceph backed storage [11][12]. This is an option that the community can"},{"line_number":159,"context_line":"document in order to provide kolla-kubernetes with a production ready solution"},{"line_number":160,"context_line":"if Kubernetes cannot."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Persistent Storage"},{"line_number":163,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_a3628414","line":160,"updated":"2016-06-02 22:11:38.000000000","message":"comment:  if we are going to provide CEPH as a default option anyway (see below) shouldn\u0027t we just solve this lease-lock problem at least?","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":22143,"name":"David Wang","email":"dcwangmit01@gmail.com","username":"dcwangmit01"},"change_message_id":"df3657fe374876fbf3ad90cf4efe05f46414e8f0","unresolved":false,"context_lines":[{"line_number":157,"context_line":"around this [10]. For example, to implement storage fencing, the operator can"},{"line_number":158,"context_line":"use ceph backed storage [11][12]. This is an option that the community can"},{"line_number":159,"context_line":"document in order to provide kolla-kubernetes with a production ready solution"},{"line_number":160,"context_line":"if Kubernetes cannot."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Persistent Storage"},{"line_number":163,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_feecdff4","line":160,"in_reply_to":"9abb7d3a_a3628414","updated":"2016-06-04 04:07:31.000000000","message":"If you\u0027re refering to the problem where a Kube node silently disappears without unlocking its Ceph volumes, causing Pod migrations to the new nodes to fail because of still-locked volumes, then I believe Kubernetes is slated to fix this (1.3.0?)\n\nThe implementation is not using leases.  Instead, a controller will poll for disappeared nodes and unlock the orphaned Ceph volumes.\n\nhttps://github.com/kubernetes/kubernetes/issues/20262\nhttps://github.com/kubernetes/kubernetes/issues/21931","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":157,"context_line":"around this [10]. For example, to implement storage fencing, the operator can"},{"line_number":158,"context_line":"use ceph backed storage [11][12]. This is an option that the community can"},{"line_number":159,"context_line":"document in order to provide kolla-kubernetes with a production ready solution"},{"line_number":160,"context_line":"if Kubernetes cannot."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Persistent Storage"},{"line_number":163,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_abba7ebe","line":160,"in_reply_to":"9abb7d3a_feecdff4","updated":"2016-06-04 15:02:08.000000000","message":"Thanks I\u0027ll make note of it","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"Kubernetes has many types of persistent storage [13]. Since Kubernetes doesn\u0027t"},{"line_number":166,"context_line":"guarantee a pod will always be scheduled to a host, it makes node based"},{"line_number":167,"context_line":"persistent storage unlikely, unless the community uses labels everywhere."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Persistent storage in kolla-kubernetes will come from volumes backed by"},{"line_number":170,"context_line":"different storage offerings to provide persistent storage.  Kolla-kubernetes"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_fc73abb2","line":167,"range":{"start_line":167,"start_character":62,"end_line":167,"end_character":72},"updated":"2016-06-05 06:52:28.000000000","message":"define \"everywhere\".  I guess I don\u0027t understand the implication of the conditional.  Also the use of word community is totally wrong here (nitpicking a bit) - It is actually the implementation that uses labels. \n\nA definition such as \"unless  the implementation uses labels in all Kubernetes yaml orchestration files\" or whatver other sentence you come up with that is accurate.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":22143,"name":"David Wang","email":"dcwangmit01@gmail.com","username":"dcwangmit01"},"change_message_id":"df3657fe374876fbf3ad90cf4efe05f46414e8f0","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Persistent storage in kolla-kubernetes will come from volumes backed by"},{"line_number":170,"context_line":"different storage offerings to provide persistent storage.  Kolla-kubernetes"},{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_fe469f4d","line":171,"range":{"start_line":171,"start_character":32,"end_line":171,"end_character":36},"updated":"2016-06-04 04:07:31.000000000","message":"Ceph supports many use cases and is a large project.  It may be useful to clarify what part of Ceph will be used for the persistent storage solution.  For example, Kubernetes is able to mount Ceph RBD volumes, as well as CephFS volumes.  We probably mean RBD here, but I\u0027m not sure what was intended.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"Persistent storage in kolla-kubernetes will come from volumes backed by"},{"line_number":170,"context_line":"different storage offerings to provide persistent storage.  Kolla-kubernetes"},{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_eb02c66e","line":171,"range":{"start_line":171,"start_character":32,"end_line":171,"end_character":36},"in_reply_to":"9abb7d3a_fe469f4d","updated":"2016-06-04 15:02:08.000000000","message":"Ceph RBD.  I\u0027ll make note of it.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":22143,"name":"David Wang","email":"dcwangmit01@gmail.com","username":"dcwangmit01"},"change_message_id":"df3657fe374876fbf3ad90cf4efe05f46414e8f0","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Persistent storage in kolla-kubernetes will come from volumes backed by"},{"line_number":170,"context_line":"different storage offerings to provide persistent storage.  Kolla-kubernetes"},{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_f70e32e4","line":172,"range":{"start_line":172,"start_character":48,"end_line":172,"end_character":60},"updated":"2016-06-04 04:07:31.000000000","message":"additional","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":169,"context_line":"Persistent storage in kolla-kubernetes will come from volumes backed by"},{"line_number":170,"context_line":"different storage offerings to provide persistent storage.  Kolla-kubernetes"},{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_4bf83a7d","line":172,"range":{"start_line":172,"start_character":48,"end_line":172,"end_character":60},"in_reply_to":"7aa08908_f70e32e4","updated":"2016-06-04 15:02:08.000000000","message":"Done","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"d5416506efedb8b8ec8e18186d68126f7fb42867","unresolved":false,"context_lines":[{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_a330c408","line":174,"updated":"2016-06-02 22:11:38.000000000","message":"question:  should we spell out if the CEPH cluster is outside k8s?  Or perhaps the control plane of CEPH is containerized?  If not, why not?  This is sure to come up","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"f404e71e9469d9f3cab178b633b4d1ed8461b5bf","unresolved":false,"context_lines":[{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_129c61bf","line":174,"in_reply_to":"7aa08908_3c6ed3c9","updated":"2016-06-06 21:16:55.000000000","message":"done - https://bugs.launchpad.net/kolla/+bug/1589698","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_3c6ed3c9","line":174,"in_reply_to":"7aa08908_4ef8487d","updated":"2016-06-05 06:52:28.000000000","message":"Ryan.\n\nI agree with your approach here.  Please specify it.\n\nGreg,\n\nWe know in Kolla-land that operators want to re-use existing ceph.  I am not sure if it can be done without code changes in existing Kolla or not.  Would you mind filing a bug at https://bugs.launchpad.net/kolla/+filebug\n\nthat the Kolla documentation needs to be enhanced to describe how to re-use a pre-existing ceph deployment and integrate the deployed OpenStack with that?  That will naturally be inherited by kolla-kubernetes using Ryan\u0027s approach.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_eb864612","line":174,"in_reply_to":"7aa08908_97936e4f","updated":"2016-06-04 15:02:08.000000000","message":"I was thinking we could use kolla-ansible to deploy a containerized ceph before kubernetes is run. What would we really gain by having kubernetes manage ceph?  Like you said, ceph would need to be anchored to certain nodes.\n\nInstead, we could just provide the ansible playbook to be the batteries included model.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"e93ba0edfbbf97df30d58573486264fdc3cec91d","unresolved":false,"context_lines":[{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_4ef8487d","line":174,"in_reply_to":"7aa08908_eb864612","updated":"2016-06-04 17:03:30.000000000","message":"As long as we provide a working means to solve the problem.  Many users will want enough of a solution that it \"just works\" even if they have to take more steps up front.  And I agree that users that have CEPH already running will want to re-use it.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":22143,"name":"David Wang","email":"dcwangmit01@gmail.com","username":"dcwangmit01"},"change_message_id":"df3657fe374876fbf3ad90cf4efe05f46414e8f0","unresolved":false,"context_lines":[{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_97936e4f","line":174,"in_reply_to":"9abb7d3a_1b6d7598","updated":"2016-06-04 04:07:31.000000000","message":"True we could ensure Ceph/Kubernetes nodes are dedicated to Ceph and are not a shared pool to run other containers.  This could work, albeit suboptimally given that Ceph nodes usually connect to each other over a secondary private network for replication (and you may yet have to target Ceph nodes to specific hardware for optimization).  I\u0027m still slightly concerned that Ceph MON nodes may need persistent storage themselves, and the obvious options to create a batteries-included solution are 1) Use hostPath volumes which would be less resilient than distributed block storage 2) Have Ceph MON nodes mount volumes in its own cluster (is this a reliable dependency?).","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"6642799d8ab3c77d7e295575670543defb808c08","unresolved":false,"context_lines":[{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_1b6d7598","line":174,"in_reply_to":"9abb7d3a_978e9625","updated":"2016-06-03 19:54:24.000000000","message":"I\u0027d like to see it both ways. Batteries included would use k8s to deploy ceph as well. Between Node Labels and daemonsets, you should be able to land the containers where they need to be.\n\nContainers that use ceph volumes spell the config out inside the container itself, not in the k8s config, so there shouldn\u0027t be a dependency issue.\n\nAs an op that has existing cephs though, reusing those is a requirement.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":22143,"name":"David Wang","email":"dcwangmit01@gmail.com","username":"dcwangmit01"},"change_message_id":"7d8d4ad20f43db53d78738fee170b75744bf90ae","unresolved":false,"context_lines":[{"line_number":171,"context_line":"will provide a default soltion, ceph, that the community will deploy with"},{"line_number":172,"context_line":"multinode. From there, kolla-kubernetes can add any addition persistent storage"},{"line_number":173,"context_line":"options as well as support options for the operator to reference an existing"},{"line_number":174,"context_line":"storage solution."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_978e9625","line":174,"in_reply_to":"9abb7d3a_a330c408","updated":"2016-06-03 19:37:06.000000000","message":"The Ceph data nodes and their OSD processes need dedicated I/O and should not be required to compete with any other pods from any other applications (as in a typical Kubernetes cluster which is a shared resource among applications). Ceph data nodes are usually setup with a private cluster network for data sync and replication, which avoids flooding the network that services other applications.  Thus, Ceph data nodes will probably run outside of Kubernetes.\n\nRunning the Ceph control plane (MONs) within Kubernetes is a possibility, but it may create a cyclical dependency between Ceph and Kubernetes, especially if the MON nodes need persistent storage.\n\nceph/ceph-ansible already has good support for creating and managing a standalone HA Ceph cluster.  It also has support for running ceph processes as docker containers.  It would be great effort to do better, on top of Kubernetes.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":176,"context_line":"Service Roles"},{"line_number":177,"context_line":"-------------"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"#TODO: mention Network \u0026 Storage roles"},{"line_number":180,"context_line":"OpenStack can split up into two main roles, Controller and Compute. With"},{"line_number":181,"context_line":"Kubernetes, the role definition layer changes. Kolla-kubernetes will still"},{"line_number":182,"context_line":"need to define Compute nodes, but not Controller nodes.  Compute nodes hold the"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_fc81eb4e","line":179,"updated":"2016-06-05 06:52:28.000000000","message":"please fix this todo","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"d5416506efedb8b8ec8e18186d68126f7fb42867","unresolved":false,"context_lines":[{"line_number":186,"context_line":"active and abstracted from the operator\u0027s view [14]. kolla-kubernetes can direct"},{"line_number":187,"context_line":"Controller services away from the Compute node using labels, while managing"},{"line_number":188,"context_line":"Compute services more strictly."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Security impact"},{"line_number":191,"context_line":"---------------"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_4648065c","line":189,"updated":"2016-06-02 22:11:38.000000000","message":"Monitoring\n------------\n\nRunning OpenStack in containers managed by k8s will create complexity that will become more difficult to troubleshoot.   We should recommend (if not provide) means to both handle the complex logging and log analysis.  Should we suggest SysDig?","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"f404e71e9469d9f3cab178b633b4d1ed8461b5bf","unresolved":false,"context_lines":[{"line_number":186,"context_line":"active and abstracted from the operator\u0027s view [14]. kolla-kubernetes can direct"},{"line_number":187,"context_line":"Controller services away from the Compute node using labels, while managing"},{"line_number":188,"context_line":"Compute services more strictly."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Security impact"},{"line_number":191,"context_line":"---------------"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_729205a1","line":189,"in_reply_to":"7aa08908_1a3b1aed","updated":"2016-06-06 21:16:55.000000000","message":"Done","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"e93ba0edfbbf97df30d58573486264fdc3cec91d","unresolved":false,"context_lines":[{"line_number":186,"context_line":"active and abstracted from the operator\u0027s view [14]. kolla-kubernetes can direct"},{"line_number":187,"context_line":"Controller services away from the Compute node using labels, while managing"},{"line_number":188,"context_line":"Compute services more strictly."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Security impact"},{"line_number":191,"context_line":"---------------"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_2ef5fc82","line":189,"in_reply_to":"7aa08908_2ba04e90","updated":"2016-06-04 17:03:30.000000000","message":"I suspect hekad is OK - no need to start a vi-emacs thing yet.  If it\u0027s already containerized and in use elsewhere.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":186,"context_line":"active and abstracted from the operator\u0027s view [14]. kolla-kubernetes can direct"},{"line_number":187,"context_line":"Controller services away from the Compute node using labels, while managing"},{"line_number":188,"context_line":"Compute services more strictly."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Security impact"},{"line_number":191,"context_line":"---------------"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_1a3b1aed","line":189,"in_reply_to":"7aa08908_2ba04e90","updated":"2016-06-05 06:52:28.000000000","message":"Related to logstash.  This was never really publicly (or privately) argued in the diagnostics specification, bug logstash-forwarder (the half of logstash that is an analog to heka or filebeat) has been EOLed upstream (reference https://github.com/elastic/logstash-forwarder).  I don\u0027t understand why this wasn\u0027t brought up earlier, but logstash-forwarder is not an option.  Filebeat would have been a possibility - I\u0027m not sure why it wasn\u0027t researched, but I have heard through the grapevine (not verified independently) filebeat has all kinds of problems.\n\nI have heard rumors that logstash itself will be deprecated within the year, but can\u0027t find an official reference so that may just be nonsense.  If you follow Elastic\u0027s blog posts, you might make this inference on your own.\n\nGiven that Kolla already has a nicely implemented diagnostics solution in containers, I think it just makes sense to reuse that.  As for collectd - collectd feeding information to elasticsearch via heka (or directly if it can do that) seems fine to me.  I\u0027d like to see that implemented in Kolla directly though first.\n\nAll that said, I don\u0027t think we need to overload this specification with all Kolla features (such as diagnostics).  I\u0027d be happy with the basics specified - deploy, reconfigure, upgrade.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":186,"context_line":"active and abstracted from the operator\u0027s view [14]. kolla-kubernetes can direct"},{"line_number":187,"context_line":"Controller services away from the Compute node using labels, while managing"},{"line_number":188,"context_line":"Compute services more strictly."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Security impact"},{"line_number":191,"context_line":"---------------"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_2ba04e90","line":189,"in_reply_to":"7aa08908_d7ba166e","updated":"2016-06-04 15:02:08.000000000","message":"Kolla uses Heka.  That\u0027s if we want to reuse what\u0027s already containerized.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"6642799d8ab3c77d7e295575670543defb808c08","unresolved":false,"context_lines":[{"line_number":186,"context_line":"active and abstracted from the operator\u0027s view [14]. kolla-kubernetes can direct"},{"line_number":187,"context_line":"Controller services away from the Compute node using labels, while managing"},{"line_number":188,"context_line":"Compute services more strictly."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Security impact"},{"line_number":191,"context_line":"---------------"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_bbf429cf","line":189,"in_reply_to":"9abb7d3a_4648065c","updated":"2016-06-03 19:54:24.000000000","message":"elk?","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":22143,"name":"David Wang","email":"dcwangmit01@gmail.com","username":"dcwangmit01"},"change_message_id":"df3657fe374876fbf3ad90cf4efe05f46414e8f0","unresolved":false,"context_lines":[{"line_number":186,"context_line":"active and abstracted from the operator\u0027s view [14]. kolla-kubernetes can direct"},{"line_number":187,"context_line":"Controller services away from the Compute node using labels, while managing"},{"line_number":188,"context_line":"Compute services more strictly."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Security impact"},{"line_number":191,"context_line":"---------------"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_d7ba166e","line":189,"in_reply_to":"9abb7d3a_bbf429cf","updated":"2016-06-04 04:07:31.000000000","message":"+1 for ELK, coupled with something similar to collectd.  Sysdig is a very nice commercial option, and their agent may be open-source.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":204,"context_line":"services will take a different amount of time to start up for each deployment"},{"line_number":205,"context_line":"because the order will always vary when the services become active."},{"line_number":206,"context_line":"As such, it\u0027s hard to quantify the exact performance impact other than it is"},{"line_number":207,"context_line":"small."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Networking"},{"line_number":210,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_1c7317b3","line":207,"range":{"start_line":207,"start_character":0,"end_line":207,"end_character":5},"updated":"2016-06-05 06:52:28.000000000","message":"I think the word you mean here is \"different\" :)","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":22143,"name":"David Wang","email":"dcwangmit01@gmail.com","username":"dcwangmit01"},"change_message_id":"df3657fe374876fbf3ad90cf4efe05f46414e8f0","unresolved":false,"context_lines":[{"line_number":209,"context_line":"Networking"},{"line_number":210,"context_line":"----------"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Kolla-kubernetes will initially use \u0027net\u003dhost\u0027 everywhere until the community"},{"line_number":213,"context_line":"reaches a point where it needs to be reevaluated as to which services will run"},{"line_number":214,"context_line":"without \u0027net\u003dhost\u0027 in order to gain additional functionality."},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_97036e0d","line":212,"range":{"start_line":212,"start_character":47,"end_line":212,"end_character":57},"updated":"2016-06-04 04:07:31.000000000","message":"Not all Openstack containers should need --net\u003dhost (horizon and other API services included).  Ideally we would use this only when necessary.\n\nUsing --net\u003dhost may have some drawbacks:\n* Not possible to run two of the same Pods with same listening ports on the same Node.\n* May require us to implement duplicate of Kubernetes service discovery network framework.  Not sure if Kubernetes services will work properly with --net\u003dhost (service -\u003e pod probably doesn\u0027t work)\n* Lessens security because network stack is not containerized and requires setup steps outside of Kubernetes.\n* Kubernetes versions 1.0+ now use iptables instead of proxying, which should alleviate any concerns for performance.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"f404e71e9469d9f3cab178b633b4d1ed8461b5bf","unresolved":false,"context_lines":[{"line_number":209,"context_line":"Networking"},{"line_number":210,"context_line":"----------"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Kolla-kubernetes will initially use \u0027net\u003dhost\u0027 everywhere until the community"},{"line_number":213,"context_line":"reaches a point where it needs to be reevaluated as to which services will run"},{"line_number":214,"context_line":"without \u0027net\u003dhost\u0027 in order to gain additional functionality."},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_d2e81913","line":212,"range":{"start_line":212,"start_character":47,"end_line":212,"end_character":57},"in_reply_to":"7aa08908_6b1d36bd","updated":"2016-06-06 21:16:55.000000000","message":"Done","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":209,"context_line":"Networking"},{"line_number":210,"context_line":"----------"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"Kolla-kubernetes will initially use \u0027net\u003dhost\u0027 everywhere until the community"},{"line_number":213,"context_line":"reaches a point where it needs to be reevaluated as to which services will run"},{"line_number":214,"context_line":"without \u0027net\u003dhost\u0027 in order to gain additional functionality."},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_6b1d36bd","line":212,"range":{"start_line":212,"start_character":47,"end_line":212,"end_character":57},"in_reply_to":"7aa08908_97036e0d","updated":"2016-06-04 15:02:08.000000000","message":"I think it will come to a point where we will move off of net\u003dhost.  I\u0027ll make a blueprint for it.  For getting up and running though, net\u003dhost will do the job.\n\nI\u0027ll add some notes based on your comments.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"002ceabe490523fabb5736e6ef41031f2dfac0e4","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"The community will implement centralized logging by using a \u0027side car\u0027 container"},{"line_number":220,"context_line":"in the Kubernetes pod [16].  The logging service will trace the logs from the"},{"line_number":221,"context_line":"shared volume of the running serivce and push it to centralized logging stash."},{"line_number":222,"context_line":"This solution is ideal because volumes are shared amoung the containers in a"},{"line_number":223,"context_line":"pod."},{"line_number":224,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_dc9fcfb2","line":221,"range":{"start_line":221,"start_character":64,"end_line":221,"end_character":77},"updated":"2016-06-05 06:52:28.000000000","message":"gah - just send the data directly to elsaticsearch from the per-node heka containers.  no centralized logstash is needed - plus logstash is damaged property.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"d5416506efedb8b8ec8e18186d68126f7fb42867","unresolved":false,"context_lines":[{"line_number":220,"context_line":"in the Kubernetes pod [16].  The logging service will trace the logs from the"},{"line_number":221,"context_line":"shared volume of the running serivce and push it to centralized logging stash."},{"line_number":222,"context_line":"This solution is ideal because volumes are shared amoung the containers in a"},{"line_number":223,"context_line":"pod."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_86d4ae47","line":223,"updated":"2016-06-02 22:11:38.000000000","message":"comment:   highly recommend we provide a recommended solution, such as using ELK.  If we are providing CEPH anyway we can put elastic search indexes on volumes backed by CEPH and the resulting solution is FAR more operable.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"6642799d8ab3c77d7e295575670543defb808c08","unresolved":false,"context_lines":[{"line_number":220,"context_line":"in the Kubernetes pod [16].  The logging service will trace the logs from the"},{"line_number":221,"context_line":"shared volume of the running serivce and push it to centralized logging stash."},{"line_number":222,"context_line":"This solution is ideal because volumes are shared amoung the containers in a"},{"line_number":223,"context_line":"pod."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_fbecf1f4","line":223,"in_reply_to":"9abb7d3a_86d4ae47","updated":"2016-06-03 19:54:24.000000000","message":"I think that\u0027s what\u0027s being implied here. logstash or something similar in a sidecar to fetch the logs, and push them somewhere more central.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"49e94d2840a0ce9e0dab8190f5f19e6bbbc31920","unresolved":false,"context_lines":[{"line_number":220,"context_line":"in the Kubernetes pod [16].  The logging service will trace the logs from the"},{"line_number":221,"context_line":"shared volume of the running serivce and push it to centralized logging stash."},{"line_number":222,"context_line":"This solution is ideal because volumes are shared amoung the containers in a"},{"line_number":223,"context_line":"pod."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_0b83d2cd","line":223,"in_reply_to":"9abb7d3a_fbecf1f4","updated":"2016-06-04 15:02:08.000000000","message":"I\u0027ll make it more clear.","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"e93ba0edfbbf97df30d58573486264fdc3cec91d","unresolved":false,"context_lines":[{"line_number":220,"context_line":"in the Kubernetes pod [16].  The logging service will trace the logs from the"},{"line_number":221,"context_line":"shared volume of the running serivce and push it to centralized logging stash."},{"line_number":222,"context_line":"This solution is ideal because volumes are shared amoung the containers in a"},{"line_number":223,"context_line":"pod."},{"line_number":224,"context_line":""},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"Implementation"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_8e587058","line":223,"in_reply_to":"9abb7d3a_fbecf1f4","updated":"2016-06-04 17:03:30.000000000","message":"Yes.  We want two things:  something we use ourselves in development and test that we can say \"works\" - this providing a pattern for re-use that our users can adopt.... and if it\u0027s dogfood that we ate then we can stand behind it","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":21904,"name":"Greg Herlein","email":"gherlein@herlein.com","username":"gherlein"},"change_message_id":"d5416506efedb8b8ec8e18186d68126f7fb42867","unresolved":false,"context_lines":[{"line_number":257,"context_line":"  Serguei Bezverkhi (sbezverk)"},{"line_number":258,"context_line":"  Sidharth Surana (ssurana)"},{"line_number":259,"context_line":"  Zdenek Janda (xdeu)"},{"line_number":260,"context_line":"  \u003cPlease add your name here if you are getting involved in kolla-kubernetes\u003e"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"Milestones"},{"line_number":263,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_e6577ac8","line":260,"updated":"2016-06-02 22:11:38.000000000","message":"Greg Herlein (gherlein)","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":22143,"name":"David Wang","email":"dcwangmit01@gmail.com","username":"dcwangmit01"},"change_message_id":"7d8d4ad20f43db53d78738fee170b75744bf90ae","unresolved":false,"context_lines":[{"line_number":258,"context_line":"  Sidharth Surana (ssurana)"},{"line_number":259,"context_line":"  Zdenek Janda (xdeu)"},{"line_number":260,"context_line":"  \u003cPlease add your name here if you are getting involved in kolla-kubernetes\u003e"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"Milestones"},{"line_number":263,"context_line":"----------"},{"line_number":264,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"9abb7d3a_7c7832f9","line":261,"updated":"2016-06-03 19:37:06.000000000","message":"David Wang (dcwangmit01)","commit_id":"fee7f9ffec42906db53a34cf83b530cf5e196d4d"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"7fdd596d2d12976ae289c0b3a8883051bf069be3","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":79,"context_line":"that will initialize the databases and create the users. The bootstrapping task"},{"line_number":80,"context_line":"will be a Kubernetes Job, which will run the task until completion then"},{"line_number":81,"context_line":"terminate the pods [7]."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Each service will have a bootstrap task so that when the operator upgrades,"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_e5baeabf","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":24},"updated":"2016-06-05 16:24:02.000000000","message":"Kubernetes Job\u0027s instead of a job? It would give the operators a bit more flexibility on what to run and what to skip. Would be very useful when debugging a new system or migrating from non containers to containers. A single bootstrap command to run the bootstrap workflow and submit the K8s jobs serially could be used to make it simple to use for those just starting from scratch.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"abf328e007aa975936c960c3eb4e08aeb52ad6b0","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"Bootstrapping the Kolla containers involves running a single task per service"},{"line_number":79,"context_line":"that will initialize the databases and create the users. The bootstrapping task"},{"line_number":80,"context_line":"will be a Kubernetes Job, which will run the task until completion then"},{"line_number":81,"context_line":"terminate the pods [7]."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Each service will have a bootstrap task so that when the operator upgrades,"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_0d05df12","line":80,"range":{"start_line":80,"start_character":8,"end_line":80,"end_character":24},"in_reply_to":"7aa08908_e5baeabf","updated":"2016-06-14 14:19:34.000000000","message":"Right now there is a job per service. With the CLI you can bootstrap a service\u0027s job or run all bootstrap jobs.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"7fdd596d2d12976ae289c0b3a8883051bf069be3","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The Kolla containers will communicate with the Kubernetes API server to in order"},{"line_number":88,"context_line":"to be self aware of if any bootstrapping processes are occuring."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternative bootstrap approaches:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"1) Create 2 pods per OpenStack service. One pod is designed to do the"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_45e77ee4","line":89,"updated":"2016-06-05 16:24:02.000000000","message":"If bootstrapping was done as suggested above, deployments would be added in the appropriate step in the bootstrap workflow, skipping the need for pods to be aware of what\u0027s going on in the greater system. This, I think, is using k8s as intended. I\u0027m worried trying to make each container know part of the workflow is going to be very tricky to get to work right, have scalability issues, be difficult to debug, and a potential security risk if authentication/authorization isn\u0027t done right. Lets skip the api server and just do the logic outside where its easier.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"abf328e007aa975936c960c3eb4e08aeb52ad6b0","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The Kolla containers will communicate with the Kubernetes API server to in order"},{"line_number":88,"context_line":"to be self aware of if any bootstrapping processes are occuring."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"Alternative bootstrap approaches:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"1) Create 2 pods per OpenStack service. One pod is designed to do the"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_2e1c0e69","line":89,"in_reply_to":"7aa08908_45e77ee4","updated":"2016-06-14 14:19:34.000000000","message":"The only way I see for pods to not be cluster aware at this point is for an orchestration tool outside of it to be cluster aware for it.  The issue with that though is we won\u0027t get full use of the Kubernetes native tooling because the application won\u0027t be fully under Kubernetes control.\n\nThe means by which the community is making pods cluster aware is still evolving.  The next iteration may be readiness checks to the Kube api endpoint or something.\n\nAlso, it\u0027s debatable whether having pods being cluster aware is Kubernetes like or not because I don\u0027t think there has been an application as complicated as OpenStack that\u0027s been deployed by Kubernetes.  So I\u0027d say it\u0027s to be determined.\n\nKubernetes also provides a cert into each container it controls. So accessing this endpoint securely shouldn\u0027t be an issue.\n\nhttp://kubernetes.io/docs/user-guide/accessing-the-cluster/#accessing-the-api-from-a-pod\n\nI agree with your concerns about making the containers cluster aware is tricky.  I want to make sure we do an exhaustive search for how to do this with native Kubernetes before we look to outside tooling.  I think as the community learns more about Kubernetes, kolla-kubernetes will find a solution that fits what we\u0027re trying to accomplish whether it\u0027s native or not.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"7fdd596d2d12976ae289c0b3a8883051bf069be3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Dependencies"},{"line_number":112,"context_line":"------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"- Kubernetes \u003e\u003d 1.2.0"},{"line_number":115,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":116,"context_line":"- Jinja2 \u003e\u003d 2.8.0"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_85d166fe","line":114,"updated":"2016-06-05 16:24:02.000000000","message":"Deployments is experimental in 1.2. Probably should specify \u003e\u003d 1.3","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"abf328e007aa975936c960c3eb4e08aeb52ad6b0","unresolved":false,"context_lines":[{"line_number":111,"context_line":"Dependencies"},{"line_number":112,"context_line":"------------"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"- Kubernetes \u003e\u003d 1.2.0"},{"line_number":115,"context_line":"- Docker \u003e\u003d 1.10.0"},{"line_number":116,"context_line":"- Jinja2 \u003e\u003d 2.8.0"},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_840a4c77","line":114,"in_reply_to":"7aa08908_85d166fe","updated":"2016-06-14 14:19:34.000000000","message":"Done","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3df82461e3bc9a8895d58b3f092c46e102959027","unresolved":false,"context_lines":[{"line_number":183,"context_line":"persistent storage options as well as support options for the operator to"},{"line_number":184,"context_line":"reference an existing storage solution."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"To deploy Ceph, the community will use the Ansible playbooks from Kolla to"},{"line_number":187,"context_line":"deploy a containerized Ceph.  Ceph will exist independently outside of the"},{"line_number":188,"context_line":"Kubernetes architecture."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Service Roles"},{"line_number":191,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_ba1c8678","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":24},"updated":"2016-06-05 06:17:51.000000000","message":"on this point we should also document how to use an already deployed ceph cluster that was not deployed with kolla.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"abf328e007aa975936c960c3eb4e08aeb52ad6b0","unresolved":false,"context_lines":[{"line_number":183,"context_line":"persistent storage options as well as support options for the operator to"},{"line_number":184,"context_line":"reference an existing storage solution."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"To deploy Ceph, the community will use the Ansible playbooks from Kolla to"},{"line_number":187,"context_line":"deploy a containerized Ceph.  Ceph will exist independently outside of the"},{"line_number":188,"context_line":"Kubernetes architecture."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Service Roles"},{"line_number":191,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_47018604","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":24},"in_reply_to":"7aa08908_25e23204","updated":"2016-06-14 14:19:34.000000000","message":"Done","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"5794a14c6f3642af7df04fe572f5bf09f9322847","unresolved":false,"context_lines":[{"line_number":183,"context_line":"persistent storage options as well as support options for the operator to"},{"line_number":184,"context_line":"reference an existing storage solution."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"To deploy Ceph, the community will use the Ansible playbooks from Kolla to"},{"line_number":187,"context_line":"deploy a containerized Ceph.  Ceph will exist independently outside of the"},{"line_number":188,"context_line":"Kubernetes architecture."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Service Roles"},{"line_number":191,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_25e23204","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":24},"in_reply_to":"7aa08908_7cc4db91","updated":"2016-06-05 15:35:52.000000000","message":"Operators tend to prefer not to have lots of different ways of doing the same thing to have to learn to debug and monitor. OpenStack tends to already be kind of crazy that way all by itself. My preference would be to use k8s for ceph as well, if possible. Using ansible for generating the config\u0027s is ok as that\u0027s a separate activity but having two different deployment mechanisms seems needlessly complex. Its also more complicated to figure out what\u0027s not working for monitoring. You can\u0027t just ask k8s for everything. Unlike networking, the k8s system doesn\u0027t need to be configured to work with ceph, so there is no circular dependency. The config\u0027s are all per rc/deployment/pod level for rdb volumes. So something like: k8s is deployed on all nodes, labels are added to the nodes to keep them separate (or not for an all in one setup) and ceph is deployed on its labels, and service containers on the other labels. I think using a daemonset and net\u003dhost should work for ceph use case. Ceph will see the private and public networks, and ip/hostnames will always be consistent.\n\nThough, if the point here is to get something going quicker for a 1.0 kind of release, and then switch it over to k8s for ceph in a future version, that sounds like a reasonable path forward but should probably be called out explicitly here.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"d20d169324387303f7816634eb4b57e73e54b425","unresolved":false,"context_lines":[{"line_number":183,"context_line":"persistent storage options as well as support options for the operator to"},{"line_number":184,"context_line":"reference an existing storage solution."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"To deploy Ceph, the community will use the Ansible playbooks from Kolla to"},{"line_number":187,"context_line":"deploy a containerized Ceph.  Ceph will exist independently outside of the"},{"line_number":188,"context_line":"Kubernetes architecture."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Service Roles"},{"line_number":191,"context_line":"-------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_7cc4db91","line":188,"range":{"start_line":186,"start_character":0,"end_line":188,"end_character":24},"in_reply_to":"7aa08908_ba1c8678","updated":"2016-06-05 06:56:43.000000000","message":"Sean,\n\nI asked Greg to file a bug for that against kolla proper as a documentation bug.  It may end up requiring code too - I just don\u0027t know.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"7fdd596d2d12976ae289c0b3a8883051bf069be3","unresolved":false,"context_lines":[{"line_number":198,"context_line":"However, the Controller role is more flexible.  The Kubernetes layer provides IP"},{"line_number":199,"context_line":"persistence so that APIs will remain active and abstracted from the operator\u0027s"},{"line_number":200,"context_line":"view [15]. kolla-kubernetes can direct Controller services away from the Compute"},{"line_number":201,"context_line":"node using labels, while managing Compute services more strictly."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Security impact"},{"line_number":204,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_e52f8af4","line":201,"range":{"start_line":201,"start_character":64,"end_line":201,"end_character":65},"updated":"2016-06-05 16:24:02.000000000","message":"What about making the labels configurable per controller deployment yaml. Then by default, it can be \"controller\", to land them on a pool of controller nodes. For all in 1, it can be set to \u0027compute\u0027 so that it lands with the compute nodes. and an Operator who wants to scale out particular services to different nodes for performance reasons (we have for ceilomteter/gnocchi) can label those differently to land it on a different pool.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"abf328e007aa975936c960c3eb4e08aeb52ad6b0","unresolved":false,"context_lines":[{"line_number":198,"context_line":"However, the Controller role is more flexible.  The Kubernetes layer provides IP"},{"line_number":199,"context_line":"persistence so that APIs will remain active and abstracted from the operator\u0027s"},{"line_number":200,"context_line":"view [15]. kolla-kubernetes can direct Controller services away from the Compute"},{"line_number":201,"context_line":"node using labels, while managing Compute services more strictly."},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Security impact"},{"line_number":204,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_8ab25504","line":201,"range":{"start_line":201,"start_character":64,"end_line":201,"end_character":65},"in_reply_to":"7aa08908_e52f8af4","updated":"2016-06-14 14:19:34.000000000","message":"I agree this would be nice.  I think the community needs to discuss further the means by which everything is orchestrated.  I\u0027ll add your comments to the spec.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"7fdd596d2d12976ae289c0b3a8883051bf069be3","unresolved":false,"context_lines":[{"line_number":297,"context_line":"6. Write startup docs"},{"line_number":298,"context_line":"7. Add orchestration tools around the pods"},{"line_number":299,"context_line":"8. All in one gating"},{"line_number":300,"context_line":"9. Convert each service to a \u0027Deployment\u0027"},{"line_number":301,"context_line":"10. Build multinode environment"},{"line_number":302,"context_line":"11. Reevaluate net\u003dhost"},{"line_number":303,"context_line":"12. Config generation tools"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_85268614","line":300,"updated":"2016-06-05 16:24:02.000000000","message":"Reevaluating net\u003dhost may be needed at the deployment stage? Otherwise, I don\u0027t think count !\u003d 1 will work?","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"abf328e007aa975936c960c3eb4e08aeb52ad6b0","unresolved":false,"context_lines":[{"line_number":297,"context_line":"6. Write startup docs"},{"line_number":298,"context_line":"7. Add orchestration tools around the pods"},{"line_number":299,"context_line":"8. All in one gating"},{"line_number":300,"context_line":"9. Convert each service to a \u0027Deployment\u0027"},{"line_number":301,"context_line":"10. Build multinode environment"},{"line_number":302,"context_line":"11. Reevaluate net\u003dhost"},{"line_number":303,"context_line":"12. Config generation tools"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_ca561d5b","line":300,"in_reply_to":"7aa08908_85268614","updated":"2016-06-14 14:19:34.000000000","message":"net\u003dhost will be enough for an AIO deployment.  Mutlinode is where net\u003dhost will need to change.\n\nRight now net\u003dhost is being evaluated.  I\u0027ll bump this up in the list to reflect this.","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"7fdd596d2d12976ae289c0b3a8883051bf069be3","unresolved":false,"context_lines":[{"line_number":302,"context_line":"11. Reevaluate net\u003dhost"},{"line_number":303,"context_line":"12. Config generation tools"},{"line_number":304,"context_line":"13. Centralized logging"},{"line_number":305,"context_line":"14. Multinode docs"},{"line_number":306,"context_line":"15. Implement reconfigure by templating configmaps"},{"line_number":307,"context_line":"16. Implement upgrades"},{"line_number":308,"context_line":"17. Advancted deployment docs"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_e564aa4a","line":305,"updated":"2016-06-05 16:24:02.000000000","message":"docs before centralized logging?","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":10419,"name":"Ryan Hallisey","email":"rhallise@redhat.com","username":"rhallisey"},"change_message_id":"abf328e007aa975936c960c3eb4e08aeb52ad6b0","unresolved":false,"context_lines":[{"line_number":302,"context_line":"11. Reevaluate net\u003dhost"},{"line_number":303,"context_line":"12. Config generation tools"},{"line_number":304,"context_line":"13. Centralized logging"},{"line_number":305,"context_line":"14. Multinode docs"},{"line_number":306,"context_line":"15. Implement reconfigure by templating configmaps"},{"line_number":307,"context_line":"16. Implement upgrades"},{"line_number":308,"context_line":"17. Advancted deployment docs"}],"source_content_type":"text/x-rst","patch_set":16,"id":"7aa08908_4a7b4df5","line":305,"in_reply_to":"7aa08908_e564aa4a","updated":"2016-06-14 14:19:34.000000000","message":"This order isn\u0027t super strict as anyone can work on anything they want, but I\u0027ll change it around to reflect your comment :).","commit_id":"fb7af42fea65040009bf55ac01162037d9610a1a"},{"author":{"_account_id":21996,"name":"Ken Wronkiewicz","email":"wh-openstack@wirewd.com","username":"bowtie"},"change_message_id":"829aaae006c67685b13d5041256e6f3bc2f1e317","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Networking"},{"line_number":231,"context_line":"----------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Kolla-kubernetes will initially use \u0027net\u003dhost\u0027 everywhere to get the project"},{"line_number":234,"context_line":"going.  When kolla-kubernetes moves to multinode, it needs to be reevaluated"},{"line_number":235,"context_line":"as to which services will run without \u0027net\u003dhost\u0027 in order to gain additional"},{"line_number":236,"context_line":"functionality.  For example, controller services will float between nodes"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7aa08908_c6d6c6c2","line":233,"updated":"2016-06-15 18:22:05.000000000","message":"I think I\u0027ve already forcibly dragged the community places on this one.  :D\n\nWe used \u0027net\u003dhost\u0027 to get the project going.\n\nHowever, because Kubernetes Services and other important bits don\u0027t really work unless Kubernetes network is being used, we should avoid net\u003dhost unless absolutely necessary (e.g. Neutron) even in the All-in-one case.","commit_id":"2c450c5267325adee362a2f5e0e39060222ed44b"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"c5708012bc9d843f368c1f527fdcd861b3b9e499","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Networking"},{"line_number":231,"context_line":"----------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Kolla-kubernetes will initially use \u0027net\u003dhost\u0027 everywhere to get the project"},{"line_number":234,"context_line":"going.  When kolla-kubernetes moves to multinode, it needs to be reevaluated"},{"line_number":235,"context_line":"as to which services will run without \u0027net\u003dhost\u0027 in order to gain additional"},{"line_number":236,"context_line":"functionality.  For example, controller services will float between nodes"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7aa08908_0154381f","line":233,"in_reply_to":"7aa08908_c6d6c6c2","updated":"2016-06-15 18:41:38.000000000","message":"I\u0027m ok with starting to depend on services, but like the shared storage (ceph rbd volume) case, we need to be able to provide a batteries included solution to the need for a k8s external service (load balancer).\n\nFor all in one, its probably ok to do without since the client should be on the all in one machine too and I think can use the local service directly?","commit_id":"2c450c5267325adee362a2f5e0e39060222ed44b"},{"author":{"_account_id":2834,"name":"Steven Dake","email":"steven.dake@gmail.com","username":"sdake"},"change_message_id":"a9125a9630631104f9cefaded9bbda4d8bd9ca2b","unresolved":false,"context_lines":[{"line_number":230,"context_line":"Networking"},{"line_number":231,"context_line":"----------"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"Kolla-kubernetes will initially use \u0027net\u003dhost\u0027 everywhere to get the project"},{"line_number":234,"context_line":"going.  When kolla-kubernetes moves to multinode, it needs to be reevaluated"},{"line_number":235,"context_line":"as to which services will run without \u0027net\u003dhost\u0027 in order to gain additional"},{"line_number":236,"context_line":"functionality.  For example, controller services will float between nodes"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7aa08908_9f9f60b3","line":233,"in_reply_to":"7aa08908_c6d6c6c2","updated":"2016-06-18 02:39:41.000000000","message":"Ken,\n\nWFM.  Lets get things moving and rework later as necessary.  Ryan can you rework this section to permit the use of the 28.8k modem (docker-proxy).","commit_id":"2c450c5267325adee362a2f5e0e39060222ed44b"},{"author":{"_account_id":9237,"name":"Kevin Fox","email":"kevin@efox.cc","username":"kfox1111"},"change_message_id":"0c75e2ff6b27aeb155ac37e958e5cfc5d28bc084","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"The Kolla containers will communicate with the Kubernetes API server to in order"},{"line_number":89,"context_line":"to be self aware of if any bootstrapping processes are occuring."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Alternative bootstrap approaches:"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"1) Create 2 pods per OpenStack service. One pod is designed to do the"}],"source_content_type":"text/x-rst","patch_set":18,"id":"5a9d85d2_d20ac620","line":90,"updated":"2016-06-21 14:43:05.000000000","message":"I don\u0027t think the containers need to communicate with the API server at all. The process doing the bootstrapping can just not kubectl create the Deployments until the appropriate bootstrap jobs are finished.\n\nI think this paragraph can just be removed.","commit_id":"b9e6848c5366046ee7cbd3e2ae683ecee30cc721"}]}
