Compare commits

..

1 Commits

Author SHA1 Message Date
61064c372a Update CONTRIBUTING.md 2024-05-27 12:23:41 +02:00
80 changed files with 301 additions and 188 deletions

View File

@ -77,6 +77,7 @@ ci-authorized:
include: include:
- .gitlab-ci/build.yml - .gitlab-ci/build.yml
- .gitlab-ci/lint.yml - .gitlab-ci/lint.yml
- .gitlab-ci/shellcheck.yml
- .gitlab-ci/terraform.yml - .gitlab-ci/terraform.yml
- .gitlab-ci/packet.yml - .gitlab-ci/packet.yml
- .gitlab-ci/vagrant.yml - .gitlab-ci/vagrant.yml

View File

@ -1,24 +1,13 @@
--- ---
generate-pre-commit: yamllint:
image: 'mikefarah/yq@sha256:bcb889a1f9bdb0613c8a054542d02360c2b1b35521041be3e1bd8fbd0534d411' extends: .job
stage: build
before_script: []
script:
- >
yq -r < .pre-commit-config.yaml '.repos[].hooks[].id' |
sed 's/^/ - /' |
cat .gitlab-ci/pre-commit-dynamic-stub.yml - > pre-commit-generated.yml
artifacts:
paths:
- pre-commit-generated.yml
run-pre-commit:
stage: unit-tests stage: unit-tests
trigger: tags: [light]
include: variables:
- artifact: pre-commit-generated.yml LANG: C.UTF-8
job: generate-pre-commit script:
strategy: depend - yamllint --strict .
except: ['triggers', 'master']
vagrant-validate: vagrant-validate:
extends: .job extends: .job
@ -30,11 +19,108 @@ vagrant-validate:
- ./tests/scripts/vagrant-validate.sh - ./tests/scripts/vagrant-validate.sh
except: ['triggers', 'master'] except: ['triggers', 'master']
ansible-lint:
extends: .job
stage: unit-tests
tags: [light]
script:
- ansible-lint -v
except: ['triggers', 'master']
jinja-syntax-check:
extends: .job
stage: unit-tests
tags: [light]
script:
- "find -name '*.j2' -exec tests/scripts/check-templates.py {} +"
except: ['triggers', 'master']
syntax-check:
extends: .job
stage: unit-tests
tags: [light]
variables:
ANSIBLE_INVENTORY: inventory/local-tests.cfg
ANSIBLE_REMOTE_USER: root
ANSIBLE_BECOME: "true"
ANSIBLE_BECOME_USER: root
ANSIBLE_VERBOSITY: "3"
script:
- ansible-playbook --syntax-check cluster.yml
- ansible-playbook --syntax-check playbooks/cluster.yml
- ansible-playbook --syntax-check upgrade-cluster.yml
- ansible-playbook --syntax-check playbooks/upgrade_cluster.yml
- ansible-playbook --syntax-check reset.yml
- ansible-playbook --syntax-check playbooks/reset.yml
- ansible-playbook --syntax-check extra_playbooks/upgrade-only-k8s.yml
except: ['triggers', 'master']
collection-build-install-sanity-check:
extends: .job
stage: unit-tests
tags: [light]
variables:
ANSIBLE_COLLECTIONS_PATH: "./ansible_collections"
script:
- ansible-galaxy collection build
- ansible-galaxy collection install kubernetes_sigs-kubespray-$(grep "^version:" galaxy.yml | awk '{print $2}').tar.gz
- ansible-galaxy collection list $(egrep -i '(name:\s+|namespace:\s+)' galaxy.yml | awk '{print $2}' | tr '\n' '.' | sed 's|\.$||g') | grep "^kubernetes_sigs.kubespray"
- test -f ansible_collections/kubernetes_sigs/kubespray/playbooks/cluster.yml
- test -f ansible_collections/kubernetes_sigs/kubespray/playbooks/reset.yml
except: ['triggers', 'master']
tox-inventory-builder:
stage: unit-tests
tags: [light]
extends: .job
before_script:
- ./tests/scripts/rebase.sh
script:
- pip3 install tox
- cd contrib/inventory_builder && tox
except: ['triggers', 'master']
markdownlint:
stage: unit-tests
tags: [light]
image: node
before_script:
- npm install -g markdownlint-cli@0.22.0
script:
- markdownlint $(find . -name '*.md' | grep -vF './.git') --ignore docs/_sidebar.md --ignore contrib/dind/README.md
generate-sidebar:
extends: .job
stage: unit-tests
tags: [light]
script:
- scripts/gen_docs_sidebar.sh
- git diff --exit-code
check-readme-versions:
stage: unit-tests
tags: [light]
image: python:3
script:
- tests/scripts/check_readme_versions.sh
# TODO: convert to pre-commit hook
check-galaxy-version: check-galaxy-version:
stage: unit-tests stage: unit-tests
tags: [light] tags: [light]
image: python:3 image: python:3
script: script:
- tests/scripts/check_galaxy_version.sh - tests/scripts/check_galaxy_version.sh
check-typo:
stage: unit-tests
tags: [light]
image: python:3
script:
- tests/scripts/check_typo.sh
ci-matrix:
stage: unit-tests
tags: [light]
image: python:3
script:
- tests/scripts/md-table/test.sh

