Stackube User Guide ===================================== ============================= Tenant and Network Management ============================= In this part, we will introduce tenant management and networking in Stackube. The tenant, which is ``1:1`` mapped with k8s namespace, is managed by using k8s CRD (previous TPR) to interact with Keystone. And the tenant is also ``1:1`` mapped with a network automatically, which is also implemented by CRD with standalone Neutron. 1. Create a new tenant :: $ cat test-tenant.yaml apiVersion: "stackube.kubernetes.io/v1" kind: Tenant metadata: name: test spec: username: "test" password: "password" $ kubectl create -f test-tenant.yaml 2. Check the auto-created namespace and network. Wait a while, the namespace and network for this tenant should be created automatically: :: $ kubectl get namespace test NAME STATUS AGE test Active 58m $ kubectl -n test get network test -o yaml apiVersion: stackube.kubernetes.io/v1 kind: Network metadata: clusterName: "" creationTimestamp: 2017-08-03T11:58:31Z generation: 0 name: test namespace: test resourceVersion: "3992023" selfLink: /apis/stackube.kubernetes.io/v1/namespaces/test/networks/test uid: 11d452eb-7843-11e7-8319-68b599b7918c spec: cidr: 10.244.0.0/16 gateway: 10.244.0.1 networkID: "" status: state: Active 3. Check the Network and Tenant created in Neutron by Stackube controller. :: $ source ~/keystonerc_admin $ neutron net-list +--------------------------------------+----------------------+----------------------------------+----------------------------------------------------------+ | id | name | tenant_id | subnets | +--------------------------------------+----------------------+----------------------------------+----------------------------------------------------------+ | 421d913a-a269-408a-9765-2360e202ad5b | kube-test-test | 915b36add7e34018b7241ab63a193530 | bb446a53-de4d-4546-81fc-8736a9a88e3a 10.244.0.0/16 | 4. Check the ``kube-dns`` pods created in the new namespace. :: # kubectl -n test get pods NAME READY STATUS RESTARTS AGE kube-dns-1476438210-37jv7 3/3 Running 0 1h 5. Create pods and services in the new namespace. :: # kubectl -n test run nginx --image=nginx deployment "nginx" created # kubectl -n test expose deployment nginx --port=80 service "nginx" exposed # kubectl -n test get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE kube-dns-1476438210-37jv7 3/3 Running 0 1h 10.244.0.4 stackube nginx-4217019353-6gjxq 1/1 Running 0 27s 10.244.0.10 stackube # kubectl -n test run -i -t busybox --image=busybox sh If you don't see a command prompt, try pressing enter. / # nslookup nginx Server: 10.96.0.10 Address 1: 10.96.0.10 Name: nginx Address 1: 10.108.57.129 nginx.test.svc.cluster.local / # wget -O- nginx Connecting to nginx (10.108.57.129:80)
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
- 100% |*********************************************************************| 612 0:00:00 ETA / # 6. Finally, remove the tenant. :: $ kubectl delete tenant test tenant "test" deleted 7. Check Network in Neutron is also deleted by Stackube controller :: $ neutron net-list +--------------------------------------+---------+----------------------------------+----------------------------------------------------------+ | id | name | tenant_id | subnets | +--------------------------------------+---------+----------------------------------+----------------------------------------------------------+ ============================= Persistent volume ============================= This part describes the persistent volume design and usage in Stackube. ================= Standard Kubernetes volume ================= Stackube is a standard upstream Kubernetes cluster, so any type of `Kubernetes volumes