Navigate to VPC Networks and select Create VPC Network.
Name the VPC, enable the necessary firewall rules for your intended use and click Create.
A subnet is not required for PSC with Cloud SQL. Cloud SQL lives in Google’s managed data center and the VPC is only required for using a private IP, routing, and firewall rules.
Name your SQL instance and choose a secure password.
Ensure the region selected in the Cloud SQL matches the region in your Control Plane workload. If the regions are not the same, the Private Service Connection will fail.
Scroll to the bottom of the page and click Show Configuration Options to drop down more options.
Select the Connections tab, disable Public IP and enable Private IP.
Enable Private Service Access (PSA)
Under Private IP, a drop down should appear to configure PSA.
Choose your VPC and select Set up connection.
You can allocate an IP range by either automatically allocating or by selecting your own range
Select Continue and Create Connection
Once the connection is created you can create your instance
Private Service Connect enablement is not currently supported in the GCP console. After the instance is created, you must edit the Cloud SQL instance using the CLI.
The following steps will show how to enable Private Service Connect with the allowed consumer project for Control Plane in an existing Cloud SQL instance.
Use the gcloud CLI to edit the Cloud SQL instance. When patching the Cloud SQL instance, you must specify the allowed consumer project id(s) that will be used to consume the instance.Use the following gcloud command:
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Control Plane","description":"Documentation for Control Plane, a hybrid multi-cloud platform for deploying and managing workloads, Kubernetes, networking, secrets, logs, and infrastructure across AWS, GCP, Azure, and private clouds.","colors":{"primary":"#1563ff","light":"#64a5ef","dark":"#1563ff"},"logo":{"light":"https://mintcdn.com/controlplanecorporation/hwvJiAoqIziVJ3gK/logos/dark.svg?fit=max\u0026auto=format\u0026n=hwvJiAoqIziVJ3gK\u0026q=85\u0026s=ec7b5a4bb958adc4d92dedfb41ab2e3c","dark":"https://mintcdn.com/controlplanecorporation/hwvJiAoqIziVJ3gK/logos/light.svg?fit=max\u0026auto=format\u0026n=hwvJiAoqIziVJ3gK\u0026q=85\u0026s=4904ca0b5a8c55fa87495b8edd04aadc"},"favicon":"https://mintcdn.com/controlplanecorporation/hwvJiAoqIziVJ3gK/logos/favicon.png?fit=max\u0026auto=format\u0026n=hwvJiAoqIziVJ3gK\u0026q=85\u0026s=11640a5f7b1a462c233be7a72afa72d7","api":{"openapi":["https://api.cpln.io/openapi.json","https://audit.cpln.io/openapi.json"],"mdx":{"auth":{"method":"bearer"},"server":"https://api.cpln.io"}},"navbar":{"links":[{"href":"https://console.cpln.io/signin","label":"Sign in"}],"primary":{"type":"button","label":"Sign up","href":"https://console.cpln.io/signup"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/control-plane-corporation","youtube":"https://www.youtube.com/@controlplanecorporation","reddit":"https://www.reddit.com/r/controlplane"}},"search":{"prompt":"Search Control Plane docs..."},"seo":{"indexing":"navigable"},"contextual":{"options":["copy","view","chatgpt","claude","perplexity",{"title":"Install MCP Server","description":"Connect the Control Plane MCP Server to your AI tool","icon":"plug","href":"https://docs.controlplane.com/ai/overview"}],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"compass","href":"https://controlplane.com"},{"anchor":"Status","icon":"signal","href":"https://status.cpln.io/"},{"anchor":"Blog","icon":"newspaper","href":"https://controlplane.com/blog"},{"anchor":"FAQ","icon":"question","href":"https://controlplane.com/faq"},{"anchor":"Product Demos","icon":"video","href":"https://controlplane.com/product-demos"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"controlplanecorporation","hasAudioNarration":false,"actualSubdomain":"controlplanecorporation","customDomains":["docs.controlplane.com"],"gitSource":{"type":"github","owner":"controlplane-docs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"DISABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af4fab4dc28594f180fced1","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":173},{"language":"default","tag":"Core API","count":164},{"language":"default","tag":"Template Catalog","count":112},{"language":"default","tag":"Templates","count":102},{"language":"default","tag":"Home","count":79},{"language":"default","tag":"How-to Guides","count":72},{"language":"default","tag":"CLI Reference","count":66},{"language":"default","tag":"Reference","count":49},{"language":"default","tag":"Commands","count":38},{"language":"default","tag":"Workload","count":24}],"searchSettings":{"maxResults":5}},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"global.css","content":"html{overflow-y:scroll}"},{"filePath":"style.css","content":"img[src*=\"/icons/mcp-sidebar.svg\"]{filter:brightness(0) saturate(100%) invert(69%) sepia(9%) saturate(309%) hue-rotate(176deg) brightness(95%) contrast(87%)!important}a[aria-current=\"page\"] img[src*=\"/icons/mcp-sidebar.svg\"]{filter:brightness(0) saturate(100%) invert(28%) sepia(98%) saturate(3000%) hue-rotate(213deg) brightness(102%) contrast(101%)!important}.dark img[src*=\"/icons/mcp-sidebar.svg\"]{filter:brightness(0) saturate(100%) invert(47%) sepia(8%) saturate(420%) hue-rotate(177deg) brightness(94%) contrast(85%)!important}.dark a[aria-current=\"page\"] img[src*=\"/icons/mcp-sidebar.svg\"]{filter:brightness(0) saturate(100%) invert(63%) sepia(74%) saturate(380%) hue-rotate(186deg) brightness(98%) contrast(91%)!important}img.sidebar-group-icon[src*=\"/icons/mcp-sidebar.svg\"]{filter:brightness(0)!important}.dark img.sidebar-group-icon[src*=\"/icons/mcp-sidebar.svg\"]{filter:brightness(0) invert(1)!important}img[src*=\"/icons/mcp.svg\"]{filter:brightness(0) saturate(100%) invert(28%) sepia(98%) saturate(3000%) hue-rotate(213deg) brightness(102%) contrast(101%)!important}.dark img[src*=\"/icons/mcp.svg\"]{filter:brightness(0) saturate(100%) invert(63%) sepia(74%) saturate(380%) hue-rotate(186deg) brightness(98%) contrast(91%)!important}.dark img[src*=\"/icons/chatgpt.svg\"],.dark img[src*=\"/icons/codex.svg\"],.dark img[src*=\"/icons/cursor.svg\"],.dark img[src*=\"/icons/opencode.svg\"]{filter:invert(1)!important}"}],"page":{"pagePath":"guides/native-networking/private-service-connect/cloud-sql","slug":"/guides/native-networking/private-service-connect/cloud-sql","pageMetadata":{"title":"PSC with Cloud SQL","description":"Create a Google Cloud SQL instance with Private Service Connect (PSC) for secure private connectivity to Control Plane workloads.","keywords":["gcp postgres","gcp mysql","cloudsql private","tf module","hcl","private database","no public ip db","cloud sql proxy"],"href":"/guides/native-networking/private-service-connect/cloud-sql"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create a Google Cloud SQL instance with Private Service Connect (PSC) for secure private connectivity to Control Plane workloads.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Follow the steps below to create a `,_jsx(_components.a,{href:`https://cloud.google.com/sql/docs/introduction`,children:`Cloud SQL`}),` instance with `,_jsx(_components.a,{href:`https://cloud.google.com/vpc/docs/private-service-connect`,children:`Private Service Connect`}),` (PSC) enabled within Google Cloud.`]}),`\n`,_jsx(Heading,{level:`2`,id:`create-using-terraform`,children:`Create using Terraform`}),`\n`,_jsx(Heading,{level:`3`,id:`what’s-created`,children:`What’s Created`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Necessary APIs enabled`}),`\n`,_jsx(_components.li,{children:`VPC with firewall rule`}),`\n`,_jsx(_components.li,{children:`Private Service Access (PSA) enabled with IP reserved`}),`\n`,_jsx(_components.li,{children:`Cloud SQL PostgreSQL Instance with Private Service Connect (PSC) enabled`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Software Requirements:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Install Google Cloud `,_jsx(_components.a,{href:`https://cloud.google.com/sdk/docs/install`,children:`CLI`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Install Terraform `,_jsx(_components.a,{href:`https://developer.hashicorp.com/terraform`,children:`CLI`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://git-scm.com/`,children:`Git`}),` (for cloning the repository).`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`GCP Account Requirements:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://cloud.google.com/`,children:`Google Cloud Platform (GCP)`}),` account with billing enabled.`]}),`\n`,_jsxs(_components.li,{children:[`Deploy resources in the same region as your Control Plane `,_jsx(_components.a,{href:`/concepts/workload`,children:`workload`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-1-clone-control-plane-terraform`,children:`Step 1 - Clone Control Plane Terraform`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` clone`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/controlplane-com/gcp-psc-producer-automation`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:`cd`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gcp-psc-producer-automation`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`This `,_jsx(_components.a,{href:`https://github.com/controlplane-com/gcp-psc-producer-automation`,children:`repository`}),` contains Terraform modules for provisioning GCP infrastructure that integrates with Control Plane via Private Service Connect.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-2-create-configuration-file`,children:`Step 2 - Create Configuration File`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Create a `,_jsx(_components.code,{children:`terraform.tfvars`}),` file in the root of the cloned repository.`,`\n`,_jsx(CodeBlock,{filename:`terraform.tfvars`,numberOfLines:`4`,language:`hcl`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`hcl`,children:_jsxs(_components.code,{language:`hcl`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`project_id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"your-gcp-project-id\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`region`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"us-central1\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`db_username`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"postgres\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`db_password`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"SecurePassword123!\"`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-3-deploy-infrastructure`,children:`Step 3 - Deploy Infrastructure`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Run the Terraform with your configuration:`}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`terraform`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` init`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`terraform`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` plan`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`terraform`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` apply`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`The Terraform will automatically provision all necessary resources and output your service attachment.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`For more information, refer to the `,_jsx(_components.a,{href:`https://github.com/controlplane-com/gcp-psc-producer-automation?tab=readme-ov-file#readme`,children:`repository README`})]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Follow `,_jsx(_components.a,{href:`/guides/native-networking/private-service-connect/cloud-sql#next-steps`,children:`Next Steps`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`create-using-the-gcp-console`,children:`Create using the GCP Console`}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites-2`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://cloud.google.com/`,children:`Google Cloud Platform (GCP)`}),` account.`]}),`\n`,_jsxs(_components.li,{children:[`Install the latest Google Cloud `,_jsx(_components.a,{href:`https://cloud.google.com/sdk/docs/install`,children:`CLI`}),`.`]}),`\n`,_jsx(_components.li,{children:`Existing GCP project`}),`\n`,_jsxs(_components.li,{children:[`Enable the following APIs in your GCP project:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`SQL Admin`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Compute Engine`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`Service Networking`})}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-1-create-a-vpc`,children:`Step 1 - Create a VPC`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Navigate to `,_jsx(_components.code,{children:`VPC Networks`}),` and select `,_jsx(_components.code,{children:`Create VPC Network`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Name the VPC, enable the necessary firewall rules for your intended use and click `,_jsx(_components.code,{children:`Create`}),`.\n`,_jsx(Note,{children:`A subnet is not required for PSC with Cloud SQL. Cloud SQL lives in Google’s managed data center and the VPC is only required for using a private IP, routing, and firewall rules.`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-2-create-cloud-sql`,children:`Step 2 - Create Cloud SQL`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Navigate to `,_jsx(_components.code,{children:`SQL`}),` and select `,_jsx(_components.code,{children:`Create Instance`}),`.`]}),`\n`,_jsx(_components.li,{children:`Choose your database engine (ex. PostgreSQL).`}),`\n`,_jsx(_components.li,{children:`Select your preferred SQL edition.`}),`\n`,_jsx(_components.li,{children:`Name your SQL instance and choose a secure password.`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Ensure the region selected in the Cloud SQL matches the region in your Control Plane `,_jsx(_components.a,{href:`/concepts/workload`,children:`workload`}),`. If the regions are not the same, the Private Service Connection will fail.`]})}),`\n`,_jsxs(_components.ol,{start:`5`,children:[`\n`,_jsxs(_components.li,{children:[`Scroll to the bottom of the page and click `,_jsx(_components.code,{children:`Show Configuration Options`}),` to drop down more options.`]}),`\n`,_jsxs(_components.li,{children:[`Select the `,_jsx(_components.code,{children:`Connections`}),` tab, disable Public IP and enable Private IP.`]}),`\n`,_jsxs(_components.li,{children:[`Enable Private Service Access (PSA)`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Under Private IP, a drop down should appear to configure PSA.`}),`\n`,_jsxs(_components.li,{children:[`Choose your VPC and select `,_jsx(_components.code,{children:`Set up connection`}),`.`]}),`\n`,_jsx(_components.li,{children:`You can allocate an IP range by either automatically allocating or by selecting your own range`}),`\n`,_jsxs(_components.li,{children:[`Select `,_jsx(_components.code,{children:`Continue`}),` and `,_jsx(_components.code,{children:`Create Connection`})]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`Once the connection is created you can create your instance`}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Private Service Connect enablement is not currently supported in the GCP console. After the instance is created, you must `,_jsx(_components.a,{href:`/guides/native-networking/private-service-connect/cloud-sql#edit-existing-cloud-sql-instance`,children:`edit the Cloud SQL instance`}),` using the `,_jsx(_components.a,{href:`https://cloud.google.com/sdk/docs/install`,children:`CLI`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`edit-existing-cloud-sql-instance`,children:`Edit existing Cloud SQL Instance`}),`\n`,_jsx(_components.p,{children:`The following steps will show how to enable Private Service Connect with the allowed consumer project for Control Plane in an existing Cloud SQL instance.`}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites-3`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Cloud SQL created with private IP only (no public IP)`}),`\n`,_jsx(_components.li,{children:`Private Service Access (PSA) enabled with reserved IP (required when using private IP only)`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-1-verify-current-project-using-the-cli`,children:`Step 1 - Verify current project using the CLI`}),`\n`,_jsx(_components.p,{children:`Ensure you are in the correct project before patching the Cloud SQL instance.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`gcloud`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` YOUR_PROJECT_ID`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`step-2-patch-the-cloud-sql-instance`,children:`Step 2 - Patch the Cloud SQL instance`}),`\n`,_jsxs(_components.p,{children:[`Use the `,_jsx(_components.code,{children:`gcloud`}),` CLI to edit the Cloud SQL instance. When patching the Cloud SQL instance, you must specify the allowed consumer project id(s) that will be used to consume the instance.`]}),`\n`,_jsxs(_components.p,{children:[`Use the following `,_jsx(_components.code,{children:`gcloud`}),` command:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`gcloud`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` sql`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` instances`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` patch`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` INSTANCE_NAME`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--enable-private-service-connect `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`--allowed-psc-projects=cpln-prod01`})}),`\n`]})})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If you need to change the allowed consumer projects in the future, use the same command and omit the `,_jsx(_components.code,{children:`---enable-private-service-connect`}),` flag.`]})}),`\n`,_jsxs(_components.p,{children:[`Once patching is complete, your Cloud SQL instance will have PSC enabled with the necessary Control Plane project allowed to connect to your `,_jsx(_components.a,{href:`/concepts/workload`,children:`workload`}),`.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`You can find your service attachment in the console under `,_jsx(_components.code,{children:`Connections`}),` for your Cloud SQL instance.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Contact `,_jsx(`a`,{href:`mailto:support@mintlify.com`,children:_jsx(_components.a,{href:`mailto:support@controlplane.com`,children:`support@controlplane.com`})}),` with your service attachment and region.`]}),`\n`,_jsxs(_components.li,{children:[`Control Plane will use this to create the consumer-side endpoint connection.`,`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`When using Cloud SQL, there is no manual required acceptance for new connections created by specified allowed consumer projects.`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Proceed to follow the `,_jsx(_components.a,{href:`/guides/native-networking/native-networking-setup`,children:`Native Networking Setup`}),` in Control Plane.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"PSC with Cloud SQL","description":"Create a Google Cloud SQL instance with Private Service Connect (PSC) for secure private connectivity to Control Plane workloads.","keywords":["gcp postgres","gcp mysql","cloudsql private","tf module","hcl","private database","no public ip db","cloud sql proxy"],"href":"/guides/native-networking/private-service-connect/cloud-sql"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Create using Terraform","slug":"create-using-terraform","depth":2,"children":[{"title":"What’s Created","slug":"what’s-created","depth":3,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":3,"children":[]},{"title":"Step 1 - Clone Control Plane Terraform","slug":"step-1-clone-control-plane-terraform","depth":3,"children":[]},{"title":"Step 2 - Create Configuration File","slug":"step-2-create-configuration-file","depth":3,"children":[]},{"title":"Step 3 - Deploy Infrastructure","slug":"step-3-deploy-infrastructure","depth":3,"children":[]}]},{"title":"Create using the GCP Console","slug":"create-using-the-gcp-console","depth":2,"children":[{"title":"Prerequisites","slug":"prerequisites-2","depth":3,"children":[]},{"title":"Step 1 - Create a VPC","slug":"step-1-create-a-vpc","depth":3,"children":[]},{"title":"Step 2 - Create Cloud SQL","slug":"step-2-create-cloud-sql","depth":3,"children":[]}]},{"title":"Edit existing Cloud SQL Instance","slug":"edit-existing-cloud-sql-instance","depth":2,"children":[{"title":"Prerequisites","slug":"prerequisites-3","depth":3,"children":[]},{"title":"Step 1 - Verify current project using the CLI","slug":"step-1-verify-current-project-using-the-cli","depth":3,"children":[]},{"title":"Step 2 - Patch the Cloud SQL instance","slug":"step-2-patch-the-cloud-sql-instance","depth":3,"children":[]}]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/controlplanecorporation/20452e834d3719a6/content/legacy-cli-hash-redirects.js","/_mintlify/custom/controlplanecorporation/dd1961f62f732454/content/sync-tabs.js"],"subdomain":"controlplanecorporation","siteName":"Control Plane","title":"PSC with Cloud SQL - Control Plane","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-05T21:34:26.740Z","originalFileLocation":"guides/native-networking/private-service-connect/cloud-sql.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create a Google Cloud SQL instance with Private Service Connect (PSC) for secure private connectivity to Control Plane workloads.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Control Plane\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"PSC with Cloud SQL - Control Plane\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a Google Cloud SQL instance with Private Service Connect (PSC) for secure private connectivity to Control Plane workloads.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Control Plane\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://controlplanecorporation.mintlify.site/_mintlify/api/og/v2?division=GCP+Private+Service+Connect\u0026amp;title=PSC+with+Cloud+SQL\u0026amp;description=Create+a+Google+Cloud+SQL+instance+with+Private+Service+Connect+%28PSC%29+for+secure+private+connectivity+to+Control+Plane+workloads.\u0026amp;theme=565533155d08f0e2a83ec355\u0026amp;signature=7ec55d64ec1cd1442cb42150922b84e22d75c1a7f6de054bbaa2524a11fc70a6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"PSC with Cloud SQL - Control Plane\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a Google Cloud SQL instance with Private Service Connect (PSC) for secure private connectivity to Control Plane workloads.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://controlplanecorporation.mintlify.site/_mintlify/api/og/v2?division=GCP+Private+Service+Connect\u0026amp;title=PSC+with+Cloud+SQL\u0026amp;description=Create+a+Google+Cloud+SQL+instance+with+Private+Service+Connect+%28PSC%29+for+secure+private+connectivity+to+Control+Plane+workloads.\u0026amp;theme=565533155d08f0e2a83ec355\u0026amp;signature=7ec55d64ec1cd1442cb42150922b84e22d75c1a7f6de054bbaa2524a11fc70a6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/controlplanecorporation/N_jUg8p-q778yjKC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Control Plane\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1563ff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/native-networking/private-service-connect/cloud-sql.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.controlplane.com/#organization\",\"name\":\"Control Plane\",\"url\":\"https://docs.controlplane.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/controlplanecorporation/hwvJiAoqIziVJ3gK/logos/dark.svg?fit=max\u0026auto=format\u0026n=hwvJiAoqIziVJ3gK\u0026q=85\u0026s=ec7b5a4bb958adc4d92dedfb41ab2e3c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.controlplane.com#website\",\"name\":\"Control Plane\",\"url\":\"https://docs.controlplane.com\",\"publisher\":{\"@id\":\"https://docs.controlplane.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql#webpage\",\"url\":\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql\",\"name\":\"PSC with Cloud SQL\",\"description\":\"Create a Google Cloud SQL instance with Private Service Connect (PSC) for secure private connectivity to Control Plane workloads.\",\"dateModified\":\"2026-05-05T21:34:26.740Z\",\"isPartOf\":{\"@id\":\"https://docs.controlplane.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Native Networking\",\"item\":\"https://docs.controlplane.com/guides/native-networking/native-networking-setup\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PSC with Cloud SQL\",\"item\":\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql#article\",\"headline\":\"PSC with Cloud SQL\",\"name\":\"PSC with Cloud SQL\",\"description\":\"Create a Google Cloud SQL instance with Private Service Connect (PSC) for secure private connectivity to Control Plane workloads.\",\"url\":\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql\",\"mainEntityOfPage\":{\"@id\":\"https://docs.controlplane.com/guides/native-networking/private-service-connect/cloud-sql#webpage\"},\"dateModified\":\"2026-05-05T21:34:26.740Z\",\"keywords\":\"gcp postgres, gcp mysql, cloudsql private, tf module, hcl, private database, no public ip db, cloud sql proxy\",\"publisher\":{\"@id\":\"https://docs.controlplane.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.controlplane.com#website\"}}]}\u003c/script>","agentPointerHref":"/guides/native-networking/private-service-connect/cloud-sql.md","siteName":"Control Plane","nav":{"global":{"anchors":[{"anchor":"Website","icon":"compass","href":"https://controlplane.com"},{"anchor":"Status","icon":"signal","href":"https://status.cpln.io/"},{"anchor":"Blog","icon":"newspaper","href":"https://controlplane.com/blog"},{"anchor":"FAQ","icon":"question","href":"https://controlplane.com/faq"},{"anchor":"Product Demos","icon":"video","href":"https://controlplane.com/product-demos"}]},"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/introduction"}]},{"tab":"How-to Guides","groups":[{"group":"How-to Guides","icon":"list-ol","pages":[{"title":"How-to Guides","sidebarTitle":"Overview","href":"/guides/overview"}]},{"group":"CLI Configuration","icon":"terminal","pages":[{"title":"Browser-less CLI Login","href":"/guides/browser-less-cli-login"}]},{"group":"Integrations","icon":"plug","pages":[{"title":"Kubernetes Operator","href":"/guides/cli/cpln-operator"}]},{"group":"Configure Resources","icon":"gear","pages":[{"title":"Configure a CDN","href":"/guides/configure-cdn"},{"title":"Configure a Domain","href":"/guides/configure-domain"},{"title":"Configure an Agent","href":"/guides/setup-agent"},{"title":"Connect to RDS with an Agent","href":"/guides/connect-rds-with-agent"},{"title":"Configure an Agent (Legacy)","href":"/guides/setup-agent-legacy"},{"title":"Invite Users","href":"/guides/invite-users"},{"title":"Manage Quotas","href":"/guides/manage-quotas"},{"title":"Query Costs and Usage","href":"/guides/query-costs-and-usage"},{"title":"Rate Limiting","href":"/guides/rate-limiting"},{"title":"Resource Protection","href":"/guides/resource-protection"},{"title":"Service-to-Service Calls","href":"/guides/service-to-service"}]},{"group":"Create Resources","icon":"circle-plus","pages":[{"title":"Create an Agent","href":"/guides/agent"},{"title":"Create an Audit Context","href":"/guides/create-audit-context"},{"title":"Create a Cloud Account","href":"/guides/create-cloud-account"},{"title":"Create a Group","href":"/guides/create-group"},{"title":"Create a GVC","href":"/guides/create-gvc"},{"title":"Create an Identity","href":"/guides/create-identity"},{"title":"Create an Org","href":"/guides/create-org"},{"title":"Create a Policy","href":"/guides/policy"},{"group":"Create a Secret","pages":[{"title":"Create a Secret","sidebarTitle":"Overview","href":"/guides/create-secret/overview"},{"title":"AWS","href":"/guides/create-secret/aws"},{"title":"Azure Connector","href":"/guides/create-secret/azure-connector"},{"title":"Azure SDK","href":"/guides/create-secret/azure-sdk"},{"title":"Dictionary","href":"/guides/create-secret/dictionary"},{"title":"Docker","href":"/guides/create-secret/docker"},{"title":"ECR","href":"/guides/create-secret/ecr"},{"title":"GCP","href":"/guides/create-secret/gcp"},{"title":"Keypair","href":"/guides/create-secret/keypair"},{"title":"NATS Account","href":"/guides/create-secret/nats-account"},{"title":"Opaque","href":"/guides/create-secret/opaque"},{"title":"TLS","href":"/guides/create-secret/tls"},{"title":"Username \u0026 Password","href":"/guides/create-secret/userpass"}]},{"title":"Create a Service Account","href":"/guides/create-service-account"},{"title":"Create a Workload","href":"/guides/create-workload"}]},{"group":"Deployment","icon":"rocket","pages":[{"title":"Apply YAML Manifests","href":"/guides/cpln-apply"},{"title":"Blue/Green Deployments","href":"/guides/blue-green-deployments"},{"title":"Convert Kubernetes Manifests","href":"/guides/cli/cpln-convert"},{"title":"Delete Resources from Manifests","href":"/guides/cpln-delete"},{"title":"Deploy Docker Compose Projects","href":"/guides/compose-deploy"},{"title":"Deploy a Workload to Your Own Hardware","sidebarTitle":"Deploy to Your Own Hardware","href":"/guides/deploy-to-your-own-hardware"},{"title":"Manage Helm Releases","href":"/guides/cpln-helm"}]},{"group":"GitOps","icon":"code-branch","pages":[{"title":"CI/CD Examples","href":"/guides/gitops"},{"title":"Environment Promotion","href":"/guides/environment-promotion"},{"title":"Jenkins Plugin","href":"/guides/jenkins-plugin"}]},{"group":"Images","icon":"docker","pages":[{"title":"Push Images to Registry","href":"/guides/push-image"},{"title":"Pull Images from Registries","href":"/guides/pull-image"},{"title":"Copy Images Between Organizations","href":"/guides/copy-image"},{"title":"Publishing \u0026 Converting VM Images","href":"/guides/vm-images"},{"title":"Build with Buildpacks","href":"/guides/buildpacks"}]},{"group":"Native Networking","icon":"network-wired","pages":[{"title":"Native Networking Setup","href":"/guides/native-networking/native-networking-setup"},{"group":"AWS PrivateLink","pages":[{"title":"PrivateLink with RDS","description":"Provision an AWS RDS instance with PrivateLink for secure private connectivity to Control Plane workloads using Terraform.","href":"/guides/native-networking/aws-privatelink/privatelink-rds-terraform"}]},{"group":"GCP Private Service Connect","pages":[{"title":"PSC with Cloud SQL","href":"/guides/native-networking/private-service-connect/cloud-sql"}]}]},{"group":"Observability","icon":"chart-line","pages":[{"title":"Centralized Metrics Management","sidebarTitle":"Metrics Management","description":"Access metrics from multiple orgs using a centralized Grafana instance by adding Prometheus data sources across organizations.","href":"/guides/centralized-metrics-management"},{"title":"Default Metrics","href":"/guides/default-metrics"},{"title":"Export Metrics to Prometheus","href":"/guides/export-metrics"}]},{"group":"Sandbox","icon":"laptop-code","pages":[{"title":"Getting Started with Sandbox","href":"/guides/sandbox/getting-started"},{"title":"Building Toolbox Images","href":"/guides/sandbox/toolbox-images"},{"title":"Sandbox Web UI","href":"/guides/sandbox/ui-reference"},{"title":"Container Internals","href":"/guides/sandbox/container-internals"},{"title":"Terminal \u0026 tmux","href":"/guides/sandbox/terminal-tmux"},{"title":"Sandbox Helper CLI","href":"/guides/sandbox/sandbox-helper"},{"title":"Multi-Repo Workspaces","href":"/guides/sandbox/multi-repo"}]},{"group":"Workload Access","icon":"key","pages":[{"title":"Connect to Workloads","href":"/guides/cli/workload/connect"},{"title":"Copy Files to/from Workloads","href":"/guides/cli/cpln-cp"},{"title":"Execute Commands in Workloads","href":"/guides/cli/workload/exec"},{"title":"Port Forward to Workloads","href":"/guides/cli/cpln-port-forward"},{"title":"Run One-off Workloads","href":"/guides/cli/workload/run"},{"title":"Run Commands with Cron Workloads","href":"/guides/cli/workload/cron-run"}]}]},{"tab":"Template Catalog","pages":[{"title":"Template Catalog","href":"/template-catalog/overview"}]},{"tab":"Managed Kubernetes","pages":[{"title":"Managed Kubernetes","href":"/mk8s/overview"}]},{"tab":"CPLN BYOK","pages":[{"title":"CPLN BYOK","href":"/byok/overview"}]},{"tab":"AI Agents","pages":[{"title":"AI Agents","href":"/ai/overview"}]},{"tab":"Infra as Code","pages":[{"title":"Infra as Code","href":"/iac/overview"}]},{"tab":"CLI Reference","pages":[{"title":"CLI Reference","href":"/cli-reference/overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/api"}]}]},"basePath":"","title":"PSC with Cloud SQL - Control Plane","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}