feat: Add ambient mode support to profile-controller #165
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CentralDashboard Integration Test | |
| on: | |
| pull_request: | |
| paths: | |
| - components/centraldashboard/** | |
| - releasing/version/VERSION | |
| - .github/workflows/central_dashboard_integration_test.yaml | |
| branches: | |
| - main | |
| - v*-branch | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event.number }} | |
| cancel-in-progress: true | |
| env: | |
| IMG: ghcr.io/kubeflow/kubeflow/central-dashboard | |
| TAG: integration-test | |
| jobs: | |
| integration-test: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Install KinD | |
| run: ./testing/gh-actions/install_kind.sh | |
| - name: Create KinD Cluster | |
| run: kind create cluster --config testing/gh-actions/kind-1-33.yaml | |
| - name: Install kustomize | |
| run: ./testing/gh-actions/install_kustomize.sh | |
| - name: Install Istio | |
| run: ./testing/gh-actions/install_istio.sh | |
| - name: Create Kubeflow Namespace | |
| run: kubectl create namespace kubeflow | |
| - name: Make Scripts Executable | |
| run: chmod +x testing/gh-actions/*.sh | |
| - name: Install Profile Controller (prerequisite) | |
| run: | | |
| cd components/profile-controller | |
| kustomize build config/overlays/kubeflow | kubectl apply -f - | |
| kubectl wait --for=condition=Available deployment -n kubeflow profiles-deployment --timeout=300s | |
| - name: Deploy CentralDashboard Component | |
| run: | | |
| ./testing/gh-actions/deploy_component.sh \ | |
| "centraldashboard" \ | |
| "components/centraldashboard" \ | |
| "${IMG}" \ | |
| "${TAG}" \ | |
| "manifests" \ | |
| "overlays/kserve" | |
| - name: Wait for CentralDashboard to be Ready | |
| run: | | |
| kubectl wait --for=condition=Ready pods -n kubeflow -l app=centraldashboard --timeout=300s | |
| kubectl wait --for=condition=Available deployment -n kubeflow centraldashboard --timeout=300s | |
| - name: Create Test Profile for Dashboard Testing | |
| run: | | |
| cat <<EOF | kubectl apply -f - | |
| apiVersion: kubeflow.org/v1 | |
| kind: Profile | |
| metadata: | |
| name: test-dashboard-profile | |
| spec: | |
| owner: | |
| kind: User | |
| name: [email protected] | |
| EOF | |
| for i in {1..60}; do | |
| if kubectl get namespace test-dashboard-profile >/dev/null 2>&1; then | |
| break | |
| fi | |
| echo "Waiting for namespace... (attempt $i/60)" | |
| sleep 5 | |
| done | |
| if ! kubectl get namespace test-dashboard-profile >/dev/null 2>&1; then | |
| exit 1 | |
| fi | |
| kubectl get profile test-dashboard-profile | |
| kubectl get namespace test-dashboard-profile | |
| - name: Validate Service | |
| run: | | |
| ./testing/gh-actions/test_service.sh validate-service centraldashboard kubeflow | |
| - name: Start Port Forward for Dashboard Testing | |
| run: | | |
| ./testing/gh-actions/test_service.sh port-forward centraldashboard kubeflow 8082 80 | |
| - name: Test Dashboard Health | |
| run: | | |
| ./testing/gh-actions/test_service.sh test-health centraldashboard kubeflow 8082 | |
| - name: Test Dashboard Web Interface | |
| run: | | |
| curl -f "http://localhost:8082/" >/dev/null 2>&1 | |
| curl -f "http://localhost:8082/healthz" >/dev/null 2>&1 | |
| RESPONSE=$(curl -s "http://localhost:8082/" | head -c 100) | |
| if [[ -n "$RESPONSE" ]]; then | |
| echo "Dashboard is serving content: ${RESPONSE:0:50}..." | |
| else | |
| exit 1 | |
| fi | |
| kubectl get service centraldashboard -n kubeflow | |
| kubectl get pods -n kubeflow -l app=centraldashboard | |
| - name: Test Dashboard Performance | |
| run: | | |
| ./testing/gh-actions/test_service.sh performance-test centraldashboard kubeflow 8082 80 10 | |
| - name: Test Dashboard Metrics | |
| run: | | |
| ./testing/gh-actions/test_service.sh test-metrics centraldashboard kubeflow 8082 | |
| - name: Check Dashboard Logs | |
| run: | | |
| ./testing/gh-actions/test_service.sh check-logs centraldashboard kubeflow 50 | |
| - name: Check for Errors in Logs | |
| run: | | |
| ./testing/gh-actions/test_service.sh check-errors centraldashboard kubeflow | |
| - name: Test Dashboard Configuration | |
| run: | | |
| kubectl get configmap centraldashboard-config -n kubeflow | |
| kubectl describe configmap centraldashboard-config -n kubeflow | |
| - name: Test Virtual Service (if Istio is configured) | |
| run: | | |
| kubectl get virtualservice centraldashboard -n kubeflow | |
| - name: Stop Port Forward | |
| run: | | |
| ./testing/gh-actions/test_service.sh stop-port-forward centraldashboard kubeflow 8082 | |
| - name: Cleanup Test Resources | |
| run: | | |
| kubectl delete profile test-dashboard-profile --ignore-not-found=true | |
| for i in {1..30}; do | |
| if ! kubectl get namespace test-dashboard-profile >/dev/null 2>&1; then | |
| break | |
| fi | |
| echo "Waiting for namespace deletion... (attempt $i/30)" | |
| sleep 5 | |
| done |