Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.
This page describes v1 agents which are deprecated starting April 2026. Please refer to the updated Configure an Agent guide.
Click on the desired cloud provider and follow the installation and configuration instructions:
Click the View purchase options button in the upper right corner.
After reading the terms and conditions, click the Accept Terms.
After the subscription has loaded, click the Continue to Configuration button in the upper right corner.
Click the region pull-down and select the region where your AWS resources reside.
Click the Continue to Launch button in the upper right corner.
Click the Choose Action pull-down and select Launch through EC2. Click the Launch button.
The Launch an instance wizard will be displayed.
Under the Name and tag section, enter the agent’s name. (e.g., cpln-agent).
Under the Instance type section, select an applicable instance type.
Refer to the Agent Sizing Guidance page for additional details on which instance type to select.
Optional: Under the Key pair(login) section, select or create a new key pair to
enable SSH access to the agent. A key pair is necessary only for accessing the
agent during troubleshooting.
If you do not have an AWS key-pair created, the console will help you to create one.Since the agent instance will never need to be connected to (except for troubleshooting),
you may proceed without a key-pair.
Under the Network setting section, review the details and verify that the selected VPC is the same as the AWS resource you are trying to access.
For the agent to properly connect to the Control Plane servers, it requires outbound Internet access.Verify that the Auto-assign Public IP option is set to Enable.If your requirements do not allow the instance to have a public IP, please review the section
How do instances without public IP addresses access the Internet in this AWS FAQ.Either create or select an existing security group. The security groups belonging to the resources that the agent will need to
have access to will require to have the security group belonging to the agent added to its list of allowed inbound traffic.Initially, remove the checkbox for the “Allow SSH from” property. SSH access is only necessary for troubleshooting purposes. Control Plane will never need to connect directly to the agent.
Under the Configure storage section, click the Advanced link and expand the volume property. Modify the Delete on termination
dropdown to Yes. This will ensure the associated volume is removed if the agent is terminated, thereby preventing any orphaned volumes.
Expand the Advanced details section. Scroll to the bottom and paste the contents
of the JSON payload (from the bootstrap config file) generated in step one within the User data textbox.
Please review the other properties in this section to check if any default values need to be modified.
Click Launch instance in the lower right corner.
After a brief moment, the instance will launch and be ready to process requests.
Custom data: Paste the JSON text generated from Step One into the textbox.
Click Next: Tags.
Tags
Optional: Enter any necessary tags.
Click Next: Review + create.
Review + create
Review all the settings and enter any missing values.
Click Create.
If you requested to create a new key pair, a modal will pop-up requesting to download the private key. Click Download private key and create resource.
The agent virtual machine will begin the deployment process. After a few moments, the agent will be running, connecting to the Control Plane servers, and ready to process requests.
Now that you have an agent configured and running, it can be used within an identity to allow your
workload to connect to your internal Azure resources.
Execute the command in the note below. Ensure that the instance will be deployed in the same VPC and region as your GCP resources. Use a unique INSTANCE_NAME and the bootstrap file (AGENT_NAME-bootstrapConfig.json) that was created in step one.
Refer to the Agent Sizing Guidance page for additional details on which machine type to select.Add the flag --machine-type=MACHINE_TYPE to the command above to select a different type. Otherwise, the default type is n1-standard-1.
After a few moments, the command will return and show the status of the deployed instance.
The agent will now be running, connecting to the Control Plane servers, and ready to process requests.
By default, the GCP firewall rules open the common SSH, RDP, and ICMP ports to the world and allows all internal ports within the VPC. The agent does not need any of these ports open.At a minimum, the agent needs to be able to connect to your GCP resources and the Internet.
Now that you have an agent configured and running, it can be used within an identity to allow your workload to connect to your local resources.
When running an agent locally, it is running within a local Docker container. When configuring an identity network
resource, you must use the IP of the network adapter that Docker installed on the
local machine.
cpln will generate the manifest.yaml file that will deploy two replicas of the agent to the namespace of your choice (NAMESPACE in the example). The parameter --cluster CLUSTER_ID will be added to the agent’s status which is used as a hint to know which cluster an agent has been deploy to.It is recommended to use the option --replicas=2 for high availability (HA) configuration. This will generate two unique agent deployments in an active/failover configuration using leader election through the Control Plane API.
Never scale the kubernetes agent deployments to more than one replica. Each deployment has a unique key that is used to uniquely identity itself in the network. If more than one replica from the same deployment is running then intermittent latency and dropped packets will occur.
On startup, the agent will generate a public/private key-pair which is persisted as a k8s secret. In this scenario, the agents run under a k8s service account, which can create/modify secrets in its own namespace. If this is a concern, the agent can be configured to run in a dedicated namespace.
The agent will now be running, connecting to the Control Plane servers, and ready to process requests.
Now that you have an agent configured and running, it can be used within an identity to allow your workload to connect to your local resources.
{"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":""},"chroma":{"liveDeploymentHistoryId":"6aea2e693015c34b9858f850","collectionId":"78e02d9a-ed53-410e-a703-d21f41dcc6d7","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea2e693015c34b9858f850"},"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":"6aea2e693015c34b9858f850","clientVersion":"0.0.4064","searchFilterCounts":[{"language":"default","tag":"API Reference","count":173},{"language":"default","tag":"Core API","count":164},{"language":"default","tag":"Template Catalog","count":101},{"language":"default","tag":"Templates","count":91},{"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":"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":"vite-origin","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":"sso-setup-deadline-banner","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/setup-agent-legacy","slug":"/guides/setup-agent-legacy","pageMetadata":{"title":"Configure an Agent (Legacy)","description":"Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.","keywords":["marketplace image","EC2","virtual machine","bootstrap config","private network","ARM","agent v1","deprecated agent","secure communications agent","wormhole"],"boost":0.1,"href":"/guides/setup-agent-legacy"},"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: \"Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.\"\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,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[`This page describes `,_jsx(_components.code,{children:`v1`}),` agents which are deprecated starting April 2026. Please refer to the updated `,_jsx(_components.a,{href:`/guides/setup-agent`,children:`Configure an Agent`}),` guide.`]})}),`\n`,_jsx(_components.p,{children:`Click on the desired cloud provider and follow the installation and configuration instructions:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#aws`,children:`Amazon Web Services (AWS)`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#azure`,children:`Microsoft Azure`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#gcp`,children:`Google Cloud Platform (GCP)`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#running-locally-in-docker`,children:`Private Network`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#kubernetes-k8s-cluster`,children:`Kubernetes (k8s) Cluster`})}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`aws`,children:`AWS`}),`\n`,_jsx(Heading,{level:`3`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Follow the steps below to install and configure an `,_jsx(_components.a,{href:`/reference/agent`,children:`agent`}),` within your Amazon Web Services (AWS) environment.`]}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Review the `,_jsx(_components.a,{href:`/reference/agent`,children:`Agent`}),` reference page.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://aws.amazon.com/`,children:`Amazon Web Services`}),` (AWS) account.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-one-create-an-agent`,children:`Step One - Create an Agent`}),`\n`,_jsxs(_components.p,{children:[`Follow the `,_jsx(_components.a,{href:`/guides/agent`,children:`Create an Agent`}),` guide to define an agent and generate the bootstrap config file that will be used in\n`,_jsx(_components.a,{href:`#step-two-launch-an-agent-in-aws`,children:`step two`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-two-launch-an-agent-in-aws`,children:`Step Two - Launch an agent in AWS`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Log in to the `,_jsx(_components.a,{href:`https://console.aws.amazon.com`,children:`AWS Console`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Open the `,_jsx(_components.a,{href:`https://aws.amazon.com/marketplace/pp/prodview-dq5cug2iej46m`,children:`Control Plane Secure Communications Agent`}),` listing in the AWS Marketplace.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For the ARM version of the agent, use the `,_jsx(_components.a,{href:`https://aws.amazon.com/marketplace/pp/prodview-fvvtn73sdxxos`,children:`ARM Marketplace listing`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.code,{children:`View purchase options`}),` button in the upper right corner.`]}),`\n`,_jsxs(_components.li,{children:[`After reading the terms and conditions, click the `,_jsx(_components.code,{children:`Accept Terms`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`After the subscription has loaded, click the `,_jsx(_components.code,{children:`Continue to Configuration`}),` button in the upper right corner.`]}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.code,{children:`region`}),` pull-down and select the region where your AWS resources reside.`]}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.code,{children:`Continue to Launch`}),` button in the upper right corner.`]}),`\n`,_jsxs(_components.li,{children:[`Click the `,_jsx(_components.code,{children:`Choose Action`}),` pull-down and select `,_jsx(_components.code,{children:`Launch through EC2`}),`. Click the `,_jsx(_components.code,{children:`Launch`}),` button.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`Launch an instance`}),` wizard will be displayed.`]}),`\n`,_jsxs(_components.li,{children:[`Under the `,_jsx(_components.code,{children:`Name and tag`}),` section, enter the agent’s name. (e.g., `,_jsx(_components.code,{children:`cpln-agent`}),`).`]}),`\n`,_jsxs(_components.li,{children:[`Under the `,_jsx(_components.code,{children:`Instance type`}),` section, select an applicable instance type.`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Refer to the `,_jsx(_components.a,{href:`/reference/agent#agent-sizing-guidance`,children:`Agent Sizing Guidance`}),` page for additional details on which instance type to select.`]})}),`\n`,_jsxs(_components.ol,{start:`12`,children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`Optional:`}),` Under the `,_jsx(_components.code,{children:`Key pair(login)`}),` section, select or create a new key pair to\nenable SSH access to the agent. A key pair is necessary only for accessing the\nagent during troubleshooting.`]}),`\n`]}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:`If you do not have an AWS key-pair created, the console will help you to create one.`}),_jsx(_components.p,{children:`Since the agent instance will never need to be connected to (except for troubleshooting),\nyou may proceed without a key-pair.`})]}),`\n`,_jsxs(_components.ol,{start:`13`,children:[`\n`,_jsxs(_components.li,{children:[`Under the `,_jsx(_components.code,{children:`Network setting`}),` section, review the details and verify that the selected VPC is the same as the AWS resource you are trying to access.`]}),`\n`]}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:`For the agent to properly connect to the Control Plane servers, it requires outbound Internet access.`}),_jsxs(_components.p,{children:[`Verify that the `,_jsx(_components.code,{children:`Auto-assign Public IP`}),` option is set to `,_jsx(_components.code,{children:`Enable`}),`.`]}),_jsxs(_components.p,{children:[`If your requirements do not allow the instance to have a public IP, please review the section\n`,_jsx(_components.code,{children:`How do instances without public IP addresses access the Internet`}),` in this `,_jsx(_components.a,{href:`https://aws.amazon.com/vpc/faqs/`,children:`AWS FAQ`}),`.`]}),_jsx(_components.p,{children:`Either create or select an existing security group. The security groups belonging to the resources that the agent will need to\nhave access to will require to have the security group belonging to the agent added to its list of allowed inbound traffic.`}),_jsx(_components.p,{children:`Initially, remove the checkbox for the “Allow SSH from” property. SSH access is only necessary for troubleshooting purposes. Control Plane will never need to connect directly to the agent.`})]}),`\n`,_jsxs(_components.ol,{start:`14`,children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under the `,_jsx(_components.code,{children:`Configure storage`}),` section, click the `,_jsx(_components.code,{children:`Advanced`}),` link and expand the volume property. Modify the `,_jsx(_components.code,{children:`Delete on termination`}),`\ndropdown to `,_jsx(_components.code,{children:`Yes`}),`. This will ensure the associated volume is removed if the agent is terminated, thereby preventing any orphaned volumes.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Expand the `,_jsx(_components.code,{children:`Advanced details`}),` section. Scroll to the bottom and paste the contents\nof the JSON payload (from the bootstrap config file) generated in `,_jsx(_components.a,{href:`#step-one-create-an-agent`,children:`step one`}),` within the `,_jsx(_components.code,{children:`User data`}),` textbox.\nPlease review the other properties in this section to check if any default values need to be modified.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.code,{children:`Launch instance`}),` in the lower right corner.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`After a brief moment, the instance will launch and be ready to process requests.`}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(_components.p,{children:[`Now that you have an agent configured and running, it can be used within an `,_jsx(_components.a,{href:`/reference/identity`,children:`identity`}),` to allow your\n`,_jsx(_components.a,{href:`/reference/workload`,children:`workload`}),` to connect to your internal AWS resources.`]}),`\n`,_jsx(Heading,{level:`2`,id:`azure`,children:`Azure`}),`\n`,_jsx(Heading,{level:`3`,id:`overview-2`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Follow the steps below to install and configure an `,_jsx(_components.a,{href:`/reference/agent`,children:`agent`}),` within your Microsoft Azure environment.`]}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites-2`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Review the `,_jsx(_components.a,{href:`/reference/agent`,children:`Agent`}),` reference page`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://azure.com`,children:`Microsoft Azure`}),` account`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-one-create-an-agent-2`,children:`Step One - Create an Agent`}),`\n`,_jsxs(_components.p,{children:[`Follow the `,_jsx(_components.a,{href:`/guides/agent`,children:`Create an Agent`}),` guide to define an agent and generate the bootstrap config file that will be used in\n`,_jsx(_components.a,{href:`#step-two-launch-an-agent-in-azure`,children:`step two`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-two-launch-an-agent-in-azure`,children:`Step Two - Launch an agent in Azure`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Log in to the `,_jsx(_components.a,{href:`https://portal.azure.com`,children:`Azure Console`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`From the Azure homepage, click the `,_jsx(_components.code,{children:`Marketplace`}),` icon.`]}),`\n`,_jsx(_components.li,{children:`In the Marketplace search bar, enter:`}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Control Plane Secure Communications Agent`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsxs(_components.li,{children:[`Press `,_jsx(_components.code,{children:`Enter`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`When clicking the `,_jsx(_components.code,{children:`Create`}),` dropdown, select `,_jsx(_components.code,{children:`gen-1`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Use these recommended settings for the `,_jsx(_components.code,{children:`Create a virtual machine`}),` wizard:`]}),`\n`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Basic`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Subscription: Choose the appropriate subscription.`}),`\n`,_jsx(_components.li,{children:`Resource Group: Choose the appropriate resource group. If necessary, create a new one.`}),`\n`,_jsxs(_components.li,{children:[`Virtual machine name: Enter `,_jsx(_components.code,{children:`Control-Plane-Agent-01`}),`. If installing multiple agents, increment the number.`]}),`\n`,_jsx(_components.li,{children:`Region: Select a region closest to your other Azure resources.`}),`\n`,_jsxs(_components.li,{children:[`Availability options: Select `,_jsx(_components.code,{children:`No infrastructure redundancy required`}),`. Use a different option for your environment if you are running in production.`]}),`\n`,_jsxs(_components.li,{children:[`Image: Leave as `,_jsx(_components.code,{children:`gen-1`}),`.`]}),`\n`,_jsx(_components.li,{children:`Size: An instance with at least 2 vCPUs and 4 GiB of memory is recommended for optimal performance.`}),`\n`,_jsxs(_components.li,{children:[`Authentication type: Select `,_jsx(_components.code,{children:`SSH public key`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Username: Leave as `,_jsx(_components.code,{children:`azureuser`}),`.`]}),`\n`,_jsx(_components.li,{children:`SSH public key source: Choose the appropriate key. If necessary, create a new one.`}),`\n`,_jsx(_components.li,{children:`Key pair name: Select appropriate key, or if creating a new one, use the default or update the key name.`}),`\n`,_jsxs(_components.li,{children:[`Public inbound ports: Select `,_jsx(_components.code,{children:`None`}),`. The agent does not need any inbound ports open.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.code,{children:`Next: Disks`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Disks`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`OS disk type: Select `,_jsx(_components.code,{children:`Premium SSD`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Encryption type: Select `,_jsx(_components.code,{children:`(Default) Encryption at-rest with a platform-managed key`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.code,{children:`Next: Networking`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Networking`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Virtual network: Choose an appropriate network or use the new network that will be created.`}),`\n`,_jsx(_components.li,{children:`Subnet: Choose appropriate network or use the default.`}),`\n`,_jsxs(_components.li,{children:[`Public IP: Select `,_jsx(_components.code,{children:`None`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`NIC network security group: Select `,_jsx(_components.code,{children:`Basic`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Public inbound ports: Select `,_jsx(_components.code,{children:`None`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.code,{children:`Next: Management`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Management`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Enable basic plan for free: Enabled.`}),`\n`,_jsxs(_components.li,{children:[`Boot diagnostics: Select `,_jsx(_components.code,{children:`Enable with managed storage account`}),`.`]}),`\n`,_jsx(_components.li,{children:`Enable OS guest diagnostics: Disabled.`}),`\n`,_jsx(_components.li,{children:`System assigned managed identity: Disabled.`}),`\n`,_jsx(_components.li,{children:`Enable auto-shutdown: Disabled.`}),`\n`,_jsxs(_components.li,{children:[`Patch orchestration options: Select `,_jsx(_components.code,{children:`Image default`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.code,{children:`Next: Advanced`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Advanced`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Custom data: Paste the JSON text generated from `,_jsx(_components.a,{href:`#step-one-create-an-agent-2`,children:`Step One`}),` into the textbox.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.code,{children:`Next: Tags`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Tags`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Optional: Enter any necessary tags.`}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.code,{children:`Next: Review + create`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Review + create`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Review all the settings and enter any missing values.`}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.code,{children:`Create`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`If you requested to create a new key pair, a modal will pop-up requesting to download the private key. Click `,_jsx(_components.code,{children:`Download private key and create resource`}),`.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The agent virtual machine will begin the deployment process. After a few moments, the agent will be running, connecting to the Control Plane servers, and ready to process requests.`}),`\n`,_jsx(Heading,{level:`3`,id:`next-steps-2`,children:`Next Steps`}),`\n`,_jsxs(_components.p,{children:[`Now that you have an agent configured and running, it can be used within an `,_jsx(_components.a,{href:`/reference/identity`,children:`identity`}),` to allow your\n`,_jsx(_components.a,{href:`/reference/workload`,children:`workload`}),` to connect to your internal Azure resources.`]}),`\n`,_jsx(Heading,{level:`2`,id:`gcp`,children:`GCP`}),`\n`,_jsx(Heading,{level:`3`,id:`overview-3`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Follow the steps below to install and configure an `,_jsx(_components.a,{href:`/reference/agent`,children:`agent`}),` within your Google Cloud Platform (GCP) environment.`]}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites-3`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Review the `,_jsx(_components.a,{href:`/reference/agent`,children:`Agent`}),` reference page`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://cloud.google.com/`,children:`Google Cloud Platform (GCP)`}),` account.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-one-create-an-agent-3`,children:`Step One - Create an Agent`}),`\n`,_jsxs(_components.p,{children:[`Follow the `,_jsx(_components.a,{href:`/guides/agent`,children:`Create an Agent`}),` guide to define an agent and generate the bootstrap config file that will be used in\n`,_jsx(_components.a,{href:`#step-two-launch-agent-in-gcp`,children:`step two`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-two-launch-agent-in-gcp`,children:`Step Two - Launch agent in GCP`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Using the Google Cloud SDK`}),`\n`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Install the latest `,_jsx(_components.a,{href:`https://cloud.google.com/sdk/docs/install`,children:`SDK`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`If necessary, log in using `,_jsx(_components.code,{children:`gcloud init`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Execute the command in the note below. Ensure that the instance will be deployed in the same VPC and region as your GCP resources. Use a unique `,_jsx(_components.code,{children:`INSTANCE_NAME`}),` and the bootstrap file `,_jsx(_components.code,{children:`(AGENT_NAME-bootstrapConfig.json)`}),` that was created in `,_jsx(_components.a,{href:`#step-one-create-an-agent-3`,children:`step one`}),`.`]}),`\n`]}),`\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:` compute`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` instances`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` **`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`INSTANCE_NAME`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`**`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --image`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` controlplane-agent-amd64-20260218-2334239718-16cf8727`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --image-project`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` cpln-build`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --metadata-from-file=user-data=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`**`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`AGENT_NAME-bootstrapConfig.json`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`**`})]}),`\n`]})})}),`\n`,_jsxs(Tip,{children:[_jsxs(_components.p,{children:[`Refer to the `,_jsx(_components.a,{href:`/reference/agent#agent-sizing-guidance`,children:`Agent Sizing Guidance`}),` page for additional details on which machine type to select.`]}),_jsxs(_components.p,{children:[`Add the flag `,_jsx(_components.code,{children:`--machine-type=MACHINE_TYPE`}),` to the command above to select a different type. Otherwise, the default type is `,_jsx(_components.code,{children:`n1-standard-1`}),`.`]})]}),`\n`,_jsxs(_components.ol,{start:`4`,children:[`\n`,_jsx(_components.li,{children:`After a few moments, the command will return and show the status of the deployed instance.`}),`\n`,_jsx(_components.li,{children:`The agent will now be running, connecting to the Control Plane servers, and ready to process requests.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-three-configure-firewall`,children:`Step Three - Configure Firewall`}),`\n`,_jsx(_components.p,{children:`By default, the GCP firewall rules open the common SSH, RDP, and ICMP ports to the world and allows all internal ports within the VPC. The agent does not need any of these ports open.`}),`\n`,_jsx(_components.p,{children:`At a minimum, the agent needs to be able to connect to your GCP resources and the Internet.`}),`\n`,_jsx(Heading,{level:`3`,id:`next-steps-3`,children:`Next Steps`}),`\n`,_jsxs(_components.p,{children:[`Now that you have an agent configured and running, it can be used within an `,_jsx(_components.a,{href:`/reference/identity`,children:`identity`}),` to allow your `,_jsx(_components.a,{href:`/reference/workload`,children:`workload`}),` to connect to your internal GCP resources.`]}),`\n`,_jsx(Heading,{level:`2`,id:`private-network`,children:`Private Network`}),`\n`,_jsx(Heading,{level:`3`,id:`overview-4`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Follow the steps below to install and configure an `,_jsx(_components.a,{href:`/reference/agent`,children:`agent`}),` within your private network.`]}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites-4`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Review the `,_jsx(_components.a,{href:`/reference/agent`,children:`Agent`}),` reference page.`]}),`\n`,_jsxs(_components.li,{children:[`Install the `,_jsx(_components.a,{href:`/cli-reference/installation`,children:`CLI`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Install `,_jsx(_components.a,{href:`https://docs.docker.com/engine/install/`,children:`Docker`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-one-create-an-agent-4`,children:`Step One - Create an Agent`}),`\n`,_jsxs(_components.p,{children:[`Follow the `,_jsx(_components.a,{href:`/guides/agent`,children:`Create an Agent`}),` guide to define an agent and generate the bootstrap config file that will be used in\n`,_jsx(_components.a,{href:`#step-two-launch-agent-locally`,children:`step two`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-two-launch-agent-locally`,children:`Step Two - Launch agent locally`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Open a new shell and execute the following command. Use the bootstrap file that was created in `,_jsx(_components.a,{href:`#step-one-create-an-agent-4`,children:`step one`}),`.`]}),`\n`]}),`\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:`cpln`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` agent`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` up`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --bootstrap-file=PATH/AGENT_NAME-bootstrapConfig.json`})]}),`\n`]})})}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:`If you are using Windows, follow these instructions:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Configure Docker to `,_jsx(_components.strong,{children:`not`}),` use the WSL 2 based engine.`]}),`\n`,_jsxs(_components.li,{children:[`Run the `,_jsx(_components.code,{children:`cpln`}),` command above using a Windows command prompt and not using WSL.`]}),`\n`]})]}),`\n`,_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsx(_components.li,{children:`The agent will now be running, connecting to the Control Plane servers, and ready to process requests.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`next-steps-4`,children:`Next Steps`}),`\n`,_jsxs(_components.p,{children:[`Now that you have an agent configured and running, it can be used within an `,_jsx(_components.a,{href:`/reference/identity`,children:`identity`}),` to allow your `,_jsx(_components.a,{href:`/reference/workload`,children:`workload`}),` to connect to your local resources.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`When running an agent locally, it is running within a local Docker container. When configuring an `,_jsx(_components.a,{href:`/reference/identity#network-resources-networkresources`,children:`identity network\nresource`}),`, you must use the IP of the network adapter that Docker installed on the\nlocal machine.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`kubernetes-k8s-cluster`,children:`Kubernetes (k8s) Cluster`}),`\n`,_jsx(Heading,{level:`3`,id:`overview-5`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`Follow the steps below to install and configure an `,_jsx(_components.a,{href:`/reference/agent`,children:`agent`}),` within your k8s cluster.`]}),`\n`,_jsx(Heading,{level:`3`,id:`prerequisites-5`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Review the `,_jsx(_components.a,{href:`/reference/agent`,children:`Agent`}),` reference page.`]}),`\n`,_jsxs(_components.li,{children:[`Install the `,_jsx(_components.a,{href:`/cli-reference/installation`,children:`CLI`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-one-create-an-agent-5`,children:`Step One - Create an Agent`}),`\n`,_jsxs(_components.p,{children:[`Follow the `,_jsx(_components.a,{href:`/guides/agent`,children:`Create an Agent`}),` guide to define an agent and generate the bootstrap config file that will be used in\n`,_jsx(_components.a,{href:`#step-two-launch-agent-within-a-k8s-cluster`,children:`step two`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-two-launch-agent-within-a-k8s-cluster`,children:`Step Two - Launch agent within a K8s cluster`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Open a new shell and execute the following command. Update tokens as necessary. Use the bootstrap file that was created in `,_jsx(_components.a,{href:`#step-one-create-an-agent-5`,children:`step one`}),`.`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,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:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cpln`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` agent`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` manifest`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --bootstrap-file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` bootstrap.json`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --namespace`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` NAMESPACE`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --replicas`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 2`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --cluster`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` CLUSTER_ID`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` manifest.yaml`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# inspect/modify the manifest file manually, if needed.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`kubectl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` apply`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -f`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` manifest.yaml`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`cpln`}),` will generate the manifest.yaml file that will deploy two replicas of the agent to the namespace of your choice (`,_jsx(_components.code,{children:`NAMESPACE`}),` in the example). The parameter `,_jsx(_components.code,{children:`--cluster CLUSTER_ID`}),` will be added to the agent’s status which is used as a hint to know which cluster an agent has been deploy to.`]}),`\n`,_jsxs(_components.p,{children:[`It is recommended to use the option `,_jsx(_components.code,{children:`--replicas=2`}),` for high availability (HA) configuration. This will generate two unique agent deployments in an active/failover configuration using leader election through the Control Plane API.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Never scale the kubernetes agent deployments to more than one replica. Each deployment has a unique key that is used to uniquely identity itself in the network. If more than one replica from the same deployment is running then intermittent latency and dropped packets will occur.`})}),`\n`,_jsx(_components.p,{children:`On startup, the agent will generate a public/private key-pair which is persisted as a k8s secret. In this scenario, the agents run under a k8s service account, which can create/modify secrets in its own namespace. If this is a concern, the agent can be configured to run in a dedicated namespace.`}),`\n`,_jsxs(_components.ol,{start:`2`,children:[`\n`,_jsx(_components.li,{children:`The agent will now be running, connecting to the Control Plane servers, and ready to process requests.`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`next-steps-5`,children:`Next Steps`}),`\n`,_jsxs(_components.p,{children:[`Now that you have an agent configured and running, it can be used within an `,_jsx(_components.a,{href:`/reference/identity`,children:`identity`}),` to allow your `,_jsx(_components.a,{href:`/reference/workload`,children:`workload`}),` to connect to your local resources.`]})]})}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":"Configure an Agent (Legacy)","description":"Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.","keywords":["marketplace image","EC2","virtual machine","bootstrap config","private network","ARM","agent v1","deprecated agent","secure communications agent","wormhole"],"boost":0.1,"href":"/guides/setup-agent-legacy"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"AWS","slug":"aws","depth":2,"children":[{"title":"Overview","slug":"overview","depth":3,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":3,"children":[]},{"title":"Step One - Create an Agent","slug":"step-one-create-an-agent","depth":3,"children":[]},{"title":"Step Two - Launch an agent in AWS","slug":"step-two-launch-an-agent-in-aws","depth":3,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":3,"children":[]}]},{"title":"Azure","slug":"azure","depth":2,"children":[{"title":"Overview","slug":"overview-2","depth":3,"children":[]},{"title":"Prerequisites","slug":"prerequisites-2","depth":3,"children":[]},{"title":"Step One - Create an Agent","slug":"step-one-create-an-agent-2","depth":3,"children":[]},{"title":"Step Two - Launch an agent in Azure","slug":"step-two-launch-an-agent-in-azure","depth":3,"children":[]},{"title":"Next Steps","slug":"next-steps-2","depth":3,"children":[]}]},{"title":"GCP","slug":"gcp","depth":2,"children":[{"title":"Overview","slug":"overview-3","depth":3,"children":[]},{"title":"Prerequisites","slug":"prerequisites-3","depth":3,"children":[]},{"title":"Step One - Create an Agent","slug":"step-one-create-an-agent-3","depth":3,"children":[]},{"title":"Step Two - Launch agent in GCP","slug":"step-two-launch-agent-in-gcp","depth":3,"children":[]},{"title":"Step Three - Configure Firewall","slug":"step-three-configure-firewall","depth":3,"children":[]},{"title":"Next Steps","slug":"next-steps-3","depth":3,"children":[]}]},{"title":"Private Network","slug":"private-network","depth":2,"children":[{"title":"Overview","slug":"overview-4","depth":3,"children":[]},{"title":"Prerequisites","slug":"prerequisites-4","depth":3,"children":[]},{"title":"Step One - Create an Agent","slug":"step-one-create-an-agent-4","depth":3,"children":[]},{"title":"Step Two - Launch agent locally","slug":"step-two-launch-agent-locally","depth":3,"children":[]},{"title":"Next Steps","slug":"next-steps-4","depth":3,"children":[]}]},{"title":"Kubernetes (k8s) Cluster","slug":"kubernetes-k8s-cluster","depth":2,"children":[{"title":"Overview","slug":"overview-5","depth":3,"children":[]},{"title":"Prerequisites","slug":"prerequisites-5","depth":3,"children":[]},{"title":"Step One - Create an Agent","slug":"step-one-create-an-agent-5","depth":3,"children":[]},{"title":"Step Two - Launch agent within a K8s cluster","slug":"step-two-launch-agent-within-a-k8s-cluster","depth":3,"children":[]},{"title":"Next Steps","slug":"next-steps-5","depth":3,"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":"Configure an Agent (Legacy) - Control Plane","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-14T14:55:29.744Z","originalFileLocation":"guides/setup-agent-legacy.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=\"Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.\">\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=\"Configure an Agent (Legacy) - Control Plane\">\u003cmeta data-mint-head property=\"og:description\" content=\"Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Control Plane\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.controlplane.com/guides/setup-agent-legacy\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://controlplanecorporation.mintlify.app/_mintlify/api/og/v2?division=Configure+Resources\u0026amp;title=Configure+an+Agent+%28Legacy%29\u0026amp;description=Install+and+configure+v1+wormhole+agents+in+AWS%2C+Azure%2C+GCP%2C+Docker%2C+or+Kubernetes.+The+v1+agent+is+deprecated+since+April+2026%3B+new+setups+follow+the+current+C\u0026amp;theme=5c8c59bec2193070854fc823\u0026amp;signature=e0e93b6ed25af036163316cbe5a68a8d634006b75456fa138578b3270c7640ee\">\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=\"Configure an Agent (Legacy) - Control Plane\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://controlplanecorporation.mintlify.app/_mintlify/api/og/v2?division=Configure+Resources\u0026amp;title=Configure+an+Agent+%28Legacy%29\u0026amp;description=Install+and+configure+v1+wormhole+agents+in+AWS%2C+Azure%2C+GCP%2C+Docker%2C+or+Kubernetes.+The+v1+agent+is+deprecated+since+April+2026%3B+new+setups+follow+the+current+C\u0026amp;theme=5c8c59bec2193070854fc823\u0026amp;signature=e0e93b6ed25af036163316cbe5a68a8d634006b75456fa138578b3270c7640ee\">\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/setup-agent-legacy\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/setup-agent-legacy.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/setup-agent-legacy#webpage\",\"url\":\"https://docs.controlplane.com/guides/setup-agent-legacy\",\"name\":\"Configure an Agent (Legacy)\",\"description\":\"Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.\",\"dateModified\":\"2026-09-14T14:55:29.744Z\",\"isPartOf\":{\"@id\":\"https://docs.controlplane.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.controlplane.com/guides/setup-agent-legacy#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.controlplane.com/guides/setup-agent-legacy#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Configure Resources\",\"item\":\"https://docs.controlplane.com/guides/configure-cdn\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configure an Agent (Legacy)\",\"item\":\"https://docs.controlplane.com/guides/setup-agent-legacy\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.controlplane.com/guides/setup-agent-legacy#article\",\"headline\":\"Configure an Agent (Legacy)\",\"name\":\"Configure an Agent (Legacy)\",\"description\":\"Install and configure v1 wormhole agents in AWS, Azure, GCP, Docker, or Kubernetes. The v1 agent is deprecated since April 2026; new setups follow the current Configure an Agent guide.\",\"url\":\"https://docs.controlplane.com/guides/setup-agent-legacy\",\"mainEntityOfPage\":{\"@id\":\"https://docs.controlplane.com/guides/setup-agent-legacy#webpage\"},\"dateModified\":\"2026-09-14T14:55:29.744Z\",\"keywords\":\"marketplace image, EC2, virtual machine, bootstrap config, private network, ARM, agent v1, deprecated agent, secure communications agent, wormhole\",\"publisher\":{\"@id\":\"https://docs.controlplane.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.controlplane.com#website\"}}]}\u003c/script>","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","description":"Connect a Control Plane workload to an Amazon RDS database in a private VPC using an agent, security groups, and an identity network resource.","href":"/guides/connect-rds-with-agent"},{"title":"Configure an Agent (Legacy)","href":"/guides/setup-agent-legacy"},{"title":"Invite Users","description":"Invite new users to your org and assign them to groups using the Console UI, CLI, or CSV upload.","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","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","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":"Configure an Agent (Legacy) - Control Plane","buildId":"dpl_2gSLkbMoF5kkLsBqYzq9KWtDyJRo","deploymentId":"dpl_2gSLkbMoF5kkLsBqYzq9KWtDyJRo","dynamics":[],"chunks":[]}