Port to Kubernetes V1

Registered by Ton Ngo

Google announced Kubernetes V1 at OSCON, 7/2015. This should mark a stable API after the several betas. The latest release at this time is the 1.0.3 release. Recommended accompanying software are etcd 2.0.10 and docker 1.7.1; flannel is not considered part of the release so a version is not specified.
Magnum current code uses the v1beta3 api. The image fedora-21-atomic-3.qcow2 contains the 0.15 release and docker 1.3.2.
Since the latest Kubernetes release no longer supports beta api, we need to update to the V1 api.

Blueprint information

Status:
Complete
Approver:
hongbin
Priority:
Undefined
Drafter:
Ton Ngo
Direction:
Approved
Assignee:
Ton Ngo
Definition:
New
Series goal:
Proposed for liberty
Implementation:
Implemented
Milestone target:
None
Started by
Ton Ngo
Completed by
Ton Ngo

Related branches

Sprints

Whiteboard

8/24/15 tango:
In the first attempt, the image fedora-21-atomic-4.qcow2 has release 1.0.0, which is a pre-release version available at that time. I have built a new image with the official latest release 1.0.3, etcd 2.0.10, docker 1.7.1, flannel 0.5.0. Docker requires some more debugging since some of the default storage option set by atomic installation has been deprecated and is not working.
Hongbin has volunteered to work on the k8sclient.
This bug also needs to be fixed: https://bugs.launchpad.net/bugs/1481889

9/2/15 tango;
Debugging image built with the above component. The kubernetes services on the master node start up correctly, but on the minion node, we are running into issues with setting up the storage for docker.

The first problem is that docker 1.7.1 deprecates the storage options dm.datadev and dm.metadatadev, replacing them with dm.thinpooldev for better operation with LVM. Atomic host uses the tool docker-storage-setup to set up the docker storage, and this tool was updated to disallow the deprecated options. However, the default configuration file still has the deprecated options, so the tool fails. This problem is fixed by updating the configuration file in the minion.

The second problem is that the new thinpool feature requires LVM2 at or higher than lvm2-2.02.112. The current image is picking up lvm2-2.02.111, so we have to set up the repo in copr to host lvm2-2.02.112.

These problems are discussed in:
https://github.com/projectatomic/adb-atomic-developer-bundle/issues/69

Gerrit topic: https://review.openstack.org/#q,topic:bp/kubernetes-v1,n,z

Addressed by: https://review.openstack.org/217427
    WIP: Checkout generated k8s client

Addressed by: https://review.openstack.org/217428
    WIP: Use k8sclient v1 to talk to k8s server

Addressed by: https://review.openstack.org/218373
    WIP: Update functional test for the k8s api

Gerrit topic: https://review.openstack.org/#q,topic:k8sv1,n,z

Addressed by: https://review.openstack.org/210641
    Migrate to Kubernetes Release 1 (devstack plugin)

Addressed by: https://review.openstack.org/207300
    Migrate to Kubernetes Release 1 (docs)

Addressed by: https://review.openstack.org/207299
    Migrate to Kubernetes Release 1 (scripts)

Addressed by: https://review.openstack.org/221376
    Temporarily remove dependency on package certifi

Addressed by: https://review.openstack.org/221504
    Docs update for new fedora atomic 1.0.4

Addressed by: https://review.openstack.org/222933
    Update documentation for generating k8s v1 client

Gerrit topic: https://review.openstack.org/#q,topic:bp/swarm-functional-testing,n,z

(?)

Work Items

Work items:
1. Build new image: INPROGRESS
2. Update devstack plugin: INPROGRESS
3. Regenerate the k8sclient: INPROGRESS
4. Update k8s templates: INPROGRESS
5. Update functional test for the k8s api: INPROGRESS
6. Update quickstart, manual docs: INPROGRESS

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.