Skip to content

Refresh the HA guide#24479

Merged
ptgott merged 6 commits intomasterfrom
paul.gottschling/22742-ha
May 4, 2023
Merged

Refresh the HA guide#24479
ptgott merged 6 commits intomasterfrom
paul.gottschling/22742-ha

Conversation

@ptgott
Copy link
Copy Markdown
Contributor

@ptgott ptgott commented Apr 12, 2023

Closes #22742

Update the HA guide to reflect v12 changes in the teleport-cluster Helm chart, e.g., running the Auth Service and Proxy Service in separate compute pools.

Comment thread docs/pages/deploy-a-cluster/high-availability.mdx Outdated
order to enable secure access to your Teleport cluster's infrastructure.

We recommend configuring your load balancer to route traffic across multiple
Neither load balancer must terminate TLS. Both load balancers must transparently
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Neither load balancer must" makes it sound like terminating TLS is optional and the LB doesn't have to, but can, terminate TLS.

Should we be stricter here and say "You must not terminate TLS on either of these load balancers"??

(That said, we technically do support ALBs for most protocols now..)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the architectural changes you would need to support ALBs aren't too different from the setup we recommend in this guide, I think it would make sense to list the protocols that support ALBs now.

How would TLS termination work with ALBs, given that if they don't terminate TLS they wouldn't know whether they're receiving HTTP messages?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Paging @greedy52 who can answer this better than I can

Copy link
Copy Markdown
Contributor

@hugoShaka hugoShaka Apr 17, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Afaik:

  • Proxy -> Auth LB must not terminate TLS
  • Client -> Proxy LB can terminate TLS since 13.0 if the LB supports ALPN (but this might come with additional restrictions for kube access)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! What additional restrictions are these? Is there anything else I should know, @greedy52?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As mentioned, it doesn't support all protocols yet and it also has some performance penalties which we may do some performance improvement in v14. So I think layer 4 LBs should still be recommended way to set up HA.

I was planning to write up a separate page for TLS Routing behind layer 7 LB preview. Maybe I can add a note here to link to that page when it's available?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good! I'll keep the recommendation the way it is for now and we can add the note when the L7 guide is ready.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest "Both load balancers must not" as a clearer phrasing.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think "Both..must not" is ambiguous, since it can also mean "one can". I've suggested:

Both load balancers must transparently forward the TCP traffic they receive,
without terminating TLS. In other words, these must be Layer 4 load balances,
not Layer 7 (e.g., HTTP) load balancers.

| `3023` | SSH port for clients connect to. |
| <nobr>`3023`</nobr> | SSH port for clients connect to. |
| `3024` | SSH port used to create reverse SSH tunnels from behind-firewall environments. |
| `443` | HTTPS connections to authenticate `tsh` users into the cluster. The same connection is used to serve a Web UI. |
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we specifically tell the user to configure the Teleport proxy to listen on port 443 in this guide?

Would it make more sense to list both the frontend and backend ports here, and have the LB direct incoming traffic on port 443 to port 3080 on the proxy? (Teleport would require additional privileges to bind to 443 as opposed to 3080)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like there's no web_listen_addr example here. I'll change the LB instructions!

load balancer to forward traffic from port `3025` to port `3025` on an available
Auth Service instance.

If you are running your Teleport cluster on Kubernetes, you can configure your
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, this confuses me a bit. Auth never listens on port 3026.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm basing this on the teleport-cluster chart, which enables the Kubernetes Service on Auth Service pods:

kubernetes_service:
enabled: true
listen_addr: 0.0.0.0:3026
public_addr: "{{ include "teleport-cluster.auth.serviceFQDN" . }}:3026"

Comment thread docs/pages/deploy-a-cluster/high-availability.mdx Outdated
Comment thread docs/pages/deploy-a-cluster/high-availability.mdx Outdated
ptgott added 3 commits April 21, 2023 09:49
Closes #22742

Update the HA guide to reflect v12 changes in the `teleport-cluster`
Helm chart, e.g., running the Auth Service and Proxy Service in separate
compute pools.
Remove mentions of running the Kubernetes Service on the Auth Service
hosts
@ptgott ptgott force-pushed the paul.gottschling/22742-ha branch from 1babb3a to 0a42eec Compare April 21, 2023 13:49
@ptgott
Copy link
Copy Markdown
Contributor Author

ptgott commented Apr 25, 2023

@zmb3 Checking to see if there is more work I should be doing on this. It looks like @greedy52 will be adding separate docs for L7 LBs, and I've removed the Kubernetes-specific language.

Also paging @alexfornuto for a copy review.

Thanks!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest increasing the size of the "Developers" icon and text, I'm unable to read it when scaled into the page at my standard viewing (half a 1440 screen).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we still have some time in the quarter, I think it would make sense to replace this with a Mermaid diagram. We would need to get this PR approved, though: #25173

order to enable secure access to your Teleport cluster's infrastructure.

We recommend configuring your load balancer to route traffic across multiple
Neither load balancer must terminate TLS. Both load balancers must transparently
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest "Both load balancers must not" as a clearer phrasing.

Comment thread docs/pages/deploy-a-cluster/high-availability.mdx Outdated
Comment thread docs/pages/deploy-a-cluster/high-availability.mdx Outdated
@ptgott ptgott requested review from alexfornuto and greedy52 April 28, 2023 16:30
Comment thread docs/pages/deploy-a-cluster/high-availability.mdx Outdated
Co-authored-by: STeve (Xin) Huang <xin.huang@goteleport.com>
@ptgott ptgott requested a review from greedy52 May 1, 2023 17:56
Comment thread docs/pages/deploy-a-cluster/high-availability.mdx Outdated
Co-authored-by: STeve (Xin) Huang <xin.huang@goteleport.com>
@ptgott ptgott added this pull request to the merge queue May 4, 2023
Merged via the queue into master with commit cca1320 May 4, 2023
@ptgott ptgott deleted the paul.gottschling/22742-ha branch May 4, 2023 21:44
@public-teleport-github-review-bot
Copy link
Copy Markdown

@ptgott See the table below for backport results.

Branch Result
branch/v12 Create PR
branch/v13 Create PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refresh our general high availability guide

5 participants