# Confluence Connector - Deployment

## Content

The Confluence Connector is delivered as part of the [Unique Connectors](https://github.com/Unique-AG/connectors) repository. Each release includes:

- Container images with the application code
- Helm charts for Kubernetes deployment
- Terraform modules for infrastructure provisioning
- Versioned documentation

## Container Image

Container images are available from GitHub Container Registry:

```
ghcr.io/unique-ag/connectors/services/confluence-connector:<version>
```

The image contains the application code plus all necessary runtime dependencies.

## Helm Chart

The Helm chart wraps the [`backend-service`](https://github.com/unique-ag/helm-charts) subchart (`~10.1.0`, aliased as `connector`), so image, env, resources, and volumes are nested under the `connector` key. Tenant-specific configuration lives under `connectorConfig`.

### Installation

Chart and app versions are maintained in:

- [`Chart.yaml`](https://github.com/Unique-AG/connectors/blob/main/services/confluence-connector/deploy/helm-charts/confluence-connector/Chart.yaml) for the current chart and app versions
- [`values.yaml`](https://github.com/Unique-AG/connectors/blob/main/services/confluence-connector/deploy/helm-charts/confluence-connector/values.yaml) for the current default values

**Helm (via `helm-git` plugin):**

> **Prerequisite:** The [`helm-git`](https://github.com/aslafy-z/helm-git) plugin is required for `git+https://` chart references. Install it with:
> 
> bash
> 
> ```
> helm plugin install https://github.com/aslafy-z/helm-git
> ```

```
helm repo add cfc git+https://github.com/Unique-AG/connectors@services/confluence-connector/deploy/helm-charts?ref=<release-tag>&depupdate=1
helm install confluence-connector cfc/confluence-connector \
  --version <version> \
  --namespace confluence-connector \
  --create-namespace \
  --values values.yaml
```

### Helm Values Example

For the current Helm defaults, use [`values.yaml`](https://github.com/Unique-AG/connectors/blob/main/services/confluence-connector/deploy/helm-charts/confluence-connector/values.yaml). For chart metadata, use [`Chart.yaml`](https://github.com/Unique-AG/connectors/blob/main/services/confluence-connector/deploy/helm-charts/confluence-connector/Chart.yaml). For detailed configuration reference, see [Configuration](https://docs.unique.ai/it-operators/integrations-connectors/confluence-connector/confluence-connector-operator-manual/confluence-connector-configuration).

```
connector:
  image:
    repository: ghcr.io/unique-ag/connectors/services/confluence-connector
    tag: "<version>"
  env:
    LOG_LEVEL: info
  envVars: []
  resources:
    limits:
      memory: 1Gi
    requests:
      cpu: 1
      memory: 512Mi

# Tenant configuration (rendered into a ConfigMap and mounted as YAML)
connectorConfig:
  enabled: true
  tenants:
    - name: default
      confluence:
        instanceType: cloud
        cloudId: "your-cloud-id"
        baseUrl: https://your-domain.atlassian.net
        auth:
          mode: oauth_2lo
          clientId: "your-oauth-client-id"
          clientSecret: "os.environ/CONFLUENCE_CLIENT_SECRET"
        apiRateLimitPerMinute: 1200
        ingestSingleLabel: ai-ingest
        ingestAllLabel: ai-ingest-all
      unique:
        authMode: cluster_local
        ingestionServiceBaseUrl: "http://node-ingestion.<namespace>:8091"
        scopeManagementServiceBaseUrl: "http://node-scope-management.<namespace>:8094"
        apiRateLimitPerMinute: 100
        serviceExtraHeaders:
          x-company-id: "your-company-id"
          x-user-id: "your-service-user-id"
      processing:
        concurrency: 1
        scanIntervalCron: "*/15 * * * *"
      ingestion:
        ingestionMode: flat
        scopeId: "your-scope-id"
        storeInternally: enabled
```

## Terraform Modules

Each release contains a Terraform module for secret provisioning:

### Secrets Module

The secrets module provisions Azure Key Vault secret placeholders for the connector's credentials (OAuth client secret, or PAT for Data Center below 10.1 only). The secret values are set to `<TO BE SET MANUALLY>` on creation and must be populated by the operator. The `lifecycle.ignore_changes` block ensures Terraform does not overwrite manually set values on subsequent applies.

```
module "confluence_connector_secrets" {
  source = "github.com/Unique-AG/connectors//services/confluence-connector/deploy/terraform/azure/confluence-connector-secrets"

key_vault_id = var.key_vault_id

# Optional: override default secret placeholders
  # secrets_placeholders = {
  #   confluence-connector-pat-dc              = { create = true, expiration_date = "2099-12-31T23:59:59Z" }
  #   confluence-connector-client-secret-cloud = { create = true, expiration_date = "2099-12-31T23:59:59Z" }
  # }
}
```

| Variable | Type | Required | Description |
| --- | --- | --- | --- |
| `key_vault_id` | `string` | Yes | The ID of the Azure Key Vault where secrets will be created |
| `secrets_placeholders` | `map(object)` | No | Map of secret names to create. Each entry supports `create` (bool) and `expiration_date` (string). Defaults include `confluence-connector-pat-dc` and `confluence-connector-client-secret-cloud` |

**Output:**`secret_names` \- list of created Key Vault secret names (each prefixed with `manual-`).

**Requirements:** Terraform `~> 1.10`, `hashicorp/azurerm` provider `~> 4`.

## Releases

All releases (including pre-releases) are available at: [https://github.com/Unique-AG/connectors/releases](https://github.com/Unique-AG/connectors/releases)

### Version Numbering

The connector follows [Semantic Versioning](https://semver.org/):

- **Major**: Breaking changes requiring migration
- **Minor**: New features, backward compatible
- **Patch**: Bug fixes, backward compatible

### Pre-Release Versions

Pre-release versions are marked with suffixes like `-alpha` or `-beta`:

```
2.0.0-alpha.1
2.0.0-beta.1
2.0.0  (GA)
```

### Release Tags

Release tags in the repository follow the format:

```
confluence-connector@<version>
```

## Version Support and Maintenance Policy

The Confluence Connector follows Unique's standard release lifecycle and maintenance expectations. The canonical source is [Upgrade and Release Process](https://docs.unique.ai/it-operators/installing-and-upgrading-unique/upgrade-and-release-process).

In short, plan operations around the latest release line and the previous supported line. Always verify current support boundaries and rollout expectations in the linked policy before upgrading production environments.

## Compatibility

The Confluence Connector is compatible with:

- Atlassian Confluence Cloud
- Atlassian Confluence Data Center

### Unique Platform Compatibility

| Connector Version | Minimum Unique Version |
| --- | --- |
| < 2.1.0 | TBD |
| >= 2.1.0 | `node-ingestion` \- `2026.24.0`+ |

Connector `2.1.0` introduces inlining of page images as base64 `data:` URIs (see [Configuration -- Image Attachments](https://docs.unique.ai/it-operators/integrations-connectors/confluence-connector/confluence-connector-operator-manual/confluence-connector-configuration)). Extracting searchable text from those inline images is performed platform-side and only exists from Unique `2026.24.0`. On earlier platform versions the connector still ingests the page, but embedded images contribute no searchable content. The platform-side extraction is additionally gated behind two company-scoped feature flags (`FEATURE_FLAG_ENABLE_HTML_INLINE_IMAGE_EXTRACTION_UN_20936` and `FEATURE_FLAG_ENABLE_MULTI_FILE_IMAGE_CONTENT_EXTRACTION_UN_20936`), both of which must be enabled for the company. The connector must also be configured with the extraction model via `ingestion.pageIngestionConfig` (see [Configuration -- Image Attachments](https://docs.unique.ai/it-operators/integrations-connectors/confluence-connector/confluence-connector-operator-manual/confluence-connector-configuration)).

## Upgrading

### Pre-Upgrade Checklist

1. Review release notes for breaking changes
2. Backup current Helm values
3. Test upgrade in non-production environment
4. Plan maintenance window if needed

### Upgrade Process

```
# Review changes before upgrading
helm diff upgrade confluence-connector cfc/confluence-connector \
  --version <new-version> \
  --namespace confluence-connector \
  --values values.yaml

# Perform upgrade
helm upgrade confluence-connector cfc/confluence-connector \
  --version <new-version> \
  --namespace confluence-connector \
  --values values.yaml
```

### Rollback

```
# List release history
helm history confluence-connector -n confluence-connector

# Rollback to previous version
helm rollback confluence-connector <revision> -n confluence-connector
```

## Troubleshooting

### Pod Not Starting

1. Check pod events:

```
kubectl describe pod -l app=confluence-connector -n confluence-connector
```

2. Check logs:

```
kubectl logs -l app=confluence-connector -n confluence-connector
```

### Configuration Validation Errors

The connector validates all tenant configuration at startup. Check the pod logs for specific validation error messages. See [Configuration](https://docs.unique.ai/it-operators/integrations-connectors/confluence-connector/confluence-connector-operator-manual/confluence-connector-configuration) for required fields and defaults.

### Authentication Errors

- Verify OAuth client credentials (or PAT for Data Center below 10.1) are valid
- Confirm the `os.environ/` references resolve to non-empty environment variables
- Check Kubernetes Secrets exist and contain the expected keys
- For `cluster_local` mode, ensure `x-company-id` and `x-user-id` headers are set

### Network Connectivity

- Verify egress to Confluence endpoints is allowed (Cloud: `api.atlassian.com`, `auth.atlassian.com`, `api.media.atlassian.com`, and `*.atlassian.net`; Data Center: your instance host)
- Verify connectivity to Unique Ingestion and Scope Management services
- For `external` mode, verify egress to the Zitadel IdP
- Check DNS resolution works
- Confirm firewall rules permit HTTPS traffic on port 443

See the network requirements table in the [Operator Guide](https://docs.unique.ai/it-operators/integrations-connectors/confluence-connector/confluence-connector-operator-manual) for the full list of required endpoints.

See [FAQ](https://docs.unique.ai/it-operators/integrations-connectors/confluence-connector/confluence-connector-faq) for more troubleshooting guidance.
