Skip to content

Commit

Permalink
feat: improved validation
Browse files Browse the repository at this point in the history
  • Loading branch information
paulobressan committed Jul 3, 2024
1 parent 6296fd7 commit 02625aa
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 88 deletions.
10 changes: 8 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,15 @@ jobs:
- name: Load Docker Image
run: kind load docker-image rpc:1.0 --name k8scluster

- name: Build Daemon
run: docker build -t daemon:1.0 -f docker/dockerfile.daemon .

- name: Load Docker Image
run: kind load docker-image daemon:1.0 --name k8scluster

- name: Apply main manifest
run: kubectl apply -f test/main.yaml
run: kubectl apply -f test/manifest.yaml

- name: Validate controller
- name: Validate
run: ./test/expect

1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
dev.db*
rpc.toml
daemon.toml
grpcurl*
35 changes: 30 additions & 5 deletions test/expect
Original file line number Diff line number Diff line change
@@ -1,11 +1,36 @@
wget https://github.com/fullstorydev/grpcurl/releases/download/v1.9.1/grpcurl_1.9.1_linux_x86_64.tar.gz
tar -zxvf ./grpcurl_1.9.1_linux_x86_64.tar.gz grpcurl

echo "Waiting for kafka to be ready..."

while true; do
pod_status=$(kubectl get pods -n demeter-kafka -o 'jsonpath={.items[*].status.conditions[?(@.type=="Ready")].status}' | grep True)

if [[ -n "$pod_status" ]]; then
break
else
echo "Kafka is not ready yet, waiting..."
sleep 5
fi
done

NODE_IP=$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type=="InternalIP")].address}')
NAMESPACE=$(./grpcurl -plaintext -d '{"name": "New Namespace"}' "$NODE_IP":30950 demeter.ops.v1alpha.ProjectService.CreateProject | jq -r '.namespace')
ATTEMPT=1
MAX_ATTEMPT=12
MAX_ATTEMPT=120

echo "Checking executation"
while [ $ATTEMPT -lt $MAX_ATTEMPT ]; do
let ATTEMPT=ATTEMPT+1
kubectl get pod -n demeter-rpc
kubectl logs -n demeter-rpc $(kubectl get pods -n demeter-rpc -o json | jq -r '.items | sort_by(.metadata.creationTimestamp) | .[0].metadata.name')
sleep 2
if kubectl get namespace "$NAMESPACE" &> /dev/null; then
echo "Namespace $NAMESPACE exists."
break
else
echo "Namespace $NAMESPACE not found. Retrying..."
sleep 2
let ATTEMPT=ATTEMPT+1
fi
done

