Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: adds an adr for clustering #58

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions adr/0001-record-architecture-decisions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# 1. Record architecture decisions

Date: 20224-02-04

## Status

Accepted

## Context

> NOTE:
>
> This file was automatically created when we used [adr-tools](https://github.com/npryce/adr-tools) to initialize the document log in the repo. ADRs on ADRs are a little silly, but it does give a lightweight way to direct the reader over to our contributor guide that has a lot more information.

We need to record the architectural decisions made on this project.

## Decision

We will use Architecture Decision Records, as [described by Michael Nygard](http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions), with a couple of small tweaks. See the [Documentation section in the Contributor guide](../CONTRIBUTING.md#documentation) for full details.

## Consequences

See Michael Nygard's article, linked above. For a lightweight ADR toolset, see Nat Pryce's [adr-tools](https://github.com/npryce/adr-tools).
26 changes: 26 additions & 0 deletions adr/0002-clustering-istio-exception.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# 0002. Clustering for Atlassian products

Date: 21 October 2024

## Status

**STATUS** Accepted

## Context

Per Atlassian documentation, Istio interferes with Atlassian products' ability to function properly, especially when running the programs in a clustered scenario. Some issues that arise when more than one instance in the cluster is present include session loss, login loops, data loss, etc.

### Attempted Solutions

- Disable PeerAuthentication in the Istio sidecar: The idea behind this solution was to prevent Istio from encrypting the traffic between the instances. However, this traffic still passes through Istio, which disrupts clustering.
- Remove Istio entirely from the namespace: This solution eliminates all encryption of traffic within the namespace, allowing multiple instances to communicate freely and function properly. However, this approach compromises traffic security and is not ideal from a security standpoint.
- Add PodAnnotations to exclude specific inbound/outbound ports: By using annotations such as traffic.sidecar.istio.io/excludeOutboundPorts: 40001,40011, Istio remains in the namespace but does not interfere with instance-to-instance traffic. This solution enabled full clustering functionality for the instances.
- Forego clustering and allocate maximum resources to a single instance.

## Decision

Since the customer will eventually have 1000+ users, a single Jira or Confluence node will not be sufficient. Clustering is, therefore, a must-have requirement. As such, we have decided to proceed with Solution #3.

## Consequences

Excluding specific ports from Istio, rather than removing it entirely, is the least disruptive way to mitigate risk while maintaining full functionality. This approach, combined with a DestinationRule to manage session cookies, allows the end user to leverage clustering while keeping the instances within the service mesh.
19 changes: 19 additions & 0 deletions adr/template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# NUMBER. TITLE

Date: DATE

## Status

STATUS

## Context

The issue motivating this decision, and any context that influences or constrains the decision.

## Decision

The change that we're proposing or have agreed to implement.

## Consequences

What becomes easier or more difficult to do and any risks introduced by the change that will need to be mitigated.