1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3103],{3103:function(e,n,r){r.d(n,{default:function(){return c}});var s=r(57437),i=r(95396);function t(e){let n={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components},{ConsoleLink:r,Note:t,Role:c}=n;return r||o("ConsoleLink",!0),t||o("Note",!0),c||o("Role",!0),(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://www.crunchydata.com/products/crunchy-bridge",children:"Crunchy Bridge"})," is a managed Postgres service run in major cloud providers such as\nAmazon Web Services, Microsoft Azure, and Google Cloud Platform. It is built by the company\n",(0,s.jsx)(n.a,{href:"https://www.crunchydata.com",children:"Crunchy Data"}),". Each Crunchy Bridge instance lives in its own virtual private cloud\n(VPC). The Tailscale integration for Crunchy Bridge lets users to connect to their Crunchy Bridge\ncluster securely for clouds where there are no VPCs, or directly where VPC peering doesn't make\nsense, for example, for testing."]}),"\n",(0,s.jsx)(n.h2,{id:"prerequisites",children:"Prerequisites"}),"\n",(0,s.jsx)(n.p,{children:"Before you begin this guide, you'll need a tailnet and a Crunchy Bridge account."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["For information about creating a tailnet, refer to the ",(0,s.jsx)(n.a,{href:"/docs/how-to/quickstart",children:"Tailscale quickstart"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["For information about creating a Crunchy Bridge account, refer to ",(0,s.jsx)(n.a,{href:"https://www.crunchydata.com/products/crunchy-bridge",children:"Crunchy Bridge"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"integration",children:"Integration"}),"\n",(0,s.jsxs)(n.p,{children:["Refer to the full instructions in Crunchy Data's ",(0,s.jsx)(n.a,{href:"https://www.crunchydata.com/blog/crunchy-bridge-with-tailscale",children:"blog post"})," for setting up an\nintegration with Tailscale."]}),"\n",(0,s.jsx)(n.p,{children:"To use Crunchy Bridge with Tailscale, you'll need to:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Create an ",(0,s.jsx)(n.a,{href:"/docs/features/access-control/auth-keys",children:"auth key"}),". You need to be an ",(0,s.jsx)(c,{children:"Owner, Admin, or Network admin"})," of a tailnet to create an auth key.\nTo create the key, open the ",(0,s.jsx)(r,{id:"settings-keys-page"})," page in the Tailscale admin console. We\nrecommend using a tagged reusable pre-authorized key for this purpose. A ",(0,s.jsx)(n.a,{href:"/docs/features/tags",children:"tagged"})," key\nrestricts the Crunchy Bridge device's permissions based on the ",(0,s.jsx)(n.a,{href:"/docs/features/access-control",children:"access control rules"}),"\nfor the tag that will apply as soon as the device is provisioned. A reusable key is useful in\nretry connection logic, and pre-authorized so that every new instance doesn't need to be authorized."]}),"\n"]}),"\n",(0,s.jsx)(t,{children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Be very careful with reusable keys!"})," These can be very dangerous if stolen.\nThey're best kept in a key vault product specially designed for the purpose."]})}),"\n",(0,s.jsxs)(n.ol,{start:"2",children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["In the Crunchy Bridge dashboard for managing your cluster, select ",(0,s.jsx)(n.strong,{children:"Networking"})," and then select\n",(0,s.jsx)(n.strong,{children:"Tailscale"}),". For ",(0,s.jsx)(n.strong,{children:"Auth Key"}),", paste in the auth key that you previously created."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Select ",(0,s.jsx)(n.strong,{children:"Connect Tailscale"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Open the ",(0,s.jsx)(r,{id:"machines-page"})," page of the Tailscale admin console. After the connection\ninitializes, you should refer to the Crunchy Bridge cluster device in your tailnet. Copy the\nTailscale IP address, which is in the form ",(0,s.jsxs)(n.a,{href:"/docs/reference/glossary#tailscale-ip-address",children:[(0,s.jsx)(n.code,{children:"100.x.y.z"})," format"]}),"."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:["Use the Tailscale IP address when you connect to your Crunchy Bridge cluster. For example, if the\nTailscale IP address is ",(0,s.jsx)(n.code,{children:"100.100.123.123"})," and you're using port ",(0,s.jsx)(n.code,{children:"5432"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"psql postgres://application:<your-application-id>@100.100.123.123:5432/postgres\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"limitations",children:"Limitations"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Auth keys expire after 90 days."}),"\n"]})]})}function c(e={}){let{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(t,{...e})}):t(e)}function o(e,n){throw Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.