Add functional test for java-spiffe-helper (#207)
Add functional test for java-spiffe-helper Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Only run on pull_request Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * No need for selector, there is only one pod Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Implement suggested changes Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Use tee for logs Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * A few changes according to comments Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Extend workflow to support multiple semver ranges for SPIRE helm charts Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * Extend workflow to support multiple semver ranges for SPIRE helm charts Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> * USe SemVer range instead of fixed version Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> --------- Signed-off-by: Moritz Schmitz von Hülst <moritz.schmitz@oviva.com> Co-authored-by: Max Lambrecht <maxlambrecht@gmail.com>
This commit is contained in:
parent
c5629c58e7
commit
616e8bc3d1
|
|
@ -0,0 +1,49 @@
|
|||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: java-spiffe-helper
|
||||
data:
|
||||
java-spiffe-helper.properties: |
|
||||
keyStorePath=/tmp/keystore.p12
|
||||
keyStorePass=password
|
||||
keyPass=password
|
||||
trustStorePath=/tmp/truststore.p12
|
||||
trustStorePass=password
|
||||
keyStoreType=pkcs12
|
||||
keyAlias=spiffe
|
||||
spiffeSocketPath=unix:/run/spire/agent-sockets/spire-agent.sock
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: java-spiffe-helper
|
||||
labels:
|
||||
app: java-spiffe-helper
|
||||
spec:
|
||||
containers:
|
||||
- name: java-spiffe-helper
|
||||
image: java-spiffe-helper:test
|
||||
imagePullPolicy: IfNotPresent
|
||||
readinessProbe:
|
||||
initialDelaySeconds: 15
|
||||
exec:
|
||||
command:
|
||||
- ls
|
||||
- /tmp/truststore.p12
|
||||
volumeMounts:
|
||||
- name: properties
|
||||
mountPath: /app/java-spiffe-helper.properties
|
||||
subPath: java-spiffe-helper.properties
|
||||
- name: spire-sockets
|
||||
mountPath: /run/spire/agent-sockets
|
||||
readOnly: true
|
||||
restartPolicy: Never
|
||||
volumes:
|
||||
- name: properties
|
||||
configMap:
|
||||
name: java-spiffe-helper
|
||||
- name: spire-sockets
|
||||
hostPath:
|
||||
path: /run/spire/agent-sockets
|
||||
type: DirectoryOrCreate
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
spire-server:
|
||||
ca_subject:
|
||||
common_name: common_name
|
||||
controllerManager:
|
||||
identities:
|
||||
clusterSPIFFEIDs:
|
||||
default:
|
||||
enabled: false
|
||||
java-spiffe-helper:
|
||||
spiffeIDTemplate: spiffe://{{ .TrustDomain }}/ns/{{ .PodMeta.Namespace }}/sa/{{ .PodSpec.ServiceAccountName }}
|
||||
namespaceSelector:
|
||||
matchLabels:
|
||||
kubernetes.io/metadata.name: default
|
||||
podSelector:
|
||||
matchLabels:
|
||||
app: java-spiffe-helper
|
||||
dnsNameTemplates:
|
||||
- dnsNameTemplate
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
name: Java SPIFFE Helper CI
|
||||
|
||||
on:
|
||||
- pull_request
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test with SPIRE helm chart in version ${{ matrix.spire-chart-version.spire }}
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
spire-chart-version:
|
||||
- spire: '0.17.x'
|
||||
crds: '0.3.x'
|
||||
|
||||
env:
|
||||
HELM_REPOSITORY: https://spiffe.github.io/helm-charts-hardened/
|
||||
KEYSTORE_COMMON_NAME: keystore-${{ github.sha }}
|
||||
TRUSTSTORE_COMMON_NAME: truststore-${{ github.sha }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Setup QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
- name: Setup buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
- name: Build container
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
context: .
|
||||
tags: java-spiffe-helper:test
|
||||
load: true
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
- name: Create local kubernetes cluster
|
||||
uses: helm/kind-action@v1
|
||||
with:
|
||||
cluster_name: kind
|
||||
- name: Load container image onto kubernetes node
|
||||
run: kind load docker-image java-spiffe-helper:test --name kind
|
||||
- name: Install SPIRE CRDs in version ${{ matrix.spire-chart-version.crds }}
|
||||
run: |
|
||||
helm upgrade --install -n spire-server spire-crds spire-crds \
|
||||
--repo ${{ env.HELM_REPOSITORY }} \
|
||||
--version ${{ matrix.spire-chart-version.crds }} \
|
||||
--create-namespace
|
||||
- name: Install SPIRE server in version ${{ matrix.spire-chart-version.spire }} and set to-be-verified values for common name
|
||||
run: |
|
||||
helm upgrade --install -n spire-server spire spire \
|
||||
--repo ${{ env.HELM_REPOSITORY }} \
|
||||
--version ${{ matrix.spire-chart-version.spire }} \
|
||||
--values .github/ci-k8s-configs/spire-values.yaml \
|
||||
--set spire-server.ca_subject.common_name="$TRUSTSTORE_COMMON_NAME" \
|
||||
--set spire-server.controllerManager.identities.clusterSPIFFEIDs.java-spiffe-helper.dnsNameTemplates[0]="$KEYSTORE_COMMON_NAME"
|
||||
- name: Deploy java-spiffe-helper pod to local cluster
|
||||
run: kubectl apply -f .github/ci-k8s-configs/java-spiffe-helper.yaml
|
||||
- name: Wait for java-spiffe-helper pod to become ready
|
||||
run: kubectl wait pod/java-spiffe-helper --for condition=Ready --timeout=90s
|
||||
- name: Output logs of java-spiffe-helper pod
|
||||
if: ${{ failure() }}
|
||||
run: kubectl logs pod/java-spiffe-helper
|
||||
- name: Describe java-spiffe-helper pod
|
||||
if: ${{ failure() }}
|
||||
run: kubectl describe pod/java-spiffe-helper
|
||||
- name: Copy keystore from java-spiffe-helper pod
|
||||
run: kubectl cp java-spiffe-helper:/tmp/keystore.p12 keystore.p12
|
||||
- name: Copy truststore from java-spiffe-helper pod
|
||||
run: kubectl cp java-spiffe-helper:/tmp/truststore.p12 truststore.p12
|
||||
- name: Verify keystore contains configured common name
|
||||
run: keytool -v -list -keystore keystore.p12 -storepass password | grep "CN=${{ env.KEYSTORE_COMMON_NAME }}"
|
||||
- name: Output keystore contents
|
||||
if: ${{ failure() }}
|
||||
run: keytool -v -list -keystore keystore.p12 -storepass password
|
||||
- name: Verify truststore contains configured common name
|
||||
run: keytool -v -list -keystore truststore.p12 -storepass password | grep "CN=${{ env.TRUSTSTORE_COMMON_NAME }}"
|
||||
- name: Output truststore contents
|
||||
if: ${{ failure() }}
|
||||
run: keytool -v -list -keystore truststore.p12 -storepass password
|
||||
Loading…
Reference in New Issue