Visitar URL original
Merge branch 'master' into feat/operator-dual-stack · feast-dev/feast@cfab204 · GitHub
Skip to content

feat: Add dualStack server option to the Feast operator #3553

feat: Add dualStack server option to the Feast operator

feat: Add dualStack server option to the Feast operator #3553

# .github/workflows/operator-e2e-integration-tests.yml
name: Operator e2e tests
on:
push:
branches:
- main
pull_request:
types:
- opened
- synchronize
- labeled
paths:
- 'infra/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
operator-e2e-tests:
timeout-minutes: 40
if:
((github.event.action == 'labeled' && (github.event.label.name == 'approved' || github.event.label.name == 'lgtm' || github.event.label.name == 'ok-to-test')) ||
(github.event.action != 'labeled' && (contains(github.event.pull_request.labels.*.name, 'ok-to-test') || contains(github.event.pull_request.labels.*.name, 'approved') || contains(github.event.pull_request.labels.*.name, 'lgtm')))) &&
github.repository == 'feast-dev/feast'
runs-on: ubuntu-latest
services:
kind:
# Specify the Kubernetes version
image: kindest/node:v1.30.6
env:
KIND_CLUSTER: "operator-e2e-cluster"
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@v1.3.1
with:
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: false
swap-storage: false
tool-cache: false
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.26.0
- name: Create KIND cluster
run: |
cat <<EOF | kind create cluster --name $KIND_CLUSTER --wait 10m --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraMounts:
- hostPath: /mnt/kind
containerPath: /var/lib/containerd
EOF
- name: Set up kubernetes context
run: |
kubectl config use-context kind-$KIND_CLUSTER
echo "kind context is switched to cluster kind-$KIND_CLUSTER"
- name: Run E2E tests
run: |
# Run the e2e tests
cd infra/feast-operator/
make test-e2e
- name: Run Previous version tests
run: |
# Run the previous version tests
cd infra/feast-operator/
make test-previous-version
- name: Clean up docker images
if: always()
run: |
docker images --format '{{.Repository}}:{{.Tag}}' | grep 'feast' | xargs -r docker rmi -f
docker system prune -a -f
- name: Run Upgrade tests
run: |
# Run the upgrade tests
cd infra/feast-operator/
make test-upgrade
- name: Debug KIND Cluster when there is a failure
if: failure()
run: |
echo "=== FeatureStore CRs and conditions ==="
kubectl get featurestores.feast.dev --all-namespaces -o yaml || true
echo ""
echo "=== Pods ==="
kubectl get pods --all-namespaces -o wide
echo ""
echo "=== Pod details for non-Running pods ==="
for ns in $(kubectl get ns -o jsonpath='{.items[*].metadata.name}'); do
for pod in $(kubectl get pods -n "$ns" --field-selector='status.phase!=Running' -o jsonpath='{.items[*].metadata.name}' 2>/dev/null); do
echo "--- Pod $ns/$pod ---"
kubectl describe pod "$pod" -n "$ns" 2>/dev/null | tail -30
echo "--- Logs ---"
kubectl logs "$pod" -n "$ns" --all-containers --tail=50 2>/dev/null || true
done
done
echo ""
echo "=== Operator logs ==="
kubectl logs -n feast-operator-system deploy/feast-operator-controller-manager --tail=100 2>/dev/null || true
echo ""
echo "=== Cluster RBAC for feast ==="
kubectl get clusterroles,clusterrolebindings -o name | grep feast || true
echo ""
echo "=== Events ==="
kubectl get events --all-namespaces --sort-by='.lastTimestamp' | tail -50
echo ""
echo "=== Nodes ==="
kubectl describe nodes
- name: Clean up
if: always()
run: |
# Delete the KIND cluster after tests
kind delete cluster --name kind-$KIND_CLUSTER