if [ $ATTEMPT -eq $MAX_ATTEMPT ]; then
echo "Error: Namespace $NAMESPACE not found after $MAX_ATTEMPT attempts."
fi
133 changes: 54 additions & 79 deletions test/manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,103 +7,60 @@ metadata:
apiVersion: apps/v1
kind: Deployment
metadata:
name: zookeeper
name: redpanda
namespace: demeter-kafka
labels:
app: zookeeper
app: redpanda
spec:
selector:
matchLabels:
app: zookeeper
app: redpanda
template:
metadata:
labels:
app: zookeeper
app: redpanda
spec:
containers:
- name: zookeeper
image: confluentinc/cp-zookeeper:latest
ports:
- containerPort: 2181
env:
- name: ZOOKEEPER_CLIENT_PORT
value: "2181"
---
apiVersion: v1
kind: Service
metadata:
name: zookeeper
namespace: demeter-kafka
labels:
app: zookeeper
spec:
selector:
app: zookeeper
type: ClusterIP
ports:
- name: zookeeper
port: 2181
targetPort: 2181
protocol: TCP
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka
namespace: demeter-kafka
labels:
app: kafka
spec:
selector:
matchLabels:
app: kafka
template:
metadata:
labels:
app: kafka
spec:
containers:
- name: kafka
image: confluentinc/cp-kafka:latest
ports:
- containerPort: 9092
env:
- name: KAFKA_BROKER_ID
value: "1"
- name: KAFKA_ZOOKEEPER_CONNECT
value: "zookeeper.demeter-kafka.svc.cluster.local:2181"
- name: KAFKA_ADVERTISED_LISTENERS
value: "PLAINTEXT://kafka:9092"
- name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
value: "PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT"
- name: KAFKA_INTER_BROKER_LISTENER_NAME
value: "PLAINTEXT"
- name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
value: "1"
# lifecycle:
# postStart:
# exec:
# command: ["/bin/sh", "-c", "kafka-topics --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic events"]
- name: redpanda
image: docker.redpanda.com/redpandadata/redpanda:latest
args:
- redpanda
- start
- --kafka-addr internal://localhost:9092,external://0.0.0.0:19092
- --advertise-kafka-addr internal://localhost:9092,external://redpanda.demeter-kafka.svc.cluster.local:19092
- --pandaproxy-addr internal://localhost:8082,external://0.0.0.0:18082
- --advertise-pandaproxy-addr internal://localhost:8082,external://redpanda.demeter-kafka.svc.cluster.local:18082
- --schema-registry-addr internal://localhost:8081,external://0.0.0.0:18081
- --rpc-addr localhost:33145
- --advertise-rpc-addr localhost:33145
- --mode dev-container
- --smp 1
- --default-log-level=debug

ports:
- containerPort: 19092
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", " rpk topic create events"]
---
apiVersion: v1
kind: Service
metadata:
name: kafka
name: redpanda
namespace: demeter-kafka
labels:
app: kafka
app: redpanda
spec:
selector:
app: kafka
app: redpanda
type: ClusterIP
ports:
- name: kafka
port: 9092
targetPort: 9092
- name: redpanda
port: 19092
targetPort: 19092
protocol: TCP
---

# Daemon
apiVersion: v1
kind: Namespace
Expand All @@ -118,9 +75,6 @@ rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: v1
kind: ServiceAccount
Expand All @@ -138,6 +92,9 @@ subjects:
- kind: ServiceAccount
namespace: demeter-daemon
name: kube-rs
- kind: Group
name: system:serviceaccounts
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: kube-rs
Expand All @@ -146,7 +103,7 @@ roleRef:
apiVersion: v1
data:
daemon.toml: |
kafka_host="kafka.demeter-kafka.svc.cluster.local:9092"
brokers="redpanda.demeter-kafka.svc.cluster.local:19092"
kind: ConfigMap
metadata:
name: daemon-config
Expand Down Expand Up @@ -194,7 +151,7 @@ data:
rpc.toml: |
addr="0.0.0.0:80"
db_path="test.db"
kafka_host="kafka.demeter-kafka.svc.cluster.local:9092"
brokers="redpanda.demeter-kafka.svc.cluster.local:19092"
kind: ConfigMap
metadata:
name: rpc-config
Expand Down Expand Up @@ -231,3 +188,21 @@ spec:
- name: rpc-vol
configMap:
name: rpc-config
---
apiVersion: v1
kind: Service
metadata:
name: rpc
namespace: demeter-rpc
labels:
app: rpc
spec:
selector:
app: rpc
type: NodePort
ports:
- name: rpc
port: 80
targetPort: 80
nodePort: 30950
protocol: TCP
4 changes: 2 additions & 2 deletions test/setup
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

#!/bin/bash

kind create cluster --name k8scluster
Expand All @@ -9,4 +8,5 @@ kind load docker-image rpc:1.0 --name k8scluster
docker build -t daemon:1.0 -f docker/dockerfile.daemon .
kind load docker-image daemon:1.0 --name k8scluster


kubectl apply -f ./test/manifest.yaml
./test/expect

0 comments on commit 02625aa

Please sign in to comment.