diff --git a/Dockerfile b/Dockerfile index 94559f79d2ad6d8d386a58ec9738de697f18a4c0..415f484eccfc01b5e530b5d35f2052c1dc3640df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM alpine:3.14 LABEL name="Stackspin management" -LABEL version="4.4" +LABEL version="4.5" LABEL vendor1="Greenhost" ENV TAIKO_SKIP_CHROMIUM_DOWNLOAD=true @@ -10,11 +10,12 @@ ENV TAIKO_BROWSER_PATH=/usr/bin/chromium-browser ENV TAIKO_BROWSER_ARGS=--no-sandbox,--start-maximized,--disable-dev-shm-usage,--ignore-certificate-errors ADD https://github.com/fluxcd/flux2/releases/download/v0.20.1/flux_0.20.1_linux_amd64.tar.gz /tmp/ -# Download kubectl until it's packaged in alpine > 3.14 -ADD https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl /usr/local/bin/ COPY ./test/pytest/le-staging-bundle.pem /usr/local/share/ca-certificates/le-staging-bundle.pem COPY ./requirements.txt /requirements.txt RUN \ + # Install kubectl from alpine edge until 3.15 is released + apk --no-cache add kubectl=~1.22.3-r0 \ + --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing && \ apk --no-cache add \ bash=~5.1.4-r0 \ cargo=~1.52.1-r1 \ @@ -39,7 +40,6 @@ RUN \ yq=4.6.3-r2 && \ rm -rf /var/cache/* && \ mkdir /var/cache/apk && \ - chmod a+x /usr/local/bin/* && \ update-ca-certificates && \ pip install --no-cache-dir --ignore-installed six -r /requirements.txt && \ ln -s /usr/bin/python3 /usr/bin/python && \ diff --git a/ansible/group_vars/all/stackspin.yml b/ansible/group_vars/all/stackspin.yml index 8ee195e8ef6ba65b4bf18f3017f0424fe070b77d..db0c81d3c68f70228c2ebfc40e9fad5b7b280bef 100644 --- a/ansible/group_vars/all/stackspin.yml +++ b/ansible/group_vars/all/stackspin.yml @@ -20,18 +20,5 @@ k3s: # https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/ server_args: "--disable traefik --disable local-storage --disable servicelb --kube-apiserver-arg=event-ttl=48h0m0s --tls-san {{ ip_address }}" -helm: - # helm snap 2.15.0 and 2.15.1 broke for us - # (https://open.greenhost.net/stackspin/stackspin/issues/338), so we - # use a pinned version for now. - # We use the official helm install script for now which has no checksum. - # https://github.com/helm/helm/releases - version: 'v3.2.1' - -krew: - # https://github.com/kubernetes-sigs/krew/releases - version: 'v0.3.4' - checksum: 'sha256:6629b1d7ad215322361f8dd270396fd1a23555fdbde8dcc1ba4ad860978b319a' - docker_mirror: enabled: false diff --git a/ansible/roles/configure/files/bashrc_stackspin b/ansible/roles/configure/files/bashrc_stackspin index 8052b9b649b8f2a8385c9205cebb1b81fa36fa3d..71552b02768fc2983f7a5cce1488d51d99db612e 100644 --- a/ansible/roles/configure/files/bashrc_stackspin +++ b/ansible/roles/configure/files/bashrc_stackspin @@ -7,6 +7,3 @@ if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion fi - -# Enable krew plugin manager for kubectl -export PATH="$HOME/.krew/bin:$PATH" diff --git a/ansible/roles/configure/files/stackspin-version-info.sh b/ansible/roles/configure/files/stackspin-version-info.sh index 9c36645a2a241d4ef1fef1f6e55c3a8112bf8037..29b4edcea7ff387c5c02f0342c9d8d38f6d67d5f 100755 --- a/ansible/roles/configure/files/stackspin-version-info.sh +++ b/ansible/roles/configure/files/stackspin-version-info.sh @@ -1,11 +1,12 @@ #!/bin/bash -x cat /var/lib/Stackspin/version.txt + kubectl version -kubectl krew version -kubectl krew list -helm version -helm plugin list +kubectl plugin list + k3s --version +helm version +helm plugin list helm ls diff --git a/ansible/roles/configure/tasks/main.yml b/ansible/roles/configure/tasks/main.yml index 67b58e895ce92f5ec97d5e4247b4d996d4e2729d..39cee9d033cfe2dcd5d7f42285d74157eb9d9f89 100644 --- a/ansible/roles/configure/tasks/main.yml +++ b/ansible/roles/configure/tasks/main.yml @@ -45,7 +45,6 @@ - name: Deploy /root/.bashrc_stackspin tags: - bash - - krew copy: dest: /root/.bashrc_stackspin src: bashrc_stackspin diff --git a/ansible/roles/pre-configure/tasks/main.yml b/ansible/roles/pre-configure/tasks/main.yml index 530f814febc9de0f61f16120eb8d7c16343ebebe..9546ac2174f84226548bdde93e3f641c8309a62d 100644 --- a/ansible/roles/pre-configure/tasks/main.yml +++ b/ansible/roles/pre-configure/tasks/main.yml @@ -44,81 +44,28 @@ with_items: - python3-pip -# We work around a Debian Bullseye issue with installing snaps on Xen nodes: -# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=983357 (Debian link) -# https://code.greenhost.net/greenhost/sysops/-/issues/915#note_108038 (GH # internal link) -# Once the debian issue is solved and Greenhost has patched the kernel, these -# three workaround commands can be removed. -- name: Workaround debian bug 1/3 - shell: "journalctl -k | awk '/input: Xen Virtual Keyboard/ {print $11}'" - args: - # Only run this if kubectl snap has not been installed yet - creates: /snap/bin/kubectl - register: kbd_device - failed_when: false - changed_when: false - -- name: Workaround debian bug 2/3 - # kubectl needs to get installed as "classic" snap - mount: - opts: bind - src: /dev/zero - path: /sys/{{ kbd_device.stdout }}/uevent - fstype: none - state: mounted - when: kbd_device.stdout != "" and kbd_device.stdout != "skipped, since /snap/bin/kubectl exists" - -- name: Install kubectl snap - # kubectl needs to get installed as "classic" snap - command: snap install --classic kubectl - args: - creates: /snap/bin/kubectl - -- name: Workaround debian bug 3/3 - # kubectl needs to get installed as "classic" snap - mount: - path: /sys/{{ kbd_device.stdout }}/uevent - state: unmounted - when: kbd_device.stdout != "" and kbd_device.stdout != "skipped, since /snap/bin/kubectl exists" - -- name: Create kubectl symlink to /usr/local/bin - file: - state: link - src: /snap/bin/kubectl - dest: /usr/local/bin/kubectl - -- name: Get current helm version - tags: - - helm - # {{ '{{' }} escapes the curly braces needed by the `--template` argument - shell: "helm version --template \"{{ '{{' }} .Version {{ '}}' }}\"" - failed_when: false - register: helm_version - changed_when: false - -- name: Show current helm version - tags: - - helm - - debug - debug: - msg: 'Current helm version is: {{ helm_version.stdout }}' - -- name: Download helm install script +- name: Install kubectl and helm snap tags: + - snap + # kubectl and helm both need to get installed as "classic" snap + command: "snap install --classic {{ item }}" + args: + creates: "/snap/bin/{{ item }}" + with_items: - helm - get_url: - url: https://raw.githubusercontent.com/helm/helm/master/scripts/get - dest: /usr/local/bin/get-helm - force: yes - mode: '0755' - become: true - when: helm_version.stdout != helm.version + - kubectl -- name: Install helm +- name: Create kubectl and helm symlinks to /usr/local/bin tags: + - snap + file: + state: link + src: "/snap/bin/{{ item }}" + dest: "/usr/local/bin/{{ item }}" + force: true + with_items: - helm - command: /usr/local/bin/get-helm --version {{ helm.version }} - when: helm_version.stdout != helm.version + - kubectl - name: Configure firewall import_tasks: firewall.yml diff --git a/ansible/roles/setup-kubernetes/tasks/krew.yml b/ansible/roles/setup-kubernetes/tasks/krew.yml deleted file mode 100644 index 4b0f2fe694424981a9777c3f28c9253a10dffa6a..0000000000000000000000000000000000000000 --- a/ansible/roles/setup-kubernetes/tasks/krew.yml +++ /dev/null @@ -1,58 +0,0 @@ ---- -- name: Get current krew version (plugin manager for kubectl) - tags: - - kubectl - - plugin - - krew - shell: kubectl krew version | grep GitTag | awk {'print $2'} - failed_when: false - register: krew_version - changed_when: false - -- name: Show current krew version - tags: - - kubectl - - plugin - - krew - debug: - msg: 'Show current krew version is: {{ krew_version.stdout }}' - -- name: Download krew archive - tags: - - kubectl - - plugin - - krew - get_url: - url: 'https://github.com/kubernetes-sigs/krew/releases/download/{{ krew.version }}/krew.tar.gz' - dest: '/tmp/krew.{{ krew.version }}.tar.gz' - checksum: '{{ krew.checksum }}' - when: krew_version.stdout != krew.version - -- name: Download krew resource yaml - tags: - - kubectl - - plugin - - krew - get_url: - url: 'https://github.com/kubernetes-sigs/krew/releases/download/{{ krew.version }}/krew.yaml' - dest: '/tmp/krew.{{ krew.version }}.yaml' - when: krew_version.stdout != krew.version - -- name: Unarchive downloaded krew archive - tags: - - kubectl - - plugin - - krew - unarchive: - src: '/tmp/krew.{{ krew.version }}.tar.gz' - dest: /tmp - remote_src: yes - when: krew_version.stdout != krew.version - -- name: Instal krew plugin manager for kubectl - tags: - - kubectl - - plugin - - krew - command: "/tmp/krew-linux_amd64 install --manifest=/tmp/krew.{{ krew.version }}.yaml" - when: krew_version.stdout != krew.version diff --git a/ansible/roles/setup-kubernetes/tasks/main.yml b/ansible/roles/setup-kubernetes/tasks/main.yml index 563e90aa4a01e9039f55c29dd8d42dbfad92b390..48bbcacf83d23a3af31fd91e110cde1199b63071 100644 --- a/ansible/roles/setup-kubernetes/tasks/main.yml +++ b/ansible/roles/setup-kubernetes/tasks/main.yml @@ -1,4 +1,3 @@ --- - import_tasks: k3s.yml -- import_tasks: krew.yml - import_tasks: flux.yml diff --git a/requirements.txt b/requirements.txt index 0053234caa3fa96f272544c2c98bd13c71a63fb5..3f8b0deedcc54e5388d1417ad388ba3968d5bd50 100644 --- a/requirements.txt +++ b/requirements.txt @@ -54,7 +54,7 @@ oauthlib==3.1.1 # via requests-oauthlib orderedmultidict==1.0.1 # via htpasswd -packaging==21.0 +packaging==21.2 # via pytest paramiko==2.8.0 # via -r requirements.in @@ -78,7 +78,7 @@ pynacl==1.4.0 # via paramiko pyopenssl==21.0.0 # via -r requirements.in -pyparsing==3.0.5 +pyparsing==2.4.7 # via packaging pytest==6.2.5 # via @@ -108,6 +108,7 @@ rsa==4.7.2 six==1.16.0 # via # bcrypt + # google-auth # kubernetes # orderedmultidict # pynacl