From f2383969dad7a619ea0ce1fed77f619b36b8e0db Mon Sep 17 00:00:00 2001 From: ssunaga Date: Thu, 19 Dec 2024 08:10:29 +0900 Subject: [PATCH] Add documentation for running v1 FT locally This patch adds documentation for running v1 FT locally on a multi-node system similar to Zuul. The porpose of this change is to encourage users to test Tacker v1 features on local since most of v1 features are not under active development anymore and planned to be moved to periodic jobs or dropped from zuul tests. Five test scenarios are supported in this change as a first step. * tacker-ft-legacy-vim * tacker-ft-v1-vnfpkgm * tacker-ft-v1-k8s * tacker-ft-v1-tosca-vnflcm * tacker-ft-v1-userdata-vnflcm It also provides sample DevStack configuration files, setup scripts and `local.conf.HOSTNAME`. Implements: blueprint reduce-ft-time Co-Authored-By: Ai Hamaho Co-Authored-By: Yasufumi Ogawa Change-Id: Id0debea403ccb9490da14b1a77c89ff7b42ee178 --- .../multi-nodes/k8s/local.conf.controller | 99 +++ .../multi-nodes/k8s/local.conf.controller-k8s | 62 ++ .../k8s/local.conf.controller-tacker | 68 ++ .../multi-nodes/openstack/local.conf.compute1 | 68 ++ .../multi-nodes/openstack/local.conf.compute2 | 68 ++ .../openstack/local.conf.controller | 93 +++ .../openstack/local.conf.controller-tacker | 63 ++ .../contributor/tacker_functional_test.rst | 328 ++++++++- doc/source/install/devstack.rst | 8 + doc/source/reference/index.rst | 1 + doc/source/reference/script_ft_v1.rst | 630 ++++++++++++++++++ .../kubernetes/kube-controller-k8s.sh | 82 +++ .../kubernetes/kube-controller-tacker.sh | 182 +++++ .../setting_ft/kubernetes/kube-controller.sh | 9 + .../openstack/openstack-controller-tacker.sh | 35 + .../openstack/openstack-controller.sh | 36 + 16 files changed, 1818 insertions(+), 14 deletions(-) create mode 100644 devstack/multi-nodes/k8s/local.conf.controller create mode 100644 devstack/multi-nodes/k8s/local.conf.controller-k8s create mode 100644 devstack/multi-nodes/k8s/local.conf.controller-tacker create mode 100644 devstack/multi-nodes/openstack/local.conf.compute1 create mode 100644 devstack/multi-nodes/openstack/local.conf.compute2 create mode 100644 devstack/multi-nodes/openstack/local.conf.controller create mode 100644 devstack/multi-nodes/openstack/local.conf.controller-tacker create mode 100644 doc/source/reference/script_ft_v1.rst create mode 100644 tools/doc_samples/setting_ft/kubernetes/kube-controller-k8s.sh create mode 100644 tools/doc_samples/setting_ft/kubernetes/kube-controller-tacker.sh create mode 100644 tools/doc_samples/setting_ft/kubernetes/kube-controller.sh create mode 100644 tools/doc_samples/setting_ft/openstack/openstack-controller-tacker.sh create mode 100644 tools/doc_samples/setting_ft/openstack/openstack-controller.sh diff --git a/devstack/multi-nodes/k8s/local.conf.controller b/devstack/multi-nodes/k8s/local.conf.controller new file mode 100644 index 000000000..b6dc64b63 --- /dev/null +++ b/devstack/multi-nodes/k8s/local.conf.controller @@ -0,0 +1,99 @@ +# Using k8s +# local.conf.controller +# NOTE: Items that are used in local.conf on Zuul but are not required +# locally have been commented out. +[[local|localrc]] +disable_all_services +enable_service c-api +#disable_service c-bak +enable_service c-sch +enable_service c-vol +enable_service cinder +#disable_service coredns +enable_service etcd3 +enable_service g-api +enable_service g-reg +#disable_service horizon +enable_service key +enable_service mysql +enable_service n-api +enable_service n-api-meta +enable_service n-cond +#disable_service n-cpu +enable_service n-novnc +enable_service n-sch +enable_service neutron +enable_service ovn-controller +enable_service ovn-northd +enable_service ovs-vswitchd +enable_service ovsdb-server +enable_service placement-api +enable_service placement-client +enable_service q-ovn-metadata-agent +enable_service q-qos +enable_service q-svc +enable_service rabbit +#disable_service s-account +#disable_service s-container +#disable_service s-object +#disable_service s-proxy +#disable_service swift +#disable_service tempest +#disable_service tls-proxy +ADMIN_PASSWORD="secretadmin" +#CELLSV2_SETUP="singleconductor" +DATABASE_PASSWORD="secretdatabase" +#DATABASE_TYPE="mysql" +DEBUG_LIBVIRT_COREDUMPS="True" +#DEVSTACK_PARALLEL="True" +ENABLE_SYSCTL_MEM_TUNING="True" +ENABLE_SYSCTL_NET_TUNING="True" +ENABLE_ZSWAP="True" +#ERROR_ON_CLONE="True" +ETCD_USE_RAMDISK="True" +FIXED_RANGE="10.1.0.0/20" +FLOATING_RANGE="192.168.56.0/24" +GLOBAL_VENV="False" +HOST_IP="192.168.56.21" +IPV4_ADDRS_SAFE_TO_USE="10.1.0.0/20" +#IS_ZUUL_FT="True" +#KEYSTONE_SERVICE_HOST="10.209.133.219" +L2_AGENT_EXTENSIONS="qos" +LIBVIRT_TYPE="qemu" +LOGFILE="/opt/stack/logs/devstacklog.txt" +#LOG_COLOR="False" +MYSQL_HOST="192.168.56.21" +NETWORK_GATEWAY="10.1.0.1" +NOVA_LIBVIRT_TB_CACHE_SIZE="128" +NOVA_VNC_ENABLED="True" +NOVNC_FROM_PACKAGE="True" +OVN_DBS_LOG_LEVEL="dbg" +OVN_L3_CREATE_PUBLIC_NETWORK="True" +OVS_BRIDGE_MAPPINGS="public:br-ex,mgmtphysnet0:br-infra" +PHYSICAL_NETWORK="mgmtphysnet0" +PUBLIC_BRIDGE_MTU="1430" +PUBLIC_NETWORK_GATEWAY="192.168.56.1" +Q_ML2_PLUGIN_MECHANISM_DRIVERS="ovn,logger" +Q_SERVICE_PLUGIN_CLASSES="ovn-router,neutron.services.qos.qos_plugin.QoSPlugin,qos" +RABBIT_PASSWORD="secretrabbit" +SERVICE_HOST="192.168.56.21" +SERVICE_PASSWORD="secretservice" +#SWIFT_HASH="1234123412341234" +#SWIFT_REPLICAS="1" +#SWIFT_START_ALL_SERVICES="False" +#TACKER_HOST="10.208.192.130" +#TACKER_MODE="standalone" +USE_PYTHON3="True" +#VERBOSE="True" +VERBOSE_NO_TIMESTAMP="True" +LIBS_FROM_GIT=barbican,cinder,devstack,devstack-plugin-container,glance,heat,horizon,keystone,neutron,nova,os-test-images,placement,python-barbicanclient,python-tackerclient,requirements,swift,tacker,tacker-horizon +enable_plugin barbican https://opendev.org/openstack/barbican +enable_plugin heat https://opendev.org/openstack/heat +enable_plugin neutron https://opendev.org/openstack/neutron + +[[post-config|$NEUTRON_CONF]] +[DEFAULT] +global_physnet_mtu = 1430 +[[post-config|$NEUTRON_DHCP_CONF]] +[DEFAULT] +enable_isolated_metadata = True diff --git a/devstack/multi-nodes/k8s/local.conf.controller-k8s b/devstack/multi-nodes/k8s/local.conf.controller-k8s new file mode 100644 index 000000000..55bb41b4a --- /dev/null +++ b/devstack/multi-nodes/k8s/local.conf.controller-k8s @@ -0,0 +1,62 @@ +# Using k8s +# local.conf.controller-k8s +# NOTE: Items that are used in local.conf on Zuul but are not required +# locally have been commented out. +[[local|localrc]] +disable_all_services +enable_service container +#disable_service etcd3 +enable_service k8s-master +enable_service ovn-controller +enable_service ovn-northd +enable_service ovs-vswitchd +enable_service ovsdb-server +enable_service q-ovn-metadata-agent +ADMIN_PASSWORD="secretadmin" +#CELLSV2_SETUP="singleconductor" +CONTAINER_ENGINE="crio" +CRIO_VERSION="1.30.5" +DATABASE_HOST="192.168.56.21" +DATABASE_PASSWORD="secretdatabase" +DATABASE_TYPE="mysql" +ENABLE_CHASSIS_AS_GW="False" +ENABLE_SYSCTL_MEM_TUNING="True" +ENABLE_SYSCTL_NET_TUNING="True" +ENABLE_ZSWAP="True" +#ERROR_ON_CLONE="True" +FIXED_RANGE="10.1.0.0/20" +FLOATING_RANGE="192.168.56.0/24" +#GLANCE_HOSTPORT="10.209.133.219:9292" +GLOBAL_VENV="False" +HOST_IP="192.168.56.23" +IPV4_ADDRS_SAFE_TO_USE="10.1.0.0/20" +#IS_ZUUL_FT="True" +K8S_API_SERVER_IP="192.168.56.23" +K8S_TOKEN="9agf12.zsu5uh2m4pzt3qba" +K8S_VERSION="1.30.5" +#KEYSTONE_SERVICE_HOST="10.209.133.219" +LIBVIRT_TYPE="qemu" +LOGFILE="/opt/stack/logs/devstacklog.txt" +#LOG_COLOR="False" +MYSQL_HOST="192.168.56.21" +NETWORK_GATEWAY="10.1.0.1" +NOVA_LIBVIRT_TB_CACHE_SIZE="128" +NOVA_VNC_ENABLED="True" +NOVNC_FROM_PACKAGE="True" +OVS_BRIDGE_MAPPINGS="public:br-ex,mgmtphysnet0:br-infra" +PHYSICAL_NETWORK="mgmtphysnet0" +PUBLIC_BRIDGE_MTU="1430" +PUBLIC_NETWORK_GATEWAY="192.168.56.1" +#Q_HOST="10.209.133.219" +Q_ML2_PLUGIN_MECHANISM_DRIVERS="ovn,logger" +RABBIT_HOST="192.168.56.21" +RABBIT_PASSWORD="secretrabbit" +SERVICE_HOST="192.168.56.21" +SERVICE_PASSWORD="secretservice" +#TACKER_HOST="10.208.192.130" +#TACKER_MODE="standalone" +USE_PYTHON3="True" +#VERBOSE="True" +VERBOSE_NO_TIMESTAMP="True" +LIBS_FROM_GIT=barbican,cinder,devstack,devstack-plugin-container,glance,heat,horizon,keystone,neutron,nova,os-test-images,placement,python-barbicanclient,python-tackerclient,requirements,swift,tacker,tacker-horizon +enable_plugin devstack-plugin-container https://opendev.org/openstack/devstack-plugin-container diff --git a/devstack/multi-nodes/k8s/local.conf.controller-tacker b/devstack/multi-nodes/k8s/local.conf.controller-tacker new file mode 100644 index 000000000..792691f28 --- /dev/null +++ b/devstack/multi-nodes/k8s/local.conf.controller-tacker @@ -0,0 +1,68 @@ +# Using k8s +# local.conf.controller-tacker +# NOTE: Items that are used in local.conf on Zuul but are not required +# locally have been commented out. +[[local|localrc]] +disable_all_services +enable_service ovn-controller +enable_service ovn-northd +enable_service ovs-vswitchd +enable_service ovsdb-server +enable_service q-ovn-metadata-agent +enable_service tacker +enable_service tacker-conductor +ADMIN_PASSWORD="secretadmin" +#CELLSV2_SETUP="singleconductor" +#CONTAINER_ENGINE="crio" +#CRIO_VERSION="1.30.5" +DATABASE_HOST="192.168.56.21" +DATABASE_PASSWORD="secretdatabase" +DATABASE_TYPE="mysql" +ENABLE_CHASSIS_AS_GW="False" +ENABLE_SYSCTL_MEM_TUNING="True" +ENABLE_SYSCTL_NET_TUNING="True" +ENABLE_ZSWAP="True" +#ERROR_ON_CLONE="True" +FIXED_RANGE="10.1.0.0/20" +FLOATING_RANGE="192.168.56.0/24" +#GLANCE_HOSTPORT="10.209.133.219:9292" +GLOBAL_VENV="False" +HOST_IP="192.168.56.22" +IPV4_ADDRS_SAFE_TO_USE="10.1.0.0/20" +IS_ZUUL_FT="True" +#K8S_API_SERVER_IP="10.209.0.153" +#K8S_TOKEN="9agf12.zsu5uh2m4pzt3qba" +#K8S_VERSION="1.30.5" +#KEYSTONE_SERVICE_HOST="10.209.133.219" +LIBVIRT_TYPE="qemu" +LOGFILE="/opt/stack/logs/devstacklog.txt" +#LOG_COLOR="False" +MYSQL_HOST="192.168.56.21" +NETWORK_GATEWAY="10.1.0.1" +NOVA_LIBVIRT_TB_CACHE_SIZE="128" +NOVA_VNC_ENABLED="True" +NOVNC_FROM_PACKAGE="True" +OVS_BRIDGE_MAPPINGS="public:br-ex,mgmtphysnet0:br-infra" +PHYSICAL_NETWORK="mgmtphysnet0" +PUBLIC_BRIDGE_MTU="1430" +PUBLIC_NETWORK_GATEWAY="192.168.56.1" +#Q_HOST="10.209.133.219" +Q_ML2_PLUGIN_MECHANISM_DRIVERS="ovn,logger" +RABBIT_HOST="192.168.56.21" +RABBIT_PASSWORD="secretrabbit" +SERVICE_HOST="192.168.56.21" +SERVICE_PASSWORD="secretservice" +TACKER_HOST="192.168.56.22" +TACKER_MODE="standalone" +#USE_PYTHON3="True" +#VERBOSE="True" +VERBOSE_NO_TIMESTAMP="True" +LIBS_FROM_GIT=barbican,cinder,devstack,devstack-plugin-container,glance,heat,horizon,keystone,neutron,nova,os-test-images,placement,python-barbicanclient,python-tackerclient,requirements,swift,tacker,tacker-horizon +enable_plugin tacker https://opendev.org/openstack/tacker + +[[post-config|$TACKER_CONF]] +[database] +max_pool_size = 0 + +[kubernetes_vim] +stack_retries = 120 diff --git a/devstack/multi-nodes/openstack/local.conf.compute1 b/devstack/multi-nodes/openstack/local.conf.compute1 new file mode 100644 index 000000000..835adb8cc --- /dev/null +++ b/devstack/multi-nodes/openstack/local.conf.compute1 @@ -0,0 +1,68 @@ +# Not using k8s +# local.conf.compute1 +# NOTE: Items that are used in local.conf on Zuul but are not required +# locally have been commented out. +[[local|localrc]] +disable_all_services +enable_service c-bak +enable_service c-vol +#disable_service dstat +enable_service file_tracker +#disable_service horizon +enable_service memory_tracker +enable_service n-cpu +enable_service openstack-cli-server +enable_service ovn-controller +enable_service ovs-vswitchd +enable_service ovsdb-server +enable_service placement-client +enable_service q-ovn-metadata-agent +#disable_service tempest +#disable_service tls-proxy +ADMIN_PASSWORD="secretadmin" +#CELLSV2_SETUP="singleconductor" +DATABASE_HOST="192.168.56.11" +DATABASE_PASSWORD="secretdatabase" +DATABASE_TYPE="mysql" +ENABLE_CHASSIS_AS_GW="False" +ENABLE_SYSCTL_MEM_TUNING="True" +ENABLE_SYSCTL_NET_TUNING="True" +ENABLE_ZSWAP="True" +#ERROR_ON_CLONE="True" +FIXED_RANGE="10.1.0.0/20" +FLOATING_RANGE="192.168.56.0/24" +#GLANCE_HOSTPORT="192.168.56.11:9292" +GNOCCHI_SERVICE_HOST="192.168.56.12" +HOST_IP="192.168.56.13" +IPV4_ADDRS_SAFE_TO_USE="10.1.0.0/20" +#IS_ZUUL_FT="True" +#KEYSTONE_SERVICE_HOST="192.168.56.11" +L2_AGENT_EXTENSIONS="qos" +LIBVIRT_TYPE="qemu" +LOGFILE="/opt/stack/logs/devstacklog.txt" +#LOG_COLOR="False" +MYSQL_HOST="192.168.56.11" +NETWORK_GATEWAY="10.1.0.1" +NOVA_LIBVIRT_TB_CACHE_SIZE="128" +NOVA_VNC_ENABLED="True" +NOVNC_FROM_PACKAGE="True" +OVS_BRIDGE_MAPPINGS="public:br-ex,mgmtphysnet0:br-infra" +PHYSICAL_NETWORK="mgmtphysnet0" +PUBLIC_BRIDGE_MTU="1430" +PUBLIC_NETWORK_GATEWAY="192.168.56.1" +#Q_HOST="192.168.56.11" +Q_ML2_PLUGIN_MECHANISM_DRIVERS="ovn,logger" +Q_SERVICE_PLUGIN_CLASSES="qos,networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin,neutron.services.qos.qos_plugin.QoSPlugin,ovn-router" +RABBIT_HOST="192.168.56.11" +RABBIT_PASSWORD="secretrabbit" +SERVICE_HOST="192.168.56.11" +SERVICE_PASSWORD="secretservice" +#TACKER_HOST="192.168.56.12" +#TACKER_MODE="standalone" +#VERBOSE="True" +VERBOSE_NO_TIMESTAMP="True" +LIBS_FROM_GIT=aodh,barbican,cinder,devstack,glance,heat,horizon,keystone,networking-sfc,neutron,nova,os-test-images,placement,python-barbicanclient,python-tackerclient,requirements,swift,tacker,tacker-horizon + +[[post-config|$NOVA_CONF]] +[DEFAULT] +vif_plugging_is_fatal = False diff --git a/devstack/multi-nodes/openstack/local.conf.compute2 b/devstack/multi-nodes/openstack/local.conf.compute2 new file mode 100644 index 000000000..226f81e92 --- /dev/null +++ b/devstack/multi-nodes/openstack/local.conf.compute2 @@ -0,0 +1,68 @@ +# Not using k8s +# local.conf.compute2 +# NOTE: Items that are used in local.conf on Zuul but are not required +# locally have been commented out. +[[local|localrc]] +disable_all_services +enable_service c-bak +enable_service c-vol +#disable_service dstat +enable_service file_tracker +#disable_service horizon +enable_service memory_tracker +enable_service n-cpu +enable_service openstack-cli-server +enable_service ovn-controller +enable_service ovs-vswitchd +enable_service ovsdb-server +enable_service placement-client +enable_service q-ovn-metadata-agent +#disable_service tempest +#disable_service tls-proxy +ADMIN_PASSWORD="secretadmin" +#CELLSV2_SETUP="singleconductor" +DATABASE_HOST="192.168.56.11" +DATABASE_PASSWORD="secretdatabase" +DATABASE_TYPE="mysql" +ENABLE_CHASSIS_AS_GW="False" +ENABLE_SYSCTL_MEM_TUNING="True" +ENABLE_SYSCTL_NET_TUNING="True" +ENABLE_ZSWAP="True" +#ERROR_ON_CLONE="True" +FIXED_RANGE="10.1.0.0/20" +FLOATING_RANGE="192.168.56.0/24" +#GLANCE_HOSTPORT="192.168.56.11:9292" +GNOCCHI_SERVICE_HOST="192.168.56.12" +HOST_IP="192.168.56.14" +IPV4_ADDRS_SAFE_TO_USE="10.1.0.0/20" +#IS_ZUUL_FT="True" +#KEYSTONE_SERVICE_HOST="192.168.56.11" +L2_AGENT_EXTENSIONS="qos" +LIBVIRT_TYPE="qemu" +LOGFILE="/opt/stack/logs/devstacklog.txt" +#LOG_COLOR="False" +MYSQL_HOST="192.168.56.11" +NETWORK_GATEWAY="10.1.0.1" +NOVA_LIBVIRT_TB_CACHE_SIZE="128" +NOVA_VNC_ENABLED="True" +NOVNC_FROM_PACKAGE="True" +OVS_BRIDGE_MAPPINGS="public:br-ex,mgmtphysnet0:br-infra" +PHYSICAL_NETWORK="mgmtphysnet0" +PUBLIC_BRIDGE_MTU="1430" +PUBLIC_NETWORK_GATEWAY="192.168.56.1" +#Q_HOST="192.168.56.11" +Q_ML2_PLUGIN_MECHANISM_DRIVERS="ovn,logger" +Q_SERVICE_PLUGIN_CLASSES="qos,networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin,neutron.services.qos.qos_plugin.QoSPlugin,ovn-router" +RABBIT_HOST="192.168.56.11" +RABBIT_PASSWORD="secretrabbit" +SERVICE_HOST="192.168.56.11" +SERVICE_PASSWORD="secretservice" +#TACKER_HOST="192.168.56.12" +#TACKER_MODE="standalone" +#VERBOSE="True" +VERBOSE_NO_TIMESTAMP="True" +LIBS_FROM_GIT=aodh,barbican,cinder,devstack,glance,heat,horizon,keystone,networking-sfc,neutron,nova,os-test-images,placement,python-barbicanclient,python-tackerclient,requirements,swift,tacker,tacker-horizon + +[[post-config|$NOVA_CONF]] +[DEFAULT] +vif_plugging_is_fatal = False diff --git a/devstack/multi-nodes/openstack/local.conf.controller b/devstack/multi-nodes/openstack/local.conf.controller new file mode 100644 index 000000000..cc470d04a --- /dev/null +++ b/devstack/multi-nodes/openstack/local.conf.controller @@ -0,0 +1,93 @@ +# Not using k8s +# local.conf.controller +# NOTE: Items that are used in local.conf on Zuul but are not required +# locally have been commented out. +[[local|localrc]] +disable_all_services +enable_service c-api +#disable_service c-bak +enable_service c-sch +enable_service c-vol +enable_service cinder +enable_service g-api +#disable_service horizon +enable_service key +enable_service mysql +enable_service n-api +enable_service n-api-meta +enable_service n-cond +#disable_service n-cpu +enable_service n-novnc +enable_service n-sch +enable_service ovn-controller +enable_service ovn-northd +enable_service ovs-vswitchd +enable_service ovsdb-server +enable_service placement-api +enable_service q-ovn-metadata-agent +enable_service q-qos +enable_service q-svc +enable_service rabbit +#disable_service s-account +#disable_service s-container +#disable_service s-object +#disable_service s-proxy +#disable_service swift +#disable_service tempest +#disable_service tls-proxy +ADMIN_PASSWORD="secretadmin" +#CELLSV2_SETUP="singleconductor" +DATABASE_PASSWORD="secretdatabase" +#DATABASE_TYPE="mysql" +DEBUG_LIBVIRT_COREDUMPS="True" +#DEVSTACK_PARALLEL="True" +ENABLE_SYSCTL_MEM_TUNING="True" +ENABLE_SYSCTL_NET_TUNING="True" +ENABLE_ZSWAP="True" +#ERROR_ON_CLONE="True" +FIXED_RANGE="10.1.0.0/20" +FLOATING_RANGE="192.168.56.0/24" +GNOCCHI_SERVICE_HOST="192.168.56.12" +HOST_IP="192.168.56.11" +IPV4_ADDRS_SAFE_TO_USE="10.1.0.0/20" +#KEYSTONE_SERVICE_HOST="192.168.56.11" +L2_AGENT_EXTENSIONS="qos" +LIBVIRT_TYPE="qemu" +LOGFILE="/opt/stack/logs/devstacklog.txt" +#LOG_COLOR="False" +MYSQL_HOST="192.168.56.11" +NETWORK_GATEWAY="10.1.0.1" +NOVA_LIBVIRT_TB_CACHE_SIZE="128" +NOVA_VNC_ENABLED="True" +NOVNC_FROM_PACKAGE="True" +OVN_DBS_LOG_LEVEL="dbg" +OVN_L3_CREATE_PUBLIC_NETWORK="True" +OVS_BRIDGE_MAPPINGS="public:br-ex,mgmtphysnet0:br-infra" +PHYSICAL_NETWORK="mgmtphysnet0" +PUBLIC_BRIDGE_MTU="1430" +PUBLIC_NETWORK_GATEWAY="192.168.56.1" +Q_ML2_PLUGIN_MECHANISM_DRIVERS="ovn,logger" +Q_SERVICE_PLUGIN_CLASSES="ovn-router,networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin,neutron.services.qos.qos_plugin.QoSPlugin,qos" +RABBIT_PASSWORD="secretrabbit" +SERVICE_HOST="192.168.56.11" +SERVICE_PASSWORD="secretservice" +#SWIFT_HASH="1234123412341234" +#SWIFT_REPLICAS="1" +#SWIFT_START_ALL_SERVICES="False" +#VERBOSE="True" +VERBOSE_NO_TIMESTAMP="True" +LIBS_FROM_GIT=aodh,barbican,cinder,devstack,glance,heat,horizon,keystone,networking-sfc,neutron,nova,os-test-images,placement,python-barbicanclient,python-tackerclient,requirements,swift,tacker,tacker-horizon +enable_plugin aodh https://opendev.org/openstack/aodh +enable_plugin barbican https://opendev.org/openstack/barbican +enable_plugin heat https://opendev.org/openstack/heat +enable_plugin networking-sfc https://opendev.org/openstack/networking-sfc + +[[post-config|$CINDER_CONF]] +[lvmdriver-1] +image_volume_cache_enabled = False +[[post-config|$NEUTRON_CONF]] +[DEFAULT] +client_socket_timeout = 60 +[[post-config|$NEUTRON_DHCP_CONF]] +[DEFAULT] +enable_isolated_metadata = True diff --git a/devstack/multi-nodes/openstack/local.conf.controller-tacker b/devstack/multi-nodes/openstack/local.conf.controller-tacker new file mode 100644 index 000000000..d73f0b00d --- /dev/null +++ b/devstack/multi-nodes/openstack/local.conf.controller-tacker @@ -0,0 +1,63 @@ +# Not using k8s +# local.conf.controller-tacker +# NOTE: Items that are used in local.conf on Zuul but are not required +# locally have been commented out. +[[local|localrc]] +disable_all_services +enable_service ovn-controller +enable_service ovs-vswitchd +enable_service ovsdb-server +enable_service q-ovn-metadata-agent +enable_service tacker +enable_service tacker-conductor +ADMIN_PASSWORD="secretadmin" +#CELLSV2_SETUP="singleconductor" +DATABASE_HOST="192.168.56.11" +DATABASE_PASSWORD="secretdatabase" +DATABASE_TYPE="mysql" +ENABLE_CHASSIS_AS_GW="False" +ENABLE_SYSCTL_MEM_TUNING="True" +ENABLE_SYSCTL_NET_TUNING="True" +ENABLE_ZSWAP="True" +#ERROR_ON_CLONE="True" +FIXED_RANGE="10.1.0.0/20" +FLOATING_RANGE="192.168.56.0/24" +#GLANCE_HOSTPORT="192.168.56.11:9292" +GNOCCHI_SERVICE_HOST="192.168.56.12" +HOST_IP="192.168.56.12" +IPV4_ADDRS_SAFE_TO_USE="10.1.0.0/20" +IS_ZUUL_FT="True" +#KEYSTONE_SERVICE_HOST="192.168.56.11" +L2_AGENT_EXTENSIONS="qos" +LIBVIRT_TYPE="qemu" +LOGFILE="/opt/stack/logs/devstacklog.txt" +#LOG_COLOR="False" +MYSQL_HOST="192.168.56.11" +NETWORK_GATEWAY="10.1.0.1" +NOVA_LIBVIRT_TB_CACHE_SIZE="128" +NOVA_VNC_ENABLED="True" +NOVNC_FROM_PACKAGE="True" +OVS_BRIDGE_MAPPINGS="public:br-ex,mgmtphysnet0:br-infra" +PHYSICAL_NETWORK="mgmtphysnet0" +PUBLIC_BRIDGE_MTU="1430" +PUBLIC_NETWORK_GATEWAY="192.168.56.1" +#Q_HOST="192.168.56.11" +Q_ML2_PLUGIN_MECHANISM_DRIVERS="ovn,logger" +Q_SERVICE_PLUGIN_CLASSES="qos,networking_sfc.services.flowclassifier.plugin.FlowClassifierPlugin,neutron.services.qos.qos_plugin.QoSPlugin,ovn-router" +RABBIT_HOST="192.168.56.11" +RABBIT_PASSWORD="secretrabbit" +SERVICE_HOST="192.168.56.11" +SERVICE_PASSWORD="secretservice" +TACKER_HOST="192.168.56.12" +TACKER_MODE="standalone" +#VERBOSE="True" +VERBOSE_NO_TIMESTAMP="True" +LIBS_FROM_GIT=aodh,barbican,cinder,devstack,glance,heat,horizon,keystone,networking-sfc,neutron,nova,os-test-images,placement,python-barbicanclient,python-tackerclient,requirements,swift,tacker,tacker-horizon +enable_plugin tacker https://opendev.org/openstack/tacker + +[[post-config|$TACKER_CONF]] +[database] +max_pool_size = 0 + +[openstack_vim] +stack_retries = 120 diff --git a/doc/source/contributor/tacker_functional_test.rst b/doc/source/contributor/tacker_functional_test.rst index c0bc2bb14..93244cb79 100644 --- a/doc/source/contributor/tacker_functional_test.rst +++ b/doc/source/contributor/tacker_functional_test.rst @@ -15,16 +15,16 @@ tacker/tests/functional. Writing a testcase:A testcase is written by declaring a class name derived from class base.BaseTackerTest. BaseTackerTest is class declared in -tacker/tests/functional/vnfd/base.py. +tacker/tests/functional/base.py. A testcase body typically looks as below: .. code-block:: python - class vnfClassName(base.BaseTackerTest): + class testClassName(base.BaseTackerTest): - def test_create_delete(self): + //setup //Testcase operations @@ -33,7 +33,7 @@ A testcase body typically looks as below: //cleanup -In above example test class 'vnfClassName' is derived from +In above example test class 'testClassName' is derived from base.BaseTackerTest. Testcases typically has sections to setup, test, validate results and finally cleanup. @@ -56,7 +56,6 @@ create/delete/list vnfd/vnf once given the necessary parameters. Verify tackerclient/v1_0/client.py for all the tacker related apis supported. - Important guidelines to follow: =============================== @@ -66,6 +65,7 @@ Important guidelines to follow: pip install -r test-requirements.txt + * It is important that the test case executed leaves the system in the same state it was prior to test case execution and not leave any stale data on system as this might affect @@ -84,7 +84,6 @@ Important guidelines to follow: tox -e pep8 - Execution of testcase: ====================== @@ -92,14 +91,7 @@ Execution of testcase: tacker service and endpoint, creates "nfv_user" and "nfv" project, and registers default VIM with the created user and project. -* From tacker directory, all function testcases can be executed using - following commands: - -.. code-block:: console - - tox -e functional - -* Or from tacker directory, specific testcases can be executed using +* From tacker directory, specific testcases can be executed using following commands: .. code-block:: console @@ -107,6 +99,308 @@ Execution of testcase: tox -e functional tacker.tests.functional.xxx.yyy. +Multi-node configuration for testing +------------------------------------ + +For the Zuul environment that runs functional test, install +tacker server via devstack installation in multi-node configuration. + +.. note:: + + Not all functional tests require a multi-node configuration. + Many tests can be run in an all-in-one mode. + See :doc:`/install/devstack` for installing all-in-one mode. + + +The steps to create an environment with a multi-node configuration +similar to Zuul(controller/controller-tacker/compute1/compute2) are as +follows. +Here is a sample case that does not use k8s. +Create four virtual machine (VM) environments each with IP addresses +and host names, for example: + +- 192.168.56.11 controller +- 192.168.56.12 controller-tacker +- 192.168.56.13 compute1 +- 192.168.56.14 compute2 + +From above four hosts, DevStack on the controller host must be built first. +Once completed, proceed with the remaining three hosts: +controller-tacker, compute1, and compute2. +The order of building Devstack on these three hosts is not important, +and you can build them simultaneously if desired. +To build DevStack on each host, run the script ./stack.sh. + +Here is a sample case of using k8s. +Create four virtual machine (VM) environments each with IP addresses +and host names, for example: + +- 192.168.56.21 controller +- 192.168.56.22 controller-tacker +- 192.168.56.23 controller-k8s + +From above four hosts, DevStack on the controller host must be built first. +Once completed, proceed with the remaining three hosts: controller-tacker +and controller-k8s. +The order of building Devstack on these three hosts is not important, +and you can build them simultaneously if desired. +To build DevStack on each host, run the script ./stack.sh. + +Regarding the specs of your machine, +see `Devstack`_ or :doc:`/install/devstack` for details on the OS +and Linux distribution to use. + +For not using k8s +^^^^^^^^^^^^^^^^^ + +#. Preparation + + * Prepare 4VMs that meet the following criteria + + .. list-table:: + :widths: 60 150 + :header-rows: 1 + + * - Criteria + - Recommended + * - CPU + - 4 cores or more + * - RAM + - 16 GB or more + * - Storage + - 32 GB or more + + * Create stack user on each VM + + .. code-block:: console + + $ sudo useradd -s /bin/bash -d /opt/stack -m stack + $ sudo chmod +x /opt/stack + $ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack + + + * Download devstack on each VM + + .. code-block:: console + + $ git clone https://opendev.org/openstack/devstack + + +#. Create controller node + + * Create the following local.conf on controller node + + .. code-block:: console + + $ cd devstack + $ vi local.conf + + + .. literalinclude:: ../../../devstack/multi-nodes/openstack/local.conf.controller + :language: ini + + + * Execute installation script + + .. code-block:: console + + $ ./stack.sh + + +#. Create controller-tacker node + + * Create the following local.conf on controller-tacker node + + .. code-block:: console + + $ cd devstack + $ vi local.conf + + + .. literalinclude:: ../../../devstack/multi-nodes/openstack/local.conf.controller-tacker + :language: ini + + + * Execute installation script + + .. code-block:: console + + $ ./stack.sh + + +#. Create compute1 node + + * Create the following local.conf on compute1 node + + .. code-block:: console + + $ cd devstack + $ vi local.conf + + + .. literalinclude:: ../../../devstack/multi-nodes/openstack/local.conf.compute1 + :language: ini + + + * Execute installation script + + .. code-block:: console + + $ ./stack.sh + + +#. Create compute2 node + + * Create the following local.conf on compute2 node + + .. code-block:: console + + $ cd devstack + $ vi local.conf + + + .. literalinclude:: ../../../devstack/multi-nodes/openstack/local.conf.compute2 + :language: ini + + + * Execute installation script + + .. code-block:: console + + $ ./stack.sh + +For using k8s +^^^^^^^^^^^^^ + +#. Preparation + + * Prepare 3VMs that meet the following criteria + + .. list-table:: + :widths: 60 150 + :header-rows: 1 + + * - Criteria + - Recommended + * - CPU + - 4 cores or more + * - RAM + - 16 GB or more + * - Storage + - 32 GB or more + + * Create stack user on each VM + + .. code-block:: console + + $ sudo useradd -s /bin/bash -d /opt/stack -m stack + $ sudo chmod +x /opt/stack + $ echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack + + + * Download devstack on each VM + + .. code-block:: console + + $ git clone https://opendev.org/openstack/devstack + + +#. Create controller node + + * Create the following local.conf on controller node + + .. code-block:: console + + $ cd devstack + $ vi local.conf + + + .. literalinclude:: ../../../devstack/multi-nodes/k8s/local.conf.controller + :language: ini + + + * Execute installation script + + .. code-block:: console + + $ ./stack.sh + + +#. Create controller-tacker node + + * Create the following local.conf on controller-tacker node + + .. code-block:: console + + $ cd devstack + $ vi local.conf + + + .. literalinclude:: ../../../devstack/multi-nodes/k8s/local.conf.controller-tacker + :language: ini + + + * Execute installation script + + .. code-block:: console + + $ ./stack.sh + + +#. Create controller-k8s node + + * Create the following local.conf on controller-k8s node + + .. code-block:: console + + $ cd devstack + $ vi local.conf + + + .. literalinclude:: ../../../devstack/multi-nodes/k8s/local.conf.controller-k8s + :language: ini + + + * Execute installation script + + .. code-block:: console + + $ ./stack.sh + + .. note:: + + Pre-settings may be required to install Kubernetes. + See `Kubernetes documentation`_ for the target version for details. + For example, the following settings are required for Kubernetes 1.30.5. + + .. code-block:: console + + $ sudo modprobe overlay + $ sudo modprobe br_netfilter + $ cat < mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + 2: eth0: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 + link/ether 08:00:27:c8:98:64 brd ff:ff:ff:ff:ff:ff + altname enp0s3 + 3: eth1: mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 + link/ether 08:00:27:fe:b8:4b brd ff:ff:ff:ff:ff:ff + altname enp0s8 + 4: ovs-system: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 + link/ether ce:a5:37:75:58:27 brd ff:ff:ff:ff:ff:ff + 5: br-int: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 + link/ether 1a:b4:9a:5c:f7:f3 brd ff:ff:ff:ff:ff:ff + 7: veth8a11ff95@if2: mtu 1500 qdisc noqueue state UP mode DEFAULT group default + link/ether 4e:9f:3b:b9:1a:54 brd ff:ff:ff:ff:ff:ff link-netns 6516b4bd-db04-404d-ae04-c82203f4cd86 + 8: veth76da22e3@if2: mtu 1500 qdisc noqueue state UP mode DEFAULT group default + link/ether 02:e6:c1:b1:42:57 brd ff:ff:ff:ff:ff:ff link-netns 9d7ff2fb-21c1-457e-9fa1-a7b3e8e87176 + 9: genev_sys_6081: mtu 65000 qdisc noqueue master ovs-system state UNKNOWN mode DEFAULT group default qlen 1000 + link/ether 5e:44:4d:87:83:7f brd ff:ff:ff:ff:ff:ff + 10: br-ex: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 + link/ether 86:af:dc:f3:fe:4d brd ff:ff:ff:ff:ff:ff + NAMESPACE NAME READY STATUS RESTARTS AGE + kube-flannel pod/kube-flannel-ds-cv57g 1/1 Running 0 38d + kube-system pod/coredns-55cb58b774-9qmrm 1/1 Running 0 38d + kube-system pod/coredns-55cb58b774-tn9pq 1/1 Running 0 38d + kube-system pod/kube-apiserver-controller-k8s 1/1 Running 5 (17m ago) 38d + kube-system pod/kube-controller-manager-controller-k8s 1/1 Running 2 (21m ago) 38d + kube-system pod/kube-proxy-9t2rz 1/1 Running 0 38d + kube-system pod/kube-scheduler-controller-k8s 1/1 Running 2 (21m ago) 38d + + NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + default service/kubernetes ClusterIP 10.96.0.1 443/TCP 38d + kube-system service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 38d + + NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE + kube-flannel daemonset.apps/kube-flannel-ds 1 1 1 1 1 38d + kube-system daemonset.apps/kube-proxy 1 1 1 1 1 kubernetes.io/os=linux 38d + + NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE + kube-system deployment.apps/coredns 2/2 2 2 38d + + NAMESPACE NAME DESIRED CURRENT READY AGE + kube-system replicaset.apps/coredns-55cb58b774 2 2 2 38d + pod "coredns-55cb58b774-9qmrm" deleted + pod "coredns-55cb58b774-tn9pq" deleted + NAMESPACE NAME READY STATUS RESTARTS AGE + kube-flannel pod/kube-flannel-ds-cv57g 1/1 Running 0 38d + kube-system pod/coredns-55cb58b774-6dllm 1/1 Running 0 7s + kube-system pod/coredns-55cb58b774-xmkqq 0/1 Running 0 7s + kube-system pod/kube-apiserver-controller-k8s 1/1 Running 5 (17m ago) 38d + kube-system pod/kube-controller-manager-controller-k8s 1/1 Running 2 (21m ago) 38d + kube-system pod/kube-proxy-9t2rz 1/1 Running 0 38d + kube-system pod/kube-scheduler-controller-k8s 1/1 Running 2 (21m ago) 38d + + NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + default service/kubernetes ClusterIP 10.96.0.1 443/TCP 38d + kube-system service/kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 38d + + NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE + kube-flannel daemonset.apps/kube-flannel-ds 1 1 1 1 1 38d + kube-system daemonset.apps/kube-proxy 1 1 1 1 1 kubernetes.io/os=linux 38d + + NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE + kube-system deployment.apps/coredns 1/2 2 1 38d + + NAMESPACE NAME DESIRED CURRENT READY AGE + kube-system replicaset.apps/coredns-55cb58b774 2 2 1 38d + Reading package lists... Done + Building dependency tree... Done + Reading state information... Done + The following NEW packages will be installed: + sshpass + 0 upgraded, 1 newly installed, 0 to remove and 55 not upgraded. + Need to get 11.7 kB of archives. + After this operation, 35.8 kB of additional disk space will be used. + Get:1 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 sshpass amd64 1.09-1 [11.7 kB] + Fetched 11.7 kB in 2s (5,856 B/s) + Selecting previously unselected package sshpass. + (Reading database ... 79969 files and directories currently installed.) + Preparing to unpack .../sshpass_1.09-1_amd64.deb ... + Unpacking sshpass (1.09-1) ... + Setting up sshpass (1.09-1) ... + Processing triggers for man-db (2.10.2-1) ... + Scanning processes... + Scanning candidates... + Scanning linux images... + + Running kernel seems to be up-to-date. + + Restarting services... + /etc/needrestart/restart.d/systemd-manager + systemctl restart packagekit.service polkit.service ssh.service systemd-networkd.service systemd-resolved.service systemd-timesyncd.service systemd-udevd.service udisks2.service + Service restarts being deferred: + /etc/needrestart/restart.d/dbus.service + systemctl restart networkd-dispatcher.service + systemctl restart systemd-logind.service + systemctl restart user@1000.service + + No containers need to be restarted. + + No user sessions are running outdated binaries. + + No VM guests are running outdated hypervisor (qemu) binaries on this host. + Warning: Permanently added 'controller-tacker' (ED25519) to the list of known hosts. + Adding user `helm' ... + Adding new group `helm' (1002) ... + Adding new user `helm' (1002) with group `helm' ... + Creating home directory `/home/helm' ... + Copying files from `/etc/skel' ... + total 16 + drwxr-xr-x 2 root root 4096 Nov 11 10:32 . + drwxr-x--- 3 helm helm 4096 Dec 20 04:43 .. + -rw------- 1 stack stack 5653 Nov 11 10:32 config + total 16 + drwxr-xr-x 2 helm helm 4096 Nov 11 10:32 . + drwxr-x--- 3 helm helm 4096 Dec 20 04:43 .. + -rw------- 1 helm helm 5653 Nov 11 10:32 config + total 4 + drwxr-xr-x 2 helm helm 4096 Dec 20 04:43 helm + --- /etc/ssh/sshd_config_bk 2024-07-23 18:04:13.103999238 +0000 + +++ /etc/ssh/sshd_config 2024-12-20 04:43:09.287879199 +0000 + @@ -54,7 +54,7 @@ + #IgnoreRhosts yes + + # To disable tunneled clear text passwords, change to no here! + -#PasswordAuthentication yes + +PasswordAuthentication yes + #PermitEmptyPasswords no + + # Change to yes to enable challenge-response passwords (beware issues with + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 100 15.8M 100 15.8M 0 0 9656k 0 0:00:01 0:00:01 --:--:-- 9658k + linux-amd64/ + linux-amd64/helm + linux-amd64/LICENSE + linux-amd64/README.md + version.BuildInfo{Version:"v3.15.4", GitCommit:"fa9efb07d9d8debbb4306d72af76a383895aa8c4", GitTreeState:"clean", GoVersion:"go1.22.6"} + + + .. code-block:: console + + stack@controller-tacker:~$ ./kube-controller-tacker.sh + +----------------+-----------------------------------------------------+ + | Field | Value | + +----------------+-----------------------------------------------------+ + | auth_cred | { | + | | "username": "nfv_user", | + | | "user_domain_name": "Default", | + | | "cert_verify": "False", | + | | "project_id": null, | + | | "project_name": "nfv", | + | | "project_domain_name": "Default", | + | | "auth_url": "http://192.168.56.21/identity/v3", | + | | "key_type": "barbican_key", | + | | "secret_uuid": "***", | + | | "password": "***" | + | | } | + | auth_url | http://192.168.56.21/identity/v3 | + | created_at | 2024-12-20 09:36:53.346748 | + | description | Default VIM | + | extra | | + | id | 76bf55a1-7df9-4d0b-999a-9febd074dc6f | + | is_default | True | + | name | VIM0 | + | placement_attr | { | + | | "regions": [ | + | | "RegionOne" | + | | ] | + | | } | + | project_id | 89047a7c599f44978802b1330fecc646 | + | status | ACTIVE | + | type | openstack | + | updated_at | None | + | vim_project | { | + | | "name": "nfv", | + | | "project_domain_name": "Default" | + | | } | + +----------------+-----------------------------------------------------+ + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 100 138 100 138 0 0 500 0 --:--:-- --:--:-- --:--:-- 500 + 100 49.0M 100 49.0M 0 0 31.9M 0 0:00:01 0:00:01 --:--:-- 46.5M + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 100 138 100 138 0 0 512 0 --:--:-- --:--:-- --:--:-- 513 + 100 64 100 64 0 0 164 0 --:--:-- --:--:-- --:--:-- 164 + kubectl: OK + Client Version: v1.30.5 + Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3 + total 8 + -rw------- 1 stack stack 5653 Nov 11 10:32 config + Kubernetes control plane is running at https://192.168.56.23:6443 + CoreDNS is running at https://192.168.56.23:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy + + To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. + Config for Kubernetes VIM 'tacker/samples/tests/etc/samples/local-k8s-vim.yaml' generated. + NAME TYPE DATA AGE + default-token-k8svim kubernetes.io/service-account-token 3 1s + --- tacker/samples/tests/etc/samples/local-k8s-vim.yaml_bk 2024-11-11 02:46:00.096741454 +0000 + +++ tacker/samples/tests/etc/samples/local-k8s-vim.yaml 2024-12-20 09:36:57.433035278 +0000 + @@ -1,5 +1,24 @@ + -auth_url: "https://127.0.0.1:6443" + -bearer_token: "secret_token" + +auth_url: "https://192.168.56.23:6443" + +bearer_token: "eyJhbGciOiJSUzI1NiIsImtpZCI6IkItQ1FuM2FCcmNDaF9uRzNTd05ETWFtbFFhVWgtbmZwaExLY0dUeFRPRE0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tazhzdmltIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI5YWFmNWJlYi02MTIzLTQyYWItYTE3Ni04ODUxZWJkNGFkOTAiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDpkZWZhdWx0In0.qSxCrtCjtVG1AbyeDuXpkxrenskrSPLx9pnLhNyL5Bgckis97ILaqSjf4IbUL0myqQUKET9smlNxXm1Hjk7bmjL5TBUMNJiewywuOXZkQhF3xqJWmdcl_9bPWcYp0D4olHbtPNpgImbRLn_ZfzymdqtYx6I-SRUCKQunkAGq4dxOM9wLQ3VPLja1li9lDeU6NXgkX7XGO8rA2m1Q0tPzINVNanN-z0Rut0XdWzEhepDwo_MyLnLdhg4oC5gbfNqbUwwqkDDV3Pt6c6_d1vXohDeS5VJETrTZG16qbDY5Ah8YPeiayfLseuznk3rui3lYUWvHZvO4J_ZCUV1LZ7zcOQ" + +ssl_ca_cert: "-----BEGIN CERTIFICATE----- + +MIIDBTCCAe2gAwIBAgIIWX6AGYfkbaYwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE + +AxMKa3ViZXJuZXRlczAeFw0yNDExMTExMDI1MzhaFw0zNDExMDkxMDMwMzhaMBUx + +EzARBgNVBAMTCmt1YmVybmV0ZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK + +AoIBAQC+jwt4uPT7uyx6DlWrJ7OnnfQFKKfPJ/rHEOiVpV57qG6JW9rCnYzXZ0i/ + +eEVDXtQnQ/NZ2VXPY0UZI30Ew+w99z+Eh/m/MCsyTOq5YUuN3/5NQ4NsXc8VBHSm + +yoelJLw2hPwmzNsgDouZqtvIURFuwxL4tc1/UeH51sj4cw4l6yJcRC0I2llYxF8Q + +znTaOWeQ5LuaxoHOFb01wENFacoRNgcNoFB7oVeb5h+c0hM+cHqeRdQVc96VQDxa + +ynqIzdJ+whDmzEif5RK2R7LWNLXLQlEIUkGnOg+iaLdXPbGKzS38o5mZqRheXVHD + +nFb5ZeOQ1oqPStQJCz7cNMMkS983AgMBAAGjWTBXMA4GA1UdDwEB/wQEAwICpDAP + +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTqeh0oly+huPQfzIMaslJesN+CsjAV + +BgNVHREEDjAMggprdWJlcm5ldGVzMA0GCSqGSIb3DQEBCwUAA4IBAQBrpAL5oE6b + +Dw/di4gowUfv5boTpHmbpRxXhA/MBL5THTV0rR7hkdt3O+j2wsoGWrbuSkyfBhUi + +AVp3V98+qNmKiLKKYlugCTCUK3J0uHewWdlCY+voKiBR0oMdzMGqbApqZ7GFPIVJ + +ORycUf3R8Gg07BeMzrXNM4AylRu8jsfwa/xCLCLg4ueNwHxQYHlA77vmj+2tTb8K + +mmkaAGRaIZrzH+Y/Dg7whAKtym7S5TxutXqWa3mRL/2M2kwP+Y3RdhXqvAFlmytK + +eHFOJSeuYYa1kLTiCMknLAcwd6XLA7CyWiS1FJmSHGp5eIlCUku4oV7IhaMb6Fgp + +mRmUryUhgyKs + +-----END CERTIFICATE-----" + project_name: "default" + -ssl_ca_cert: None + type: "kubernetes" + + + Config for Kubernetes VIM 'tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml' generated. + --- tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml_bk 2024-11-11 02:46:00.096741454 +0000 + +++ tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml 2024-12-20 09:36:58.733045070 +0000 + @@ -1,7 +1,25 @@ + -auth_url: "https://127.0.0.1:6443" + -bearer_token: "secret_token" + +auth_url: "https://192.168.56.23:6443" + +bearer_token: "eyJhbGciOiJSUzI1NiIsImtpZCI6IkItQ1FuM2FCcmNDaF9uRzNTd05ETWFtbFFhVWgtbmZwaExLY0dUeFRPRE0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImRlZmF1bHQtdG9rZW4tazhzdmltIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI5YWFmNWJlYi02MTIzLTQyYWItYTE3Ni04ODUxZWJkNGFkOTAiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDpkZWZhdWx0In0.qSxCrtCjtVG1AbyeDuXpkxrenskrSPLx9pnLhNyL5Bgckis97ILaqSjf4IbUL0myqQUKET9smlNxXm1Hjk7bmjL5TBUMNJiewywuOXZkQhF3xqJWmdcl_9bPWcYp0D4olHbtPNpgImbRLn_ZfzymdqtYx6I-SRUCKQunkAGq4dxOM9wLQ3VPLja1li9lDeU6NXgkX7XGO8rA2m1Q0tPzINVNanN-z0Rut0XdWzEhepDwo_MyLnLdhg4oC5gbfNqbUwwqkDDV3Pt6c6_d1vXohDeS5VJETrTZG16qbDY5Ah8YPeiayfLseuznk3rui3lYUWvHZvO4J_ZCUV1LZ7zcOQ" + +ssl_ca_cert: "-----BEGIN CERTIFICATE----- + +MIIDBTCCAe2gAwIBAgIIWX6AGYfkbaYwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE + +AxMKa3ViZXJuZXRlczAeFw0yNDExMTExMDI1MzhaFw0zNDExMDkxMDMwMzhaMBUx + +EzARBgNVBAMTCmt1YmVybmV0ZXMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK + +AoIBAQC+jwt4uPT7uyx6DlWrJ7OnnfQFKKfPJ/rHEOiVpV57qG6JW9rCnYzXZ0i/ + +eEVDXtQnQ/NZ2VXPY0UZI30Ew+w99z+Eh/m/MCsyTOq5YUuN3/5NQ4NsXc8VBHSm + +yoelJLw2hPwmzNsgDouZqtvIURFuwxL4tc1/UeH51sj4cw4l6yJcRC0I2llYxF8Q + +znTaOWeQ5LuaxoHOFb01wENFacoRNgcNoFB7oVeb5h+c0hM+cHqeRdQVc96VQDxa + +ynqIzdJ+whDmzEif5RK2R7LWNLXLQlEIUkGnOg+iaLdXPbGKzS38o5mZqRheXVHD + +nFb5ZeOQ1oqPStQJCz7cNMMkS983AgMBAAGjWTBXMA4GA1UdDwEB/wQEAwICpDAP + +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTqeh0oly+huPQfzIMaslJesN+CsjAV + +BgNVHREEDjAMggprdWJlcm5ldGVzMA0GCSqGSIb3DQEBCwUAA4IBAQBrpAL5oE6b + +Dw/di4gowUfv5boTpHmbpRxXhA/MBL5THTV0rR7hkdt3O+j2wsoGWrbuSkyfBhUi + +AVp3V98+qNmKiLKKYlugCTCUK3J0uHewWdlCY+voKiBR0oMdzMGqbApqZ7GFPIVJ + +ORycUf3R8Gg07BeMzrXNM4AylRu8jsfwa/xCLCLg4ueNwHxQYHlA77vmj+2tTb8K + +mmkaAGRaIZrzH+Y/Dg7whAKtym7S5TxutXqWa3mRL/2M2kwP+Y3RdhXqvAFlmytK + +eHFOJSeuYYa1kLTiCMknLAcwd6XLA7CyWiS1FJmSHGp5eIlCUku4oV7IhaMb6Fgp + +mRmUryUhgyKs + +-----END CERTIFICATE-----" + project_name: "default" + -ssl_ca_cert: None + type: "kubernetes" + extra: + - use_helm: true + \ No newline at end of file + + use_helm: true + +--------------------------------------+------+----------------------------------+-----------+------------+--------+ + | ID | Name | Tenant_id | Type | Is Default | Status | + +--------------------------------------+------+----------------------------------+-----------+------------+--------+ + | 76bf55a1-7df9-4d0b-999a-9febd074dc6f | VIM0 | 89047a7c599f44978802b1330fecc646 | openstack | True | ACTIVE | + +--------------------------------------+------+----------------------------------+-----------+------------+--------+ + +----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Field | Value | + +----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | auth_cred | { | + | | "bearer_token": "***", | + | | "ssl_ca_cert": "b'gAAAAABnZTrA9T2bRK905WuX6oZxoIcorZEsX_St5bu-iKqepORVUseveibpN5NLeMDj5K8n3bTV6VFegWuoBK467CZ8re-mGEFfGXMFjhGF5kjDAf_Ec- | + | | EqrC5c4s1qNW7oaklGL1lNg6yDvbDPhGp_N79pyfn9bMbocEh_tBK_CCOythaJ1QudoObqbXglmgTY45xH_-h4WzZWd0TTC-p-ESd5BOlCLM- | + | | uCHunD1SN9Ext6dy3vsfU6mVMDNaSiEgHMUe0zpiuOBJd0ld-U1NtXRmbmTw_Stg66Gx8AVLEIDxmqFmsAjzK- | + | | XW62L3N2NqXJ0WBc_E0VmSpnvXOvLR1cpNkCL08ZPqJ5jZonriTFoEId9V2e1UFQrQBnigiwvGEH8_GQ4mZI1LxIqzQLpUwkd_jPtzsCTpdRnFeec6YmJms2JCoIWrNOQOeGwpXXqSRIVk9LqqzMQ5pBhx7LH-ODwJy8 | + | | GLHc2cEoy2OiyZ4jfhkhBnBzK99QqFWGTkWAoOfbCAxSswnQQNXJPZDB8rZ_tBowvUGAHh1WaIz3c5nArKEM2ynpB_naii6KmsGTP7cA3Vh0uF5DAn3vDk1W_sjt93edzUT9k2sHpwSvqcLkJep3HibGeFKxO72AljgE | + | | UOUAX0ap63x3Hf5- | + | | 1HuZrRyWWBE7Je4QoDVE_vcGVQlVeTC5BihADUPHzhRc1S8FbtGGg5WALV65c7HdsvSRzXtzN4_qEBz_0aD7BcFBXSoXimk3er8DT96zH6MADc62Z_4vnHglwV_jpRkfk1HuMpwCtobRuh5T6RX9tQ9Bbldx3G8gOoMz | + | | mhcdwDOX8G5ILd_UdArwS9_5Bxm7T9nNfTTiadmHj7saYPe3uQim0BTuqcPxQOieXvukmz7ge29HLJBOZ8DrwRQX8xnXIzf5AezaGzpWV61ADa8VlGei62cbJa3fM1rxboB_YVETfjjReNqT84n8s7sSy2KrjcqOXJA7 | + | | cwi_Bg1z1zXzd2Dp3bmqJzFYuIcHc0errA4GajrtyppmMxIteZeNB8ai6Kwc9Zi2zra4nh7r3Ybbn_zR9Hg4Zb0RYD9BdRQAb4qJTK1zFA5bgCGMrWCaZb- | + | | e9UBrCXo5_BkGPg9Ow0emifG2fCkB0qLN7yAuoMl34xuBs7v6ZkA0TSRTh2Mdg5fnNUPsAXH32xJ0fDkiKA9pcR9dkBbG04flDqZpy2niV19PF2JYHo- | + | | 1Zej591qKwEan_tpGDOzArFDNAFYrAkScFhCIzlE53MCsq99n-ETLMYMTZRZtbAWcP8BQRerbEaZsRBUw6YsqI9MLKeTaiAZz8ZVt_JKwSIVqs-Mlx9jlcE- | + | | NsPNMFQSPl8WqEJlCvAI_HWOhang59N0UasjcQTw44H6lVXzQB8CfNBea1uQS4dDm43zITaScto2wwccLyTSg9RAAwneWOuDDaLPNu0vQKf5IJ5eD_w-fbH-U- | + | | Vzuw2RyNCfbOaTnqzb66nR8JEqQ8P64TkXAgkl2K6y_yXYIxEd2SkGjMSq3mTnx6SNbLpcwY7DsT9v0iNJEyemB8078EWZOaZr1_WqlH8uEA=='", | + | | "auth_url": "https://192.168.56.23:6443", | + | | "username": "None", | + | | "key_type": "barbican_key", | + | | "secret_uuid": "***" | + | | } | + | auth_url | https://192.168.56.23:6443 | + | created_at | 2024-12-20 09:37:05.618109 | + | description | Kubernetes VIM | + | extra | helm_info={'masternode_ip':['192.168.56.23'],'masternode_username':'helm','masternode_password':'helm_password'} | + | id | adf0cca6-8d5d-4e92-9e21-a5638ddf5113 | + | is_default | False | + | name | vim-kubernetes | + | placement_attr | { | + | | "regions": [ | + | | "default", | + | | "kube-flannel", | + | | "kube-node-lease", | + | | "kube-public", | + | | "kube-system" | + | | ] | + | | } | + | project_id | 89047a7c599f44978802b1330fecc646 | + | status | ACTIVE | + | type | kubernetes | + | updated_at | None | + | vim_project | { | + | | "name": "default" | + | | } | + +----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Field | Value | + +----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | auth_cred | { | + | | "bearer_token": "***", | + | | "ssl_ca_cert": "b'gAAAAABnZTrD-FN762CKIgk_kmZym19PDCeTd9Bh8rXTwdHS_p5lKGg0aGGNdJmdSZwmpWI4HwrJxZeq_LCaritEqF4_HukQs1Z7jq5G_Zj9b- | + | | JztptO530v6_LjrKVJmnYQb8Jupsx01Z52gfkSbfaBmThAE4SbmpOBBpHfdcBwUFpHe3OAIzl9GFG2wWNteVrZ- | + | | TLhFro9YwlM8oh9kQKVOHEapiA8SFrIGPpOn1XcWN6t__KbqDrU2nrK0rDry0jCsPuRZ2MPIrKjCczphoA2MmgDSiEO-CEfdLHfegULpKYfAEgxRr-CpNYJCcRNHIJvrEzxZHiBHLD38q0w7XsyAdaTNLn6Z6p-S-nm_ | + | | rucwA3lwz7EaVxGBImsoO2XRgydLRsZy5M60- | + | | zjWhiiIVtsVQBF9U6WXHl432okRZxLG0TIQIiwiZMh1S9cGaCsiPkGbYZcl176Li3pfA1ERbzAdlK7Fro8tKwEzc3qy0Rs9aMMP5VbHCGNISLtQHVOiQfedbykuQqKje9ILs7QyIHbtPj_zxe1o0XYfE8Y0ALc1jUBfR | + | | 3F9M7VSun-Q9XYdUuuejGNtkGAZTaLTZVuwZiLRVg4hyNN1Qz09Qgm- | + | | 9Qnhq6ygpThX2ytcQeds0zwdC3VQ9tsN1dMzjz_xR49QwwlIYYL0d_gMMuQnwnSbW5YEB3qznCNxDdZ2tG_EGBQE7T5UybCQU7UzcwCxpXnh6-m1aA5aoY5EryAhaVWukQ9Iv- | + | | jjyzGVh50gMnO8UJBjF4N0JH-7fzRsqxGxOpm7NTpBURMzrdFtq4wqDbZ_KGXWL_rAhRN7rlkizvm2-4JDRhEjndHHnN41AJbj8zEM5_u_ufbPklv6Sy6hQ70j8ojVz8Bqxqv5RF39NPiT-kgVJsMqkrX0C7_yvkva9O | + | | V9SxorgdhyksyhPFUgCVraLdXVJY95UKsQeA_GpTTQJ0CryD6OWU0BhUAN5SvqARr4zElA_TAvjaKxr4v7fVFddT0v2DcncG2OhOe6k82svwPVvvhA8avHLgTHOdl_qSPDrv9AWguBom0wqQex_EgcsLdwrBFMI2uJqe | + | | inn1ISd-Lg6JKcYfrC9klVWSw9XNRn9jM_fhd3SfttzSId6NPm5y_rSJlE_aE6UmlbMBRJzM0_zaFuI0IYzu-_If63ADCB9gN9b1XTlCgb64VWKucse_aahftvTi73arcBegUKu- | + | | KScpZ9BIFyQHcrPiR3uAeLHxn_wXv2-5Nhxw35IMZzGBgael1N8bBaSEsgAGLfl2kNjt9j1O1XryDdmiqYmPaMyqq1M02CpAHoI7AIUKvv3-4ULHj7yT3MYoe0SFVZ7J_iKHl0wZKm- | + | | qmP8CRL34hQbzs89pkCIrYKmo2KxcmcAdmYdBuQiVhwWqW4VDuA64wB0IP-QIQTVrtmikcFYH8huT85m-rU5230f2MiamQMZ01ADV1PMu8uJf- | + | | ASgqfaesWeC61Of4nhbIZ5Wm1Rp0Ln2Y45CmiM5V5DbtXsHeYhkwT8KjEO9LvJ7WNLlYyuRMFO6Xwh8bEjE78H91RAKjgQQurL65svtLxA=='", | + | | "auth_url": "https://192.168.56.23:6443", | + | | "username": "None", | + | | "key_type": "barbican_key", | + | | "secret_uuid": "***" | + | | } | + | auth_url | https://192.168.56.23:6443 | + | created_at | 2024-12-20 09:37:08.136510 | + | description | Kubernetes VIM | + | extra | use_helm=True | + | id | 4d843bcc-af0b-42ab-86dd-dd710905a3c2 | + | is_default | False | + | name | vim-kubernetes-helm | + | placement_attr | { | + | | "regions": [ | + | | "default", | + | | "kube-flannel", | + | | "kube-node-lease", | + | | "kube-public", | + | | "kube-system" | + | | ] | + | | } | + | project_id | 89047a7c599f44978802b1330fecc646 | + | status | ACTIVE | + | type | kubernetes | + | updated_at | None | + | vim_project | { | + | | "name": "default" | + | | } | + +----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +--------------------------------------+---------------------+----------------------------------+------------+------------+--------+ + | ID | Name | Tenant_id | Type | Is Default | Status | + +--------------------------------------+---------------------+----------------------------------+------------+------------+--------+ + | 4d843bcc-af0b-42ab-86dd-dd710905a3c2 | vim-kubernetes-helm | 89047a7c599f44978802b1330fecc646 | kubernetes | False | ACTIVE | + | 76bf55a1-7df9-4d0b-999a-9febd074dc6f | VIM0 | 89047a7c599f44978802b1330fecc646 | openstack | True | ACTIVE | + | adf0cca6-8d5d-4e92-9e21-a5638ddf5113 | vim-kubernetes | 89047a7c599f44978802b1330fecc646 | kubernetes | False | ACTIVE | + +--------------------------------------+---------------------+----------------------------------+------------+------------+--------+ + constants.py container_update_mgmt.py __init__.py __pycache__ vnflcm_abstract_driver.py vnflcm_noop.py + --- /opt/stack/tacker/setup.cfg_bk 2024-11-11 02:46:00.132741905 +0000 + +++ /opt/stack/tacker/setup.cfg 2024-12-20 09:37:11.401141579 +0000 + @@ -63,6 +63,7 @@ + tacker.tacker.mgmt.drivers = + noop = tacker.vnfm.mgmt_drivers.noop:VnfMgmtNoop + vnflcm_noop = tacker.vnfm.mgmt_drivers.vnflcm_noop:VnflcmMgmtNoop + + mgmt-container-update = tacker.vnfm.mgmt_drivers.container_update_mgmt:ContainerUpdateMgmtDriver + oslo.config.opts = + tacker.auth = tacker.auth:config_opts + tacker.common.config = tacker.common.config:config_opts + --- /etc/tacker/tacker.conf_bk 2024-11-11 03:11:18.252006525 +0000 + +++ /etc/tacker/tacker.conf 2024-12-20 09:37:11.781144499 +0000 + @@ -3059,6 +3059,7 @@ + # MGMT driver to communicate with Hosting VNF/logical service instance tacker + # plugin will use (list value) + #vnflcm_mgmt_driver = vnflcm_noop + +vnflcm_mgmt_driver = vnflcm_noop,mgmt-container-update + + # + # From tacker.vnfm.plugin + ... + copying tacker/tests/var/ca.crt -> build/lib/tacker/tests/var + copying tacker/tests/var/certandkey.pem -> build/lib/tacker/tests/var + copying tacker/tests/var/certificate.crt -> build/lib/tacker/tests/var + copying tacker/tests/var/privatekey.key -> build/lib/tacker/tests/var diff --git a/tools/doc_samples/setting_ft/kubernetes/kube-controller-k8s.sh b/tools/doc_samples/setting_ft/kubernetes/kube-controller-k8s.sh new file mode 100644 index 000000000..d0a6f4e40 --- /dev/null +++ b/tools/doc_samples/setting_ft/kubernetes/kube-controller-k8s.sh @@ -0,0 +1,82 @@ +#!/bin/sh +# kube-controller-k8s.sh + +cd "${HOME}" || exit + +### Add values for unqualified-search-registries of the file registries.conf +if [ -f "/etc/containers/registries.conf" ] +then + sudo cp -p /etc/containers/registries.conf /etc/containers/registries.conf_bk + sudo sed -i "s/unqualified-search-registries\ =\ \[\"docker\.io\",\ \"quay\.io\"\]/unqualified-search-registries\ =\ \[\"docker\.io\",\ \"k8s\.gcr\.io\",\ \"quay\.io\",\ \"celebdor\"\]/" \ + /etc/containers/registries.conf +else + echo "the file /etc/containers/registries.conf is not exist." +fi + +### Removing ip link and restarting kubelet +# kubectl get all -A +# ip link +sudo ip link set cni0 down +sudo ip link set flannel.1 down +# ip link +sudo ip link delete cni0 +sudo ip link delete flannel.1 +ip link +sudo systemctl restart kubelet +kubectl get all -A + +### Restart coredns +kubectl delete pod -n kube-system $(kubectl get pod -n kube-system --no-headers -o custom-columns=":metadata.name" | grep coredns | tr -s '\n' ' ') +kubectl get all -A + +### Transfer the file .kube/config from this host controller-k8s to the host controller-tacker. +### Install Tool sshpass to run the command scp without entering an interactive passphrase. +sudo apt-get -y install sshpass +sshpass -p "vagrant" scp -po "StrictHostKeyChecking no" .kube/config vagrant@controller-tacker:/tmp/kubeconfig + +### Create and configure user helm. +sudo adduser --disabled-password --gecos "" "helm" +echo "helm:helm_password" | sudo chpasswd +sudo sh -c "cat >> /etc/sudoers.d/50_helm_sh" << EOF +helm ALL=(root) NOPASSWD:ALL +EOF +if [ -d "/home/helm" ] +then + sudo cp -pr .kube /home/helm/. + sudo ls -la /home/helm/.kube + sudo chown -R helm:helm /home/helm/.kube +else + echo "the directory /home/helm is not exist." +fi +sudo ls -la /home/helm/.kube +sudo mkdir -p /var/tacker/helm +sudo chmod 755 /var/tacker/helm +sudo chown helm:helm /var/tacker/helm +ls -l /var/tacker/. +if [ -f "/etc/ssh/sshd_config" ] +then + sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bk + sudo sh -c "sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config" + diff -u /etc/ssh/sshd_config_bk /etc/ssh/sshd_config +else + echo "the file /etc/ssh/sshd_config is not exist." +fi +sudo systemctl restart sshd + +### Install the Helm package. +curl -O https://get.helm.sh/helm-v3.15.4-linux-amd64.tar.gz +if [ -f "helm-v3.15.4-linux-amd64.tar.gz" ] +then + tar -zxvf helm-v3.15.4-linux-amd64.tar.gz +else + echo "the file helm-v3.15.4-linux-amd64.tar.gz is not exist." +fi +if [ -f "linux-amd64/helm" ] +then + sudo mv linux-amd64/helm /usr/local/bin/helm +else + echo "the file linux-amd64/helm is not exist." +fi +helm version + +# echo "End shell script ${0}" diff --git a/tools/doc_samples/setting_ft/kubernetes/kube-controller-tacker.sh b/tools/doc_samples/setting_ft/kubernetes/kube-controller-tacker.sh new file mode 100644 index 000000000..89cc4d72b --- /dev/null +++ b/tools/doc_samples/setting_ft/kubernetes/kube-controller-tacker.sh @@ -0,0 +1,182 @@ +#!/bin/sh +# kube-controller-tacker.sh + +CONTROLLER_IP_ADDRESS="192.168.56.21" +OS_AUTH_URL="http://${CONTROLLER_IP_ADDRESS}/identity" +CONTROLLER_K8S_IP_ADDRESS="192.168.56.23" + +### Change the IP address of the file local-vim.yaml +cd "${HOME}" || exit +if [ -f "tacker/samples/tests/etc/samples/local-vim.yaml" ] +then + cp -p tacker/samples/tests/etc/samples/local-vim.yaml tacker/samples/tests/etc/samples/local-vim.yaml_bk + sed -i "s/auth_url:\ http:\/\/127.0.0.1\/identity/auth_url:\ http:\/\/${CONTROLLER_IP_ADDRESS}\/identity/" tacker/samples/tests/etc/samples/local-vim.yaml +else + echo "the file tacker/samples/tests/etc/samples/local-vim.yaml is not exist." +fi + +### Register the default VIM +if [ -d "${HOME}/tacker" ] +then + cd "${HOME}/tacker" || exit +else + echo "the directory ${HOME}/tacker is not exist." +fi +openstack vim register \ + --os-username nfv_user \ + --os-project-name nfv \ + --os-password devstack \ + --os-auth-url "${OS_AUTH_URL}" \ + --os-project-domain-name Default \ + --os-user-domain-name Default \ + --is-default \ + --description "Default VIM" \ + --config-file /opt/stack/tacker/samples/tests/etc/samples/local-vim.yaml \ + VIM0 + +cd "${HOME}" || exit + +### Install the tool kubectl on this host controller-tacker. +curl -LO https://dl.k8s.io/release/v1.30.5/bin/linux/amd64/kubectl +curl -LO "https://dl.k8s.io/release/v1.30.5/bin/linux/amd64/kubectl.sha256" +echo "$(cat kubectl.sha256) kubectl" | sha256sum --check +sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl +kubectl version --client +mkdir .kube +if [ -f "/tmp/kubeconfig" ] +then + sudo mv /tmp/kubeconfig .kube/config + sudo chown stack:stack .kube/config + sudo chmod 600 .kube/config +else + echo "the file /tmp/kubeconfig is not exist." +fi +ls -l .kube +kubectl cluster-info + +### Register the Secret and modify the file local-k8s-vim.yaml using the tool gen_vim_config.sh. +# kubectl get secret +if [ -f "tacker/samples/tests/etc/samples/local-k8s-vim.yaml" ] && \ + [ -f "tacker/tools/gen_vim_config.sh" ] +then + cp -p tacker/samples/tests/etc/samples/local-k8s-vim.yaml tacker/samples/tests/etc/samples/local-k8s-vim.yaml_bk + bash tacker/tools/gen_vim_config.sh -p default -t k8s -e https://${CONTROLLER_K8S_IP_ADDRESS}:6443 --k8s-use-cert -o tacker/samples/tests/etc/samples/local-k8s-vim.yaml + kubectl get secret + diff -u tacker/samples/tests/etc/samples/local-k8s-vim.yaml_bk tacker/samples/tests/etc/samples/local-k8s-vim.yaml + # cat tacker/samples/tests/etc/samples/local-k8s-vim.yaml +else + echo "the file tacker/samples/tests/etc/samples/local-k8s-vim.yaml is not exist." + echo "or the file tacker/tools/gen_vim_config.sh is not exist." +fi + +### Add the extra configuration to the file local-k8s-vim.yaml. +if [ -f "tacker/samples/tests/etc/samples/local-k8s-vim.yaml" ] +then + cp -p tacker/samples/tests/etc/samples/local-k8s-vim.yaml tacker/samples/tests/etc/samples/local-k8s-vim.yaml_bk2 +cat << EOF >> "tacker/samples/tests/etc/samples/local-k8s-vim.yaml" +extra: + helm_info: "{'masternode_ip':['${CONTROLLER_K8S_IP_ADDRESS}'],'masternode_username':'helm','masternode_password':'helm_password'}" +EOF + # cat tacker/samples/tests/etc/samples/local-k8s-vim.yaml +else + echo "the file tacker/samples/tests/etc/samples/local-k8s-vim.yaml is not exist." +fi + +### Modify the file local-k8s-vim-helm.yaml using the tool gen_vim_config.sh. +if [ -f "tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml" ] && \ + [ -f "tacker/tools/gen_vim_config.sh" ] +then + cp -p tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml_bk + bash tacker/tools/gen_vim_config.sh -p default -t k8s -e https://${CONTROLLER_K8S_IP_ADDRESS}:6443 --k8s-use-cert --k8s-use-helm -o tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml + diff -u tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml_bk tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml + # cat tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml +else + echo "the file tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml is not exist." + echo "or the file tacker/tools/gen_vim_config.sh is not exist." +fi + +### Register the Kubernetes VIM +openstack vim list \ + --os-username nfv_user \ + --os-project-name nfv \ + --os-password devstack \ + --os-auth-url "${OS_AUTH_URL}" \ + --os-project-domain-name Default \ + --os-user-domain-name Default + +openstack vim register \ + --os-username nfv_user \ + --os-project-name nfv \ + --os-password devstack \ + --os-auth-url "${OS_AUTH_URL}" \ + --os-project-domain-name Default \ + --os-user-domain-name Default \ + --description "Kubernetes VIM" \ + --config-file tacker/samples/tests/etc/samples/local-k8s-vim.yaml \ + vim-kubernetes + +openstack vim register \ + --os-username nfv_user \ + --os-project-name nfv \ + --os-password devstack \ + --os-auth-url "${OS_AUTH_URL}" \ + --os-project-domain-name Default \ + --os-user-domain-name Default \ + --description "Kubernetes VIM" \ + --config-file tacker/samples/tests/etc/samples/local-k8s-vim-helm.yaml \ + vim-kubernetes-helm + +openstack vim list \ + --os-username nfv_user \ + --os-project-name nfv \ + --os-password devstack \ + --os-auth-url "${OS_AUTH_URL}" \ + --os-project-domain-name Default \ + --os-user-domain-name Default + +### Set MgmtDriver. +if [ -d "/opt/stack/tacker/tacker/vnfm/mgmt_drivers" ] && \ + [ -f "/opt/stack/tacker/samples/mgmt_driver/kubernetes/container_update/container_update_mgmt.py" ] +then + # ls /opt/stack/tacker/tacker/vnfm/mgmt_drivers + cp -p /opt/stack/tacker/samples/mgmt_driver/kubernetes/container_update/container_update_mgmt.py /opt/stack/tacker/tacker/vnfm/mgmt_drivers/. + ls /opt/stack/tacker/tacker/vnfm/mgmt_drivers + sudo chown stack:stack /opt/stack/tacker/tacker/vnfm/mgmt_drivers/container_update_mgmt.py +else + echo "the directory /opt/stack/tacker/tacker/vnfm/mgmt_drivers is not exist." + echo "or the file /opt/stack/tacker/samples/mgmt_driver/kubernetes/container_update/container_update_mgmt.py is not exist." +fi + +if [ -f "/opt/stack/tacker/setup.cfg" ] +then + cp -p /opt/stack/tacker/setup.cfg /opt/stack/tacker/setup.cfg_bk + sudo sed -i "/VnflcmMgmtNoop/a \ \ \ \ mgmt-container-update = \ +tacker.vnfm.mgmt_drivers.container_update_mgmt:ContainerUpdateMgmtDriver" \ +/opt/stack/tacker/setup.cfg + diff -u /opt/stack/tacker/setup.cfg_bk /opt/stack/tacker/setup.cfg +else + echo "the file /opt/stack/tacker/setup.cfg is not exist." +fi + +if [ -f "/etc/tacker/tacker.conf" ] +then + cp -p /etc/tacker/tacker.conf /etc/tacker/tacker.conf_bk + sudo sed -i "/vnflcm_mgmt_driver = vnflcm_noop/a vnflcm_mgmt_driver = \ +vnflcm_noop,mgmt-container-update" /etc/tacker/tacker.conf + diff -u /etc/tacker/tacker.conf_bk /etc/tacker/tacker.conf +else + echo "the file /etc/tacker/tacker.conf is not exist." +fi + +if [ -d "/opt/stack/tacker" ] +then + cd "/opt/stack/tacker" || exit + sudo python3 setup.py build + sudo chown -R stack:stack /opt/stack/tacker/ +else + echo "the directory /opt/stack/tacker is not exist." +fi +sudo systemctl restart devstack@tacker-conductor +cd "${HOME}" || exit + +# echo "End shell script ${0}" diff --git a/tools/doc_samples/setting_ft/kubernetes/kube-controller.sh b/tools/doc_samples/setting_ft/kubernetes/kube-controller.sh new file mode 100644 index 000000000..5881f03e3 --- /dev/null +++ b/tools/doc_samples/setting_ft/kubernetes/kube-controller.sh @@ -0,0 +1,9 @@ +#!/bin/sh +# kube-controller.sh + +### Open Virtual Switch (OVS) +# sudo ovs-vsctl show +sudo ovs-vsctl add-port br-ex eth1 +sudo ovs-vsctl show + +# echo "End shell script ${0}" diff --git a/tools/doc_samples/setting_ft/openstack/openstack-controller-tacker.sh b/tools/doc_samples/setting_ft/openstack/openstack-controller-tacker.sh new file mode 100644 index 000000000..051e16f5c --- /dev/null +++ b/tools/doc_samples/setting_ft/openstack/openstack-controller-tacker.sh @@ -0,0 +1,35 @@ +#!/bin/sh +# openstack-controller-tacker.sh + +CONTROLLER_IP_ADDRESS="192.168.56.11" +OS_AUTH_URL="http://${CONTROLLER_IP_ADDRESS}/identity" + +### Change the IP address of the file local-vim.yaml +if [ -f "tacker/samples/tests/etc/samples/local-vim.yaml" ] +then + cp -p tacker/samples/tests/etc/samples/local-vim.yaml tacker/samples/tests/etc/samples/local-vim.yaml_bk + sed -i "s/auth_url:\ http:\/\/127.0.0.1\/identity/auth_url:\ http:\/\/${CONTROLLER_IP_ADDRESS}\/identity/" tacker/samples/tests/etc/samples/local-vim.yaml +else + echo "the file tacker/samples/tests/etc/samples/local-vim.yaml is not exist." +fi + +### Register the default VIM +if [ -d "${HOME}/tacker" ] +then + cd "${HOME}/tacker" || exit +else + echo "the directory ${HOME}/tacker is not exist." +fi +openstack vim register \ + --os-username nfv_user \ + --os-project-name nfv \ + --os-password devstack \ + --os-auth-url "${OS_AUTH_URL}" \ + --os-project-domain-name Default \ + --os-user-domain-name Default \ + --is-default \ + --description "Default VIM" \ + --config-file /opt/stack/tacker/samples/tests/etc/samples/local-vim.yaml \ + VIM0 + +# echo "End shell script ${0}" diff --git a/tools/doc_samples/setting_ft/openstack/openstack-controller.sh b/tools/doc_samples/setting_ft/openstack/openstack-controller.sh new file mode 100644 index 000000000..294c39093 --- /dev/null +++ b/tools/doc_samples/setting_ft/openstack/openstack-controller.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# openstack-controller.sh + +DATABASE_PASSWORD="secretdatabase" + +### Open Virtual Switch (OVS) +sudo ovs-vsctl add-port br-ex eth1 +sudo ovs-vsctl show + +### multi-node, MySQL +cd "${HOME}" || exit +mysql -p --password="${DATABASE_PASSWORD}" << END_OF_INPUT_1 +use nova_cell1 +select host,hypervisor_hostname, mapped, uuid from compute_nodes; +quit +END_OF_INPUT_1 +/bin/rm -f "./settings-compute-nodes.sh" +cat << EOF > "./settings-compute-nodes.sh" +#!/bin/sh +${SHELL} --rcfile /dev/fd/3 3<< END_OF_SHELL + source data/venv/bin/activate + nova-manage cell_v2 discover_hosts + mysql -p --password="${DATABASE_PASSWORD}" << END_OF_INPUT_2 + use nova_cell1 + select host,hypervisor_hostname, mapped, uuid from compute_nodes; + quit +END_OF_INPUT_2 + deactivate + exit +END_OF_SHELL +EOF +# source "./settings-compute-nodes.sh" +. "./settings-compute-nodes.sh" +/bin/rm -f "./settings-compute-nodes.sh" + +# echo "End shell script ${0}"