{"id":35,"date":"2024-08-31T13:55:53","date_gmt":"2024-08-31T13:55:53","guid":{"rendered":"https:\/\/www.intverse.io\/blog\/?p=35"},"modified":"2024-09-01T11:49:24","modified_gmt":"2024-09-01T11:49:24","slug":"documentation-deploying-redpanda-connect-on-eks-using-argocd","status":"publish","type":"post","link":"https:\/\/www.intverse.io\/blog\/documentation-deploying-redpanda-connect-on-eks-using-argocd\/","title":{"rendered":"Doc: Deploying Redpanda Connect on EKS using ArgoCD"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><strong>Overview<\/strong><\/h4>\n\n\n\n<p><a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/about\/\">Redpanda Connect<\/a>, formerly known as Benthos (acquired by Redpanda),&nbsp;is a declarative data streaming service that solves a wide range of data engineering problems with simple, chained, stateless&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/components\/processors\/about\/\">processing steps<\/a>. It implements transaction-based resiliency with back pressure, so when connecting to at-least-once sources and sinks it\u2019s able to guarantee at-least-once delivery without needing to persist messages during transit.<\/p>\n\n\n\n<p>It\u2019s&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/guides\/getting_started\/\">simple to deploy<\/a>, comes with a wide range of&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/about\/#components\">connectors<\/a>, and is totally data agnostic, making it easy to drop into your existing infrastructure. Connect has functionality that overlaps with integration frameworks, log aggregators, and ETL workflow engines, and can therefore be used to complement these traditional data engineering tools or act as a simpler alternative.<\/p>\n\n\n\n<p><a href=\"https:\/\/argo-cd.readthedocs.io\/en\/stable\/\">Argo CD<\/a>&nbsp;is a declarative, GitOps continuous delivery tool for Kubernetes. It pairs very well with Redpanda Connect and we will see how good the experience is in deploying and maintaining the Redpanda Connect components in this context.<\/p>\n\n\n\n<p>In this document, we will walk through the steps of deploying&nbsp;Redpanda Connect&nbsp;on an Amazon EKS cluster using ArgoCD. &nbsp;The process involves fetching the Benthos Helm chart, uploading Helm chart manifests to GitHub, modifying the ConfigMap in Bitbucket, and deploying through ArgoCD.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Prerequisites<\/strong><\/h4>\n\n\n\n<p>1.&nbsp;<strong>Amazon EKS Cluster<\/strong>: Ensure you have an EKS cluster running.<\/p>\n\n\n\n<p>2.&nbsp;<strong>ArgoCD<\/strong>: Installed and configured on your EKS cluster.<\/p>\n\n\n\n<p>3.&nbsp;<strong>Kubectl<\/strong>: Installed and configured to interact with your EKS cluster.<\/p>\n\n\n\n<p>4.&nbsp;<strong>Helm<\/strong>: Installed for fetching and managing Helm charts.<\/p>\n\n\n\n<p>5.&nbsp;<strong>GitHub Account<\/strong>: For storing Helm chart manifests.<\/p>\n\n\n\n<p>6.&nbsp;<strong>Bitbucket Account<\/strong>: For managing ConfigMap modifications.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Introduction to Redpanda Connect<\/strong><\/h4>\n\n\n\n<p>Connect is a declarative data streaming service that solves a wide range of data engineering problems with simple, chained, stateless&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/components\/processors\/about\/\">processing steps<\/a>. It implements transaction-based resiliency with back pressure, so when connecting to at-least-once sources and sinks it\u2019s able to guarantee at-least-once delivery without needing to persist messages during transit.<\/p>\n\n\n\n<p>It\u2019s&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/guides\/getting_started\/\">simple to deploy<\/a>, comes with a wide range of&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/about\/#components\">connectors<\/a>, and is totally data agnostic, making it easy to drop into your existing infrastructure. Connect has functionality that overlaps with integration frameworks, log aggregators and ETL workflow engines, and can therefore be used to complement these traditional data engineering tools or act as a simpler alternative.<\/p>\n\n\n\n<p>Refer:&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/about\/\">https:\/\/docs.redpanda.com\/redpanda-connect\/about\/<\/a><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>NOTE: At the time of this writing (late August 2024), Redpanda has not yet converted all references to Redpanda Connect from Benthos and many updates are happening during this product integration phase. As a close partner of Redpanda, IntVerse regularly keeps up with changes and will be regularly updating this document &#8211; i.e., eventually this note will disappear!&nbsp;<\/em><\/p>\n<\/blockquote>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Step-by-Step Deployment<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>1. Fetch the Helm Chart<\/strong><\/h5>\n\n\n\n<p>Use Helm to fetch the Benthos chart and untar it:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>helm fetch benthos\/benthos --untar<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">2.&nbsp;<strong>Review the Chart<\/strong>: <\/h5>\n\n\n\n<p>Navigate to the directory where the Helm chart is untarred. This directory will contain the Chart.yaml, values.yaml, and templates.<\/p>\n\n\n\n<p>cd benthos<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Upload Helm Chart Manifests to GitHub<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">1.&nbsp;<strong>Create a Git Repository<\/strong>: <\/h5>\n\n\n\n<p>Set up a Git repository on GitHub if you don\u2019t have one.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">2.&nbsp;<strong>Add the Helm Chart<\/strong>: <\/h5>\n\n\n\n<p>Upload the Benthos directory (or relevant Helm chart files) to a new directory in your GitHub repository.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git init<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git add benthos<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git commit -m \"Add Benthos Helm chart\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git remote add origin https:\/\/github.com\/your-username\/your-repo.git<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git push -u origin main<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"432\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-1.png\" alt=\"\" class=\"wp-image-149\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-1.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-1-300x138.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-1-768x354.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Modify ConfigMap on Bitbucket<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">1.&nbsp;<strong>Access Bitbucket<\/strong>: <\/h5>\n\n\n\n<p>Go to your Bitbucket repository where the ConfigMap is stored.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">2.&nbsp;<strong>Edit ConfigMap<\/strong>: <\/h5>\n\n\n\n<p>Modify the ConfigMap as needed. For example, update benthos-config.yaml in your Bitbucket repository. Once we deploy the Benthos Application it will take input and output from the configmap we provided here. The config parameter should contain the configuration as it would be parsed by the Benthos binary.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Integrating Benthos and Redpanda BYOC using ConfigMap:<\/strong><\/h4>\n\n\n\n<p>Modify Benthos ConfigMap to match our example topology. In this use case, we are using Kafka (Redpanda) as an \u201cinput\u201d and File as an \u201cOutput\u201d.<\/p>\n\n\n\n<p>Reference:<br><a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/components\/inputs\/about\/\">https:\/\/docs.redpanda.com\/redpanda-connect\/components\/inputs\/about\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/docs.redpanda.com\/redpanda-connect\/components\/processors\/about\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/docs.redpanda.com\/redpanda-connect\/components\/outputs\/about\n<\/div><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>NOTE on this step:<\/strong><\/h4>\n\n\n\n<p>If you\u2019re seeing issues writing to or reading from Kafka with this component then it\u2019s worth trying out the newer&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/components\/inputs\/kafka_franz\/\">kafka_franz&nbsp;input<\/a>.&nbsp;<\/p>\n\n\n\n<p>I\u2019m seeing logs that report\u00a0Failed to connect to Kafka: Kafka: the client has run out of available brokers to talk to (Is your cluster reachable?), but the brokers are reachable.<\/p>\n\n\n\n<p>Unfortunately, this error message will appear for a wide range of connection problems even when the broker endpoint can be reached. Double-check your authentication configuration and also ensure that you have&nbsp;<a href=\"https:\/\/docs.redpanda.com\/redpanda-connect\/components\/inputs\/kafka\/#tlsenabled\">enabled TLS<\/a>&nbsp;if applicable.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"540\" height=\"600\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-3.png\" alt=\"\" class=\"wp-image-150\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-3.png 540w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-3-270x300.png 270w\" sizes=\"(max-width: 540px) 100vw, 540px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Commit Changes<\/strong>: <\/h4>\n\n\n\n<p>Commit the changes to Bitbucket.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git add benthos-config.yaml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git commit -m \"Update Benthos ConfigMap\"<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git push origin master<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Create an ArgoCD Application for Benthos<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Create Application<\/strong>: <\/h5>\n\n\n\n<p>In the ArgoCD UI, click on +New APP. Choose EDIT AS YAML and use the following template:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: argoproj.io\/v1alpha1<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kind: Application<\/code><\/pre>\n\n\n\n<p>metadata:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; name: benthos<\/code><\/pre>\n\n\n\n<p>spec:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; destination:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; namespace: benthos<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; server: https:\/\/kubernetes.default.svc<\/code><\/pre>\n\n\n\n<p>&nbsp; source:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; path: redpandaconnect\/benthos<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; repoURL: https:\/\/github.com\/Intverse\/benthos.git<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; targetRevision: main<\/code><\/pre>\n\n\n\n<p>&nbsp; sources: []<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; project: default<\/code><\/pre>\n\n\n\n<p>&nbsp; syncPolicy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; automated:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp; prune: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp; selfHeal: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp; allowEmpty: true<\/code><\/pre>\n\n\n\n<p>&nbsp; &nbsp; syncOptions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp; - CreateNamespace=true<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"624\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-4.png\" alt=\"\" class=\"wp-image-151\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-4.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-4-300x200.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-4-768x512.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<p><strong>Save and Create:&nbsp;<\/strong>Save and create the application.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"482\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-5.png\" alt=\"\" class=\"wp-image-152\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-5.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-5-300x154.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-5-768x395.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Verify Deployment<\/strong><\/h4>\n\n\n\n<p><strong>Check Logs<\/strong>: Monitor the logs of the Benthos pods to ensure that they are processing iterations correctly and that there are no issues with the deployment<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"844\" height=\"326\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-6.png\" alt=\"\" class=\"wp-image-153\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-6.png 844w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-6-300x116.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-6-768x297.png 768w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/figure>\n\n\n\n<p>Check logs of pod\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"184\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-7.png\" alt=\"\" class=\"wp-image-154\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-7.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-7-300x59.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-7-768x151.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Streams mode<\/strong><\/h4>\n\n\n\n<p><strong>Prepare ConfigMap<\/strong>:&nbsp;When running Benthos in streams mode, combine individual stream configuration files into a single Kubernetes ConfigMap. Ensure this ConfigMap is applied before deploying the Helm chart.<\/p>\n\n\n\n<p><strong>Update values.yaml<\/strong>: Enable streams mode in values.yaml file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># values.yaml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>streams:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;enabled: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;streamsConfigMap: \"benthos-streams\"<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"192\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-8.png\" alt=\"\" class=\"wp-image-155\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-8.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-8-300x62.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-8-768x158.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<p>Currently, the streams mode&nbsp;ConfigMap&nbsp;should be applied&nbsp;<strong>separately from and before installation of<\/strong>&nbsp;the helm chart; support for deploying additional&nbsp;ConfigMap&#8217;s within the chart may be implemented later.<\/p>\n\n\n\n<p>Created config.yaml file on bitbucket so we can explicitly able to give multiple inputoutput iterations for benthos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"822\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-9.png\" alt=\"\" class=\"wp-image-156\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-9.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-9-300x263.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-9-768x674.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Create an ArgoCD application for benthos config<\/strong>:<\/h4>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Click on +NewAPP Then click on EDIT AS YAML, save and create the application<\/p>\n<\/blockquote>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: argoproj.io\/v1alpha1<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kind: Application<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>metadata:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;name: bent<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>spec:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;destination:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp;namespace: rbenthos<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp;server: https:\/\/kubernetes.default.svc<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;source:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp;path: benthosconfig<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp;repoURL: https:\/\/github.com\/Intverse\/benthos.git<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp;targetRevision: main<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;sources: &#91;]<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;project: default<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp;syncPolicy:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp;automated:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp;prune: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp;selfHeal: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp;allowEmpty: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp;syncOptions:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp;- CreateNamespace=true<\/code><\/pre>\n\n\n\n<p><strong>Save and Create<\/strong>: Save and create the application.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"782\" height=\"112\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-10.png\" alt=\"\" class=\"wp-image-157\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-10.png 782w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-10-300x43.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-10-768x110.png 768w\" sizes=\"(max-width: 782px) 100vw, 782px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Deploy Benthos Application<\/strong>:<\/h4>\n\n\n\n<p><strong>Deploy Application<\/strong>: In ArgoCD, configure the repository URL to point to the Benthos Helm chart manifest file and ensure values.yaml has streams enabled.<\/p>\n\n\n\n<p><strong>Create Application<\/strong>: Click on +New APP, choose EDIT AS YAML, and use the following template:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: argoproj.io\/v1alpha1<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kind: Application<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>metadata:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; name: benthos<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>spec:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; destination:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; namespace: rbenthos<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; server: https:\/\/kubernetes.default.svc<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; source:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; path: redpandaconnect\/benthos<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; repoURL: https:\/\/github.com\/Intverse\/benthos.git<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; targetRevision: main<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; sources: &#91;]<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; project: default<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; syncPolicy:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; automated:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp; prune: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp; selfHeal: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp; allowEmpty: true<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; syncOptions:<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&nbsp; &nbsp; &nbsp; - CreateNamespace=true<\/code><\/pre>\n\n\n\n<p><strong>Save and Create<\/strong>: Save and create the application.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"462\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-11.png\" alt=\"\" class=\"wp-image-158\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-11.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-11-300x148.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-11-768x379.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Verify Deployment<\/strong><\/h4>\n\n\n\n<p><strong>Check Logs<\/strong>: Monitor the logs of the Benthos pods to ensure that they are processing iterations correctly and that there are no issues with the deployment.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"318\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-12.png\" alt=\"\" class=\"wp-image-159\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-12.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-12-300x102.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-12-768x261.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<p>Check logs of pod if it is taking multiple iterations or not:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"936\" height=\"134\" src=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-13.png\" alt=\"\" class=\"wp-image-161\" srcset=\"https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-13.png 936w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-13-300x43.png 300w, https:\/\/www.intverse.io\/blog\/wp-content\/uploads\/2024\/08\/Picture-13-768x110.png 768w\" sizes=\"(max-width: 936px) 100vw, 936px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Conclusion:<\/strong><\/h4>\n\n\n\n<p>By following this guide, you\u2019ve successfully deployed Redpanda Connect on an Amazon EKS cluster using ArgoCD, demonstrating the power and flexibility of combining these robust tools. Redpanda Connect\u2019s ability to handle complex data streaming tasks with ease, coupled with ArgoCD\u2019s seamless continuous delivery capabilities, makes for an efficient and scalable solution for modern data engineering challenges.<\/p>\n\n\n\n<p>This deployment process not only simplifies the management of your streaming data infrastructure but also ensures resilience and scalability, allowing your team to focus on building and optimizing data pipelines without the overhead of manual operations. With Redpanda Connect and ArgoCD, you\u2019re well-equipped to handle the demands of today\u2019s data-driven environments, ensuring reliable, real-time data processing across your organization.<\/p>\n\n\n\n<p>To further enhance your capabilities and overcome any data streaming challenges, consider leveraging the expertise of the IntVerse team. Their services can provide tailored solutions, ensuring that your Redpanda Connect deployment is optimized for your specific needs. With IntVerse by your side, you can confidently tackle complex data engineering problems, knowing you have the right support to maximize the potential of your data streaming infrastructure.<\/p>\n\n\n\n<p>Now that your setup is complete, you can explore further customization and optimization of your streaming data pipelines, backed by the expertise and support of the IntVerse team.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview Redpanda Connect, formerly known as Benthos (acquired by Redpanda),&nbsp;is a declarative data streaming service that solves a wide range of data engineering problems with simple, chained, stateless&nbsp;processing steps. It implements transaction-based resiliency with back pressure, so when connecting to at-least-once sources and sinks it\u2019s able to guarantee at-least-once delivery without needing to persist messages [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":145,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"saved_in_kubio":false,"footnotes":""},"categories":[8],"tags":[11,10,9,12],"class_list":["post-35","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-redpanda-intverse","tag-eks-using-argocd","tag-intverse","tag-redpanda","tag-redpanda-connect"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/posts\/35","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/comments?post=35"}],"version-history":[{"count":8,"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/posts\/35\/revisions"}],"predecessor-version":[{"id":162,"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/posts\/35\/revisions\/162"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/media\/145"}],"wp:attachment":[{"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/media?parent=35"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/categories?post=35"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.intverse.io\/blog\/wp-json\/wp\/v2\/tags?post=35"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}