Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

ETSI-DMS on O-Cloud, Tacker installation 


This document describes how to deploy an openstack-helm environment using Ceph.

1. Preparation

	* Setup StarlingX.
		Install StarlingX R8.0 AIO-SX by following procedure.
		* https://docs.starlingx.io/r/stx.8.0/deploy_install_guides/release/virtual/aio_simplex.html

	* Install required packages on StarlingX environment.

		```
		$ sudo ostree admin unlock --hotfix
		$ wget https://mirror.ufam.edu.br/debian/pool/main/libe/liberror-perl/liberror-perl_0.17029-1_all.deb
		$ wget https://mirror.ufam.edu.br/debian/pool/main/g/git/git-man_2.30.2-1_all.deb
		$ wget https://mirror.ufam.edu.br/debian/pool/main/g/git/git_2.30.2-1_amd64.deb
		$ wget https://mirror.ufam.edu.br/debian/pool/main/m/make-dfsg/make_4.3-4.1_amd64.deb
		$ sudo dpkg -i liberror-perl_0.17029-1_all.deb
		$ sudo dpkg -i git-man_2.30.2-1_all.deb
		$ sudo dpkg -i git_2.30.2-1_amd64.deb
		$ sudo dpkg -i make_4.3-4.1_amd64.deb
		```

	* Clone openstack-helm and openstack-helm-infra code.

		```
		$ git clone https://opendev.org/openstack/openstack-helm.git
		$ git clone https://opendev.org/openstack/openstack-helm-infra.git
		```
	* Add labels to controller-0 node.

		```
		$ kubectl label node controller-0 ceph-mgr=enabled
		$ kubectl label node controller-0 ceph-mon=enabled
		$ kubectl label node controller-0 ceph-mds=enabled
		$ kubectl label node controller-0 ceph-rgw=enabled
		$ kubectl label node controller-0 ceph-osd=enabled
		$ kubectl label node controller-0 openstack-control-plane=enabled
		```

	* Create namespaces.

		```
		$ kubectl create namespace openstack
		$ kubectl create namespace ceph
		```


