diff --git a/docs/getting-started-guides/index.md b/docs/getting-started-guides/index.md index 1378e6de11..0f213f5d52 100644 --- a/docs/getting-started-guides/index.md +++ b/docs/getting-started-guides/index.md @@ -82,6 +82,7 @@ These solutions are combinations of cloud provider and OS not covered by the abo - [Vmware](/docs/getting-started-guides/coreos) (uses CoreOS and flannel) - [libvirt-coreos.md](/docs/getting-started-guides/libvirt-coreos) (uses CoreOS) - [oVirt](/docs/getting-started-guides/ovirt) +- [OpenStack](/docs/getting-started-guides/openstack) (uses CentOS and flannel) - [libvirt](/docs/getting-started-guides/fedora/flannel_multi_node_cluster) (uses Fedora and flannel) - [KVM](/docs/getting-started-guides/fedora/flannel_multi_node_cluster) (uses Fedora and flannel) @@ -140,6 +141,7 @@ Bare-metal | custom | Ubuntu | Calico | [docs](/docs/gettin Bare-metal | custom | Ubuntu | flannel | [docs](/docs/getting-started-guides/ubuntu) | | Community ([@resouer](https://github.com/resouer), [@WIZARD-CXY](https://github.com/WIZARD-CXY)) libvirt/KVM | CoreOS | CoreOS | libvirt/KVM | [docs](/docs/getting-started-guides/libvirt-coreos) | | Community ([@lhuard1A](https://github.com/lhuard1A)) oVirt | | | | [docs](/docs/getting-started-guides/ovirt) | | Community ([@simon3z](https://github.com/simon3z)) +OpenStack | Saltstack | CentOS | flannel | [docs](/docs/getting-started-guides/openstack) | | Community ([@FujitsuEnablingSoftwareTechnologyGmbH](https://github.com/FujitsuEnablingSoftwareTechnologyGmbH)) Rackspace | CoreOS | CoreOS | flannel | [docs](/docs/getting-started-guides/rackspace) | | Community ([@doublerr](https://github.com/doublerr)) any | any | any | any | [docs](/docs/getting-started-guides/scratch) | | Community ([@erictune](https://github.com/erictune)) diff --git a/docs/getting-started-guides/openstack.md b/docs/getting-started-guides/openstack.md new file mode 100644 index 0000000000..ccb47d7aef --- /dev/null +++ b/docs/getting-started-guides/openstack.md @@ -0,0 +1,117 @@ +--- +--- + +* TOC +{:toc} + +## Getting started with OpenStack + +Running Kubernetes with Openstack is an easy way to create Kubernetes cluster on the top of OpenStack. Heat OpenStack Orchestration +engine describes the infrastructure for Kubernetes cluster. CentoOS images are used for Kubernetes host machines. + +## Prerequisites + +1. Install latest version OpenStack clients + + heat >= 0.9.0 + + swift >= 2.7.0 + + glance >= 1.2.0 + + nova >= 3.2.0 + + ``` + sudo pip install -U --force python-heatclient + sudo pip install -U --force python-swiftclient + sudo pip install -U --force python-glanceclient + sudo pip install -U --force python-novaclient + ``` +#### Note: +OpenStack CLI clients like python-PROJECTNAMEclient are going to be deprecated soon in favor of universal OpenStack CLI client. +More information you can find here: [deprecate-cli](https://specs.openstack.org/openstack/openstack-specs/specs/deprecate-cli.html) + + +2. Set proper values in configuration files + +Project contains four files with configuration: config-default.sh, config-image.sh, openrc-default.sh and openrc-swift.sh + +**config-default.sh** sets all parameters needed for heat template. +Additionally there is a flag CREATE_IMAGE which indicates if new image must be created. +If 'false' then image with IMAGE_ID will be used. + +**config-image.sh** sets parameters needed to create new OpenStack image if flag CREATE_IMAGE=true. +Use CentOS 7 image for this purpose. You can get image here: [CentOS images](http://cloud.centos.org/centos/7/images/) + +**openrc-default.sh openrs-swift.sh** those files contain credential variables for OpenStack clients. + + +## Setup + +Setting up a cluster: + +```sh +export KUBERNETES_PROVIDER=openstack +cd kubernetes +make clean +make quick-release +./cluster/kube-up.sh +``` + +Alternatively, you can download [Kubernetes release](https://github.com/kubernetes/kubernetes/releases) and extract the archive. To start your local cluster, open a shell and run: + +```sh +cd kubernetes + +export KUBERNETES_PROVIDER=openstack +./cluster/kube-up.sh +``` + +The `KUBERNETES_PROVIDER` environment variable tells all of the various cluster management scripts which variant to use. If you forget to set this, the assumption is you are running on Google Compute Engine. + +## Interacting with your Kubernetes cluster with Openstack + +You can manage the nodes in your cluster with the Openstack WEB UI like Horizon or using heat or nova clients. + +To get all necessary information about cluster execute commands in main kubernetes directory: + +``` +. cluster/openstack/config-default.sh +. cluster/openstack/openrc-default.sh +heat stack-show $STACK_NAME +``` + +You will get cluster status and IP addresses for your master and minion nodes. + +## Authenticating with your master + +Because you added public key to nodes you can easily ssh to them. + +``` +$ ssh minion@IP_ADDRESS +``` + +## Running containers + +Your cluster is running, you can list the nodes in your cluster: + +```console +$ ./cluster/kubectl.sh get nodes +NAME LABELS STATUS AGE +kubernetesstack-node-tc9f2tfr kubernetes.io/hostname=kubernetesstack-node-tc9f2tfr Ready 21h +``` + +Before starting a container there will be no pods, services and replication controllers. + +```console +$ ./cluster/kubectl.sh get pods +NAME READY STATUS RESTARTS AGE + +$ ./cluster/kubectl.sh get services +NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE + +$ ./cluster/kubectl.sh get replicationcontrollers +CONTROLLER CONTAINER(S) IMAGE(S) SELECTOR REPLICAS +``` + +Now you are ready to create you first service and controller.