diff --git a/devstack/lib/magnum b/devstack/lib/magnum index c8011dd7a6..284f2b94ec 100644 --- a/devstack/lib/magnum +++ b/devstack/lib/magnum @@ -19,7 +19,6 @@ # - magnum_configure_flavor # - start_magnum # - configure_iptables_magnum -# - configure_apache_magnum # - stop_magnum # - cleanup_magnum @@ -372,45 +371,6 @@ function configure_iptables_magnum { fi } -function configure_apache_magnum { - # Set redirection for kubernetes openstack cloud provider - # FIXME: When [1] is in kubernetes, we won't need the redirection anymore. - # [1] https://github.com/gophercloud/gophercloud/pull/423 - HTACCESS_PATH=/var/www/html - if is_ubuntu; then - OVERRIDE_CONF_FILE=/etc/apache2/apache2.conf - elif is_fedora; then - OVERRIDE_CONF_FILE=/etc/httpd/conf/httpd.conf - fi - # If horizon is enabled then we need - if is_service_enabled horizon; then - HTACCESS_PATH=$DEST/horizon/.blackhole - sudo tee -a $APACHE_CONF_DIR/horizon.conf < -Options Indexes FollowSymLinks -AllowOverride all -Require all granted - -EOF - else - sudo tee -a $OVERRIDE_CONF_FILE < - Options Indexes FollowSymLinks - AllowOverride all - Require all granted - -EOF - fi - - sudo mkdir -p $HTACCESS_PATH - sudo tee $HTACCESS_PATH/.htaccess </etc/os-collect-config.conf -[DEFAULT] -command = os-refresh-config -EOF -chmod 600 /etc/os-collect-config.conf -fi - -# os-refresh-config scripts directory -# This moves to /usr/libexec/os-refresh-config in later releases -# Be sure to have this dir mounted and created by config.json and tmpfiles -orc_scripts=/opt/stack/os-config-refresh -for d in pre-configure.d configure.d migration.d post-configure.d; do - if [ ! -d $orc_scripts/$d ] ; then - install -m 0755 -o root -g root -d $orc_scripts/$d - fi -done - -# os-refresh-config script for running os-apply-config -if [ ! -f $orc_scripts/configure.d/20-os-apply-config ] ; then - cat <$orc_scripts/configure.d/20-os-apply-config -#!/bin/bash -set -ue - -exec os-apply-config -EOF -fi - -if [ ! -f $orc_scripts/configure.d/55-heat-config ] ; then - chmod 700 $orc_scripts/configure.d/20-os-apply-config - cp /opt/heat-container-agent/scripts/55-heat-config $orc_scripts/configure.d/55-heat-config - chmod 700 $orc_scripts/configure.d/55-heat-config -fi - -if [ ! -f $orc_scripts/configure.d/50-heat-config-docker-compose ] ; then - cp /opt/heat-container-agent/scripts/50-heat-config-docker-compose $orc_scripts/configure.d/50-heat-config-docker-compose - chmod 700 $orc_scripts/configure.d/50-heat-config-docker-compose -fi - -if [ ! -f /var/lib/heat-config/hooks/atomic ] && [ ! -f /var/lib/heat-config/hooks/docker-compose ] && [ ! -f /var/lib/heat-config/hooks/script ] ; then - mkdir -p /var/lib/heat-config/hooks - cp /opt/heat-container-agent/hooks/* /var/lib/heat-config/hooks/ - chmod 755 /var/lib/heat-config/hooks/atomic - chmod 755 /var/lib/heat-config/hooks/docker-compose - chmod 755 /var/lib/heat-config/hooks/script -fi diff --git a/dockerfiles/heat-container-agent/scripts/heat-config-notify b/dockerfiles/heat-container-agent/scripts/heat-config-notify deleted file mode 100755 index 9eb5c7509a..0000000000 --- a/dockerfiles/heat-container-agent/scripts/heat-config-notify +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env python -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import json -import logging -import os -import sys - -import requests - -try: - from heatclient import client as heatclient -except ImportError: - heatclient = None - -try: - from keystoneclient.v3 import client as ksclient -except ImportError: - ksclient = None - -try: - from zaqarclient.queues.v1 import client as zaqarclient -except ImportError: - zaqarclient = None - - -MAX_RESPONSE_SIZE = 950000 - - -def init_logging(): - log = logging.getLogger('heat-config-notify') - handler = logging.StreamHandler(sys.stderr) - handler.setFormatter( - logging.Formatter( - '[%(asctime)s] (%(name)s) [%(levelname)s] %(message)s')) - log.addHandler(handler) - log.setLevel('DEBUG') - return log - - -def trim_response(response, trimmed_values=None): - """Trim selected values from response. - - Makes given response smaller or the same size as MAX_RESPONSE_SIZE by - trimming given trimmed_values from response dict from the left side - (beginning). Returns trimmed and serialized JSON response itself. - """ - - trimmed_values = trimmed_values or ('deploy_stdout', 'deploy_stderr') - str_response = json.dumps(response, ensure_ascii=True) - len_total = len(str_response) - offset = MAX_RESPONSE_SIZE - len_total - if offset >= 0: - return str_response - offset = abs(offset) - for key in trimmed_values: - len_value = len(response[key]) - cut = int(round(float(len_value) / len_total * offset)) - response[key] = response[key][cut:] - str_response = json.dumps(response, ensure_ascii=True, encoding='utf-8') - return str_response - - -def main(argv=sys.argv, stdin=sys.stdin): - - log = init_logging() - usage = ('Usage:\n heat-config-notify /path/to/config.json ' - '< /path/to/signal_data.json') - - if len(argv) < 2: - log.error(usage) - return 1 - - try: - signal_data = json.load(stdin) - except ValueError: - log.warn('No valid json found on stdin') - signal_data = {} - - conf_file = argv[1] - if not os.path.exists(conf_file): - log.error('No config file %s' % conf_file) - log.error(usage) - return 1 - - c = json.load(open(conf_file)) - - iv = dict((i['name'], i['value']) for i in c['inputs']) - - if 'deploy_signal_id' in iv: - sigurl = iv.get('deploy_signal_id') - sigverb = iv.get('deploy_signal_verb', 'POST') - log.debug('Signaling to %s via %s' % (sigurl, sigverb)) - # we need to trim log content because Heat response size is limited - # by max_json_body_size = 1048576 - str_signal_data = trim_response(signal_data) - if sigverb == 'PUT': - r = requests.put(sigurl, data=str_signal_data, - headers={'content-type': 'application/json'}) - else: - r = requests.post(sigurl, data=str_signal_data, - headers={'content-type': 'application/json'}) - log.debug('Response %s ' % r) - - if 'deploy_queue_id' in iv: - queue_id = iv.get('deploy_queue_id') - log.debug('Signaling to queue %s' % (queue_id,)) - - ks = ksclient.Client( - auth_url=iv['deploy_auth_url'], - user_id=iv['deploy_user_id'], - password=iv['deploy_password'], - project_id=iv['deploy_project_id']) - endpoint = ks.service_catalog.url_for( - service_type='messaging', endpoint_type='publicURL', - region_name=iv.get('deploy_region_name')) - - conf = { - 'auth_opts': { - 'backend': 'keystone', - 'options': { - 'os_auth_token': ks.auth_token, - 'os_project_id': iv['deploy_project_id'], - } - } - } - cli = zaqarclient.Client(endpoint, conf=conf, version=1.1) - queue = cli.queue(queue_id) - r = queue.post({'body': signal_data, 'ttl': 600}) - log.debug('Response %s ' % r) - - elif 'deploy_auth_url' in iv: - ks = ksclient.Client( - auth_url=iv['deploy_auth_url'], - user_id=iv['deploy_user_id'], - password=iv['deploy_password'], - project_id=iv['deploy_project_id']) - endpoint = ks.service_catalog.url_for( - service_type='orchestration', endpoint_type='publicURL', - region_name=iv.get('deploy_region_name')) - log.debug('Signalling to %s' % endpoint) - heat = heatclient.Client( - '1', endpoint, token=ks.auth_token) - r = heat.resources.signal( - iv.get('deploy_stack_id'), - iv.get('deploy_resource_name'), - data=signal_data) - log.debug('Response %s ' % r) - - return 0 - - -if __name__ == '__main__': - sys.exit(main(sys.argv, sys.stdin)) diff --git a/dockerfiles/heat-container-agent/scripts/hooks/atomic b/dockerfiles/heat-container-agent/scripts/hooks/atomic deleted file mode 100755 index 46aac9e712..0000000000 --- a/dockerfiles/heat-container-agent/scripts/hooks/atomic +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import json -import logging -import os -import subprocess -import sys - -WORKING_DIR = os.environ.get('HEAT_ATOMIC_WORKING', - '/var/lib/heat-config/heat-config-atomic') -ATOMIC_CMD = os.environ.get('HEAT_ATOMIC_CMD', 'atomic') - - -def prepare_dir(path): - if not os.path.isdir(path): - os.makedirs(path, 0o700) - - -def build_response(deploy_stdout, deploy_stderr, deploy_status_code): - return { - 'deploy_stdout': deploy_stdout.decode('utf-8', 'replace'), - 'deploy_stderr': deploy_stderr.decode('utf-8', 'replace'), - 'deploy_status_code': deploy_status_code, - } - - -def main(argv=sys.argv): - log = logging.getLogger('heat-config') - handler = logging.StreamHandler(sys.stderr) - handler.setFormatter( - logging.Formatter( - '[%(asctime)s] (%(name)s) [%(levelname)s] %(message)s')) - log.addHandler(handler) - log.setLevel('DEBUG') - - c = json.load(sys.stdin) - - prepare_dir(WORKING_DIR) - os.chdir(WORKING_DIR) - - env = os.environ.copy() - - input_values = dict((i['name'], i['value']) for i in c['inputs']) - - stdout, stderr = {}, {} - config = c.get('config', '') - if not config: - log.debug("No 'config' input found, nothing to do.") - json.dump(build_response(stdout, stderr, 0), sys.stdout) - return - - atomic_subcmd = config.get('command', 'install') - image = config.get('image') - - if input_values.get('deploy_action') == 'DELETE': - cmd = [ - 'uninstall', - atomic_subcmd, - image - ] - subproc = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, env=env) - stdout, stderr = subproc.communicate() - - json.dump(build_response(stdout, stderr, subproc.returncode), sys.stdout) - return - - install_cmd = config.get('installcmd', '') - name = config.get('name', c.get('id')) - - cmd = [ - ATOMIC_CMD, - atomic_subcmd, - image, - '-n %s' % name - ] - - if atomic_subcmd == 'install': - cmd.extend([install_cmd]) - - privileged = config.get('privileged', False) - - if atomic_subcmd == 'run' and privileged: - cmd.extend(['--spc']) - - log.debug('Running %s' % cmd) - - subproc = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - stdout, stderr = subproc.communicate() - - log.debug(stdout) - log.debug(stderr) - - if subproc.returncode: - log.error("Error running %s. [%s]\n" % (cmd, subproc.returncode)) - else: - log.debug('Completed %s' % cmd) - - json.dump(build_response(stdout, stderr, subproc.returncode), sys.stdout) - -if __name__ == '__main__': - sys.exit(main(sys.argv)) diff --git a/dockerfiles/heat-container-agent/scripts/hooks/docker-compose b/dockerfiles/heat-container-agent/scripts/hooks/docker-compose deleted file mode 100755 index 2577507712..0000000000 --- a/dockerfiles/heat-container-agent/scripts/hooks/docker-compose +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env python -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import ast -import dpath -import json -import logging -import os -import subprocess -import sys -import yaml - - -WORKING_DIR = os.environ.get('HEAT_DOCKER_COMPOSE_WORKING', - '/var/lib/heat-config/heat-config-docker-compose') - -DOCKER_COMPOSE_CMD = os.environ.get('HEAT_DOCKER_COMPOSE_CMD', - 'docker-compose') - - -def prepare_dir(path): - if not os.path.isdir(path): - os.makedirs(path, 0o700) - - -def write_input_file(file_path, content): - prepare_dir(os.path.dirname(file_path)) - with os.fdopen(os.open( - file_path, os.O_CREAT | os.O_WRONLY, 0o600), 'w') as f: - f.write(content) - - -def build_response(deploy_stdout, deploy_stderr, deploy_status_code): - return { - 'deploy_stdout': deploy_stdout.decode('utf-8', 'replace'), - 'deploy_stderr': deploy_stderr.decode('utf-8', 'replace'), - 'deploy_status_code': deploy_status_code, - } - - -def main(argv=sys.argv): - log = logging.getLogger('heat-config') - handler = logging.StreamHandler(sys.stderr) - handler.setFormatter( - logging.Formatter( - '[%(asctime)s] (%(name)s) [%(levelname)s] %(message)s')) - log.addHandler(handler) - log.setLevel('DEBUG') - - c = json.load(sys.stdin) - - input_values = dict((i['name'], i['value']) for i in c['inputs']) - - proj = os.path.join(WORKING_DIR, c.get('name')) - prepare_dir(proj) - - stdout, stderr = {}, {} - - if input_values.get('deploy_action') == 'DELETE': - json.dump(build_response(stdout, stderr, 0), sys.stdout) - return - - config = c.get('config', '') - if not config: - log.debug("No 'config' input found, nothing to do.") - json.dump(build_response(stdout, stderr, 0), sys.stdout) - return - - # convert config to dict - if not isinstance(config, dict): - config = ast.literal_eval(json.dumps(yaml.safe_load(config))) - - os.chdir(proj) - - compose_env_files = [] - for value in dpath.util.values(config, '*/env_file'): - if isinstance(value, list): - compose_env_files.extend(value) - elif isinstance(value, basestring): - compose_env_files.extend([value]) - - input_env_files = {} - if input_values.get('env_files'): - input_env_files = dict( - (i['file_name'], i['content']) - for i in ast.literal_eval(input_values.get('env_files'))) - - for file in compose_env_files: - if file in input_env_files.keys(): - write_input_file(file, input_env_files.get(file)) - - cmd = [ - DOCKER_COMPOSE_CMD, - 'up', - '-d', - '--no-build', - ] - - log.debug('Running %s' % cmd) - - subproc = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - stdout, stderr = subproc.communicate() - - log.debug(stdout) - log.debug(stderr) - - if subproc.returncode: - log.error("Error running %s. [%s]\n" % (cmd, subproc.returncode)) - else: - log.debug('Completed %s' % cmd) - - json.dump(build_response(stdout, stderr, subproc.returncode), sys.stdout) - -if __name__ == '__main__': - sys.exit(main(sys.argv)) diff --git a/dockerfiles/heat-container-agent/scripts/hooks/script b/dockerfiles/heat-container-agent/scripts/hooks/script deleted file mode 100755 index dd24c68386..0000000000 --- a/dockerfiles/heat-container-agent/scripts/hooks/script +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env python -# -# Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. - -import json -import logging -import os -import subprocess -import sys -import threading - -WORKING_DIR = os.environ.get('HEAT_SCRIPT_WORKING', - '/var/lib/heat-config/heat-config-script') -OUTPUTS_DIR = os.environ.get('HEAT_SCRIPT_OUTPUTS', - '/var/run/heat-config/heat-config-script') -LOGS_DIR = os.environ.get('HEAT_SCRIPT_LOGS', - '/var/log/heat-config/heat-config-script') - - -def prepare_dir(path, mode=0o700): - if not os.path.isdir(path): - os.makedirs(path, mode) - - -def main(argv=sys.argv): - log = logging.getLogger('heat-config') - handler = logging.StreamHandler(sys.stderr) - handler.setFormatter( - logging.Formatter( - '[%(asctime)s] (%(name)s) [%(levelname)s] %(message)s')) - log.addHandler(handler) - log.setLevel('DEBUG') - - prepare_dir(OUTPUTS_DIR) - prepare_dir(WORKING_DIR) - prepare_dir(LOGS_DIR, mode=0o644) - os.chdir(WORKING_DIR) - - c = json.load(sys.stdin) - - env = os.environ.copy() - for input in c['inputs']: - input_name = input['name'] - value = input.get('value', '') - if isinstance(value, dict) or isinstance(value, list): - env[input_name] = json.dumps(value) - else: - env[input_name] = value - log.info('%s=%s' % (input_name, env[input_name])) - - fn = os.path.join(WORKING_DIR, c['id']) - suffix = c.get('name', '') - suffix = '-%s' % suffix if suffix else '' - lp = os.path.join(LOGS_DIR, '%s%s.log' % (c['id'], suffix)) - heat_outputs_path = os.path.join(OUTPUTS_DIR, c['id']) - env['heat_outputs_path'] = heat_outputs_path - - with os.fdopen(os.open(fn, os.O_CREAT | os.O_WRONLY, 0o700), 'w') as f: - f.write(c.get('config', '')) - - log.debug('Running %s, logging to %s' % (fn, lp)) - subproc = subprocess.Popen([fn], env=env, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - - def consumer(label, fd): - with feeder[label]: - # NOTE: workaround read-ahead bug - for line in iter(feeder[label].readline, b''): - line = line.decode('utf-8', 'replace') - logger[label](line.strip()) - deploy[label] += line - fd.write(line) - - feeder = dict(stdout=subproc.stdout, stderr=subproc.stderr) - deploy = dict(stdout='', stderr='') - logger = dict(stdout=lambda line: log.info(line), - stderr=lambda line: log.debug(line)) - with open(lp, 'w') as fd: - threads = [] - for lb in ['stdout', 'stderr']: - t = threading.Thread(target=consumer, args=[lb, fd]) - threads.append(t) - t.start() - deploy_status_code = subproc.wait() - for t in threads: - t.join() - - if deploy_status_code: - log.error("Error running %s. [%s]\n" % (fn, deploy_status_code)) - else: - log.info('Completed %s' % fn) - - response = {} - - for output in c.get('outputs') or []: - output_name = output['name'] - try: - with open('%s.%s' % (heat_outputs_path, output_name)) as out: - response[output_name] = out.read() - except IOError: - pass - - response.update({ - 'deploy_stdout': deploy["stdout"], - 'deploy_stderr': deploy["stderr"], - 'deploy_status_code': deploy_status_code, - }) - - json.dump(response, sys.stdout) - -if __name__ == '__main__': - sys.exit(main(sys.argv)) diff --git a/dockerfiles/heat-container-agent/scripts/write-os-apply-config-templates.sh b/dockerfiles/heat-container-agent/scripts/write-os-apply-config-templates.sh deleted file mode 100644 index 7fa4d7fc2f..0000000000 --- a/dockerfiles/heat-container-agent/scripts/write-os-apply-config-templates.sh +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash -set -eux - -# os-apply-config templates directory -oac_templates=/usr/libexec/os-apply-config/templates -mkdir -p $oac_templates/etc - - -# template for building os-collect-config.conf for polling heat -if [ ! -f $oac_templates/etc/os-collect-config.conf ] ; then - cat <$oac_templates/etc/os-collect-config.conf -[DEFAULT] -{{^os-collect-config.command}} -command = os-refresh-config -{{/os-collect-config.command}} -{{#os-collect-config}} -{{#command}} -command = {{command}} -{{/command}} -{{#polling_interval}} -polling_interval = {{polling_interval}} -{{/polling_interval}} -{{#cachedir}} -cachedir = {{cachedir}} -{{/cachedir}} -{{#collectors}} -collectors = {{.}} -{{/collectors}} - -{{#cfn}} -[cfn] -{{#metadata_url}} -metadata_url = {{metadata_url}} -{{/metadata_url}} -stack_name = {{stack_name}} -secret_access_key = {{secret_access_key}} -access_key_id = {{access_key_id}} -path = {{path}} -{{/cfn}} - -{{#heat}} -[heat] -auth_url = {{auth_url}} -user_id = {{user_id}} -password = {{password}} -project_id = {{project_id}} -stack_id = {{stack_id}} -resource_name = {{resource_name}} -region_name = {{region_name}} -{{/heat}} - -{{#zaqar}} -[zaqar] -auth_url = {{auth_url}} -user_id = {{user_id}} -password = {{password}} -project_id = {{project_id}} -queue_id = {{queue_id}} -region_name = {{region_name}} -{{/zaqar}} - -{{#request}} -[request] -{{#metadata_url}} -metadata_url = {{metadata_url}} -{{/metadata_url}} -{{/request}} - -{{/os-collect-config}} -EOF -fi - -mkdir -p $oac_templates/var/run/heat-config - -# template for writing heat deployments data to a file -if [ ! -f $oac_templates/var/run/heat-config/heat-config ] ; then - echo "{{deployments}}" > $oac_templates/var/run/heat-config/heat-config -fi diff --git a/dockerfiles/heat-container-agent/service.template b/dockerfiles/heat-container-agent/service.template deleted file mode 100644 index f86316b895..0000000000 --- a/dockerfiles/heat-container-agent/service.template +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Heat Container Agent system image - -[Service] -ExecStart=$EXEC_START -ExecStop=$EXEC_STOP -WorkingDirectory=$DESTDIR -Restart=always -StartLimitInterval=0 -RestartSec=10 - -[Install] -WantedBy=multi-user.target diff --git a/dockerfiles/heat-container-agent/tmpfiles.template b/dockerfiles/heat-container-agent/tmpfiles.template deleted file mode 100644 index a41e35caa8..0000000000 --- a/dockerfiles/heat-container-agent/tmpfiles.template +++ /dev/null @@ -1,10 +0,0 @@ -d /var/lib/heat-container-agent - - - - - -Z /var/lib/heat-container-agent - - - - - -d /var/run/heat-config - - - - - -Z /var/run/heat-config - - - - - -d /var/run/os-collect-config - - - - - -Z /var/run/os-collect-config - - - - - -d /opt/stack/os-config-refresh - - - - - -Z /opt/stack/os-config-refresh - - - - - -d /srv/magnum - - - - - -Z /srv/magnum - - - - - diff --git a/dockerfiles/helm-client/Dockerfile b/dockerfiles/helm-client/Dockerfile deleted file mode 100644 index 2f5c4402ee..0000000000 --- a/dockerfiles/helm-client/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -ARG HELM_VERSION=v3.2.0 -FROM debian:buster-slim - -ARG HELM_VERSION - -RUN apt-get update \ - && apt-get install -y \ - curl \ - bash \ - && curl -o helm.tar.gz https://get.helm.sh/helm-${HELM_VERSION}-linux-amd64.tar.gz \ - && mkdir -p helm \ - && tar zxvf helm.tar.gz -C helm \ - && cp helm/linux-amd64/helm /usr/local/bin \ - && chmod +x /usr/local/bin/helm \ - && rm -rf helm* diff --git a/dockerfiles/kubernetes-apiserver/Dockerfile b/dockerfiles/kubernetes-apiserver/Dockerfile deleted file mode 100644 index 6acdaff6cd..0000000000 --- a/dockerfiles/kubernetes-apiserver/Dockerfile +++ /dev/null @@ -1,42 +0,0 @@ -ARG KUBE_VERSION=v1.13.0 - -FROM fedora:rawhide -ARG KUBE_VERSION -ARG ADD_KUBE_ALLOW_PRIV=false -RUN curl -o /root/kubectl -O https://storage.googleapis.com/kubernetes-release/release/${KUBE_VERSION}/bin/linux/amd64/kubectl - -FROM gcr.io/google-containers/kube-apiserver-amd64:${KUBE_VERSION} - -ENV container=docker - -ENV NAME=kubernetes-apiserver VERSION=0.1 RELEASE=8 ARCH=x86_64 -LABEL bzcomponent="$NAME" \ - name="$FGC/$NAME" \ - version="$VERSION" \ - release="$RELEASE.$DISTTAG" \ - architecture="$ARCH" \ - atomic.type='system' \ - maintainer="Jason Brooks " - -COPY launch.sh /usr/bin/kube-apiserver-docker.sh - -COPY service.template config.json.template /exports/ - -# copy kubectl into the host, another way to do this would be: -# -# echo "runc exec -- kube-apiserver /usr/bin/kubectl \$@" \ -# > /exports/hostfs/usr/local/bin/kubectl && chmod +x \ -# /exports/hostfs/usr/local/bin/kubectl -# -# however, this would require hard-coding the container name - -COPY apiserver config /etc/kubernetes/ -RUN [ "$ADD_KUBE_ALLOW_PRIV" = "true" ] && echo "KUBE_ALLOW_PRIV=\"--allow-privileged=false\"" >> /etc/kubernetes/config || true -RUN mkdir -p /exports/hostfs/usr/local/bin/ -COPY --from=0 /root/kubectl /exports/hostfs/usr/local/bin/ -RUN chmod +x /exports/hostfs/usr/local/bin/kubectl && \ - mkdir -p /exports/hostfs/etc/kubernetes && \ - cp /etc/kubernetes/config /exports/hostfs/etc/kubernetes/ && \ - cp /etc/kubernetes/apiserver /exports/hostfs/etc/kubernetes/ - -ENTRYPOINT ["/usr/bin/kube-apiserver-docker.sh"] diff --git a/dockerfiles/kubernetes-apiserver/apiserver b/dockerfiles/kubernetes-apiserver/apiserver deleted file mode 100644 index 8d2a0062f4..0000000000 --- a/dockerfiles/kubernetes-apiserver/apiserver +++ /dev/null @@ -1,26 +0,0 @@ -### -# kubernetes system config -# -# The following values are used to configure the kube-apiserver -# - -# The address on the local server to listen to. -KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1" - -# The port on the local server to listen on. -# KUBE_API_PORT="--port=8080" - -# Port minions listen on -# KUBELET_PORT="--kubelet-port=10250" - -# Comma separated list of nodes in the etcd cluster -KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379,http://127.0.0.1:4001" - -# Address range to use for services -KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16" - -# default admission control policies -KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota" - -# Add your own! -KUBE_API_ARGS="" diff --git a/dockerfiles/kubernetes-apiserver/config b/dockerfiles/kubernetes-apiserver/config deleted file mode 100644 index d6226c7dce..0000000000 --- a/dockerfiles/kubernetes-apiserver/config +++ /dev/null @@ -1,19 +0,0 @@ -### -# kubernetes system config -# -# The following values are used to configure various aspects of all -# kubernetes services, including -# -# kube-apiserver.service -# kube-controller-manager.service -# kube-scheduler.service -# kubelet.service -# kube-proxy.service -# logging to stderr means we get it in the systemd journal -KUBE_LOGTOSTDERR="--logtostderr=true" - -# journal message level, 0 is debug -KUBE_LOG_LEVEL="--v=0" - -# How the controller-manager, scheduler, and proxy find the apiserver -KUBE_MASTER="--master=http://127.0.0.1:8080" diff --git a/dockerfiles/kubernetes-apiserver/config.json.template b/dockerfiles/kubernetes-apiserver/config.json.template deleted file mode 100644 index c08b958572..0000000000 --- a/dockerfiles/kubernetes-apiserver/config.json.template +++ /dev/null @@ -1,192 +0,0 @@ -{ - "ociVersion": "1.0.0", - "platform": { - "os": "linux", - "arch": "amd64" - }, - "process": { - "terminal": false, - "user": { - "uid": 996, - "gid": 994 - }, - "args": [ - "/usr/bin/kube-apiserver-docker.sh" - ], - "env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "TERM=xterm" - ], - "cwd": "/", - "capabilities": { - "bounding": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "permitted": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "inheritable": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "effective": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "ambient": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ] - }, - "rlimits": [ - { - "type": "RLIMIT_NOFILE", - "hard": 131072, - "soft": 131072 - } - ] - }, - "root": { - "path": "rootfs", - "readonly": true - }, - "mounts": [ - { - "destination": "/proc", - "type": "proc", - "source": "proc" - }, - { - "destination": "/dev", - "type": "tmpfs", - "source": "tmpfs", - "options": [ - "nosuid", - "strictatime", - "mode=755", - "size=65536k" - ] - }, - { - "destination": "/dev/pts", - "type": "devpts", - "source": "devpts", - "options": [ - "nosuid", - "noexec", - "newinstance", - "ptmxmode=0666", - "mode=0620", - "gid=5" - ] - }, - { - "destination": "/dev/shm", - "type": "tmpfs", - "source": "shm", - "options": [ - "nosuid", - "noexec", - "nodev", - "mode=1777", - "size=65536k" - ] - }, - { - "destination": "/dev/mqueue", - "type": "mqueue", - "source": "mqueue", - "options": [ - "nosuid", - "noexec", - "nodev" - ] - }, - { - "destination": "/sys", - "type": "sysfs", - "source": "sysfs", - "options": [ - "nosuid", - "noexec", - "nodev" - ] - }, - { - "destination": "/sys/fs/cgroup", - "type": "cgroup", - "source": "cgroup", - "options": [ - "nosuid", - "noexec", - "nodev", - "relatime", - "ro" - ] - }, - { - "type": "bind", - "source": "/etc/kubernetes", - "destination": "/etc/kubernetes", - "options": [ - "rbind", - "ro", - "rprivate" - ] - }, - { - "destination": "/etc/resolv.conf", - "type": "bind", - "source": "/etc/resolv.conf", - "options": [ - "ro", - "rbind", - "rprivate" - ] - }, - { - "destination": "/var/run/kubernetes", - "type": "bind", - "source": "/var/run/kubernetes", - "options": [ - "rw", - "rbind" - ] - } - ], - "linux": { - "resources": { - "devices": [ - { - "allow": false, - "access": "rwm" - } - ] - }, - "namespaces": [ - { - "type": "pid" - }, - { - "type": "ipc" - }, - { - "type": "mount" - } - ], - "devices": null, - "apparmorProfile": "" - } -} diff --git a/dockerfiles/kubernetes-apiserver/launch.sh b/dockerfiles/kubernetes-apiserver/launch.sh deleted file mode 100755 index 5bcffc13b2..0000000000 --- a/dockerfiles/kubernetes-apiserver/launch.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. /etc/kubernetes/apiserver -. /etc/kubernetes/config - -ARGS="$@ $KUBE_LOGTOSTDERR $KUBE_LOG_LEVEL $KUBE_ETCD_SERVERS $KUBE_API_ADDRESS $KUBE_API_PORT $KUBELET_PORT $KUBE_ALLOW_PRIV $KUBE_SERVICE_ADDRESSES $KUBE_ADMISSION_CONTROL $KUBE_API_ARGS" - -ARGS=$(echo $ARGS | sed s#--tls-ca-file=/etc/kubernetes/certs/ca.crt##) -# KubeletPluginsWatcher=true, -ARGS=$(echo $ARGS | sed s/KubeletPluginsWatcher=true,//) - -exec /usr/local/bin/kube-apiserver $ARGS diff --git a/dockerfiles/kubernetes-apiserver/service.template b/dockerfiles/kubernetes-apiserver/service.template deleted file mode 100644 index 3f5afd9f38..0000000000 --- a/dockerfiles/kubernetes-apiserver/service.template +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=kubernetes-apiserver -After=network-online.target - -[Service] -ExecStart=$EXEC_START -ExecStop=$EXEC_STOP -WorkingDirectory=$DESTDIR -Restart=always -StartLimitInterval=0 -RestartSec=10 - -[Install] -WantedBy=multi-user.target - diff --git a/dockerfiles/kubernetes-apiserver/sources b/dockerfiles/kubernetes-apiserver/sources deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/dockerfiles/kubernetes-controller-manager/Dockerfile b/dockerfiles/kubernetes-controller-manager/Dockerfile deleted file mode 100644 index bc48e1e42b..0000000000 --- a/dockerfiles/kubernetes-controller-manager/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -ARG KUBE_VERSION=v1.13.0 -FROM gcr.io/google-containers/kube-controller-manager-amd64:${KUBE_VERSION} -ARG ADD_KUBE_ALLOW_PRIV=false - -ENV container=docker - -ENV NAME=kubernetes-controller-manager VERSION=0.1 RELEASE=8 ARCH=x86_64 -LABEL bzcomponent="$NAME" \ - name="$FGC/$NAME" \ - version="$VERSION" \ - release="$RELEASE.$DISTTAG" \ - architecture="$ARCH" \ - atomic.type='system' \ - maintainer="Jason Brooks " - -COPY launch.sh /usr/bin/kube-controller-manager-docker.sh - -COPY service.template config.json.template /exports/ - -COPY controller-manager config /etc/kubernetes/ -RUN [ "$ADD_KUBE_ALLOW_PRIV" = "true" ] && echo "KUBE_ALLOW_PRIV=\"--allow-privileged=false\"" >> /etc/kubernetes/config || true -RUN mkdir -p /exports/hostfs/etc/kubernetes && \ - cp /etc/kubernetes/config /exports/hostfs/etc/kubernetes/ && \ - cp /etc/kubernetes/controller-manager /exports/hostfs/etc/kubernetes/ - -ENTRYPOINT ["/usr/bin/kube-controller-manager-docker.sh"] diff --git a/dockerfiles/kubernetes-controller-manager/config b/dockerfiles/kubernetes-controller-manager/config deleted file mode 100644 index d6226c7dce..0000000000 --- a/dockerfiles/kubernetes-controller-manager/config +++ /dev/null @@ -1,19 +0,0 @@ -### -# kubernetes system config -# -# The following values are used to configure various aspects of all -# kubernetes services, including -# -# kube-apiserver.service -# kube-controller-manager.service -# kube-scheduler.service -# kubelet.service -# kube-proxy.service -# logging to stderr means we get it in the systemd journal -KUBE_LOGTOSTDERR="--logtostderr=true" - -# journal message level, 0 is debug -KUBE_LOG_LEVEL="--v=0" - -# How the controller-manager, scheduler, and proxy find the apiserver -KUBE_MASTER="--master=http://127.0.0.1:8080" diff --git a/dockerfiles/kubernetes-controller-manager/config.json.template b/dockerfiles/kubernetes-controller-manager/config.json.template deleted file mode 100644 index 21f6eed080..0000000000 --- a/dockerfiles/kubernetes-controller-manager/config.json.template +++ /dev/null @@ -1,183 +0,0 @@ -{ - "ociVersion": "1.0.0", - "platform": { - "os": "linux", - "arch": "amd64" - }, - "process": { - "terminal": false, - "user": { - "uid": 996, - "gid": 994 - }, - "args": [ - "/usr/bin/kube-controller-manager-docker.sh" - ], - "env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "TERM=xterm" - ], - "cwd": "/", - "capabilities": { - "bounding": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "permitted": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "inheritable": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "effective": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "ambient": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ] - }, - "rlimits": [ - { - "type": "RLIMIT_NOFILE", - "hard": 131072, - "soft": 131072 - } - ] - }, - "root": { - "path": "rootfs", - "readonly": true - }, - "mounts": [ - { - "destination": "/proc", - "type": "proc", - "source": "proc" - }, - { - "destination": "/dev", - "type": "tmpfs", - "source": "tmpfs", - "options": [ - "nosuid", - "strictatime", - "mode=755", - "size=65536k" - ] - }, - { - "destination": "/dev/pts", - "type": "devpts", - "source": "devpts", - "options": [ - "nosuid", - "noexec", - "newinstance", - "ptmxmode=0666", - "mode=0620", - "gid=5" - ] - }, - { - "destination": "/dev/shm", - "type": "tmpfs", - "source": "shm", - "options": [ - "nosuid", - "noexec", - "nodev", - "mode=1777", - "size=65536k" - ] - }, - { - "destination": "/dev/mqueue", - "type": "mqueue", - "source": "mqueue", - "options": [ - "nosuid", - "noexec", - "nodev" - ] - }, - { - "destination": "/sys", - "type": "sysfs", - "source": "sysfs", - "options": [ - "nosuid", - "noexec", - "nodev" - ] - }, - { - "destination": "/sys/fs/cgroup", - "type": "cgroup", - "source": "cgroup", - "options": [ - "nosuid", - "noexec", - "nodev", - "relatime", - "ro" - ] - }, - { - "type": "bind", - "source": "/etc/kubernetes", - "destination": "/etc/kubernetes", - "options": [ - "rbind", - "ro", - "rprivate" - ] - }, - { - "destination": "/etc/resolv.conf", - "type": "bind", - "source": "/etc/resolv.conf", - "options": [ - "ro", - "rbind", - "rprivate" - ] - } - ], - "linux": { - "resources": { - "devices": [ - { - "allow": false, - "access": "rwm" - } - ] - }, - "namespaces": [ - { - "type": "pid" - }, - { - "type": "ipc" - }, - { - "type": "mount" - } - ], - "devices": null, - "apparmorProfile": "" - } -} diff --git a/dockerfiles/kubernetes-controller-manager/controller-manager b/dockerfiles/kubernetes-controller-manager/controller-manager deleted file mode 100644 index 1a9e3f204c..0000000000 --- a/dockerfiles/kubernetes-controller-manager/controller-manager +++ /dev/null @@ -1,7 +0,0 @@ -### -# The following values are used to configure the kubernetes controller-manager - -# defaults from config and apiserver should be adequate - -# Add your own! -KUBE_CONTROLLER_MANAGER_ARGS="" diff --git a/dockerfiles/kubernetes-controller-manager/launch.sh b/dockerfiles/kubernetes-controller-manager/launch.sh deleted file mode 100755 index 4d42aa2897..0000000000 --- a/dockerfiles/kubernetes-controller-manager/launch.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -. /etc/kubernetes/controller-manager -. /etc/kubernetes/config - -ARGS="$@ $KUBE_LOGTOSTDERR $KUBE_LOG_LEVEL $KUBE_MASTER $KUBE_CONTROLLER_MANAGER_ARGS" - -ARGS="${ARGS} --secure-port=0" -# KubeletPluginsWatcher=true, -ARGS=$(echo $ARGS | sed s/KubeletPluginsWatcher=true,//) - -exec /usr/local/bin/kube-controller-manager $ARGS diff --git a/dockerfiles/kubernetes-controller-manager/service.template b/dockerfiles/kubernetes-controller-manager/service.template deleted file mode 100644 index eb8cd15ce7..0000000000 --- a/dockerfiles/kubernetes-controller-manager/service.template +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=kubernetes-controller-manager - -[Service] -ExecStart=$EXEC_START -ExecStop=$EXEC_STOP -WorkingDirectory=$DESTDIR -Restart=always -StartLimitInterval=0 -RestartSec=10 - -[Install] -WantedBy=multi-user.target - diff --git a/dockerfiles/kubernetes-controller-manager/sources b/dockerfiles/kubernetes-controller-manager/sources deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/dockerfiles/kubernetes-kubelet/Dockerfile b/dockerfiles/kubernetes-kubelet/Dockerfile deleted file mode 100644 index 08770d76f9..0000000000 --- a/dockerfiles/kubernetes-kubelet/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -ARG KUBE_VERSION=v1.13.0 -FROM gcr.io/google-containers/hyperkube-amd64:${KUBE_VERSION} -ARG ADD_KUBE_ALLOW_PRIV=false - -ENV container=docker - -ENV NAME=kubernetes-kubelet VERSION=0 RELEASE=8 ARCH=x86_64 -LABEL bzcomponent="$NAME" \ - name="$FGC/$NAME" \ - version="$VERSION" \ - release="$RELEASE.$DISTTAG" \ - architecture="$ARCH" \ - atomic.type='system' \ - maintainer="Jason Brooks " - -COPY launch.sh /usr/bin/kubelet-docker.sh -COPY kubelet config /etc/kubernetes/ -RUN [ "$ADD_KUBE_ALLOW_PRIV" = "true" ] && echo "KUBE_ALLOW_PRIV=\"--allow-privileged=false\"" >> /etc/kubernetes/config || true - -COPY manifest.json tmpfiles.template service.template config.json.template /exports/ - -RUN mkdir -p /exports/hostfs/etc/cni/net.d && \ - mkdir -p /exports/hostfs/etc/kubernetes && \ - cp /etc/kubernetes/{config,kubelet} /exports/hostfs/etc/kubernetes - -ENTRYPOINT ["/usr/bin/kubelet-docker.sh"] diff --git a/dockerfiles/kubernetes-kubelet/config b/dockerfiles/kubernetes-kubelet/config deleted file mode 100644 index d6226c7dce..0000000000 --- a/dockerfiles/kubernetes-kubelet/config +++ /dev/null @@ -1,19 +0,0 @@ -### -# kubernetes system config -# -# The following values are used to configure various aspects of all -# kubernetes services, including -# -# kube-apiserver.service -# kube-controller-manager.service -# kube-scheduler.service -# kubelet.service -# kube-proxy.service -# logging to stderr means we get it in the systemd journal -KUBE_LOGTOSTDERR="--logtostderr=true" - -# journal message level, 0 is debug -KUBE_LOG_LEVEL="--v=0" - -# How the controller-manager, scheduler, and proxy find the apiserver -KUBE_MASTER="--master=http://127.0.0.1:8080" diff --git a/dockerfiles/kubernetes-kubelet/config.json.template b/dockerfiles/kubernetes-kubelet/config.json.template deleted file mode 100644 index 1b9e3ca4d0..0000000000 --- a/dockerfiles/kubernetes-kubelet/config.json.template +++ /dev/null @@ -1,425 +0,0 @@ -{ - "ociVersion": "1.0.0", - "platform": { - "os": "linux", - "arch": "amd64" - }, - "process": { - "terminal": false, - "user": {}, - "args": [ - "/usr/bin/kubelet-docker.sh" - ], - "env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "TERM=xterm" - ], - "noNewPrivileges": false, - "cwd": "/", - "capabilities": { - "bounding": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ], - "permitted": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ], - "inheritable": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ], - "effective": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ], - "ambient": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ] - }, - "rlimits": [ - { - "type": "RLIMIT_NOFILE", - "hard": 131072, - "soft": 131072 - } - ] - }, - "root": { - "path": "rootfs", - "readonly": true - }, - "mounts": [ - { - "destination": "/proc", - "type": "proc", - "source": "proc" - }, - { - "source": "/dev", - "destination": "/dev", - "type": "bind", - "options": [ - "rbind", - "rslave" - ] - }, - { - "destination": "/dev/pts", - "type": "devpts", - "source": "devpts", - "options": [ - "nosuid", - "noexec", - "newinstance", - "ptmxmode=0666", - "mode=0620", - "gid=5" - ] - }, - { - "destination": "/dev/shm", - "type": "tmpfs", - "source": "shm", - "options": [ - "nosuid", - "noexec", - "nodev", - "mode=1777", - "size=65536k" - ] - }, - { - "type": "bind", - "source": "/sys", - "destination": "/sys", - "options": [ - "rbind", - "rw" - ] - }, - { - "type": "bind", - "source": "/etc/cni/net.d", - "destination": "/etc/cni/net.d", - "options": [ - "bind", - "slave", - "rw", - "mode=777" - ] - }, - { - "type": "bind", - "source": "/etc/kubernetes", - "destination": "/etc/kubernetes", - "options": [ - "rbind", - "ro", - "rprivate" - ] - }, - { - "type": "bind", - "source": "/etc/localtime", - "destination": "/etc/localtime", - "options": [ - "rbind", - "ro" - ] - }, - { - "type": "bind", - "source": "/etc/hosts", - "destination": "/etc/hosts", - "options": [ - "rbind", - "ro" - ] - }, - { - "type": "bind", - "source": "/etc/pki", - "destination": "/etc/pki", - "options": [ - "bind", - "ro" - ] - }, - { - "destination": "/etc/resolv.conf", - "type": "bind", - "source": "/etc/resolv.conf", - "options": [ - "ro", - "bind" - ] - }, - { - "type": "bind", - "source": "/", - "destination": "/rootfs", - "options": [ - "rbind", - "rslave", - "ro" - ] - }, - { - "type": "bind", - "source": "/var/run/secrets", - "destination": "/var/run/secrets", - "options": [ - "rbind", - "rw", - "mode=755" - ] - }, - { - "type": "bind", - "source": "${RUN_DIRECTORY}", - "destination": "/run", - "options": [ - "rbind", - "rw", - "mode=755" - ] - }, - { - "type": "bind", - "source": "${STATE_DIRECTORY}", - "destination": "/var/lib", - "options": [ - "bind", - "rw", - "rshared", - "mode=777" - ] - }, - { - "type": "bind", - "source": "${STATE_DIRECTORY}/kubelet", - "destination": "/var/lib/kubelet", - "options": [ - "rbind", - "rshared", - "rw", - "mode=777" - ] - }, - { - "type": "bind", - "source": "/var/log", - "destination": "/var/log", - "options": [ - "bind", - "rw", - "mode=755" - ] - }, - { - "destination": "/tmp", - "type": "tmpfs", - "source": "tmpfs", - "options": [ - "mode=755", - "size=65536k" - ] - } - $ADDTL_MOUNTS - ], - "linux": { - "rootfsPropagation": "rslave", - "resources": { - "devices": [ - { - "allow": true, - "access": "rwm" - } - ] - }, - "namespaces": [ - { - "type": "mount" - } - ], - "devices": null, - "apparmorProfile": "" - } -} diff --git a/dockerfiles/kubernetes-kubelet/kubelet b/dockerfiles/kubernetes-kubelet/kubelet deleted file mode 100644 index a623673960..0000000000 --- a/dockerfiles/kubernetes-kubelet/kubelet +++ /dev/null @@ -1,17 +0,0 @@ -### -# kubernetes kubelet (minion) config - -# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces) -KUBELET_ADDRESS="--address=127.0.0.1" - -# The port for the info server to serve on -# KUBELET_PORT="--port=10250" - -# You may leave this blank to use the actual hostname -KUBELET_HOSTNAME="--hostname-override=127.0.0.1" - -# Edit the kubelet.kubeconfig to have correct cluster server address -KUBELET_KUBECONFIG=/etc/kubernetes/kubelet.kubeconfig - -# Add your own! -KUBELET_ARGS="--cgroup-driver=systemd --fail-swap-on=false" diff --git a/dockerfiles/kubernetes-kubelet/launch.sh b/dockerfiles/kubernetes-kubelet/launch.sh deleted file mode 100755 index eee35660e8..0000000000 --- a/dockerfiles/kubernetes-kubelet/launch.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -. /etc/kubernetes/kubelet -. /etc/kubernetes/config - -TEMP_KUBELET_ARGS='--cgroups-per-qos=false --enforce-node-allocatable=' - -ARGS="$@ $TEMP_KUBELET_ARGS $KUBE_LOGTOSTDERR $KUBE_LOG_LEVEL $KUBELET_API_SERVER $KUBELET_ADDRESS $KUBELET_PORT $KUBELET_HOSTNAME $KUBE_ALLOW_PRIV $KUBELET_ARGS" - -ARGS=$(echo $ARGS | sed s/--cadvisor-port=0//) -ARGS=$(echo $ARGS | sed s/--require-kubeconfig//) -ARGS=$(echo $ARGS | sed s/node-role/node/) - -exec /hyperkube kubelet $ARGS --containerized diff --git a/dockerfiles/kubernetes-kubelet/manifest.json b/dockerfiles/kubernetes-kubelet/manifest.json deleted file mode 100644 index 1c8f6f4008..0000000000 --- a/dockerfiles/kubernetes-kubelet/manifest.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "version": "1.0", - "defaultValues": { - "ADDTL_MOUNTS": "" - } -} diff --git a/dockerfiles/kubernetes-kubelet/service.template b/dockerfiles/kubernetes-kubelet/service.template deleted file mode 100644 index fb74df27af..0000000000 --- a/dockerfiles/kubernetes-kubelet/service.template +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=kubernetes-kubelet -After=docker.service - -[Service] -ExecStart=$EXEC_START -ExecStop=$EXEC_STOP -WorkingDirectory=$DESTDIR -Restart=always -StartLimitInterval=0 -RestartSec=10 - -[Install] -WantedBy=multi-user.target - diff --git a/dockerfiles/kubernetes-kubelet/sources b/dockerfiles/kubernetes-kubelet/sources deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/dockerfiles/kubernetes-kubelet/tmpfiles.template b/dockerfiles/kubernetes-kubelet/tmpfiles.template deleted file mode 100644 index b15bfa8e15..0000000000 --- a/dockerfiles/kubernetes-kubelet/tmpfiles.template +++ /dev/null @@ -1,3 +0,0 @@ -d ${STATE_DIRECTORY}/kubelet - - - - - -d /var/lib/cni - - - - - -d /var/run/secrets - - - - - diff --git a/dockerfiles/kubernetes-proxy/Dockerfile b/dockerfiles/kubernetes-proxy/Dockerfile deleted file mode 100644 index 8c5f17a01e..0000000000 --- a/dockerfiles/kubernetes-proxy/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -ARG KUBE_VERSION=v1.13.0 -FROM gcr.io/google-containers/kube-proxy-amd64:${KUBE_VERSION} -ARG ADD_KUBE_ALLOW_PRIV=false -ENV container=docker - -ENV NAME=kubernetes-proxy VERSION=0 RELEASE=8 ARCH=x86_64 -LABEL bzcomponent="$NAME" \ - name="$FGC/$NAME" \ - version="$VERSION" \ - release="$RELEASE.$DISTTAG" \ - architecture="$ARCH" \ - atomic.type='system' \ - maintainer="Jason Brooks " - -COPY launch.sh /usr/bin/kube-proxy-docker.sh - -COPY service.template config.json.template /exports/ - -COPY proxy config /etc/kubernetes/ -RUN [ "$ADD_KUBE_ALLOW_PRIV" = "true" ] && echo "KUBE_ALLOW_PRIV=\"--allow-privileged=false\"" >> /etc/kubernetes/config || true - -RUN mkdir -p /exports/hostfs/etc/kubernetes && \ - cp /etc/kubernetes/config /exports/hostfs/etc/kubernetes/ && \ - cp /etc/kubernetes/proxy /exports/hostfs/etc/kubernetes/ - -ENTRYPOINT ["/usr/bin/kube-proxy-docker.sh"] - diff --git a/dockerfiles/kubernetes-proxy/config b/dockerfiles/kubernetes-proxy/config deleted file mode 100644 index d6226c7dce..0000000000 --- a/dockerfiles/kubernetes-proxy/config +++ /dev/null @@ -1,19 +0,0 @@ -### -# kubernetes system config -# -# The following values are used to configure various aspects of all -# kubernetes services, including -# -# kube-apiserver.service -# kube-controller-manager.service -# kube-scheduler.service -# kubelet.service -# kube-proxy.service -# logging to stderr means we get it in the systemd journal -KUBE_LOGTOSTDERR="--logtostderr=true" - -# journal message level, 0 is debug -KUBE_LOG_LEVEL="--v=0" - -# How the controller-manager, scheduler, and proxy find the apiserver -KUBE_MASTER="--master=http://127.0.0.1:8080" diff --git a/dockerfiles/kubernetes-proxy/config.json.template b/dockerfiles/kubernetes-proxy/config.json.template deleted file mode 100644 index e8f7d83d59..0000000000 --- a/dockerfiles/kubernetes-proxy/config.json.template +++ /dev/null @@ -1,358 +0,0 @@ -{ - "ociVersion": "1.0.0", - "platform": { - "os": "linux", - "arch": "amd64" - }, - "process": { - "terminal": false, - "user": { - "uid": 0, - "gid": 0 - }, - "args": [ - "/usr/bin/kube-proxy-docker.sh" - ], - "env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "TERM=xterm" - ], - "cwd": "/", - "capabilities": { - "bounding": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ], - "permitted": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ], - "inheritable": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ], - "effective": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ], - "ambient": [ - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_DAC_READ_SEARCH", - "CAP_FOWNER", - "CAP_FSETID", - "CAP_KILL", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETPCAP", - "CAP_LINUX_IMMUTABLE", - "CAP_NET_BIND_SERVICE", - "CAP_NET_BROADCAST", - "CAP_NET_ADMIN", - "CAP_NET_RAW", - "CAP_IPC_LOCK", - "CAP_IPC_OWNER", - "CAP_SYS_MODULE", - "CAP_SYS_RAWIO", - "CAP_SYS_CHROOT", - "CAP_SYS_PTRACE", - "CAP_SYS_PACCT", - "CAP_SYS_ADMIN", - "CAP_SYS_BOOT", - "CAP_SYS_NICE", - "CAP_SYS_RESOURCE", - "CAP_SYS_TIME", - "CAP_SYS_TTY_CONFIG", - "CAP_MKNOD", - "CAP_LEASE", - "CAP_AUDIT_WRITE", - "CAP_AUDIT_CONTROL", - "CAP_SETFCAP", - "CAP_MAC_OVERRIDE", - "CAP_MAC_ADMIN", - "CAP_SYSLOG", - "CAP_WAKE_ALARM", - "CAP_BLOCK_SUSPEND" - ] - }, - "rlimits": [ - { - "type": "RLIMIT_NOFILE", - "hard": 131072, - "soft": 131072 - } - ] - }, - "root": { - "path": "rootfs", - "readonly": true - }, - "mounts": [ - { - "destination": "/proc", - "type": "proc", - "source": "proc" - }, - { - "destination": "/dev", - "type": "tmpfs", - "source": "tmpfs", - "options": [ - "nosuid", - "strictatime", - "mode=755", - "size=65536k" - ] - }, - { - "destination": "/dev/pts", - "type": "devpts", - "source": "devpts", - "options": [ - "nosuid", - "noexec", - "newinstance", - "ptmxmode=0666", - "mode=0620", - "gid=5" - ] - }, - { - "destination": "/dev/shm", - "type": "tmpfs", - "source": "shm", - "options": [ - "nosuid", - "noexec", - "nodev", - "mode=1777", - "size=65536k" - ] - }, - { - "destination": "/dev/mqueue", - "type": "mqueue", - "source": "mqueue", - "options": [ - "nosuid", - "noexec", - "nodev" - ] - }, - { - "destination": "/sys", - "type": "sysfs", - "source": "sysfs", - "options": [ - "nosuid", - "noexec", - "nodev" - ] - }, - { - "destination": "/sys/fs/cgroup", - "type": "cgroup", - "source": "cgroup", - "options": [ - "nosuid", - "noexec", - "nodev", - "relatime", - "ro" - ] - }, - { - "type": "bind", - "source": "/etc/kubernetes", - "destination": "/etc/kubernetes", - "options": [ - "rbind", - "ro", - "rprivate" - ] - }, - { - "destination": "/etc/resolv.conf", - "type": "bind", - "source": "/etc/resolv.conf", - "options": [ - "ro", - "rbind", - "rprivate" - ] - }, - { - "type": "bind", - "source": "/run", - "destination": "/run", - "options": [ - "rbind", - "rw", - "mode=755" - ] - } - ], - "linux": { - "resources": { - "devices": [ - { - "allow": false, - "access": "rwm" - } - ] - }, - "namespaces": [ - { - "type": "pid" - }, - { - "type": "ipc" - }, - { - "type": "mount" - } - ], - "devices": null, - "apparmorProfile": "" - } -} diff --git a/dockerfiles/kubernetes-proxy/launch.sh b/dockerfiles/kubernetes-proxy/launch.sh deleted file mode 100755 index ea865354ca..0000000000 --- a/dockerfiles/kubernetes-proxy/launch.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -. /etc/kubernetes/proxy -. /etc/kubernetes/config - -ARGS="$@ $KUBE_LOGTOSTDERR $KUBE_LOG_LEVEL $KUBE_MASTER $KUBE_PROXY_ARGS" - -exec /usr/local/bin/kube-proxy $ARGS diff --git a/dockerfiles/kubernetes-proxy/proxy b/dockerfiles/kubernetes-proxy/proxy deleted file mode 100644 index 034276831b..0000000000 --- a/dockerfiles/kubernetes-proxy/proxy +++ /dev/null @@ -1,7 +0,0 @@ -### -# kubernetes proxy config - -# default config should be adequate - -# Add your own! -KUBE_PROXY_ARGS="" diff --git a/dockerfiles/kubernetes-proxy/service.template b/dockerfiles/kubernetes-proxy/service.template deleted file mode 100644 index 2ba34e9f7e..0000000000 --- a/dockerfiles/kubernetes-proxy/service.template +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=kubernetes-proxy - -[Service] -ExecStart=$EXEC_START -ExecStop=$EXEC_STOP -WorkingDirectory=$DESTDIR -Restart=always -StartLimitInterval=0 -RestartSec=10 - -[Install] -WantedBy=multi-user.target - diff --git a/dockerfiles/kubernetes-proxy/sources b/dockerfiles/kubernetes-proxy/sources deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/dockerfiles/kubernetes-scheduler/Dockerfile b/dockerfiles/kubernetes-scheduler/Dockerfile deleted file mode 100644 index ce2cbdb165..0000000000 --- a/dockerfiles/kubernetes-scheduler/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -ARG KUBE_VERSION=v1.13.0 -FROM gcr.io/google-containers/kube-scheduler-amd64:${KUBE_VERSION} -ARG ADD_KUBE_ALLOW_PRIV=false -ENV container=docker - -ENV NAME=kubernetes-scheduler VERSION=0.1 RELEASE=8 ARCH=x86_64 -LABEL bzcomponent="$NAME" \ - name="$FGC/$NAME" \ - version="$VERSION" \ - release="$RELEASE.$DISTTAG" \ - architecture="$ARCH" \ - atomic.type='system' \ - maintainer="Jason Brooks " - -COPY launch.sh /usr/bin/kube-scheduler-docker.sh - -COPY service.template config.json.template /exports/ - -COPY scheduler config /etc/kubernetes/ -RUN [ "$ADD_KUBE_ALLOW_PRIV" = "true" ] && echo "KUBE_ALLOW_PRIV=\"--allow-privileged=false\"" >> /etc/kubernetes/config || true -RUN mkdir -p /exports/hostfs/etc/kubernetes && \ - cp /etc/kubernetes/config /exports/hostfs/etc/kubernetes/ && \ - cp /etc/kubernetes/scheduler /exports/hostfs/etc/kubernetes/ - -ENTRYPOINT ["/usr/bin/kube-scheduler-docker.sh"] diff --git a/dockerfiles/kubernetes-scheduler/config b/dockerfiles/kubernetes-scheduler/config deleted file mode 100644 index d6226c7dce..0000000000 --- a/dockerfiles/kubernetes-scheduler/config +++ /dev/null @@ -1,19 +0,0 @@ -### -# kubernetes system config -# -# The following values are used to configure various aspects of all -# kubernetes services, including -# -# kube-apiserver.service -# kube-controller-manager.service -# kube-scheduler.service -# kubelet.service -# kube-proxy.service -# logging to stderr means we get it in the systemd journal -KUBE_LOGTOSTDERR="--logtostderr=true" - -# journal message level, 0 is debug -KUBE_LOG_LEVEL="--v=0" - -# How the controller-manager, scheduler, and proxy find the apiserver -KUBE_MASTER="--master=http://127.0.0.1:8080" diff --git a/dockerfiles/kubernetes-scheduler/config.json.template b/dockerfiles/kubernetes-scheduler/config.json.template deleted file mode 100644 index 0af371c114..0000000000 --- a/dockerfiles/kubernetes-scheduler/config.json.template +++ /dev/null @@ -1,183 +0,0 @@ -{ - "ociVersion": "1.0.0", - "platform": { - "os": "linux", - "arch": "amd64" - }, - "process": { - "terminal": false, - "user": { - "uid": 996, - "gid": 994 - }, - "args": [ - "/usr/bin/kube-scheduler-docker.sh" - ], - "env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", - "TERM=xterm" - ], - "cwd": "/", - "capabilities": { - "bounding": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "permitted": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "inheritable": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "effective": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ], - "ambient": [ - "CAP_AUDIT_WRITE", - "CAP_KILL", - "CAP_NET_BIND_SERVICE", - "CAP_DAC_READ_SEARCH" - ] - }, - "rlimits": [ - { - "type": "RLIMIT_NOFILE", - "hard": 131072, - "soft": 131072 - } - ] - }, - "root": { - "path": "rootfs", - "readonly": true - }, - "mounts": [ - { - "destination": "/proc", - "type": "proc", - "source": "proc" - }, - { - "destination": "/dev", - "type": "tmpfs", - "source": "tmpfs", - "options": [ - "nosuid", - "strictatime", - "mode=755", - "size=65536k" - ] - }, - { - "destination": "/dev/pts", - "type": "devpts", - "source": "devpts", - "options": [ - "nosuid", - "noexec", - "newinstance", - "ptmxmode=0666", - "mode=0620", - "gid=5" - ] - }, - { - "destination": "/dev/shm", - "type": "tmpfs", - "source": "shm", - "options": [ - "nosuid", - "noexec", - "nodev", - "mode=1777", - "size=65536k" - ] - }, - { - "destination": "/dev/mqueue", - "type": "mqueue", - "source": "mqueue", - "options": [ - "nosuid", - "noexec", - "nodev" - ] - }, - { - "destination": "/sys", - "type": "sysfs", - "source": "sysfs", - "options": [ - "nosuid", - "noexec", - "nodev" - ] - }, - { - "destination": "/sys/fs/cgroup", - "type": "cgroup", - "source": "cgroup", - "options": [ - "nosuid", - "noexec", - "nodev", - "relatime", - "ro" - ] - }, - { - "type": "bind", - "source": "/etc/kubernetes", - "destination": "/etc/kubernetes", - "options": [ - "rbind", - "ro", - "rprivate" - ] - }, - { - "destination": "/etc/resolv.conf", - "type": "bind", - "source": "/etc/resolv.conf", - "options": [ - "ro", - "rbind", - "rprivate" - ] - } - ], - "linux": { - "resources": { - "devices": [ - { - "allow": false, - "access": "rwm" - } - ] - }, - "namespaces": [ - { - "type": "pid" - }, - { - "type": "ipc" - }, - { - "type": "mount" - } - ], - "devices": null, - "apparmorProfile": "" - } -} diff --git a/dockerfiles/kubernetes-scheduler/launch.sh b/dockerfiles/kubernetes-scheduler/launch.sh deleted file mode 100755 index bcc20f702d..0000000000 --- a/dockerfiles/kubernetes-scheduler/launch.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -. /etc/kubernetes/scheduler -. /etc/kubernetes/config - -ARGS="$@ $KUBE_LOGTOSTDERR $KUBE_LOG_LEVEL $KUBE_MASTER $KUBE_SCHEDULER_ARGS" - -exec /usr/local/bin/kube-scheduler $ARGS diff --git a/dockerfiles/kubernetes-scheduler/scheduler b/dockerfiles/kubernetes-scheduler/scheduler deleted file mode 100644 index f6fc507b72..0000000000 --- a/dockerfiles/kubernetes-scheduler/scheduler +++ /dev/null @@ -1,7 +0,0 @@ -### -# kubernetes scheduler config - -# default config should be adequate - -# Add your own! -KUBE_SCHEDULER_ARGS="" diff --git a/dockerfiles/kubernetes-scheduler/service.template b/dockerfiles/kubernetes-scheduler/service.template deleted file mode 100644 index 56211e7e89..0000000000 --- a/dockerfiles/kubernetes-scheduler/service.template +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=kubernetes-scheduler - -[Service] -ExecStart=$EXEC_START -ExecStop=$EXEC_STOP -WorkingDirectory=$DESTDIR -Restart=always -StartLimitInterval=0 -RestartSec=10 - -[Install] -WantedBy=multi-user.target - diff --git a/magnum/api/attr_validator.py b/magnum/api/attr_validator.py index de9639c868..962e907c16 100644 --- a/magnum/api/attr_validator.py +++ b/magnum/api/attr_validator.py @@ -14,6 +14,7 @@ from glanceclient import exc as glance_exception from novaclient import exceptions as nova_exception +from oslo_utils import strutils from magnum.api import utils as api_utils from magnum.common import clients @@ -180,6 +181,9 @@ def validate_master_count(context, cluster): def validate_flavor_root_volume_size(cli, flavor, boot_volume_size): """Validate flavor root volume size.""" + boot_volume_size = strutils.validate_integer(boot_volume_size, + "boot_volume_size") + if boot_volume_size > 0: return diff --git a/magnum/conductor/api.py b/magnum/conductor/api.py index a05bdb38bd..556a30f0ce 100644 --- a/magnum/conductor/api.py +++ b/magnum/conductor/api.py @@ -135,20 +135,21 @@ def rotate_ca_certificate(self, cluster): # Versioned Objects indirection API - def object_class_action(self, context, objname, objmethod, objver, - args, kwargs): - "Indirection API callback" - return self._client.call(context, 'object_class_action', + def object_class_action_versions(self, context, objname, objmethod, + object_versions, args, kwargs): + """Indirection API callback.""" + return self._client.call(context, 'object_class_action_versions', objname=objname, objmethod=objmethod, - objver=objver, args=args, kwargs=kwargs) + object_versions=object_versions, + args=args, kwargs=kwargs) def object_action(self, context, objinst, objmethod, args, kwargs): - "Indirection API callback" + """Indirection API callback.""" return self._client.call(context, 'object_action', objinst=objinst, objmethod=objmethod, args=args, kwargs=kwargs) def object_backport(self, context, objinst, target_version): - "Indirection API callback" + """Indirection API callback.""" return self._client.call(context, 'object_backport', objinst=objinst, target_version=target_version) diff --git a/magnum/conductor/handlers/indirection_api.py b/magnum/conductor/handlers/indirection_api.py index 1671c984a0..c100a3db9e 100644 --- a/magnum/conductor/handlers/indirection_api.py +++ b/magnum/conductor/handlers/indirection_api.py @@ -18,7 +18,7 @@ @profiler.trace_cls("rpc") class Handler(object): - "Indirection API callbacks" + """Indirection API callbacks""" def _object_dispatch(self, target, method, context, args, kwargs): """Dispatch a call to an object method. @@ -34,16 +34,19 @@ def _object_dispatch(self, target, method, context, args, kwargs): except Exception: raise messaging.ExpectedException() - def object_class_action(self, context, objname, objmethod, - objver, args, kwargs): + def object_class_action_versions(self, context, objname, objmethod, + object_versions, args, kwargs): """Perform a classmethod action on an object.""" - objclass = base.MagnumObject.obj_class_from_name(objname, objver) + objclass = base.MagnumObject.obj_class_from_name( + objname, object_versions[objname]) result = self._object_dispatch(objclass, objmethod, context, args, kwargs) # NOTE(danms): The RPC layer will convert to primitives for us, # but in this case, we need to honor the version the client is # asking for, so we do it before returning here. - return (result.obj_to_primitive(target_version=objver) + return (result.obj_to_primitive( + target_version=object_versions[objname], + version_manifest=object_versions) if isinstance(result, base.MagnumObject) else result) def object_action(self, context, objinst, objmethod, args, kwargs): diff --git a/magnum/objects/base.py b/magnum/objects/base.py index 995c6d235c..fb62ecedd1 100644 --- a/magnum/objects/base.py +++ b/magnum/objects/base.py @@ -66,15 +66,17 @@ def __init__(self): from magnum.conductor import api as conductor_api self._conductor = conductor_api.API() + def object_class_action_versions(self, context, objname, objmethod, + object_versions, args, kwargs): + return self._conductor.object_class_action_versions(context, objname, + objmethod, + object_versions, + args, kwargs) + def object_action(self, context, objinst, objmethod, args, kwargs): return self._conductor.object_action(context, objinst, objmethod, args, kwargs) - def object_class_action(self, context, objname, objmethod, objver, - args, kwargs): - return self._conductor.object_class_action(context, objname, objmethod, - objver, args, kwargs) - def object_backport(self, context, objinst, target_version): return self._conductor.object_backport(context, objinst, target_version) diff --git a/magnum/tests/unit/conductor/handlers/test_indirection_api.py b/magnum/tests/unit/conductor/handlers/test_indirection_api.py index 2c0e124e46..4c0afe1d8f 100644 --- a/magnum/tests/unit/conductor/handlers/test_indirection_api.py +++ b/magnum/tests/unit/conductor/handlers/test_indirection_api.py @@ -13,6 +13,7 @@ # under the License. import oslo_messaging as messaging +from oslo_versionedobjects import base as ovo_base from oslo_versionedobjects import fields from magnum.conductor.handlers import indirection_api @@ -43,8 +44,9 @@ def bar(cls, context, raise_exception=False): obj = TestObject() if is_classmethod: - result = self.conductor.object_class_action( - self.context, TestObject.obj_name(), 'bar', '1.0', + versions = ovo_base.obj_tree_get_versions(TestObject.obj_name()) + result = self.conductor.object_class_action_versions( + self.context, TestObject.obj_name(), 'bar', versions, tuple(), {'raise_exception': raise_exception}) else: updates, result = self.conductor.object_action( diff --git a/playbooks/container-builder-copy-logs.yaml b/playbooks/container-builder-copy-logs.yaml deleted file mode 100644 index 6f1f4f4520..0000000000 --- a/playbooks/container-builder-copy-logs.yaml +++ /dev/null @@ -1,47 +0,0 @@ -- hosts: all - tasks: - - shell: - cmd: | - set +o errexit - mkdir -p logs - # copy system log - sudo cp -r /var/log logs/system_log - sudo rm -f logs/system_log/README - if which journalctl ; then - # the journal gives us syslog() and kernel output, so is like - # a concatenation of the above. - sudo journalctl --no-pager | sudo tee logs/syslog.txt > /dev/null - sudo journalctl --no-pager -u docker.service | sudo tee logs/docker.log > /dev/null - fi - # sudo config - # final memory usage and process list - ps -eo user,pid,ppid,lwp,%cpu,%mem,size,rss,cmd > logs/ps.txt - # docker related information - (docker info && docker system df && docker system df -v) > logs/docker-info.txt - # fix the permissions for logs folder - sudo chmod -R 777 logs - # rename files to .txt; this is so that when displayed via - # logs.openstack.org clicking results in the browser shows the - # files, rather than trying to send it to another app or make you - # download it, etc. - # firstly, rename all .log files to .txt files - for f in $(find logs -name "*.log"); do - sudo mv $f ${f/.log/.txt} - done - # Update symlinks to new file names - for f in $(find logs -name "*FAILED*"); do - sudo mv ${f} ${f}.gz - sudo ln -sf ${f#*/000_FAILED_}.gz ${f}.gz - done - # Compress all text logs - find logs -iname '*.txt' -execdir gzip -9 {} \+ - find logs -iname '*.json' -execdir gzip -9 {} \+ - executable: /bin/bash - chdir: "{{ zuul.project.src_dir }}" - - - synchronize: - src: '{{ zuul.project.src_dir }}/logs' - dest: '{{ zuul.executor.log_root }}' - mode: pull - copy_links: true - verify_host: true diff --git a/playbooks/container-builder-setup-gate.yaml b/playbooks/container-builder-setup-gate.yaml deleted file mode 100644 index 23d990507f..0000000000 --- a/playbooks/container-builder-setup-gate.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -- hosts: all - roles: - - configure-swap - - ensure-docker - tasks: - - name: Create logging folders - file: - path: "/tmp/logs/{{ item }}" - state: directory - with_items: - - ansible - - build - - - name: Link logs output folder - file: - src: /tmp/logs - dest: "{{ zuul.project.src_dir }}/logs" - state: link - - - name: Install python3-docker - become: true - package: - name: python3-docker - state: present diff --git a/playbooks/container-builder-vars.yaml b/playbooks/container-builder-vars.yaml deleted file mode 100644 index 1c9a429989..0000000000 --- a/playbooks/container-builder-vars.yaml +++ /dev/null @@ -1,39 +0,0 @@ -magnum_src_dir: "src/opendev.org/openstack/magnum" - -magnum_repository: openstackmagnum - -# NOTE: By default, stable images are not built if they already exist. -# Assigning dev=true property for heat container agent images means that a new -# image is re-built and pushed under the same tag every time. -heat_container_agent_images: - - tag: victoria-stable-1 - - tag: wallaby-stable-1 - -kubernetes_versions: - - version: v1.15.12 - -kubernetes_images: - - name: kubernetes-apiserver - - name: kubernetes-controller-manager - - name: kubernetes-kubelet - - name: kubernetes-scheduler - - name: kubernetes-proxy - -helm_versions: - - version: v2.16.6 - - version: v3.2.0 - -cluster_autoscaler_versions: - - version: 1.25.0 - - version: 1.25.1 - - version: 1.25.2 - - version: 1.25.3 - - version: 1.26.0 - - version: 1.26.1 - - version: 1.26.2 - - version: 1.26.3 - - version: 1.26.4 - - version: 1.27.1 - - version: 1.27.2 - - version: 1.27.3 - - version: 1.28.0 diff --git a/playbooks/container-builder.yaml b/playbooks/container-builder.yaml deleted file mode 100644 index f6f1e312f7..0000000000 --- a/playbooks/container-builder.yaml +++ /dev/null @@ -1,75 +0,0 @@ -- hosts: all - tasks: - - include_vars: container-builder-vars.yaml - - # NOTE: By default, stable images are not built if they already exist. - # Assigning dev=true property for heat container agent images means that a new - # image is re-built and pushed under the same tag every time. - - name: "Build heat-container-agent images" - block: - - name: "Check if {{ magnum_repository }}/heat-container-agent:{{ item.tag }} exists" - docker_image: - name: "{{ magnum_repository }}/heat-container-agent" - tag: "{{ item.tag }}" - source: pull - register: docker_output - when: not (item.dev | default(false) | bool) - failed_when: (docker_output is failed and "pull rate limit" in docker_output.msg) - with_items: "{{ heat_container_agent_images }}" - - name: "Build {{ magnum_repository }}/heat-container-agent:{{ item.item.tag }} image" - docker_image: - build: - path: "{{ magnum_src_dir }}/dockerfiles/heat-container-agent" - name: "{{ magnum_repository }}/heat-container-agent" - tag: "{{ item.item.tag }}" - push: no - source: build - with_items: "{{ docker_output.results }}" - when: ("msg" in item and "not found" in item.msg) or (item.item.dev | default(false) | bool) - retries: 10 - - - name: "Build kubernetes images" - block: - - name: "Build {{ magnum_repository }}/{{ item[1].name }}:{{ item[0].version }} image" - docker_image: - name: "{{ magnum_repository }}/{{ item[1].name }}" - tag: "{{ item[0].version }}" - build: - path: "{{ magnum_src_dir }}/dockerfiles/{{ item[1].name }}" - args: - KUBE_VERSION: "{{ item[0].version }}" - push: no - source: build - with_nested: - - "{{ kubernetes_versions }}" - - "{{ kubernetes_images }}" - retries: 10 - - - name: "Build helm-client image" - block: - - docker_image: - name: "{{ magnum_repository }}/helm-client" - tag: "{{ item.version }}" - build: - path: "{{ magnum_src_dir }}/dockerfiles/helm-client" - args: - HELM_VERSION: "{{ item.version }}" - push: no - source: build - with_items: "{{ helm_versions }}" - retries: 10 - - - name: "Build cluster-autoscaler image" - block: - - name: "Build {{ magnum_repository }}/cluster-autoscaler:v{{ item.version }}" - docker_image: - name: "{{ magnum_repository }}/cluster-autoscaler" - tag: "v{{ item.version }}" - build: - path: "{{ magnum_src_dir }}/dockerfiles/cluster-autoscaler" - args: - AUTOSCALER_VERSION: "cluster-autoscaler-{{ item.version }}" - push: no - source: build - with_items: "{{ cluster_autoscaler_versions }}" - retries: 10 diff --git a/playbooks/container-publish.yaml b/playbooks/container-publish.yaml deleted file mode 100644 index cc17d4e511..0000000000 --- a/playbooks/container-publish.yaml +++ /dev/null @@ -1,25 +0,0 @@ -- hosts: all - tasks: - - include_vars: container-builder-vars.yaml - - - name: Log into DockerHub - docker_login: - username: "{{ magnum_docker_login.user }}" - password: "{{ magnum_docker_login.password }}" - - - name: Push images to DockerHub - block: - - command: docker push {{ magnum_repository }}/heat-container-agent:{{ item.tag }} - with_items: "{{ heat_container_agent_images }}" - retries: 10 - - command: docker push {{ magnum_repository }}/{{ item[1].name }}:{{ item[0].version }} - with_nested: - - "{{ kubernetes_versions }}" - - "{{ kubernetes_images }}" - retries: 10 - - command: docker push {{ magnum_repository }}/helm-client:{{ item.version }} - with_items: "{{ helm_versions }}" - retries: 10 - - command: docker push {{ magnum_repository }}/cluster-autoscaler:v{{ item.version }} - with_items: "{{ cluster_autoscaler_versions }}" - retries: 10 diff --git a/playbooks/post/upload-logs.yaml b/playbooks/post/upload-logs.yaml deleted file mode 100644 index baf8760865..0000000000 --- a/playbooks/post/upload-logs.yaml +++ /dev/null @@ -1,14 +0,0 @@ -- hosts: primary - tasks: - - name: Copy files from {{ ansible_user_dir }}/workspace/ on node - synchronize: - src: '{{ ansible_user_dir }}/workspace/' - dest: '{{ zuul.executor.log_root }}' - mode: pull - copy_links: true - verify_host: true - rsync_opts: - - --include=/logs/** - - --include=*/ - - --exclude=* - - --prune-empty-dirs diff --git a/playbooks/pre/prepare-workspace-images.yaml b/playbooks/pre/prepare-workspace-images.yaml deleted file mode 100644 index 260af75abb..0000000000 --- a/playbooks/pre/prepare-workspace-images.yaml +++ /dev/null @@ -1,10 +0,0 @@ -- hosts: all - roles: - - bindep - - tasks: - - - name: Ensure legacy workspace directory - file: - path: '{{ ansible_user_dir }}/workspace' - state: directory diff --git a/playbooks/pre/prepare-workspace.yaml b/playbooks/pre/prepare-workspace.yaml deleted file mode 100644 index 9e2d608e3d..0000000000 --- a/playbooks/pre/prepare-workspace.yaml +++ /dev/null @@ -1,23 +0,0 @@ -- hosts: all - name: magnum-prepare-workspace - tasks: - - name: Ensure workspace directory exists - file: - path: '{{ ansible_user_dir }}/workspace' - state: directory - - - shell: - cmd: | - set -e - set -x - cat > clonemap.yaml << EOF - clonemap: - - name: openstack/devstack-gate - dest: devstack-gate - EOF - /usr/zuul-env/bin/zuul-cloner -m clonemap.yaml --cache-dir /opt/git \ - https://opendev.org \ - openstack/devstack-gate - executable: /bin/bash - chdir: '{{ ansible_user_dir }}/workspace' - environment: '{{ zuul | zuul_legacy_vars }}' diff --git a/releasenotes/notes/fix-boot-volume-size-label-type-a5625def4c6db32b.yaml b/releasenotes/notes/fix-boot-volume-size-label-type-a5625def4c6db32b.yaml new file mode 100644 index 0000000000..c3db6e8c44 --- /dev/null +++ b/releasenotes/notes/fix-boot-volume-size-label-type-a5625def4c6db32b.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + The boot_volume_size label value is passed as a string from the API. + The validator now converts it to an integer before comparison. diff --git a/releasenotes/source/2026.1.rst b/releasenotes/source/2026.1.rst new file mode 100644 index 0000000000..3d28615808 --- /dev/null +++ b/releasenotes/source/2026.1.rst @@ -0,0 +1,6 @@ +=========================== +2026.1 Series Release Notes +=========================== + +.. release-notes:: + :branch: stable/2026.1 diff --git a/releasenotes/source/index.rst b/releasenotes/source/index.rst index 9725a10f2b..c21db7f9b3 100644 --- a/releasenotes/source/index.rst +++ b/releasenotes/source/index.rst @@ -12,6 +12,7 @@ Contents: :maxdepth: 2 unreleased + 2026.1 2025.2 2025.1 2024.2 diff --git a/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po b/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po index 61580f6c45..5d22fd718a 100644 --- a/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po +++ b/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: magnum\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-01-07 23:05+0000\n" +"POT-Creation-Date: 2026-03-17 09:19+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -99,9 +99,6 @@ msgstr "2024.2 Series Release Notes" msgid "21.0.0" msgstr "21.0.0" -msgid "21.0.0-11" -msgstr "21.0.0-11" - msgid "3.0.0" msgstr "3.0.0" diff --git a/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po b/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po new file mode 100644 index 0000000000..35a619af34 --- /dev/null +++ b/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po @@ -0,0 +1,64 @@ +# Gérald LONLAS , 2016. #zanata +msgid "" +msgstr "" +"Project-Id-Version: magnum\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-17 09:19+0000\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"PO-Revision-Date: 2016-10-22 04:59+0000\n" +"Last-Translator: Gérald LONLAS \n" +"Language-Team: French\n" +"Language: fr\n" +"X-Generator: Zanata 4.3.3\n" +"Plural-Forms: nplurals=2; plural=(n > 1)\n" + +msgid "" +"--keypair-id parameter in magnum CLI cluster-template-create has been " +"renamed to --keypair." +msgstr "" +"Le paramètre --keypair-id dans cluster-template-create du CLI magnum a été " +"renommé pour --keypair." + +msgid "3.0.0" +msgstr "3.0.0" + +msgid "3.1.0" +msgstr "3.1.0" + +msgid ":ref:`genindex`" +msgstr ":ref:`genindex`" + +msgid ":ref:`search`" +msgstr ":ref:`search`" + +msgid "Contents:" +msgstr "Contenu :" + +msgid "Current Series Release Notes" +msgstr "Note de la release actuelle" + +msgid "Deprecation Notes" +msgstr "Notes dépréciées " + +msgid "Indices and tables" +msgstr "Index et table des matières" + +msgid "New Features" +msgstr "Nouvelles fonctionnalités" + +msgid "Newton Series Release Notes" +msgstr "Note de release pour Newton" + +msgid "Security Issues" +msgstr "Problèmes de sécurités" + +msgid "Upgrade Notes" +msgstr "Notes de mises à jours" + +msgid "Welcome to Magnum Release Notes's documentation!" +msgstr "Bienvenue dans la documentation de la note de Release de Magnum" + +msgid "[1] https://review.openstack.org/#/c/311476/" +msgstr "[1] https://review.openstack.org/#/c/311476/"