View File

@ -1,17 +0,0 @@
---
# stub pipeline for dynamic generation
pre-commit:
tags:
- light
image: 'ghcr.io/pre-commit-ci/runner-image@sha256:aaf2c7b38b22286f2d381c11673bec571c28f61dd086d11b43a1c9444a813cef'
variables:
PRE_COMMIT_HOME: /pre-commit-cache
script:
- pre-commit run -a $HOOK_ID
cache:
key: pre-commit-$HOOK_ID
paths:
- /pre-commit-cache
parallel:
matrix:
- HOOK_ID:

16
.gitlab-ci/shellcheck.yml Normal file
View File

@ -0,0 +1,16 @@
---
shellcheck:
extends: .job
stage: unit-tests
tags: [light]
variables:
SHELLCHECK_VERSION: v0.7.1
before_script:
- ./tests/scripts/rebase.sh
- curl --silent --location "https://github.com/koalaman/shellcheck/releases/download/"${SHELLCHECK_VERSION}"/shellcheck-"${SHELLCHECK_VERSION}".linux.x86_64.tar.xz" | tar -xJv
- cp shellcheck-"${SHELLCHECK_VERSION}"/shellcheck /usr/bin/
- shellcheck --version
script:
# Run shellcheck for all *.sh
- find . -name '*.sh' -not -path './.git/*' | xargs shellcheck --severity error
except: ['triggers', 'master']

3
.markdownlint.yaml Normal file
View File

@ -0,0 +1,3 @@
---
MD013: false
MD029: false

View File

@ -1,4 +0,0 @@
all
exclude_rule 'MD013'
exclude_rule 'MD029'
rule 'MD007', :indent => 2

1
.mdlrc
View File

@ -1 +0,0 @@
style "#{File.dirname(__FILE__)}/.md_style.rb"

View File

