Docker runtime integration.

Provision 10G logical volume in cgts_vg for
docker usage. puppet changes to configure and start docker if
--kubernetes config_controller option specified.

Change-Id: I6820025e34564283981798a53ad2f3d42162e804
This commit is contained in:
Kevin Smith 2018-05-29 08:02:56 -04:00 committed by Jack Ding
parent 008d0b396f
commit 73b327f410
9 changed files with 140 additions and 15 deletions

View File

@ -30,6 +30,7 @@ include ::platform::amqp::rabbitmq
include ::platform::postgresql::server
include ::platform::haproxy::server
include ::platform::grub
include ::platform::docker
include ::platform::kubernetes::master
include ::platform::patching

View File

@ -5,6 +5,8 @@ class platform::ceph::params(
$authentication_type = 'none',
$mon_lv_name = 'ceph-mon-lv',
$mon_lv_size = 0,
$mon_fs_type = 'ext4',
$mon_fs_options = ' ',
$mon_mountpoint = '/var/lib/ceph/mon',
$mon_0_host = undef,
$mon_0_ip = undef,
@ -88,6 +90,8 @@ class platform::ceph::monitor
lv_name => $mon_lv_name,
lv_size => $mon_lv_size,
mountpoint => $mon_mountpoint,
fs_type => $mon_fs_type,
fs_options => $mon_fs_options,
} -> Class['::ceph']
file { "/etc/pmon.d/ceph.conf":

View File

@ -0,0 +1,39 @@
class platform::docker::params (
$package_name = 'docker-ce',
) { }
class platform::docker::config
inherits ::platform::docker::params {
include ::platform::kubernetes::params
if $::platform::kubernetes::params::enabled {
Class['::platform::filesystem::docker'] ~> Class[$name]
service { 'docker':
ensure => 'running',
name => 'docker',
enable => true,
require => Package['docker']
} ->
exec { 'enable-docker':
command => '/usr/bin/systemctl enable docker.service',
}
}
}
class platform::docker::install
inherits ::platform::docker::params {
package { 'docker':
ensure => 'installed',
name => $package_name,
}
}
class platform::docker
{
include ::platform::docker::install
include ::platform::docker::config
}

View File

@ -1,5 +1,4 @@
class platform::filesystem::params (
$fs_type = 'ext4',
$vg_name = 'cgts-vg',
) {}
@ -8,6 +7,8 @@ define platform::filesystem (
$lv_name,
$lv_size,
$mountpoint,
$fs_type,
$fs_options
) {
include ::platform::filesystem::params
$vg_name = $::platform::filesystem::params::vg_name
@ -25,7 +26,8 @@ define platform::filesystem (
# create filesystem
filesystem { $device:
ensure => present,
fs_type => 'ext4',
fs_type => $fs_type,
options => $fs_options,
} ->
file { $mountpoint:
@ -41,7 +43,7 @@ define platform::filesystem (
ensure => 'mounted',
device => "${device}",
options => 'defaults',
fstype => $::platform::filesystem::params::fs_type,
fstype => $fs_type,
} ->
# The above mount resource doesn't actually remount devices that were already present in /etc/fstab, but were
@ -86,7 +88,9 @@ class platform::filesystem::backup::params (
$lv_name = 'backup-lv',
$lv_size = '5',
$mountpoint = '/opt/backups',
$devmapper = '/dev/mapper/cgts--vg-backup--lv'
$devmapper = '/dev/mapper/cgts--vg-backup--lv',
$fs_type = 'ext4',
$fs_options = ' '
) {}
class platform::filesystem::backup
@ -96,15 +100,18 @@ class platform::filesystem::backup
lv_name => $lv_name,
lv_size => $lv_size,
mountpoint => $mountpoint,
fs_type => $fs_type,
fs_options => $fs_options
}
}
class platform::filesystem::scratch::params (
$lv_size = '8',
$lv_name = 'scratch-lv',
$mountpoint = '/scratch',
$devmapper = '/dev/mapper/cgts--vg-scratch--lv'
$devmapper = '/dev/mapper/cgts--vg-scratch--lv',
$fs_type = 'ext4',
$fs_options = ' '
) { }
class platform::filesystem::scratch
@ -114,15 +121,39 @@ class platform::filesystem::scratch
lv_name => $lv_name,
lv_size => $lv_size,
mountpoint => $mountpoint,
fs_type => $fs_type,
fs_options => $fs_options
}
}
class platform::filesystem::docker::params (
$lv_size = '1',
$lv_name = 'docker-lv',
$mountpoint = '/var/lib/docker',
$devmapper = '/dev/mapper/cgts--vg-docker--lv',
$fs_type = 'xfs',
$fs_options = '-n ftype=1',
) { }
class platform::filesystem::docker
inherits ::platform::filesystem::docker::params {
platform::filesystem { $lv_name:
lv_name => $lv_name,
lv_size => $lv_size,
mountpoint => $mountpoint,
fs_type => $fs_type,
fs_options => $fs_options
}
}
class platform::filesystem::img_conversions::params (
$lv_size = '8',
$lv_name = 'img-conversions-lv',
$mountpoint = '/opt/img-conversions',
$devmapper = '/dev/mapper/cgts--vg-img--conversions--lv'
$devmapper = '/dev/mapper/cgts--vg-img--conversions--lv',
$fs_type = 'ext4',
$fs_options = ' '
) {}
class platform::filesystem::img_conversions
@ -134,6 +165,8 @@ class platform::filesystem::img_conversions
lv_name => $lv_name,
lv_size => $lv_size,
mountpoint => $mountpoint,
fs_type => $fs_type,
fs_options => $fs_options
}
}
@ -141,6 +174,7 @@ class platform::filesystem::img_conversions
class platform::filesystem::controller {
include ::platform::filesystem::backup
include ::platform::filesystem::scratch
include ::platform::filesystem::docker
include ::platform::filesystem::img_conversions
}
@ -175,6 +209,21 @@ class platform::filesystem::scratch::runtime {
}
class platform::filesystem::docker::runtime {
include ::platform::filesystem::docker::params
$lv_name = $::platform::filesystem::docker::params::lv_name
$lv_size = $::platform::filesystem::docker::params::lv_size
$devmapper = $::platform::filesystem::docker::params::devmapper
platform::filesystem::resize { $lv_name:
lv_name => $lv_name,
lv_size => $lv_size,
devmapper => $devmapper,
}
}
class platform::filesystem::img_conversions::runtime {
include ::platform::filesystem::img_conversions::params

View File

@ -52,6 +52,8 @@ class platform::kubernetes::master
if $enabled {
include ::platform::kubernetes::master::init
Class['::platform::docker::config'] -> Class[$name]
$repo_file = "[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
@ -88,12 +90,6 @@ class platform::kubernetes::master
command => "sysctl --system",
} ->
# Start docker - will move to another manifest.
service { 'docker':
ensure => 'running',
enable => true,
} ->
# Update kubelet configuration. Should probably just patch the kubelet
# package to fix these things.
file_line { "${kubeadm_conf} KUBELET_EXTRA_ARGS":

View File

@ -627,7 +627,8 @@ def _check_controller_multi_fs_data(context, controller_fs_list_new,
lvdisplay_keys = [constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_DATABASE],
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_CGCS],
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_BACKUP],
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_SCRATCH]]
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_SCRATCH],
constants.FILESYSTEM_LV_DICT[constants.FILESYSTEM_NAME_DOCKER]]
# On primary region, img-conversions always exists in controller_fs DB table.
# On secondary region, if both glance and cinder are sharing from the primary

