# Operations

Guides for operating a Union.ai self-hosted deployment after initial setup.

### [CI/CD integration](https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/cicd/page.md)

Deploy workflows from CI/CD pipelines using non-interactive authentication

### [Task routing](https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/task-routing/page.md)

Configure cluster pools, queues, and per-project routing so tasks run on a data plane

### [Troubleshooting](https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/troubleshooting/page.md)

Diagnose common control plane, data plane, and cloud-binding issues

### [Monitoring](https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/monitoring/_index)

Observability stack setup and metrics reference

## Subpages

- [CI/CD integration](https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/cicd/page.md)
  - Prerequisites
  - Step 1: Create a CI/CD OAuth application
  - Okta
  - Entra ID
  - Generic OIDC
  - Step 2: Build the API key
  - Step 3: Store in your CI secret manager
  - GitHub Actions
  - Jenkins
  - GitLab CI
  - Step 4: Configure `flyte deploy`
  - Step 5: Test
  - Okta
  - Entra ID
  - Generic OIDC
  - Permissions and RBAC
  - Key rotation
- [Troubleshooting](https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/troubleshooting/page.md)
  - Control plane
  - Pods not starting
  - TLS / certificate errors
  - Database connection failures
  - Data plane ↔ control plane
  - Data plane cannot resolve control plane services
  - Connection refused between data plane and control plane
  - Certificate verification errors
  - Service endpoints
  - Cloud-specific
  - AWS — IRSA authentication
  - GCP — Workload Identity
  - GCP — GCS access
  - Authentication
  - CRD install fails with `metadata.annotations: Too long: may not be more than 262144 bytes`
- [Task routing](https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/task-routing/page.md)
  - The queue model
  - Prerequisites
  - Step 1: Create a cluster pool
  - AWS
  - GCP
  - Step 2: Create a cluster
  - Step 3: Route projects to a queue
  - Changing existing routing
  - Repoint the bindings in the control-plane database
- [Monitoring](https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/monitoring/page.md)
  - Architecture
  - Self-hosted intra-cluster
  - Separate controlplane and dataplane clusters
  - Dashboards
  - Controlplane Overview
  - Dataplane Overview
  - Adding custom dashboards
  - Service Level Objectives (SLOs)
  - What the SLOs measure
  - Enabling SLO recording rules
  - Alerting
  - Operational alerts
  - SLO-based alerts
  - Configuring notifications
  - Configuration
  - ServiceMonitors and PrometheusRules
  - Dashboard label configuration
  - Accessing Grafana
  - Customization
  - Remote write
  - Using your own Prometheus
  - Managed Prometheus examples
  - Amazon Managed Prometheus (AMP)

---
**Source**: https://github.com/unionai/unionai-docs/blob/main/content/deployment/selfhosted/operations/_index.md
**HTML**: https://www.union.ai/docs/v2/union/deployment/selfhosted/operations/