@ -1,7 +1,7 @@
--- ---
repos: repos:
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0 rev: v3.4.0
hooks: hooks:
- id: check-added-large-files - id: check-added-large-files
- id: check-case-conflict - id: check-case-conflict
@ -15,60 +15,47 @@ repos:
- id: trailing-whitespace - id: trailing-whitespace
- repo: https://github.com/adrienverge/yamllint.git - repo: https://github.com/adrienverge/yamllint.git
rev: v1.35.1 rev: v1.27.1
hooks: hooks:
- id: yamllint - id: yamllint
args: [--strict] args: [--strict]
- repo: https://github.com/markdownlint/markdownlint - repo: https://github.com/markdownlint/markdownlint
rev: v0.12.0 rev: v0.11.0
hooks: hooks:
- id: markdownlint - id: markdownlint
exclude: "^.github|(^docs/_sidebar\\.md$)" args: [-r, "~MD013,~MD029"]
exclude: "^.git"
- repo: https://github.com/shellcheck-py/shellcheck-py - repo: https://github.com/jumanjihouse/pre-commit-hooks
rev: v0.10.0.1 rev: 3.0.0
hooks: hooks:
- id: shellcheck - id: shellcheck
args: ["--severity=error"] args: [--severity, "error"]
exclude: "^.git" exclude: "^.git"
files: "\\.sh$" files: "\\.sh$"
- repo: https://github.com/ansible/ansible-lint
rev: v24.5.0
hooks:
- id: ansible-lint
additional_dependencies:
- ansible==9.5.1
- jsonschema==4.22.0
- jmespath==1.0.1
- netaddr==1.2.1
- distlib
- repo: https://github.com/VannTen/misspell
# Waiting on https://github.com/golangci/misspell/pull/19 to get merged
rev: 8592a4e
hooks:
- id: misspell
exclude: "OWNERS_ALIASES$"
- repo: local - repo: local
hooks: hooks:
- id: ansible-lint
name: ansible-lint
entry: ansible-lint -v
language: python
pass_filenames: false
additional_dependencies:
- .[community]
- id: ansible-syntax-check - id: ansible-syntax-check
name: ansible-syntax-check name: ansible-syntax-check
entry: env ANSIBLE_INVENTORY=inventory/local-tests.cfg ANSIBLE_REMOTE_USER=root ANSIBLE_BECOME="true" ANSIBLE_BECOME_USER=root ANSIBLE_VERBOSITY="3" ansible-playbook --syntax-check entry: env ANSIBLE_INVENTORY=inventory/local-tests.cfg ANSIBLE_REMOTE_USER=root ANSIBLE_BECOME="true" ANSIBLE_BECOME_USER=root ANSIBLE_VERBOSITY="3" ansible-playbook --syntax-check
language: python language: python
files: "^cluster.yml|^upgrade-cluster.yml|^reset.yml|^extra_playbooks/upgrade-only-k8s.yml" files: "^cluster.yml|^upgrade-cluster.yml|^reset.yml|^extra_playbooks/upgrade-only-k8s.yml"
additional_dependencies:
- ansible==9.5.1
- id: tox-inventory-builder - id: tox-inventory-builder
name: tox-inventory-builder name: tox-inventory-builder
entry: bash -c "cd contrib/inventory_builder && tox" entry: bash -c "cd contrib/inventory_builder && tox"
language: python language: python
pass_filenames: false pass_filenames: false
additional_dependencies:
- tox==4.15.0
- id: check-readme-versions - id: check-readme-versions
name: check-readme-versions name: check-readme-versions
@ -76,15 +63,6 @@ repos:
language: script language: script
pass_filenames: false pass_filenames: false
- id: collection-build-install
name: Build and install kubernetes-sigs.kubespray Ansible collection
language: python
additional_dependencies:
- ansible-core>=2.16.4
- distlib
entry: tests/scripts/collection-build-install.sh
pass_filenames: false
- id: generate-docs-sidebar - id: generate-docs-sidebar
name: generate-docs-sidebar name: generate-docs-sidebar
entry: scripts/gen_docs_sidebar.sh entry: scripts/gen_docs_sidebar.sh
@ -93,13 +71,9 @@ repos:
- id: ci-matrix - id: ci-matrix
name: ci-matrix name: ci-matrix
entry: tests/scripts/md-table/main.py entry: tests/scripts/md-table/test.sh
language: python language: script
pass_filenames: false pass_filenames: false
additional_dependencies:
- jinja2
- pathlib
- pyaml
- id: jinja-syntax-check - id: jinja-syntax-check
name: jinja-syntax-check name: jinja-syntax-check
@ -108,4 +82,4 @@ repos:
types: types:
- jinja - jinja
additional_dependencies: additional_dependencies:
- jinja2 - Jinja2

View File

@ -1,4 +1,4 @@
# Contributing guidelines test # Contributing guidelines
## How to become a contributor and submit your own code ## How to become a contributor and submit your own code

View File

@ -6,7 +6,6 @@ aliases:
- mzaian - mzaian
- oomichi - oomichi
- yankay - yankay
- ant31
kubespray-reviewers: kubespray-reviewers:
- cyclinder - cyclinder
- erikjiang - erikjiang
@ -15,6 +14,7 @@ aliases:
- vannten - vannten
- yankay - yankay
kubespray-emeritus_approvers: kubespray-emeritus_approvers:
- ant31
- atoms - atoms
- chadswen - chadswen
- luckysb - luckysb

View File