View File

@ -250,6 +250,7 @@ VSWITCH_TYPE_NUAGE_VRS = "nuage_vrs"
# Partition default sizes
DEFAULT_IMAGE_STOR_SIZE = 10
DEFAULT_DOCKER_STOR_SIZE = 1
DEFAULT_DATABASE_STOR_SIZE = 20
DEFAULT_IMG_CONVERSION_STOR_SIZE = 20
DEFAULT_SMALL_IMAGE_STOR_SIZE = 10
@ -263,6 +264,9 @@ DEFAULT_VIRTUAL_BACKUP_STOR_SIZE = 5
DEFAULT_EXTENSION_STOR_SIZE = 1
DEFAULT_PATCH_VAULT_STOR_SIZE = 8
# Docker lv size when Kubernetes is configured
KUBERNETES_DOCKER_STOR_SIZE = 10
# Openstack Interface names
OS_INTERFACE_PUBLIC = 'public'
OS_INTERFACE_INTERNAL = 'internal'
@ -408,6 +412,7 @@ FILESYSTEM_NAME_CINDER = 'cinder'
FILESYSTEM_NAME_DATABASE = 'database'
FILESYSTEM_NAME_IMG_CONVERSIONS = 'img-conversions'
FILESYSTEM_NAME_SCRATCH = 'scratch'
FILESYSTEM_NAME_DOCKER = 'docker'
FILESYSTEM_NAME_EXTENSION = 'extension'
FILESYSTEM_NAME_PATCH_VAULT = 'patch-vault'
@ -415,6 +420,7 @@ FILESYSTEM_LV_DICT = {
FILESYSTEM_NAME_CGCS: 'cgcs-lv',
FILESYSTEM_NAME_BACKUP: 'backup-lv',
FILESYSTEM_NAME_SCRATCH: 'scratch-lv',
FILESYSTEM_NAME_DOCKER: 'docker-lv',
FILESYSTEM_NAME_IMG_CONVERSIONS: 'img-conversions-lv',
FILESYSTEM_NAME_DATABASE: 'pgsql-lv',
FILESYSTEM_NAME_EXTENSION: 'extension-lv',
@ -431,6 +437,7 @@ SUPPORTED_FILEYSTEM_LIST = [
FILESYSTEM_NAME_EXTENSION,
FILESYSTEM_NAME_IMG_CONVERSIONS,
FILESYSTEM_NAME_SCRATCH,
FILESYSTEM_NAME_DOCKER,
FILESYSTEM_NAME_PATCH_VAULT,
]

View File

@ -5269,6 +5269,8 @@ class ConductorManager(service.PeriodicService):
'platform::filesystem::img_conversions::runtime',
constants.FILESYSTEM_NAME_SCRATCH:
'platform::filesystem::scratch::runtime',
constants.FILESYSTEM_NAME_DOCKER:
'platform::filesystem::docker::runtime',
constants.FILESYSTEM_NAME_DATABASE:
'platform::drbd::pgsql::runtime',
constants.FILESYSTEM_NAME_CGCS:
@ -6062,6 +6064,8 @@ class ConductorManager(service.PeriodicService):
system = self.dbapi.isystem_get_one()
system_dc_role = system.get('distributed_cloud_role', None)
region_config = system.capabilities.get('region_config', False)
kubernetes_config = system.capabilities.get('kubernetes_enabled', False)
LOG.info("Local Region Name: %s" % system.region_name)
# handle region mode case
if region_config:
@ -6362,6 +6366,22 @@ class ConductorManager(service.PeriodicService):
data['name'], data['logical_volume'], data['size']))
self.dbapi.controller_fs_create(data)
if kubernetes_config:
docker_lv_size = constants.KUBERNETES_DOCKER_STOR_SIZE
else:
docker_lv_size = constants.DEFAULT_DOCKER_STOR_SIZE
data = {
'name': constants.FILESYSTEM_NAME_DOCKER,
'size': docker_lv_size,
'logical_volume': constants.FILESYSTEM_LV_DICT[
constants.FILESYSTEM_NAME_DOCKER],
'replicated': False,
}
LOG.info("Creating FS:%s:%s %d" % (
data['name'], data['logical_volume'], data['size']))
self.dbapi.controller_fs_create(data)
if (system_dc_role == constants.DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER and
tsc.system_type != constants.TIS_AIO_BUILD):
data = {
@ -8651,13 +8671,16 @@ class ConductorManager(service.PeriodicService):
def get_controllerfs_lv_sizes(self, context):
system = self.dbapi.isystem_get_one()
system_dc_role = system.get('distributed_cloud_role', None)
lvdisplay_command = 'lvdisplay --columns --options lv_size,lv_name ' \
'--units g --noheading --nosuffix ' \
'/dev/cgts-vg/pgsql-lv /dev/cgts-vg/backup-lv ' \
'/dev/cgts-vg/cgcs-lv ' \
'/dev/cgts-vg/img-conversions-lv ' \
'/dev/cgts-vg/scratch-lv ' \
'/dev/cgts-vg/extension-lv '
'/dev/cgts-vg/extension-lv '\
'/dev/cgts-vg/docker-lv '
if (system_dc_role == constants.DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER and
tsc.system_type != constants.TIS_AIO_BUILD):
lvdisplay_command = lvdisplay_command + '/dev/cgts-vg/patch-vault-lv '

View File

@ -66,6 +66,11 @@ class StoragePuppet(base.BasePuppet):
'platform::drbd::patch_vault::params::lv_size':
controller_fs.size,
})
elif controller_fs.name == constants.FILESYSTEM_NAME_DOCKER:
config.update({
'platform::filesystem::docker::params::lv_size':
controller_fs.size
})
return config