2. Deploy Ingress Controller
	Original procedure: https://docs.openstack.org/openstack-helm/latest/install/developer/kubernetes-and-common-setup.html#deploy-the-ingress-controller

	* Modify `openstack-helm/tools/deployment/component/common/ingress.sh` file as follows:

		```
		diff --git a/tools/deployment/component/common/ingress.sh b/tools/deployment/component/common/ingress.sh
		index 9ae03719..884f93fc 100755
		--- a/tools/deployment/component/common/ingress.sh
		+++ b/tools/deployment/component/common/ingress.sh
		@@ -29,6 +29,23 @@ deployment:
		   type: DaemonSet
		 network:
		   host_namespace: true
		+endpoints:
		+  ingress:
		+    port:
		+      http:
		+        default: 10080
		+      https:
		+        default: 10443
		+      healthz:
		+        default: 11254
		+      status:
		+        default: 11246
		+      stream:
		+        default: 11247
		+      profiler:
		+        default: 11245
		+      server:
		+        default: 18181
		 EOF
		 
		 touch /tmp/ingress-component.yaml
		@@ -48,21 +65,21 @@ pod:
		 EOF
		 fi
		 
		-helm upgrade --install ingress-kube-system ${HELM_CHART_ROOT_PATH}/ingress \
		-  --namespace=kube-system \
		-  --values=/tmp/ingress-kube-system.yaml \
		-  ${OSH_EXTRA_HELM_ARGS} \
		-  ${OSH_EXTRA_HELM_ARGS_INGRESS} \
		-  ${OSH_EXTRA_HELM_ARGS_INGRESS_KUBE_SYSTEM}
		-
		-#NOTE: Wait for deploy
		-./tools/deployment/common/wait-for-pods.sh kube-system
		+#helm upgrade --install ingress-kube-system ${HELM_CHART_ROOT_PATH}/ingress \
		+#  --namespace=kube-system \
		+#  --values=/tmp/ingress-kube-system.yaml \
		+#  ${OSH_EXTRA_HELM_ARGS} \
		+#  ${OSH_EXTRA_HELM_ARGS_INGRESS} \
		+#  ${OSH_EXTRA_HELM_ARGS_INGRESS_KUBE_SYSTEM}
		+#
		+##NOTE: Wait for deploy
		+#./tools/deployment/common/wait-for-pods.sh kube-system
		 
		 #NOTE: Deploy namespace ingress
		 helm upgrade --install ingress-openstack ${HELM_CHART_ROOT_PATH}/ingress \
		   --namespace=openstack \
		   --values=/tmp/ingress-component.yaml \
		-  --set deployment.cluster.class=nginx \
		+  --set deployment.cluster.class=nginx-openstack \
		   ${OSH_EXTRA_HELM_ARGS} \
		   ${OSH_EXTRA_HELM_ARGS_INGRESS} \
		   ${OSH_EXTRA_HELM_ARGS_INGRESS_OPENSTACK}
		```

	* Execute `ingress.sh`.

		```
		$ cd $HOME/openstack-helm/
		$ ./tools/deployment/component/common/ingress.sh


3. Deploy Ceph
	Original Procedure: https://docs.openstack.org/openstack-helm/latest/install/developer/deploy-with-ceph.html#deploy-ceph

	* Modify `openstack-helm/toolsdeployment/component/ceph/ceph.sh` file as follows:
		```
		diff --git a/tools/deployment/component/ceph/ceph.sh b/tools/deployment/component/ceph/ceph.sh
		index 7d2550cd..518df21d 100755
		--- a/tools/deployment/component/ceph/ceph.sh
		+++ b/tools/deployment/component/ceph/ceph.sh
		@@ -47,8 +47,10 @@ endpoints:
		   ceph_mgr:
		     namespace: ceph
		 network:
		-  public: 172.17.0.1/16
		-  cluster: 172.17.0.1/16
		+  #public: 172.17.0.1/16
		+  #cluster: 172.17.0.1/16
		+  public: 192.168.206.1/24
		+  cluster: 192.168.206.1/24
		 deployment:
		   storage_secrets: true
		   ceph: true
		```

	* Modify `openstack-helm/tools/deployment/component/ceph/ceph-ns-activate.sh` file as follows:

		```
		diff --git a/tools/deployment/component/ceph/ceph-ns-activate.sh b/tools/deployment/component/ceph/ceph-ns-activate.sh
		index 9574d4f0..acadfc3f 100755
		--- a/tools/deployment/component/ceph/ceph-ns-activate.sh
		+++ b/tools/deployment/component/ceph/ceph-ns-activate.sh
		@@ -27,8 +27,10 @@ endpoints:
		   ceph_mon:
		     namespace: ceph
		 network:
		-  public: 172.17.0.1/16
		-  cluster: 172.17.0.1/16
		+  #public: 172.17.0.1/16
		+  #cluster: 172.17.0.1/16
		+  public: 192.168.206.1/24
		+  cluster: 192.168.206.1/24
		 deployment:
		   ceph: false
		   rbd_provisioner: false
		```

	* Execute `ceph.sh` and `ceph-ns-activate.sh`.

		```
		$ cd $HOME/openstack-helm/
		$ ./tools/deployment/component/ceph/ceph.sh
		$ ./tools/deployment/component/ceph/ceph-ns-activate.sh
		```


4. Deploy Other Component
	Original Procedure: https://docs.openstack.org/openstack-helm/latest/install/developer/deploy-with-ceph.html#deploy-mariadb ~
		Install the following components to use Tacker:
		* MariaDB
		* RabbitMQ
		* Memcached
		* Keystone
		* Glance

	* Modify `openstack-helm/tools/deployment/component/glance/glance.sh` file as follows:

		```
		diff --git a/tools/deployment/component/glance/glance.sh b/tools/deployment/component/glance/glance.sh
		index e3b45078..56ab0907 100755
		--- a/tools/deployment/component/glance/glance.sh
		+++ b/tools/deployment/component/glance/glance.sh
		@@ -27,7 +27,8 @@ make glance
		 tee /tmp/glance.yaml <<EOF
		 storage: ${GLANCE_BACKEND}
		 volume:
		-  class_name: standard
		+  class_name: general
		 EOF
		 helm upgrade --install glance ./glance \
		   --namespace=openstack \
		```

	* Execute script files.

		```
		$ ./tools/deployment/developer/ceph/050-mariadb.sh
		$ ./tools/deployment/developer/ceph/060-rabbitmq.sh
		$ ./tools/deployment/developer/ceph/070-memcached.sh
		$ ./tools/deployment/developer/ceph/080-keystone.sh
		$ ./tools/deployment/component/glance/glance.sh
		```


5. Deploy Barbican and Tacker

	* Modify `openstack-helm/tacker/templates/pvc.yaml` file as follows:

		```
		diff --git a/tacker/templates/pvc.yaml b/tacker/templates/pvc.yaml
		index 8b1678b3..c0599b45 100644
		--- a/tacker/templates/pvc.yaml
		+++ b/tacker/templates/pvc.yaml
		@@ -23,7 +23,7 @@ metadata:
		   name: {{ $name }}
		 spec:
		   accessModes:
		-    - "ReadWriteMany"
		+    - "ReadWriteOnce"
		   resources:
		     requests:
		       storage: {{ $size }}
		```

	* Modify `openstack-helm/tacker/values.yaml` file as follows:

		```
		diff --git a/tacker/values.yaml b/tacker/values.yaml
		index 90702f95..a3f02a62 100644
		--- a/tacker/values.yaml
		+++ b/tacker/values.yaml
		@@ -105,12 +105,16 @@ pod:
		   security_context:
		     server:
		       pod:
		-        runAsUser: 42424
		-        runAsNonRoot: true
		+        runAsUser: 0
		+        runAsNonRoot: false
		     conductor:
		       pod:
		-        runAsUser: 42424
		-        runAsNonRoot: true
		+        runAsUser: 0
		+        runAsNonRoot: false
		   lifecycle:
		     termination_grace_period:
		       server:
		```

	* Execute script files.

		```
		$ ./tools/deployment/developer/common/085-barbican.sh
		$ ./tools/deployment/component/tacker/tacker.sh
		```

6. Verify successful deployment

	* The helm releases are deployed as follows:

		```
		sysadmin@controller-0:~$ helm list -n ceph
		NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
		ceph-client             ceph            1               2023-10-04 13:28:04.214446853 +0000 UTC deployed        ceph-client-0.1.47              v1.0.0     
		ceph-mon                ceph            1               2023-10-04 13:23:25.009836684 +0000 UTC deployed        ceph-mon-0.1.30                 v1.0.0     
		ceph-osd                ceph            1               2023-10-04 13:26:07.829373478 +0000 UTC deployed        ceph-osd-0.1.47                 v1.0.0     
		ceph-provisioners       ceph            1               2023-10-04 13:30:04.478204441 +0000 UTC deployed        ceph-provisioners-0.1.26        v1.0.0     
		ingress-ceph            ceph            1               2023-10-02 07:59:46.619657229 +0000 UTC deployed        ingress-0.2.17                  v1.5.1     
		
		sysadmin@controller-0:~$ helm list -n openstack
		NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                           APP VERSION
		barbican                openstack       1               2023-10-04 14:11:54.122228604 +0000 UTC deployed        barbican-0.3.5                  v1.0.0     
		ceph-openstack-config   openstack       1               2023-10-04 13:35:39.737074964 +0000 UTC deployed        ceph-provisioners-0.1.26        v1.0.0     
		glance                  openstack       1               2023-10-05 01:14:44.18606719 +0000 UTC  deployed        glance-0.4.13                   v1.0.0     
		ingress-openstack       openstack       1               2023-10-02 07:59:30.823441021 +0000 UTC deployed        ingress-0.2.17                  v1.5.1     
		keystone                openstack       2               2023-10-04 13:58:36.81624535 +0000 UTC  deployed        keystone-0.3.4                  v1.0.0     
		mariadb                 openstack       1               2023-10-04 13:36:33.178219784 +0000 UTC deployed        mariadb-0.2.33                  v10.6.7    
		memcached               openstack       1               2023-10-04 13:44:40.7788406 +0000 UTC   deployed        memcached-0.1.13                v1.5.5     
		rabbitmq                openstack       1               2023-10-04 13:39:44.683045128 +0000 UTC deployed        rabbitmq-0.1.29                 v3.9.0     
		tacker                  openstack       1               2023-10-05 10:03:19.033603307 +0000 UTC deployed        tacker-0.1.1                    v1.0.0 
		```

	* The pods are read as follows (Check all pods are "Completed" or "Running" status):

		```
		sysadmin@controller-0:~/openstack-helm$ kubectl get pod -n ceph
		NAME                                       READY   STATUS      RESTARTS      AGE
		ceph-bootstrap-zx84v                       0/1     Completed   0             45h
		ceph-cephfs-client-key-generator-25d8b     0/1     Completed   0             44h
		ceph-checkdns-79d7d8bb68-qq8jb             1/1     Running     0             44h
		ceph-mds-7b84466549-9cqlg                  1/1     Running     0             44h
		ceph-mds-keyring-generator-b4ggp           0/1     Completed   0             45h
		ceph-mgr-664d8b66cb-rr7bz                  1/1     Running     0             45h
		ceph-mgr-keyring-generator-sqv4q           0/1     Completed   0             45h
		ceph-mon-check-9dc8fd588-c5m4z             1/1     Running     0             45h
		ceph-mon-default-37207810-cc466            1/1     Running     0             45h
		ceph-mon-keyring-generator-mwxpl           0/1     Completed   0             45h
		ceph-osd-default-83945928-zhpsf            2/2     Running     0             45h
		ceph-osd-keyring-generator-s4c6p           0/1     Completed   0             45h
		ceph-pool-checkpgs-28276455-6lgl5          0/1     Completed   0             12m
		ceph-rbd-csi-provisioner-cc45b976c-clv8n   5/5     Running     0             44h
		ceph-rbd-csi-provisioner-cc45b976c-wjtfb   5/5     Running     0             44h
		ceph-rbd-plugin-4m4kq                      2/2     Running     0             44h
		ceph-rbd-pool-sqscp                        0/1     Completed   0             44h
		ceph-storage-keys-generator-mvcpf          0/1     Completed   0             45h
		ingress-5955fbfb76-n9td7                   1/1     Running     1 (45h ago)   4d2h
		ingress-error-pages-6c49c5ff74-7nl2q       1/1     Running     1 (45h ago)   4d2h
		
		sysadmin@controller-0:~/openstack-helm$ kubectl get pod -n openstack
		NAME                                                        READY   STATUS      RESTARTS      AGE
		barbican-api-75fd4d79d7-ncz2c                               1/1     Running     0             46h
		barbican-db-init-mvhs4                                      0/1     Completed   0             46h
		barbican-db-sync-2hn96                                      0/1     Completed   0             46h
		barbican-ks-endpoints-57rm2                                 0/3     Completed   0             46h
		barbican-ks-service-x2jqn                                   0/1     Completed   0             46h
		barbican-ks-user-ds9h6                                      0/1     Completed   0             46h
		barbican-rabbit-init-gz647                                  0/1     Completed   0             46h
		barbican-test                                               0/1     Completed   0             46h
		ceph-openstack-config-ceph-ns-ceph-config-generator-wqv7c   0/1     Completed   0             46h
		ceph-openstack-config-ceph-ns-key-cleaner-lkbpk             0/1     Completed   0             3d9h
		ceph-openstack-config-ceph-ns-key-generator-g55dn           0/1     Completed   0             46h
		glance-api-97df56ddb-pr598                                  1/1     Running     0             35h
		glance-bootstrap-fbmpq                                      0/1     Completed   0             35h
		glance-db-init-gtmdc                                        0/1     Completed   0             35h
		glance-db-sync-9jkb8                                        0/1     Completed   0             35h
		glance-ks-endpoints-dkb6m                                   0/3     Completed   0             35h
		glance-ks-service-xdhfk                                     0/1     Completed   0             35h
		glance-ks-user-9xhvf                                        0/1     Completed   0             35h
		glance-metadefs-load-rw2kc                                  0/1     Completed   0             35h
		glance-rabbit-init-c4wvr                                    0/1     Completed   0             35h
		glance-storage-init-lzn72                                   0/1     Completed   0             35h
		ingress-5448bbd7d-7rz99                                     1/1     Running     1 (47h ago)   4d4h
		ingress-error-pages-54c8fdfb4d-wgktt                        1/1     Running     1 (47h ago)   4d4h
		keystone-api-6cb7d765ff-srpwg                               1/1     Running     0             46h
		keystone-bootstrap-f9s5n                                    0/1     Completed   0             46h
		keystone-credential-setup-27qkx                             0/1     Completed   0             46h
		keystone-db-init-sr9dj                                      0/1     Completed   0             46h
		keystone-db-sync-7hnj8                                      0/1     Completed   0             46h
		keystone-domain-manage-2n6sf                                0/1     Completed   0             46h
		keystone-fernet-rotate-28275120-djbg7                       0/1     Completed   0             24h
		keystone-fernet-rotate-28275840-z2wnq                       0/1     Completed   0             12h
		keystone-fernet-rotate-28276560-z6rmr                       0/1     Completed   0             30m
		keystone-fernet-setup-x8px7                                 0/1     Completed   0             46h
		keystone-rabbit-init-w5h9q                                  0/1     Completed   0             46h
		mariadb-ingress-7f9bcfd79b-6flfw                            1/1     Running     0             46h
		mariadb-ingress-7f9bcfd79b-tlwkc                            1/1     Running     0             46h
		mariadb-ingress-error-pages-557b55c45f-tw8sw                1/1     Running     0             46h
		mariadb-server-0                                            1/1     Running     0             46h
		memcached-memcached-785bbdd4d8-zxh76                        1/1     Running     0             46h
		rabbitmq-cluster-wait-49khp                                 0/1     Completed   0             46h
		rabbitmq-rabbitmq-0                                         1/1     Running     0             46h
		rabbitmq-rabbitmq-1                                         1/1     Running     0             46h
		tacker-conductor-9f977f5b4-tx58c                            1/1     Running     0             26h
		tacker-db-init-4d7xz                                        0/1     Completed   0             26h
		tacker-db-sync-vwzg2                                        0/1     Completed   0             26h
		tacker-ks-endpoints-426wd                                   0/3     Completed   0             26h
		tacker-ks-service-lltsv                                     0/1     Completed   0             26h
		tacker-ks-user-5vpws                                        0/1     Completed   0             26h
		tacker-rabbit-init-2jkgb                                    0/1     Completed   0             26h
		tacker-server-76d9bbf6c8-skk8h                              1/1     Running     0             26h
		```

	* Test if Tacker is working properly

		```
		$ TACKER_SERVER_POD=tacker-server-76d9bbf6c8-skk8h
		$ TACKER_ENDPOINT=tacker.openstack.svc.cluster.local
		
		# Issue token from keystone
		$ kubectl exec -n openstack -it $TACKER_SERVER_POD \
		  -- curl -i -X POST -H "Content-Type: application/json" \
		  -d '{"auth":{"identity":{"methods":["password"],"password":{"user":{"domain":{"name":"default"},"name":"admin","password":"password"}}},"scope":{"project":{"domain":{"name":"default"},"name":"admin"}}}}' \
		  http://keystone.openstack.svc.cluster.local/v3/auth/tokens
		
		HTTP/1.1 201 CREATED
		Date: Fri, 06 Oct 2023 12:46:40 GMT
		Content-Type: application/json
		Content-Length: 3175
		Connection: keep-alive
		X-Subject-Token: gAAAAABlIAGv1RqxqMJ7rt_VyAtPTxF0XjMG19zp-0zaZmHdFkKmEjLfUus09GkPUdcbCeVuR8ZfmMjqg9C2kRCWWX4Llfdwld1lKM-beqQ7s127kjhpilf28e1oXh351CmBFy97PaZ9D5WBoe3fRrDkhhB_cEsB76Pyj6P2KQuNeMIhGmb1fKA
		Vary: X-Auth-Token
		x-openstack-request-id: req-408ef1f6-2b61-4a8d-89b0-0d987878cbbb

		# Set `X-Subject-Token` retrieved as TOKEN 
		$ TOKEN=gAAAAABlIAGv1RqxqMJ7rt_VyAtPTxF0XjMG19zp-0zaZmHdFkKmEjLfUus09GkPUdcbCeVuR8ZfmMjqg9C2kRCWWX4Llfdwld1lKM-beqQ7s127kjhpilf28e1oXh351CmBFy97PaZ9D5WBoe3fRrDkhhB_cEsB76Pyj6P2KQuNeMIhGmb1fKA
		
		$ kubectl exec -n openstack -it $TACKER_SERVER_POD \
		  -- curl -X GET ${TACKER_ENDPOINT}/vnflcm/v2/vnf_instances \
		  -H "X-Auth-Token:$TOKEN" -H "Version: 2.0.0"
		[]    *** Success if you can get an empty list ***
  • No labels