@ -72,7 +72,6 @@ The setup looks like following
```bash ```bash
./generate-inventory.sh > sample-inventory/inventory.ini ./generate-inventory.sh > sample-inventory/inventory.ini
```
* Export Variables: * Export Variables:

View File

@ -231,7 +231,6 @@ The following tags are defined in playbooks:
| services | Remove services (etcd, kubelet etc...) when resetting | | services | Remove services (etcd, kubelet etc...) when resetting |
| snapshot | Enabling csi snapshot | | snapshot | Enabling csi snapshot |
| snapshot-controller | Configuring csi snapshot controller | | snapshot-controller | Configuring csi snapshot controller |
| system-packages | Install packages using OS package manager |
| upgrade | Upgrading, f.e. container images/binaries | | upgrade | Upgrading, f.e. container images/binaries |
| upload | Distributing images/binaries across hosts | | upload | Distributing images/binaries across hosts |
| vsphere-csi-driver | Configuring csi driver: vsphere | | vsphere-csi-driver | Configuring csi driver: vsphere |

View File

@ -1,3 +1,4 @@
# OpenStack # OpenStack
## Known compatible public clouds ## Known compatible public clouds

View File

@ -103,9 +103,7 @@ If you use the settings like the one above, you'll need to define in your invent
can store them anywhere as long as it's accessible by kubespray. It's recommended to use `*_version` in the path so can store them anywhere as long as it's accessible by kubespray. It's recommended to use `*_version` in the path so
that you don't need to modify this setting everytime kubespray upgrades one of these components. that you don't need to modify this setting everytime kubespray upgrades one of these components.
* `yum_repo`/`debian_repo`/`ubuntu_repo`: OS package repository depending on your OS, should point to your internal * `yum_repo`/`debian_repo`/`ubuntu_repo`: OS package repository depending on your OS, should point to your internal
repository. Adjust the path accordingly. Used only for Docker/Containerd packages (if needed); other packages might repository. Adjust the path accordingly.
be installed from other repositories. You might disable installing packages from other repositories by skipping
the `system-packages` tag
## Install Kubespray Python Packages ## Install Kubespray Python Packages

View File

@ -1,3 +1,4 @@
# Recovering the control plane # Recovering the control plane
To recover from broken nodes in the control plane use the "recover\-control\-plane.yml" playbook. To recover from broken nodes in the control plane use the "recover\-control\-plane.yml" playbook.
@ -7,6 +8,7 @@ Examples of what broken means in this context:
* One or more bare metal node(s) suffer from unrecoverable hardware failure * One or more bare metal node(s) suffer from unrecoverable hardware failure
* One or more node(s) fail during patching or upgrading * One or more node(s) fail during patching or upgrading
* Etcd database corruption * Etcd database corruption
* Other node related failures leaving your control plane degraded or nonfunctional * Other node related failures leaving your control plane degraded or nonfunctional
__Note that you need at least one functional node to be able to recover using this method.__ __Note that you need at least one functional node to be able to recover using this method.__

View File

@ -9,12 +9,42 @@ authors:
tags: tags:
- infrastructure - infrastructure
repository: https://github.com/kubernetes-sigs/kubespray repository: https://github.com/kubernetes-sigs/kubespray
issues: https://github.com/kubernetes-sigs/kubespray/issues
documentation: https://kubespray.io
license_file: LICENSE license_file: LICENSE
dependencies: dependencies:
ansible.utils: '>=2.5.0' ansible.utils: '>=2.5.0'
community.general: '>=3.0.0' community.general: '>=3.0.0'
manifest: build_ignore:
directives: - .github
- recursive-exclude tests ** - '*.tar.gz'
- extra_playbooks
- inventory
- scripts
- test-infra
- .ansible-lint
- .editorconfig
- .gitignore
- .gitlab-ci
- .gitlab-ci.yml
- .gitmodules
- .markdownlint.yaml
- .nojekyll
- .pre-commit-config.yaml
- .yamllint
- Dockerfile
- FILES.json
- MANIFEST.json
- Makefile
- Vagrantfile
- _config.yml
- ansible.cfg
- requirements*txt
- setup.cfg
- setup.py
- index.html
- reset.yml
- cluster.yml
- scale.yml
- recover-control-plane.yml
- remove-node.yml
- upgrade-cluster.yml
- library

View File

@ -1,10 +1,10 @@
ansible==9.6.0 ansible==9.5.1
cryptography==42.0.7 cryptography==42.0.7
jinja2==3.1.4 jinja2==3.1.4
jmespath==1.0.1 jmespath==1.0.1
jsonschema==4.22.0
MarkupSafe==2.1.5 MarkupSafe==2.1.5
netaddr==1.2.1 netaddr==1.2.1
pbr==6.0.0 pbr==6.0.0
ruamel.yaml==0.18.6 ruamel.yaml==0.18.6
ruamel.yaml.clib==0.2.8 ruamel.yaml.clib==0.2.8
jsonschema==4.22.0

View File

@ -107,3 +107,4 @@ oom_score = {{ containerd_oom_score }}
sampling_ratio = {{ containerd_tracing_sampling_ratio }} sampling_ratio = {{ containerd_tracing_sampling_ratio }}
service_name = "{{ containerd_tracing_service_name }}" service_name = "{{ containerd_tracing_service_name }}"
{% endif %} {% endif %}

View File

@ -32,3 +32,4 @@ data:
- name: helper-pod - name: helper-pod
image: "{{ local_path_provisioner_helper_image_repo }}:{{ local_path_provisioner_helper_image_tag }}" image: "{{ local_path_provisioner_helper_image_repo }}:{{ local_path_provisioner_helper_image_tag }}"
imagePullPolicy: IfNotPresent imagePullPolicy: IfNotPresent

View File

@ -11,3 +11,4 @@ subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{ node_feature_discovery_worker_sa_name }} name: {{ node_feature_discovery_worker_sa_name }}
namespace: {{ node_feature_discovery_namespace }} namespace: {{ node_feature_discovery_namespace }}

View File

@ -1,7 +1,10 @@
--- ---
- name: Stop if either kube_control_plane or kube_node group is empty - name: Stop if either kube_control_plane or kube_node group is empty
assert: assert:
that: groups.get( 'kube_control_plane' ) that: "groups.get( item )"
with_items:
- kube_control_plane
- kube_node
run_once: true run_once: true
when: not ignore_assert_errors when: not ignore_assert_errors

View File

@ -68,7 +68,6 @@
- not dns_late - not dns_late
tags: tags:
- bootstrap-os - bootstrap-os
- system-packages
- name: Apply system configurations - name: Apply system configurations
import_tasks: 0080-system-configurations.yml import_tasks: 0080-system-configurations.yml

View File

@ -102,3 +102,4 @@ data:
} }
] ]
} }

View File

@ -102,3 +102,4 @@ spec:
protocol: TCP protocol: TCP
targetPort: 4244 targetPort: 4244
internalTrafficPolicy: Local internalTrafficPolicy: Local

View File

@ -4,14 +4,15 @@
vm_cpu_cores: 2 vm_cpu_cores: 2
vm_cpu_sockets: 1 vm_cpu_sockets: 1
vm_cpu_threads: 2 vm_cpu_threads: 2
vm_memory: 2048 vm_memory: 2048Mi
# Replace invalid characters so that we can use the branch name in kubernetes labels # Replace invalid characters so that we can use the branch name in kubernetes labels
branch_name_sane: "{{ branch | regex_replace('/', '-') }}" branch_name_sane: "{{ branch | regex_replace('/', '-') }}"
# Request/Limit allocation settings # Request/Limit allocation settings
cpu_allocation_ratio: 0.25
memory_allocation_ratio: 0.5 cpu_allocation_ratio: 0.5
memory_allocation_ratio: 1
# Default path for inventory # Default path for inventory
inventory_path: "/tmp/{{ test_name }}/inventory" inventory_path: "/tmp/{{ test_name }}/inventory"

View File

@ -4,8 +4,6 @@ kind: VirtualMachine
metadata: metadata:
name: "instance-{{ vm_id }}" name: "instance-{{ vm_id }}"
namespace: "{{ test_name }}" namespace: "{{ test_name }}"
annotations:
kubespray.com/ci.template-path: "tests/cloud_playbooks/roles/packet-ci/templates/vm.yml.j2"
labels: labels:
kubevirt.io/os: {{ cloud_image }} kubevirt.io/os: {{ cloud_image }}
spec: spec:
@ -36,10 +34,10 @@ spec:
threads: {{ vm_cpu_threads }} threads: {{ vm_cpu_threads }}
resources: resources:
requests: requests:
memory: "{{ vm_memory * memory_allocation_ratio }}Mi" memory: {{ vm_memory * memory_allocation_ratio }}
cpu: {{ vm_cpu_cores * cpu_allocation_ratio }} cpu: {{ vm_cpu_cores * cpu_allocation_ratio }}
limits: limits:
memory: "{{ vm_memory }}Mi" memory: {{ vm_memory }}
cpu: {{ vm_cpu_cores }} cpu: {{ vm_cpu_cores }}
networks: networks:
- name: default - name: default

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: almalinux-8 cloud_image: almalinux-8
mode: ha mode: ha
vm_memory: 3072 vm_memory: 3072Mi
# Kubespray settings # Kubespray settings
calico_bpf_enabled: true calico_bpf_enabled: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: almalinux-8 cloud_image: almalinux-8
mode: default mode: default
vm_memory: 3072 vm_memory: 3072Mi
# Kubespray settings # Kubespray settings
enable_nodelocaldns_secondary: true enable_nodelocaldns_secondary: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: almalinux-8 cloud_image: almalinux-8
mode: default mode: default
vm_memory: 3072 vm_memory: 3072Mi
# Kubespray settings # Kubespray settings
metrics_server_enabled: true metrics_server_enabled: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: almalinux-8 cloud_image: almalinux-8
mode: default mode: default
vm_memory: 3072 vm_memory: 3072Mi
# Use docker # Use docker
container_manager: docker container_manager: docker

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: almalinux-8 cloud_image: almalinux-8
mode: default mode: default
vm_memory: 3072 vm_memory: 3072Mi
# Kubespray settings # Kubespray settings
kube_network_plugin: kube-ovn kube_network_plugin: kube-ovn

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: rockylinux-8 cloud_image: rockylinux-8
mode: default mode: default
vm_memory: 3072 vm_memory: 3072Mi
# Kubespray settings # Kubespray settings
metrics_server_enabled: true metrics_server_enabled: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: rockylinux-9 cloud_image: rockylinux-9
mode: default mode: default
vm_memory: 3072 vm_memory: 3072Mi
# Kubespray settings # Kubespray settings
metrics_server_enabled: true metrics_server_enabled: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: rockylinux-9 cloud_image: rockylinux-9
mode: default mode: default
vm_memory: 3072 vm_memory: 3072Mi
# Kubespray settings # Kubespray settings
kube_network_plugin: cilium kube_network_plugin: cilium

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: ubuntu-2204 cloud_image: ubuntu-2204
mode: all-in-one mode: all-in-one
vm_memory: 1600 vm_memory: 1600Mi
# Kubespray settings # Kubespray settings
auto_renew_certificates: true auto_renew_certificates: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: ubuntu-2204 cloud_image: ubuntu-2204
mode: all-in-one mode: all-in-one
vm_memory: 1600 vm_memory: 1600Mi
# Kubespray settings # Kubespray settings
auto_renew_certificates: true auto_renew_certificates: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: ubuntu-2404 cloud_image: ubuntu-2404
mode: all-in-one mode: all-in-one
vm_memory: 1600 vm_memory: 1600Mi
# Kubespray settings # Kubespray settings
auto_renew_certificates: true auto_renew_certificates: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: ubuntu-2404 cloud_image: ubuntu-2404
mode: all-in-one mode: all-in-one
vm_memory: 1600 vm_memory: 1600Mi
# Kubespray settings # Kubespray settings
auto_renew_certificates: true auto_renew_certificates: true

View File

@ -2,7 +2,7 @@
# Instance settings # Instance settings
cloud_image: ubuntu-2404 cloud_image: ubuntu-2404
mode: node-etcd-client mode: node-etcd-client
vm_memory: 1600 vm_memory: 1600Mi
# Kubespray settings # Kubespray settings
auto_renew_certificates: true auto_renew_certificates: true

View File

@ -5,8 +5,8 @@ ara[server]==1.7.1
dopy==0.3.7 dopy==0.3.7
molecule==24.2.1 molecule==24.2.1
molecule-plugins[vagrant]==23.5.3 molecule-plugins[vagrant]==23.5.3
pytest-testinfra==10.1.0
python-vagrant==1.0.0 python-vagrant==1.0.0
pytest-testinfra==10.1.0
tox==4.15.0 tox==4.15.0
tzdata==2024.1
yamllint==1.35.1 yamllint==1.35.1
tzdata==2024.1

12
tests/scripts/check_typo.sh Executable file
View File

@ -0,0 +1,12 @@
#!/bin/bash
# cd to the root directory of kubespray
cd $(dirname $0)/../../
rm ./misspell*
set -e
wget https://github.com/client9/misspell/releases/download/v0.3.4/misspell_0.3.4_linux_64bit.tar.gz
tar -zxvf ./misspell_0.3.4_linux_64bit.tar.gz
chmod 755 ./misspell
git ls-files | grep -v OWNERS_ALIASES | xargs ./misspell -error

View File

@ -1,7 +0,0 @@
#!/bin/sh -e
export ANSIBLE_COLLECTIONS_PATH="./ansible_collections"
ansible-galaxy collection build --force
ansible-galaxy collection install kubernetes_sigs-kubespray-$(grep "^version:" galaxy.yml | awk '{print $2}').tar.gz
ansible-galaxy collection list $(egrep -i '(name:\s+|namespace:\s+)' galaxy.yml | awk '{print $2}' | tr '\n' '.' | sed 's|\.$||g') | grep "^kubernetes_sigs.kubespray"
test -f ansible_collections/kubernetes_sigs/kubespray/playbooks/cluster.yml
test -f ansible_collections/kubernetes_sigs/kubespray/playbooks/reset.yml

View File

@ -4,6 +4,7 @@ import sys
import glob import glob
from pathlib import Path from pathlib import Path
import yaml import yaml
from pydblite import Base
import re import re
import jinja2 import jinja2
import sys import sys
@ -13,7 +14,6 @@ from pprint import pprint
parser = argparse.ArgumentParser(description='Generate a Markdown table representing the CI test coverage') parser = argparse.ArgumentParser(description='Generate a Markdown table representing the CI test coverage')
parser.add_argument('--dir', default='tests/files/', help='folder with test yml files') parser.add_argument('--dir', default='tests/files/', help='folder with test yml files')
parser.add_argument('--output', default='docs/developers/ci.md', help='output file')
args = parser.parse_args() args = parser.parse_args()
@ -24,26 +24,25 @@ env = jinja2.Environment(loader=jinja2.FileSystemLoader(searchpath=sys.path[0]))
# Data represents CI coverage data matrix # Data represents CI coverage data matrix
class Data: class Data:
def __init__(self): def __init__(self):
self.container_managers = set() self.db = Base(':memory:')
self.network_plugins = set() self.db.create('container_manager', 'network_plugin', 'operating_system')
self.os = set()
self.combination = set()
def set(self, container_manager, network_plugin, os): def set(self, container_manager, network_plugin, operating_system):
self.container_managers.add(container_manager) self.db.insert(container_manager=container_manager, network_plugin=network_plugin, operating_system=operating_system)
self.network_plugins.add(network_plugin) self.db.commit()
self.os.add(os) def exists(self, container_manager, network_plugin, operating_system):
self.combination.add(container_manager+network_plugin+os) return len((self.db("container_manager") == container_manager) & (self.db("network_plugin") == network_plugin) & (self.db("operating_system") == operating_system)) > 0
def exists(self, container_manager, network_plugin, os):
return (container_manager+network_plugin+os) in self.combination
def jinja(self): def jinja(self):
template = env.get_template('table.md.j2') template = env.get_template('table.md.j2')
container_engines = sorted(self.container_managers) container_engines = list(self.db.get_unique_ids('container_manager'))
network_plugins = sorted(self.network_plugins) network_plugins = list(self.db.get_unique_ids("network_plugin"))
operating_systems = sorted(self.os) operating_systems = list(self.db.get_unique_ids("operating_system"))
container_engines.sort()
network_plugins.sort()
operating_systems.sort()
return template.render( return template.render(
container_engines=container_engines, container_engines=container_engines,
@ -92,5 +91,6 @@ for f in files:
network_plugin = y.get('kube_network_plugin', 'calico') network_plugin = y.get('kube_network_plugin', 'calico')
x = re.match(r"^[a-z-]+_([a-z0-9]+).*", f.name) x = re.match(r"^[a-z-]+_([a-z0-9]+).*", f.name)
operating_system = x.group(1) operating_system = x.group(1)
data.set(container_manager=container_manager, network_plugin=network_plugin, os=operating_system) data.set(container_manager=container_manager, network_plugin=network_plugin, operating_system=operating_system)
print(data.jinja(), file=open(args.output, 'w')) #print(data.markdown())
print(data.jinja())

View File

@ -0,0 +1,4 @@
jinja2
pathlib ; python_version < '3.10'
pyaml
pydblite

11
tests/scripts/md-table/test.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
set -euxo pipefail
echo "Install requirements..."
pip install -r ./tests/scripts/md-table/requirements.txt
echo "Generate current file..."
./tests/scripts/md-table/main.py > tmp.md
echo "Compare docs/developers/ci.md with actual tests in tests/files/*.yml ..."
cmp docs/developers/ci.md tmp.md