Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(tests): Migrate from manifests to helm in CI tests #1273

Merged
merged 2 commits into from
Jun 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/ci-latest-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ jobs:

- name: Deploy KubeArmor into Kubernetes
run: |
sed -i 's/kubearmor\/kubearmor:latest/kubearmor\/kubearmor:${{ steps.vars.outputs.tag }}/g' ./KubeArmor/build/kubearmor-test-docker.yaml
sed -i 's/kubearmor\/kubearmor-init:latest/kubearmor\/kubearmor-init:${{ steps.vars.outputs.tag }}/g' ./KubeArmor/build/kubearmor-test-docker.yaml
kubectl apply -f deployments/CRD
kubectl apply -f ./KubeArmor/build/kubearmor-test-docker.yaml
kubectl wait --for=condition=ready --timeout=5m -n kube-system pod -l kubearmor-app=kubearmor
helm upgrade --install kubearmor ./deployments/helm \
--values ./KubeArmor/build/kubearmor-helm-test-values.yaml \
-n kube-system;

kubectl wait --for=condition=ready --timeout=5m -n kube-system pod -l kubearmor-app

- name: Test KubeArmor using Ginkgo
run: |
Expand Down
54 changes: 42 additions & 12 deletions .github/workflows/ci-test-controllers.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,61 @@
name: ci-test-controllers

on:
push:
daemon1024 marked this conversation as resolved.
Show resolved Hide resolved
branches:
- "main"
paths:
- "pkg/**"
pull_request:
branches:
- "main"
paths:
- "pkg/**"
- ".github/workflows/ci-test-controllers.yml"

jobs:
kubearmor-controller-build:
name: Build and Deploy KubeArmorController
defaults:
run:
working-directory: ./pkg/KubeArmorController
kubearmor-controller-test:
name: Build and Test KubeArmorController Using Ginkgo
runs-on: ubuntu-20.04
timeout-minutes: 20
timeout-minutes: 30
steps:
- uses: actions/setup-go@v3
with:
go-version: "v1.20"

- uses: actions/checkout@v3

- name: Setup a Kubernetes environment
run: ./.github/workflows/install-k3s.sh

- name: Build KubeArmorController
run: make docker-build TAG=latest
run: make -C pkg/KubeArmorController/ docker-build TAG=latest

- name: Install KubeArmor Latest and KubeArmorController using Helm
run: |
# install kubearmor latest and controller built in this PR
helm upgrade --install kubearmor ./deployments/helm \
--values ./KubeArmor/build/kubearmor-helm-test-values.yaml \
--set kubearmorController.imagePullPolicy=Never \
--set kubearmor.imagePullPolicy=Always \
--set kubearmor.image.tag=latest \
-n kube-system;
kubectl wait --for=condition=ready --timeout=5m -n kube-system pod -l kubearmor-app
kubectl get pods -A

- name: Test KubeArmor using Ginkgo
run: |
go install -mod=mod github.com/onsi/ginkgo/v2/ginkgo
make -C tests/
timeout-minutes: 20

- name: Get karmor sysdump
if: ${{ failure() }}
run: |
kubectl describe pod -n kube-system -l kubearmor-app=kubearmor
curl -sfL http://get.kubearmor.io/ | sudo sh -s -- -b /usr/local/bin
mkdir -p /tmp/kubearmor/ && cd /tmp/kubearmor && karmor sysdump

- name: Archive log artifacts
if: ${{ failure() }}
uses: actions/upload-artifact@v3
with:
name: kubearmor.logs
path: |
/tmp/kubearmor/
/tmp/kubearmor.*
17 changes: 10 additions & 7 deletions .github/workflows/ci-test-ginkgo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,28 +45,31 @@ jobs:
- name: Setup a Kubernetes environment
run: ./.github/workflows/install-k3s.sh

- name: Install KubeArmor Controller
run: ./.github/workflows/install-kubearmor-controller.sh

- name: Generate KubeArmor artifacts
run: |
GITHUB_SHA=$GITHUB_SHA ./KubeArmor/build/build_kubearmor.sh

- name: Run KubeArmor
run: |
kubectl apply -f deployments/CRD
if [ ${{ matrix.runtime }} == "containerd" ]; then
docker save kubearmor/kubearmor-init:latest | sudo k3s ctr images import -
docker save kubearmor/kubearmor:latest | sudo k3s ctr images import -
kubectl apply -f ./KubeArmor/build/kubearmor-test-k3s.yaml

helm upgrade --install kubearmor ./deployments/helm \
--values ./KubeArmor/build/kubearmor-helm-test-values.yaml \
--set environment.name=k3s \
-n kube-system;
else
if [ ${{ matrix.runtime }} == "crio" ]; then
sudo podman pull docker-daemon:kubearmor/kubearmor-init:latest
sudo podman pull docker-daemon:kubearmor/kubearmor:latest
fi
kubectl apply -f ./KubeArmor/build/kubearmor-test-${{ matrix.runtime }}.yaml
helm upgrade --install kubearmor ./deployments/helm \
--values ./KubeArmor/build/kubearmor-helm-test-values.yaml \
--set environment.name=${{ matrix.runtime }} \
-n kube-system;
fi
kubectl wait --for=condition=ready --timeout=5m -n kube-system pod -l kubearmor-app=kubearmor
kubectl wait --for=condition=ready --timeout=5m -n kube-system pod -l kubearmor-app
kubectl get pods -A

- name: Test KubeArmor using Ginkgo
Expand Down
85 changes: 0 additions & 85 deletions .github/workflows/ci-test-helm-charts.yaml

This file was deleted.

13 changes: 12 additions & 1 deletion KubeArmor/build/kubearmor-helm-test-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,27 @@ kubearmorRelay:
enabled: true
image:
tag: latest

kubearmorInit:
image:
tag: latest
imagePullPolicy: Never

# we pull the latest controller image by default
kubearmorController:
image:
tag: latest
imagePullPolicy: Never
imagePullPolicy: Always

environment:
name: docker

kubearmorConfigMap:
defaultFilePosture: block
defaultCapabilitiesPosture: block
defaultNetworkPosture: block
visibility: process,file,network

kubearmor:
image:
tag: latest
Expand Down
Loading
Loading