{"version":3,"file":"Fkr90Y0Ui-10.BcifiBHT.mjs","names":["n","r","o","s","i"],"sources":["https:/framerusercontent.com/modules/xeMQT777Kis7EUuq9eUg/2xwFA9CYd3HBsqLaITEi/Fkr90Y0Ui-10.js"],"sourcesContent":["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{ComponentPresetsConsumer as o,Link as n}from\"framer\";import{motion as r}from\"framer-motion\";import*as a from\"react\";import{Youtube as i}from\"https://framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js\";import s from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js\";export const richText=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you've landed on this blog post, I assume you're already familiar with \",/*#__PURE__*/e(n,{href:\"https://kubernetes.io/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Kubernetes\"})}),\" and know it's a container orchestration platform. As new application releases are created, you've got your \",/*#__PURE__*/e(n,{href:\"https://aws.amazon.com/devops/continuous-integration/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"CI processes\"})}),\" down for building container images. Kubernetes is fantastic in providing a wide range of functionality that enables users to perform complex deployment strategies. The challenge is that there are good and bad ways to use it, depending on your environment.\"]}),/*#__PURE__*/e(\"p\",{children:\"The platform engineers in your organization are likely intimately familiar with Kubernetes and understand the nuances of the right and the wrong way to deploy something into the cluster based on the specifics of your organization. The challenge comes from disseminating this information to all of the users of the platform.\"}),/*#__PURE__*/e(\"p\",{children:\"Most of the operators' understanding likely came from formal training or spending many hours building the platform and learning from their mistakes. It would be unrealistic to require that all of the application developers that intend to interact with the platform go through the same experience. It's expensive for the organization in terms of time, effort, and potential impact on the product and the customers as these lessons are learned.\"}),/*#__PURE__*/e(\"p\",{children:\"Inside every organization, there are policies and standards that users of the internal development platform are aware of or are required to follow. The challenge is that many organizations use documentation and broad communication to ensure users follow these standards. This provides a long feedback loop between people deviating from the expected standards and learning the correct method.\"}),/*#__PURE__*/e(\"h2\",{children:\"Kyverno\"}),/*#__PURE__*/t(\"p\",{children:[\"Enter \",/*#__PURE__*/e(n,{href:\"https://kyverno.io/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Kyverno\"})}),\", a Kubernetes-native policy engine that provides a way to codify the lessons learned by platform administrators. Kyverno deploys directly into a Kubernetes cluster and uses custom resources for policy definitions. Using admission webhooks, Kyverno can audit policy violations or go as far as blocking requests as they attempt to enter the cluster.\"]}),/*#__PURE__*/e(\"p\",{children:\"A policy engine can significantly reduce the feedback loop between attempting to apply a change in Kubernetes and learning that deployment does not meet the standards set by the platform's administrators. As application developers interact with the cluster, the policies provide feedback immediately on if they are deviating from the best practices set out by the platform team.\"}),/*#__PURE__*/t(\"p\",{children:[\"For example, a developer becoming familiar with Kubernetes decides to deploy the \",/*#__PURE__*/e(\"code\",{children:\"latest\"}),\" tag for their application. This may seem harmless, but they are unaware of \",/*#__PURE__*/e(n,{href:\"https://vsupalov.com/docker-latest-tag/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"the dangers of using a variable tag\"})}),\". Until this mistake is caught by a cluster administrator and reported back to the user, a lot of damage can be done in that time.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Instead, when the user goes to deploy the \",/*#__PURE__*/e(\"code\",{children:\"latest\"}),\" tag into the cluster, they can be immediately prompted with a clear message explaining why this is not allowed and steps to remediate the policy violation. This enables them to continue with what they were trying to accomplish, deploying their application into the cluster.\"]}),/*#__PURE__*/e(\"p\",{children:\"Organizations can even integrate policies into the CI/CD workflow to catch any violations earlier in the release cycle. If somehow a violation makes it to the cluster, Kyverno can block the admission request to enforce the policy or even mutate resources as they are applied so that they conform with best practices.\"}),/*#__PURE__*/e(\"h2\",{children:\"GitOps / Argo CD\"}),/*#__PURE__*/e(\"p\",{children:\"As a Kubernetes administrator, you're probably curious about the best way to manage these policies; this is where Argo CD and GitOps come in.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://akuity.io/gitops/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"GitOps\"})}),\" brings best practices for application development, such as version control, collaboration, compliance, and tooling, and applies them to Kubernetes. The manifests for Kubernetes resources used in a cluster are stored in Git, which provides an immutable version of the desired state.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://akuity.io/what-is-argo/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo CD\"})}),\" acts as the GitOps agent, which continuously \",/*#__PURE__*/e(n,{href:\"https://github.com/open-gitops/documents/blob/v1.0.0/GLOSSARY.md#reconciliation\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"reconciles\"})}),\" the difference between the desired state and the live state of the cluster. It takes any changes in Git and applies them to the Kubernetes cluster.\"]}),/*#__PURE__*/e(\"p\",{children:\"Like any Kubernetes manifest, Kyverno policies can be stored and managed through Git. This enables them to follow transparent approval processes and provide an audit trail of when policies change and why.\"}),/*#__PURE__*/e(\"h2\",{children:\"Kyverno Policies for Best Practices\"}),/*#__PURE__*/t(\"p\",{children:[\"Let us look at a typical example of enforcing Kubernetes \",/*#__PURE__*/e(n,{href:\"https://github.com/kyverno/policies/tree/main/best-practices\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"best practices with Kyverno policies\"})}),\". We'll start by adding a policy to the cluster using Argo CD. For this example, Kyverno and Argo CD are already installed into the cluster.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In \",/*#__PURE__*/e(n,{href:\"https://github.com/morey-tech/argo-cd-kyverno\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"the GitOps repository\"})}),\", add the \",/*#__PURE__*/e(\"code\",{children:\"require-resource-requests\"}),\" policy, which requires that pods have defined resource requests. This is critical to Kubernetes' ability to \",/*#__PURE__*/e(n,{href:\"https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#how-pods-with-resource-requests-are-scheduled\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"schedule pods onto nodes with sufficient resources\"})}),\". Without them, in terms of resource availability, Kubernetes will schedule pods blindly onto nodes.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"apiVersion: kyverno.io/v1\\nkind: ClusterPolicy\\nmetadata:\\n  name: require-resource-requests\\n  annotations:\\n    policies.kyverno.io/title: Require Resource Requests\\n    policies.kyverno.io/category: Best Practices\\n    policies.kyverno.io/severity: medium\\n    policies.kyverno.io/subject: Pod\\n    policies.kyverno.io/minversion: 1.6.0\\n    policies.kyverno.io/description: >-\\n      As application workloads share cluster resources, it is important to specify resources\\n      requested and consumed by each Pod. Requiring resource requests per Pod is recommended,\\n      especially for memory and CPU. If a Namespace level request is specified, defaults will\\n      automatically be applied to each Pod based on the LimitRange configuration. This policy\\n      validates that all containers have something specified for memory and CPU requests.\\nspec:\\n  validationFailureAction: enforce\\n  background: true\\n  rules:\\n    - name: validate-resource-requests\\n      match:\\n        any:\\n          - resources:\\n              kinds:\\n                - Pod\\n              namespaces:\\n                - dev\\n      validate:\\n        message: 'CPU and memory resource requests are required.'\\n        pattern:\\n          spec:\\n            containers:\\n              - resources:\\n                  requests:\\n                    memory: '?*'\\n                    cpu: '?*'\",language:\"Markdown\"})})}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(\"code\",{children:\"validationFailureAction\"}),\" field determines the behavior of how Kyverno responds to a failed validation check. The \",/*#__PURE__*/e(\"code\",{children:\"require-resource-requests\"}),\" policy is set to \",/*#__PURE__*/e(\"code\",{children:\"enforce\"}),\" a rule failure, blocking any request that violates them. When this happens, it will record a \",/*#__PURE__*/e(\"code\",{children:\"fail (blocked)\"}),\" event on the policy resource responsible.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(\"code\",{children:\"validate-resource-requests\"}),\" rule will match any \",/*#__PURE__*/e(\"code\",{children:\"Pod\"}),\" resource in the \",/*#__PURE__*/e(\"code\",{children:\"dev\"}),\" namespace, even if generated from a higher-level resource, such as a Deployment or ReplicaSet. It will validate that the \",/*#__PURE__*/e(\"code\",{children:\"cpu\"}),\" and \",/*#__PURE__*/e(\"code\",{children:\"memory\"}),\" resource request fields on the containers in the pod have a value defined. When the policy validation fails, it will include the \",/*#__PURE__*/e(\"code\",{children:\"message\"}),\" defined in the rule.\"]}),/*#__PURE__*/e(\"p\",{children:\"We'll add an Application to Argo CD that points to the directory in the repo containing the policy.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"apiVersion: argoproj.io/v1alpha1\\nkind: Application\\nmetadata:\\n  name: policies\\nspec:\\n  destination:\\n    name: kind\\n    namespace: kyverno\\n  project: default\\n  source:\\n    path: policies\\n    repoURL: https://github.com/morey-tech/argo-cd-kyverno.git\\n    targetRevision: main\\n    directory:\\n      recurse: true\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"234\",src:\"https://framerusercontent.com/images/OZKsQPJUPm9lzb4SyhMIlqpb8T8.png\",srcSet:\"https://framerusercontent.com/images/OZKsQPJUPm9lzb4SyhMIlqpb8T8.png?scale-down-to=512 512w,https://framerusercontent.com/images/OZKsQPJUPm9lzb4SyhMIlqpb8T8.png 1000w\",style:{aspectRatio:\"1000 / 469\"},width:\"500\"}),/*#__PURE__*/t(\"p\",{children:[\"With the policies synced into the cluster, we will deploy another Argo CD Application containing two \",/*#__PURE__*/e(\"code\",{children:\"nginx\"}),\" pods, one that will pass policy validation and the other that will fail due to missing resource requests.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"247\",src:\"https://framerusercontent.com/images/fEx8kDNmNbfoSZFXMYBdKqnNjA.png\",srcSet:\"https://framerusercontent.com/images/fEx8kDNmNbfoSZFXMYBdKqnNjA.png?scale-down-to=512 512w,https://framerusercontent.com/images/fEx8kDNmNbfoSZFXMYBdKqnNjA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/fEx8kDNmNbfoSZFXMYBdKqnNjA.png 1204w\",style:{aspectRatio:\"1204 / 495\"},width:\"602\"}),/*#__PURE__*/e(\"p\",{children:\"The Sync will ultimately fail because the policy is set to block any resources that contain a violation from being created in the cluster. Looking at the Sync Status in Argo CD, the user can see in the message which Kyverno policy is failing and the message from the rule explaining why.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"174\",src:\"https://framerusercontent.com/images/GOBsBzVBv1tOnLQxefhV987MIAI.png\",srcSet:\"https://framerusercontent.com/images/GOBsBzVBv1tOnLQxefhV987MIAI.png?scale-down-to=512 512w,https://framerusercontent.com/images/GOBsBzVBv1tOnLQxefhV987MIAI.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/GOBsBzVBv1tOnLQxefhV987MIAI.png 1124w\",style:{aspectRatio:\"1124 / 348\"},width:\"562\"}),/*#__PURE__*/e(\"p\",{children:\"The Sync Status will also break down the result for each resource, making it clear to the user which resource failed and why.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"178\",src:\"https://framerusercontent.com/images/unDFjx2PKiWBNpGvgL66ltr8A.png\",srcSet:\"https://framerusercontent.com/images/unDFjx2PKiWBNpGvgL66ltr8A.png?scale-down-to=512 512w,https://framerusercontent.com/images/unDFjx2PKiWBNpGvgL66ltr8A.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/unDFjx2PKiWBNpGvgL66ltr8A.png 1471w\",style:{aspectRatio:\"1471 / 356\"},width:\"735\"}),/*#__PURE__*/e(\"p\",{children:\"On the policy resource, the events will display the violation as well.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"243\",src:\"https://framerusercontent.com/images/oDIl8Rt3z58GHRsIAX9mf9aco3s.png\",srcSet:\"https://framerusercontent.com/images/oDIl8Rt3z58GHRsIAX9mf9aco3s.png?scale-down-to=512 512w,https://framerusercontent.com/images/oDIl8Rt3z58GHRsIAX9mf9aco3s.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/oDIl8Rt3z58GHRsIAX9mf9aco3s.png 1216w\",style:{aspectRatio:\"1216 / 487\"},width:\"608\"}),/*#__PURE__*/e(\"p\",{children:\"Once the policy violation is fixed for the resource, the Argo CD Application will then be able to sync the resource into the cluster.\"}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/e(\"p\",{children:\"Kyverno, as a policy engine, is a powerful tool for providing clear feedback to the users of an internal developer platform on achieving the best practices set out by the Platform team. However, this is only the tip of what Kyverno is capable of. The example in this post demonstrates the admission control functionality, but policies can also mutate, generate, and clean up resources. This creates the option to enforce policies by automatically updating resources as they enter the cluster or building a self-service platform that responds to resources created in the cluster to create new clusters and bootstrap them using Argo CD.\"}),/*#__PURE__*/e(\"p\",{children:\"Managing the policies for a cluster is simplified when adhering to GitOps principles and using Argo CD to manage the deployment. The Argo CD UI provides a clear understanding of what resources are blocked by policy validations, making it easy for users to understand how to bring the resources into compliance.\"}),/*#__PURE__*/t(\"p\",{children:[\"Together, Kyverno and Argo CD open up a whole new world of cluster administration that can scale with your organization's needs. For more best practices in using Argo CD and Kyverno head to \",/*#__PURE__*/e(n,{href:\"https://nirmata.com/2023/03/09/3-essential-tips-for-using-argo-cd-and-kyverno/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:'\"3 Essential Tips for Using Argo CD and Kyverno\"'})}),\" on Nirmata's blog.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Get in Touch\"}),/*#__PURE__*/t(\"p\",{children:[\"Are you using \",/*#__PURE__*/e(\"strong\",{children:\"Kyverno and Argo CD together\"}),\"? Check out these \",/*#__PURE__*/e(n,{href:\"https://kyverno.io/policies/?policytypes=Argo\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo CD policies\"})}),\". You can find the \",/*#__PURE__*/e(n,{href:\"https://kyverno.io/community/#slack-channel\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Kyverno community\"})}),\" the Kubernetes Slack.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Loved this blog post? Want to learn more about helpful tools you can utilize with Argo CD? Check out these blog posts:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-cdk8s-cmp\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo CD CDK8S Config Management Plugin\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/akuity-crossplane-support\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Crossplane Support\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-security-automation-with-oss-fuzz\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo Security Automation with OSS-Fuzz\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/yet-another-take-on-integrating-terraform-with-argo-cd\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Yet Another Take on Integrating Terraform with Argo CD\"})})]})})]})]});export const richText1=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"From day one we set out to become the go-to vendor for enterprise-grade Argo CD as a managed service. As a part of this effort we want to make sure our current and future customers are able to trust our platform and the company building it. This is why we’re happy to announce that we have completed the procedures connected to obtaining the SOC 2 Type 2 compliance!\"}),/*#__PURE__*/e(\"p\",{children:\"A SOC 2 Type 2 Report is a Service Organization Control (SOC) audit on how a cloud-based service provider handles sensitive information - covering both the suitability of a company’s controls and its operating effectiveness.\"}),/*#__PURE__*/e(\"p\",{children:\"There are two stages of achieving SOC 2 certification: SOC 2 Type I and SOC 2 Type II. We went straight for Type 2 which includes reporting on the current security rules (systems and controls) and reviews documents around these rules. The evidence of rules effectiveness is described and evaluated over time, for a minimum of 6 months, to see if the systems and controls in place are functioning continuosly.\"}),/*#__PURE__*/t(\"p\",{children:[\"Becoming SOC 2 certified as well as our \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-security-automation-with-oss-fuzz/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"last year’s effort to ensure that Argo’s security best practices are in place\"})}),\" are important steps we took to make sure that we deliver top-notch services around a top-notch open source product which is used in production by the biggest and most-reliable companies in the Fortune 500.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Please let us know if you would like to access Akuity’s SOC 2 Type 2 Report and see how we can assist you in your Argo and GitOps journey by \",/*#__PURE__*/e(n,{href:\"http://akuity.io/talk-to-sales\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"scheduling a call with our sales team\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Want to know more about security with Argo CD? Check out these resources:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-security\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!1,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Security\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"Argo Security Automation with OSS-Fuzz\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo Security Automation with OSS-Fuzz\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/how-to-manage-kubernetes-secrets-gitops\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"How to manage Kubernetes secrets with GitOps?\"})})]})})]})]});export const richText2=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"January brings a collection of updates to the Akuity Platform. The platform officially supports the Argo CD Image Updater, Git operations can now be delegated to a specific cluster, and the Notifications Wizard supports triggers and templates.\"}),/*#__PURE__*/e(\"h2\",{children:\"Argo CD Image Updater\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://github.com/argoproj-labs/argocd-image-updater#argo-cd-image-updater\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"The Argo CD Image Updater\"})}),\" can check container registries for new image versions and automatically update Kubernetes Workloads based on version constraints. It supports Applications that are either generated from Helm or Kustomize, along with write-back support for Git.\"]}),/*#__PURE__*/e(\"p\",{children:\"You can take advantage of this functionally by enabling it with a click of a button on the settings page for the Argo CD Instance. You will experience first-class support for the image updater, with a wizard to simplify configuration, or you can use the built-in YAML editor (making it seamless to transition from an existing setup).\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"512\",src:\"https://framerusercontent.com/images/dZHKyNpBkzKVRBZKVez2MeIg.png\",srcSet:\"https://framerusercontent.com/images/dZHKyNpBkzKVRBZKVez2MeIg.png?scale-down-to=512 512w,https://framerusercontent.com/images/dZHKyNpBkzKVRBZKVez2MeIg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/dZHKyNpBkzKVRBZKVez2MeIg.png 1824w\",style:{aspectRatio:\"1824 / 1025\"},width:\"912\"}),/*#__PURE__*/e(\"h2\",{children:\"Git Delegate\"}),/*#__PURE__*/t(\"p\",{children:[\"When managing a multi-cluster environment with Argo CD, depending on \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-architectures-explained/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"the architecture you use\"})}),\", you may end up with many or all clusters attempting to access the repositories used by the Applications.\"]}),/*#__PURE__*/e(\"p\",{children:\"The new Git Delegate feature on the Akuity Platform allows you to specify a cluster that should be responsible for all the Git operations (well, not just “Git”, technically, the Helm repos too) for Argo CD.\"}),/*#__PURE__*/e(\"p\",{children:\"This is especially useful when using a private Git server on a management cluster and strict network policies.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"249\",src:\"https://framerusercontent.com/images/UiIFOqWLuFeyRqOtb9yvdLzW9A.png\",srcSet:\"https://framerusercontent.com/images/UiIFOqWLuFeyRqOtb9yvdLzW9A.png?scale-down-to=512 512w,https://framerusercontent.com/images/UiIFOqWLuFeyRqOtb9yvdLzW9A.png 782w\",style:{aspectRatio:\"782 / 498\"},width:\"391\"}),/*#__PURE__*/e(\"h2\",{children:\"Notifications Wizard\"}),/*#__PURE__*/t(\"p\",{children:[\"The Notifications Wizard now supports \",/*#__PURE__*/e(n,{href:\"https://argo-cd.readthedocs.io/en/stable/operator-manual/notifications/triggers/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"configuring triggers\"})}),\" and \",/*#__PURE__*/e(n,{href:\"https://argo-cd.readthedocs.io/en/stable/operator-manual/notifications/templates/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"templates\"})}),\". You can import the official catalogue with a click of a button and easily customize them to suit your needs. Spend less time thinking about YAML and more time getting stuff done.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"324\",src:\"https://framerusercontent.com/images/CQb1VgJsEgbQvVC6BrgI1BMGs0.png\",srcSet:\"https://framerusercontent.com/images/CQb1VgJsEgbQvVC6BrgI1BMGs0.png?scale-down-to=512 512w,https://framerusercontent.com/images/CQb1VgJsEgbQvVC6BrgI1BMGs0.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/CQb1VgJsEgbQvVC6BrgI1BMGs0.png 1152w\",style:{aspectRatio:\"1152 / 648\"},width:\"576\"}),/*#__PURE__*/e(\"h2\",{children:\"Try it Out\"}),/*#__PURE__*/t(\"p\",{children:[\"If you want to learn how to manage the deployment of the Helm charts in a declarative fashion using Argo CD and Github, take a look at our \",/*#__PURE__*/e(n,{href:\"https://docs.akuity.io/tutorials/intro-to-argo-cd\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"tutorial\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Help and Support\"}),/*#__PURE__*/t(\"p\",{children:[\"You can also \",/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"schedule a technical demo with our team\"})}),\" or \",/*#__PURE__*/e(n,{href:\"https://docs.akuity.io/getting-started/create-argo-cd-instance\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"go through the “Getting started”\"})}),\" manual on the Akuity Documentation website.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Loved this blog post? Want to see other amazing features the Akuity Platform has to offer? Check out these helpful resources:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://docs.akuity.io/changelog/cloud/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform Changelog\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/akuity-december-2022-update\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform December 2022 Update\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/akuity-february-2023-update\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform February 2023 Update\"})})]})})]})]});export const richText3=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Let's talk about sustainable cloud computing! 2022 was the year of increased awareness around the amount of CO2 that global cloud infrastructure releases into the atmosphere. Thanks to such initiatives as the \",/*#__PURE__*/e(n,{href:\"https://github.com/cncf/tag-env-sustainability\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"CNCF's Environmental Sustainability TAG\"})}),\" and the \",/*#__PURE__*/e(n,{href:\"https://greensoftware.foundation/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Green Software Foundation\"})}),\", there is a more coordinated effort to promote building cloud-native products and services that are doing as much as they can to be more sustainable and environment-friendly.\"]}),/*#__PURE__*/e(\"h2\",{children:\"GitOps and Sustainability\"}),/*#__PURE__*/e(\"p\",{children:'GitOps offers organizations several advantages, such as better coordination, transparency, stability, and system reliability. A key characteristic of GitOps is that the managed systems are continuously reconciled, constantly checking whether there are any changes from the \"single source of truth\".'}),/*#__PURE__*/e(\"p\",{children:'GitOps tools enable checking this in intervals and performing reconciliation only when necessary. This enables introducing pre-defined \"windows\" of reconciliation and, outside of them, completely disabling it during times when there are no significant changes to the source of truth. This inherently lowers the energy the systems use by limiting the time spent processing the cluster state and using less compute power.'}),/*#__PURE__*/e(\"p\",{children:\"But what if we can go beyond this to change the state of the cluster to spin down resources when they aren't being used? Where do we start implementing a sustainable approach to cloud resources on top of GitOps?\"}),/*#__PURE__*/e(\"h2\",{children:\"👋 Hello kube-green!\"}),/*#__PURE__*/t(\"p\",{children:[\"kube-green is a project that focuses on spinning down \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s (reducing the number of replicas to zero) during hours when they are not being used. To quote the docs:\"]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/t(\"p\",{children:[\"\\\"How many of your dev/preview pods stay on during weekends? Or at night? It's a waste of resources! And \",/*#__PURE__*/e(\"strong\",{children:\"money\"}),'! But fear not, kube-green is here to the rescue.\"']})}),/*#__PURE__*/t(\"p\",{children:[\"The people behind kube-green have put in the effort to calculate \",/*#__PURE__*/e(n,{href:\"https://kube-green.dev/docs/FAQ/#how-many-co2-is-produced-by-pod\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"how much CO2 is produced by a K8s pod\"})}),\". The project has recently \",/*#__PURE__*/e(n,{href:\"https://kube-green.dev/blog/cncf-landscape/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"joined the CNCF landscape\"})}),\" and is listed in the Scheduling & Orchestration subcategory alongside Kubernetes.\"]}),/*#__PURE__*/e(\"p\",{children:\"If you are already an Argo CD user and want to implement kube-green, you'll have to ensure they work together.\"}),/*#__PURE__*/e(\"h2\",{children:\"Using kube-green with Argo CD\"}),/*#__PURE__*/t(\"p\",{children:[\"The kube-green project works by deploying a controller and implementing a new CRD called \",/*#__PURE__*/e(\"code\",{children:\"SleepInfo\"}),\". The \",/*#__PURE__*/e(\"code\",{children:\"SleepInfo\"}),\" resource describes what time and days to “sleep” and “wake up” \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s. Then the controller takes that configuration and patches the targeted \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s to set the \",/*#__PURE__*/e(\"code\",{children:\"replicas\"}),\" to \",/*#__PURE__*/e(\"code\",{children:\"0\"}),\" when sleeping. Then returns the \",/*#__PURE__*/e(\"code\",{children:\"replicas\"}),\" value to its original state when waking up.\"]}),/*#__PURE__*/t(\"p\",{children:[\"There is a fundamental conflict between kube-green and Argo CD; both are designed to change the state of the cluster but with different sources of truth. The challenge is that when kube-green patches the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\", Argo CD will see this as a change in the live state of the cluster that deviates from the desired state in Git.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"198\",src:\"https://framerusercontent.com/images/Nivw1w83eb1qsWsIZIVSO7k.png\",srcSet:\"https://framerusercontent.com/images/Nivw1w83eb1qsWsIZIVSO7k.png?scale-down-to=512 512w,https://framerusercontent.com/images/Nivw1w83eb1qsWsIZIVSO7k.png 704w\",style:{aspectRatio:\"704 / 396\"},width:\"352\"}),/*#__PURE__*/e(\"p\",{children:\"Fortunately, as a mature GitOps tool, Argo CD has some ways around this, but they have their trade-offs.\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"12px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"16px\",\"--framer-line-height\":\"1.7em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Solution 1\"}),\": Ignore the replicas field of \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s in \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\"s.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"16px\",\"--framer-line-height\":\"1.7em\"},children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Solution 2\"}),\": Use Sync Windows to prevent syncs during sleep periods.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"I won't cover installing kube-green in this post, but the official documentation has \",/*#__PURE__*/e(n,{href:\"https://kube-green.dev/docs/tutorials/kind/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"a fantastic guide\"})}),\" for testing it out with \",/*#__PURE__*/e(\"code\",{children:\"kind\"}),\". For an example of installing it with Argo CD and all of the manifests mentioned throughout this, check out my \",/*#__PURE__*/e(n,{href:\"https://github.com/morey-tech/argocd-example-apps/tree/main/kube-green\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"argocd-example-apps repo\"})}),\".\"]}),/*#__PURE__*/t(\"h3\",{children:[\"Solution 1: \",/*#__PURE__*/e(\"code\",{children:\"ignoreDifferences\"})]}),/*#__PURE__*/t(\"p\",{children:[\"When the kube-green controller “sleeps” a \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\", it patches the resources to set the \",/*#__PURE__*/e(\"code\",{children:\"spec.replicas\"}),\" to zero. If the replicas are explicitly set in the manifests generated by the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" managing the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\", Argo CD will see the change and mark the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" as out of sync.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"135\",src:\"https://framerusercontent.com/images/g7IZHNt6Y7xLS1JjUiYLEYSRao.png\",style:{aspectRatio:\"480 / 270\"},width:\"240\"}),/*#__PURE__*/t(\"p\",{children:[\"With the automated sync policy and self-heal enabled, the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" will immediately revert the changes made by kube-green.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"169\",src:\"https://framerusercontent.com/images/hzRKWmRt3DzMO2YCGJGA1EHV87A.png\",srcSet:\"https://framerusercontent.com/images/hzRKWmRt3DzMO2YCGJGA1EHV87A.png?scale-down-to=512 512w,https://framerusercontent.com/images/hzRKWmRt3DzMO2YCGJGA1EHV87A.png 600w\",style:{aspectRatio:\"600 / 338\"},width:\"300\"}),/*#__PURE__*/t(\"p\",{children:[\"To prevent this behavior, you can use the \",/*#__PURE__*/e(\"code\",{children:\"ignoreDifferences\"}),\" field on the Argo CD \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" that manages the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\" modified by kube-green. This configures the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" to ignore the \",/*#__PURE__*/e(\"code\",{children:\"spec.replicas\"}),\" field after the initial creation of the resource. For this example, I set the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" to ignore changes to the \",/*#__PURE__*/e(\"code\",{children:\"spec.replicas\"}),\" field of any \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\" in the \",/*#__PURE__*/e(\"code\",{children:\"sleepme\"}),\" namespace.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"108\",src:\"https://framerusercontent.com/images/GI2ev08Ki9B1Tj6PEiVQST3foA.png\",style:{aspectRatio:\"384 / 216\"},width:\"192\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"288\",src:\"https://framerusercontent.com/images/meQi9kfQ7YiwIBsyXCLiwxd15w.png\",srcSet:\"https://framerusercontent.com/images/meQi9kfQ7YiwIBsyXCLiwxd15w.png?scale-down-to=512 512w,https://framerusercontent.com/images/meQi9kfQ7YiwIBsyXCLiwxd15w.png 1024w\",style:{aspectRatio:\"1024 / 576\"},width:\"512\"}),/*#__PURE__*/t(\"p\",{children:[\"The downside of this solution is that if there is a change to the replicas value of the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\" in Git, the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" won't sync the change to the cluster. If you need to regularly update this value in Git, then the next solution might be a better fit.\"]}),/*#__PURE__*/e(\"h3\",{children:\"Solution 2: Sync Windows\"}),/*#__PURE__*/t(\"p\",{children:[\"Instead of ignoring changes to the \",/*#__PURE__*/e(\"code\",{children:\"replicas\"}),\" field on \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s, an alternative solution is to configure \",/*#__PURE__*/e(n,{href:\"https://argo-cd.readthedocs.io/en/stable/user-guide/sync_windows/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Sync Windows\"})}),\" that encompass the time used in the \",/*#__PURE__*/e(\"code\",{children:\"SleepInfo\"}),\". This will prevent the automated sync policy from running when kube-green has altered the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this example, I've configured the \",/*#__PURE__*/e(\"code\",{children:\"default\"}),\" AppProject with a sync window that fully contains the hours in the \",/*#__PURE__*/e(\"code\",{children:\"SleepInfo\"}),\" timeframe. The sleep and wake-up times in the \",/*#__PURE__*/e(\"code\",{children:\"SleepInfo\"}),\" are intentionally offset by one minute to give the Sync Windows a chance to come into effect before kube-green makes changes to the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"252\",src:\"https://framerusercontent.com/images/oQYlZuCyQjOIwoy7s6qMXa8HSZU.png\",srcSet:\"https://framerusercontent.com/images/oQYlZuCyQjOIwoy7s6qMXa8HSZU.png?scale-down-to=512 512w,https://framerusercontent.com/images/oQYlZuCyQjOIwoy7s6qMXa8HSZU.png 896w\",style:{aspectRatio:\"896 / 504\"},width:\"448\"}),/*#__PURE__*/t(\"p\",{children:[\"Now when the kube-green controller patches the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s, the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" will be out of sync, but the automated sync policy won't run.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"301\",src:\"https://framerusercontent.com/images/ceYBJBlWYyqb1qQoYNDRuBbA.png\",srcSet:\"https://framerusercontent.com/images/ceYBJBlWYyqb1qQoYNDRuBbA.png?scale-down-to=512 512w,https://framerusercontent.com/images/ceYBJBlWYyqb1qQoYNDRuBbA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/ceYBJBlWYyqb1qQoYNDRuBbA.png 1072w\",style:{aspectRatio:\"1072 / 603\"},width:\"536\"}),/*#__PURE__*/t(\"p\",{children:[\"Then at the wake-up time, just before the end of the sync window, the kube-green controller will restore the original replicas count. An added benefit of Sync Windows is that you can manually sync the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" to spin the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s back up before the wake-up time if needed.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The downside is that the \",/*#__PURE__*/e(\"code\",{children:\"Application\"}),\" will show as out of sync. You will need to use a \",/*#__PURE__*/e(n,{href:\"https://argo-cd.readthedocs.io/en/stable/user-guide/selective_sync/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"manual selective sync\"})}),\" sync to implement any changes unrelated to the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s during the Sync Windows (sleep periods) without restoring the replica count on the \",/*#__PURE__*/e(\"code\",{children:\"Deployment\"}),\"s\"]}),/*#__PURE__*/e(\"h2\",{children:\"Conclusion\"}),/*#__PURE__*/t(\"p\",{children:[\"More and more projects and initiatives are leading the way in environmentally sustainable cloud computing. If you want to get involved with the CNCF Environmental Sustainability TAG, \",/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=XFZZ9YfOyI8\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"check out this KubeCon 2022 talk on the topic\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"Also, if you have any ideas on using GitOps to create more sustainable infrastructures, consider posting in the \",/*#__PURE__*/e(n,{href:\"https://cloud-native.slack.com/archives/C03F270PDU6\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"#tag-environmental-sustainability\"})}),\" channel on the \",/*#__PURE__*/e(n,{href:\"https://argoproj.github.io/community/join-slack\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"CNCF Slack\"})}),\" or attending the \",/*#__PURE__*/e(n,{href:\"https://docs.google.com/document/d/1ogJBOgUNs2Gyb-hFh76Y4yMc9idKEp-cMhIvglbqCPs/edit#heading=h.m1bztpjqh35d\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"GitOps & Environmental Sustainability SubGroup\"})}),\" (GitOps-EnvSus) meeting.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Loved this blog? Get the most out of your Argo CD learning experience with these neat resources:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-security\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Security\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-flexibility\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Flexibility\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-flexibility\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Scalability\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-architectures-explained\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"How Many Do You Need? Argo CD Architectures Explained - 2024 Update\"})})]})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"[Video] Introduction to Argo CD Using the Akuity Platform:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=w9tUyp-NXko\"})})})]})]})]});export const richText4=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"We launched the Akuity Platform in September 2022. The platform is constantly growing as a product, adding more and more innovation on top of Argo CD. To make sure we are delivering on our promise of becoming “the” DevOps platform for Kubernetes, we are closely listening to what our fellow DevOps practitioners would love to use when managing their infrastructure.\"}),/*#__PURE__*/e(\"p\",{children:\"Once the additional value that Akuity brings to Argo CD becomes clear, we get a lot of questions about whether shipping it in an on-premise model is possible.\"}),/*#__PURE__*/e(\"p\",{children:\"Well - it is now! 🎉\"}),/*#__PURE__*/e(\"h2\",{children:\"Our Promise of On-Premise\"}),/*#__PURE__*/e(\"p\",{children:\"While talking to companies from the Fortune 500, it became clear that having an on-prem solution is a must-have. On-prem is often needed for businesses and entities within highly regulated industries (think financial services, health care and government institutions, etc.)\"}),/*#__PURE__*/e(\"p\",{children:\"Despite the popularity of cloud environments, these companies choose on-prem for its security, controllability, and compliance (whether it’s HIPAA for private health information, FERPA for student records, or other government and industry regulations).\"}),/*#__PURE__*/e(\"p\",{children:\"Whether it’s more control over their bespoke solutions, fewer points of failure, minimal exposure to external threats, or (probably) all of the above - most Fortune 500 companies utilize on-premise solutions, at least to some extent.\"}),/*#__PURE__*/e(\"p\",{children:\"It’s not uncommon for these companies and organizations to go as far as “air-gaping” their systems. This approach is a security measure that isolates a device or a network from other devices and networks, including the public internet. To protect critical computer systems and the data they store from malicious software and unauthorized access, one has to ensure the total isolation of a given system electromagnetically, electronically and physically.\"}),/*#__PURE__*/e(\"p\",{children:\"Sounds really remote? Not anymore. We’re bringing Akuity (and Argo CD) into these infrastructures so that every Kubernetes cluster can benefit from Argo CD as a managed service.\"}),/*#__PURE__*/e(\"h2\",{children:\"The Benefits of Argo CD as a Managed (Self-hosted) Service\"}),/*#__PURE__*/e(\"p\",{children:\"When bringing Akuity inside your on-premise infrastructure, you get all the benefits of the SaaS offering, which includes expert support from the Argo Project creators and maintainers with a dedicated SLA.\"}),/*#__PURE__*/e(\"p\",{children:\"Akuity’s agent-based architecture is still in place to:\"}),/*#__PURE__*/t(\"ul\",{style:{\"--framer-font-size\":\"12px\",\"--framer-text-alignment\":\"start\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-stroke-width\":\"0px\",\"--framer-text-transform\":\"none\"},children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"16px\",\"--framer-line-height\":\"1.7em\"},children:/*#__PURE__*/e(\"p\",{children:\"increase your cluster's security\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"16px\",\"--framer-line-height\":\"1.7em\"},children:/*#__PURE__*/e(\"p\",{children:\"substantially reduce traffic between the Kubernetes clusters and the Argo CD control plane\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"16px\",\"--framer-line-height\":\"1.7em\"},children:/*#__PURE__*/e(\"p\",{children:\"enable painless scalability of all your Argo CD instances\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"Increased Security\"}),/*#__PURE__*/e(\"p\",{children:\"The Akuity Platform has an agent-based architecture, allowing the cluster to connect to the Argo control plane (direct access is no longer required). This means that the platform does not need your cluster admin credentials. With the help of the platform, you are able to log, store, and analyze all the critical events that took place inside your Argo CD control plane and increase the discoverability of any security-related events.\"}),/*#__PURE__*/e(\"p\",{children:\"Akuity’s control plane is configured with high availability out-of-the-box, and configurations are backed up frequently. No need to recreate your Argo CD configuration if your cluster goes away.\"}),/*#__PURE__*/e(\"p\",{children:\"It’s your choice to decide which Argo CD version you want to run, and Akuity will ensure that your clusters will be seamlessly updated or downgraded to it. This also includes applying security patches right after their release.\"}),/*#__PURE__*/e(\"h3\",{children:\"Ease of Scalability and Cost Optimization\"}),/*#__PURE__*/e(\"p\",{children:\"Akuity maintains your Argo CD instances and reduces traffic between the Argo control plane and your environments by at least 80%. This enables you to manage all the edge clusters without worrying about the bandwidth limit and save money from the start.\"}),/*#__PURE__*/e(\"p\",{children:\"With a built-in and configured autoscaler, your Argo CD will be automatically tuned to accommodate the ever-changing size of managed infrastructure with the guarantee of high performance.\"}),/*#__PURE__*/e(\"h3\",{children:\"Effortless Setup and Intuitive Self-service\"}),/*#__PURE__*/e(\"p\",{children:\"With Akuity, you set up and manage the basic Argo CD settings from the dashboard using the web UI. This includes notifications, RBAC, secrets, etc. We also give your engineers new ways of managing instances on the Akuity Platform with a dedicated API and command line interface.\"}),/*#__PURE__*/e(\"p\",{children:\"Our platform enables you to troubleshoot failed deployments and gather metrics regarding every single deployment.\"}),/*#__PURE__*/e(\"p\",{children:\"The on-premise version of Akuity is a fully-functional branch of the product that will be updated with new features and innovations alongside the SaaS offering.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you’re interested in using Akuity inside your on-premise environment, \",/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"please reach out to our sales team\"})}),\" or \",/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"schedule a technical demo\"})}),\" with one of our engineers.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Loved this blog post? Want to see other amazing features the Akuity Platform has to offer? Check out these neat resources:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/akuity-argo-ai-assistant\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Introducing Akuity's AI Assistant\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-build-environment-examples\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo CD Build Environment Examples\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-security\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Security\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-flexibility\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Flexibility\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-flexibility\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Scalability\"})})]})})]})]});export const richText5=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"December brings another batch of improvements to the Akuity Platform. We've focused on making custom UI styles accessible to anyone, simplifying SSO configuration with schema validation, and displaying rich audit data.\"}),/*#__PURE__*/e(\"h2\",{children:\"Argo CD Custom Style Wizard\"}),/*#__PURE__*/e(\"p\",{children:\"The Akuity Platform has introduced a wizard for customizing the Argo CD UI. Instead of editing the CSS directly and finding a way to serve it to the Argo Sever - it gives a breakdown of the components, a preview of your changes, and several preset themes that provide an easy way to distinguish between your environments.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"455\",src:\"https://framerusercontent.com/images/sjZvJMuU07OuXYjAzOLP73pUww.png\",srcSet:\"https://framerusercontent.com/images/sjZvJMuU07OuXYjAzOLP73pUww.png?scale-down-to=512 512w,https://framerusercontent.com/images/sjZvJMuU07OuXYjAzOLP73pUww.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/sjZvJMuU07OuXYjAzOLP73pUww.png 1768w\",style:{aspectRatio:\"1768 / 911\"},width:\"884\"}),/*#__PURE__*/e(\"h2\",{children:\"Schema Validation for Dex Configuration\"}),/*#__PURE__*/e(\"p\",{children:\"Crafting complex YAML for the Dex configuration has now gotten significantly easier by adding schema validation. This validation reduces the feedback loop when making changes to the SSO configuration of Argo CD instances. Get visual feedback as you code with clearly underlined errors to direct you. Also, if you are tired of working with YAML, there is a wizard to allow you to craft the Dex configuration without touching the YAML at all.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"290\",src:\"https://framerusercontent.com/images/0agbN89bbMsrhl1czECqD6CTnWI.png\",srcSet:\"https://framerusercontent.com/images/0agbN89bbMsrhl1czECqD6CTnWI.png?scale-down-to=512 512w,https://framerusercontent.com/images/0agbN89bbMsrhl1czECqD6CTnWI.png 769w\",style:{aspectRatio:\"769 / 580\"},width:\"384\"}),/*#__PURE__*/e(\"h2\",{children:\"Displaying and Exporting Audit Details\"}),/*#__PURE__*/t(\"p\",{children:[\"The audit log in the organization dashboard of the Akuity Platform now offers detailed information about events that took place inside your Argo CD instance. You can see when an event occurred, what object was involved, what action was taken, and who took it. As well as additional details when inspecting an event (e.g., the commit SHA for a sync). This powers fine-grained filtering of the audit log. You can export the complete records or only the filtered data to a \",/*#__PURE__*/e(\"code\",{children:\"CSV\"}),\" file.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"467\",src:\"https://framerusercontent.com/images/pYTHTPk830l9EqLy5wkD5wtDU.png\",srcSet:\"https://framerusercontent.com/images/pYTHTPk830l9EqLy5wkD5wtDU.png?scale-down-to=512 512w,https://framerusercontent.com/images/pYTHTPk830l9EqLy5wkD5wtDU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/pYTHTPk830l9EqLy5wkD5wtDU.png 1799w\",style:{aspectRatio:\"1799 / 934\"},width:\"899\"}),/*#__PURE__*/e(\"h2\",{children:\"Apply IP Allow List to Cluster Agents\"}),/*#__PURE__*/e(\"p\",{children:\"You can now limit the agent connections to trusted networks where you can be sure the clusters are legitimate. In the unlikely event that the agent install manifests are leaked, they could be deployed to another cluster to pose as the intended destination. Limiting the agent connections to the IP Allow List eliminates this risk.\"}),/*#__PURE__*/e(\"h2\",{children:\"Migrating to Quay.io for Redis Images\"}),/*#__PURE__*/t(\"p\",{children:[\"Over a year after the start of the Docker Hub rate limiting, demos, workshops, and environments are still unexpectedly reaching their limit. The rate limit is set to 100 pulls per 6 hours per IP address for anonymous users or 200 for authenticated (non-paid) users. This limit is “normally” enough, but anyone that has done scalability testing or runs a large number of nodes knows that you can quickly burn through it. To address this, the \",/*#__PURE__*/e(\"code\",{children:\"redis\"}),\" image is now pulled from the Akuity Quay registry to ensure it's always available.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Improved Experience of Managing Organizations\"}),/*#__PURE__*/e(\"p\",{children:\"We have simplified how an invited user can become a member of the organization. Say goodbye to invite codes and accept the invitation to the organization with one click within the dashboard.\"}),/*#__PURE__*/e(\"p\",{children:\"You can change the name of your organization. In case you have chosen an arbitrary name while signing up for the free trial, but now you want to use it in production.\"}),/*#__PURE__*/e(\"h2\",{children:\"Help and Support\"}),/*#__PURE__*/t(\"p\",{children:[\"You can also \",/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"schedule a technical demo with our team\"})}),\" or \",/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"go through the “Getting started”\"})}),\" manual on the Akuity Documentation website.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Loved this blog post? Want to see other amazing features the Akuity Platform has to offer? Check out these neat resources:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://docs.akuity.io/changelog/cloud/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform Changelog\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/akuity-january-2023-update\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform January 2023 Update\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/akuity-november-2022-update\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform November 2022 Update\"})})]})})]})]});export const richText6=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Good news, everyone! \",/*#__PURE__*/e(\"strong\",{children:\"The Argo Project has reached the “Graduated” status with the Cloud Native Computing Foundation.\"}),\" This is a significant event and an essential milestone in Argo’s success story. Many thanks go to the community for the support in helping project maintainers achieve this landmark!\"]}),/*#__PURE__*/e(\"p\",{children:\"In order to be considered for graduation, Argo went through a rigorous review process with the CNCF. Maintainers worked hard with the foundation's Technical Oversight Committee to review and improve the project in various areas, including security best practices, governance model, and testing framework. During the process, Argo maintainers invested an endless number of hours in tightening the security of all four projects, streamlining our security processes, conducting security audits, and addressing the audit findings.\"}),/*#__PURE__*/e(\"p\",{children:\"Today we are proud to say that the project has adopted a governance model that ensures a diversity of contributors, embraces openness, and cannot be controlled by any single company or person. Thanks to project stability and flawless security processes, hundreds of companies trust Argo to manage the most critical areas of their infrastructure.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.cncf.io/announcements/2022/12/06/the-cloud-native-computing-foundation-announces-argo-has-graduated\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo's CNCF graduation\"})}),\" marks the recognition of the project's progress and the beginning of a completely new journey!\"]}),/*#__PURE__*/e(\"h2\",{children:\"Akuity and Argo\"}),/*#__PURE__*/e(\"p\",{children:\"The graduation is an exciting event for the whole Argo community, but especially for the maintainers since we’ve worked hard to make this happen. However, for the Akuity team, this event is also very personal or even touching. The reason is that Akuity's founders are engineers who created the project.\"}),/*#__PURE__*/e(\"p\",{children:\"Working on Argo became a pivoting moment in our careers. We fell in love with DevOps, and became true containerization believers and cloud-native adepts. This fueled our passion to build a product that provides the perfect developer experience. During this journey, we went through various ups and downs, celebrated little victories, reflected on failures, and learned a lot.\"}),/*#__PURE__*/e(\"p\",{children:\"For each of us, Argo became an opportunity to work on something significant, but it did require stepping out of our comfort zone. Being engineers to the marrow, we’ve suddenly found out that writing code is not enough to make an open source project successful. We had to start wearing multiple hats and quickly learn new skills, from writing blogs to publicly speaking at Kubecon and even publishing a book!\"}),/*#__PURE__*/e(\"p\",{children:\"The Argo graduation is an excellent testimony to all those efforts! The question is, what’s next? This is a serious question since it is difficult to find a more significant milestone for a cloud native open source project. However, we think graduation is just the beginning, and to let you know why we need to answer the question: “Why was Argo created in the first place?”.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why Was Argo Created?\"}),/*#__PURE__*/e(\"p\",{children:\"It might come as a surprise, but Argo was not meant to help with Kubernetes management using GitOps, it was not created to orchestrate batch processing on Kubernetes, and in fact, it was not about Kubernetes at all.\"}),/*#__PURE__*/e(\"p\",{children:\"Argo was created while our team was a part of a company called Applatix Inc. The company had the vision to create a platform for developing and running applications in the cloud. Back in 2016, it was clear that containerization and cloud infrastructure are the future. However, we did not know how to fully get there yet.\"}),/*#__PURE__*/e(\"h2\",{children:\"Lessons Learned\"}),/*#__PURE__*/e(\"p\",{children:\"While working on the first version of Argo, we’ve learned three crucial lessons:\"}),/*#__PURE__*/e(\"h3\",{children:\"It is impossible to independently create a perfect DevOps platform that fits everyone's needs.\"}),/*#__PURE__*/e(\"p\",{children:\"DevOps space is constantly growing and changing. An idea that works perfectly well today, might become irrelevant tomorrow. In this case, the only solution might be to start all over again.\"}),/*#__PURE__*/e(\"h3\",{children:\"Like with solving any other problem, we can come close to a perfect DevOps platform, step by step.\"}),/*#__PURE__*/e(\"p\",{children:\"Step by step, or we should rather say layer by layer. Kubernetes, on top of public cloud and containers, became a foundational layer that moved the whole industry light years ahead. We believe consistent evolution will get us much farther than any attempts to reinvent the wheel.\"}),/*#__PURE__*/e(\"h3\",{children:\"Open Source is the most effective way to get there.\"}),/*#__PURE__*/e(\"p\",{children:\"This lesson is listed last but probably is the most important one. The results of open sourcing Argo are nothing but incredible. Constant feedback loop supported by the community became the key to the project's success.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://youtu.be/kjB_7MaDzcw\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"What’s Next?\"}),/*#__PURE__*/e(\"p\",{children:\"So back to the question - “what’s next?”. The Akuity team stays committed to the goal of creating the perfect DevOps platform. We believe we still have a long way to go with thousands of use cases we have not even considered yet. Just like Kubernetes, Argo became a layer. This layer is focused on application delivery and provides building blocks for use cases such as progressive delivery, batch processing, and event handling, all under control of a powerful GitOps-based management system.\"}),/*#__PURE__*/t(\"p\",{children:[\"Akuity, like no other company, is perfectly positioned to continue expanding the Argo ecosystem itself as well as providing more opinionated blocks on top of Argo. The Akuity Platform, the first product \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/announcing-akuity-platform/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"announced\"})}),\" by our company, brings cloud-managed Argo CD enhanced with unique, more scalable, secure architecture and packaged with must-have enterprise features.\"]}),/*#__PURE__*/e(\"p\",{children:\"The next step is to build the next layer of innovation. We are aiming to push application delivery tools one step forward and bridge the gap between GitOps and multi-step processes needed to satisfy compliance and testing requirements.\"}),/*#__PURE__*/e(\"p\",{children:\"We have not changed our opinion regarding how innovation should be done: it should be open-sourced and developed in tight collaboration with the community. Stay tuned, and look forward to an open-source Akuity project that brings Kubernetes and Argo to the next level.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:\"Alexander Matyushentsev, Hong Wang, Jesse Suen\"})}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"New to Argo CD? Check out these helpful resources to aid you on your learning journey:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-architectures-explained\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!1,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"How Many Do You Need? Argo CD Architectures Explained - 2024 Update\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/deployment-made-easy-with-argo-cd\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Deployment Made Easy with Argo CD\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Schedule a Demo Today!\"})})})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"[Video] Introduction to Argo CD Using the Akuity Platform:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=w9tUyp-NXko\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"[Video] Creating a fully-managed Kubernetes GitOps platform with Argo CD:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=73nufrbL3Rw\"})})})]})]})]});export const richText7=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"When using Argo CD UI, you might want to match its design with your company's branding or wish to differentiate between the instances by giving different color combinations to different environments (ie. test / staging with toned-down colors while production with something more alert). Or you just crave for a Hot Dog theme like our teammate \",/*#__PURE__*/e(n,{href:\"https://twitter.com/dhpup\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Daniel\"})}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"367\",src:\"https://framerusercontent.com/images/62WMdKAyTIrMOcruB2AIS0hC0.png\",srcSet:\"https://framerusercontent.com/images/62WMdKAyTIrMOcruB2AIS0hC0.png?scale-down-to=512 512w,https://framerusercontent.com/images/62WMdKAyTIrMOcruB2AIS0hC0.png 944w\",style:{aspectRatio:\"944 / 734\"},width:\"472\"}),/*#__PURE__*/t(\"p\",{children:[\"So how do we achieve that? Argo CD provides a way to override the CSS styles. In the Argo documentation, you can find an \",/*#__PURE__*/e(n,{href:\"https://argo-cd.readthedocs.io/en/stable/operator-manual/custom-styles/#adding-styles-via-remote-url\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"article on how to provide your CSS file\"})}),\". We can identify the components, combine their CSS definitions and represent it as a Theme. It would be very tedious and tricky to figure out items that can be customized. But \",/*#__PURE__*/e(n,{href:\"https://en.wikipedia.org/wiki/Pareto_principle\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"the Pareto principle (80-20 rule)\"})}),\" can help us. It applies to Argo CD UI as well. We have identified 20% of items that can make 80% of the difference visually.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Selected Visual Components of Argo CD\"}),/*#__PURE__*/t(\"p\",{children:[\"The idea is to list the components, identify them as their HTML classnames, and see what CSS properties can be changed. Ultimately, we will have minimal reusable CSS, which can then be applied as a \",/*#__PURE__*/e(\"strong\",{children:\"Theme\"}),\". The only parameters that need changing to update the theme will be contained in just a few CSS properties. So here is the list of the components we have curated...\"]}),/*#__PURE__*/e(\"h3\",{children:\"1. Sidebar\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"379\",src:\"https://framerusercontent.com/images/362eUTq5V4ruSB2jbER5qHvzkaY.png\",srcSet:\"https://framerusercontent.com/images/362eUTq5V4ruSB2jbER5qHvzkaY.png?scale-down-to=512 512w,https://framerusercontent.com/images/362eUTq5V4ruSB2jbER5qHvzkaY.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/362eUTq5V4ruSB2jbER5qHvzkaY.png 1425w\",style:{aspectRatio:\"1425 / 759\"},width:\"712\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are using Argo CD version \",/*#__PURE__*/e(\"code\",{children:\"2.5\"}),\" or greater, then use the \",/*#__PURE__*/e(\"code\",{children:\".sidebar\"}),\" class, otherwise use \",/*#__PURE__*/e(\"code\",{children:\".nav-bar\"}),\". Make sure that the background color is dark-ish. Otherwise, you have to manage the content in the sidebar, including filters, and inputs which becomes complicated.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\".sidebar,\\n.nav-bar {\\n  background: #32201b;\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"h3\",{children:\"2. Dashboard Section and Sliding Panel\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"379\",src:\"https://framerusercontent.com/images/oxUoXRdpQXCHlUJl1rKPhuU.png\",srcSet:\"https://framerusercontent.com/images/oxUoXRdpQXCHlUJl1rKPhuU.png?scale-down-to=512 512w,https://framerusercontent.com/images/oxUoXRdpQXCHlUJl1rKPhuU.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/oxUoXRdpQXCHlUJl1rKPhuU.png 1425w\",style:{aspectRatio:\"1425 / 759\"},width:\"712\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\".page__content-wrapper {\\n  background: #f0ece8;\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"p\",{children:\"To stay consistent, we should have the same background color on the sliding panel. It's made up of a header and a body. Therefore both should have the same background.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"382\",src:\"https://framerusercontent.com/images/KHQOkA9YfEmTOyhTPQHIBZKD8.png\",srcSet:\"https://framerusercontent.com/images/KHQOkA9YfEmTOyhTPQHIBZKD8.png?scale-down-to=512 512w,https://framerusercontent.com/images/KHQOkA9YfEmTOyhTPQHIBZKD8.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/KHQOkA9YfEmTOyhTPQHIBZKD8.png 1427w\",style:{aspectRatio:\"1427 / 764\"},width:\"713\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\".sliding-panel__header,\\n.sliding-panel__body {\\n  background: #f0ece8;\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"h3\",{children:\"3. Buttons\"}),/*#__PURE__*/t(\"p\",{children:[\"Argo CD UI contains primary and secondary buttons with a \",/*#__PURE__*/e(\"code\",{children:\"disabled\"}),\" variant. We also need to handle the \",/*#__PURE__*/e(\"code\",{children:\"hover\"}),\" and \",/*#__PURE__*/e(\"code\",{children:\"focus\"}),\" states of the button.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"374\",src:\"https://framerusercontent.com/images/fy6B8SrIGG3JVufsgbpzSZEQGw.png\",srcSet:\"https://framerusercontent.com/images/fy6B8SrIGG3JVufsgbpzSZEQGw.png?scale-down-to=512 512w,https://framerusercontent.com/images/fy6B8SrIGG3JVufsgbpzSZEQGw.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/fy6B8SrIGG3JVufsgbpzSZEQGw.png 1427w\",style:{aspectRatio:\"1427 / 749\"},width:\"713\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"/* primary */\\n.argo-button--base,\\n.argo-button--base:hover {\\n  background: #7d7370 !important;\\n}\\n\\n.argo-button--base:hover {\\n  opacity: 0.8 !important;\\n}\\n\\n/* secondary */\\n.argo-button--base-o {\\n  color: #7d7370 !important;\\n  box-shadow: inset 0 0 0 1px #7d7370 !important;\\n}\\n\\n.argo-button--base-o:hover,\\n.argo-button--base-o:focus {\\n  background: #7d7370 !important;\\n  color: #fff !important;\\n  box-shadow: inset 0 0 0 1px #7d7370 !important;\\n}\\n\\n/* disabled */\\n.argo-button.disabled,\\n.argo-button[disabled] {\\n  background: #968f8c !important;\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"h3\",{children:\"4. Links, Selected Items, Tabs Indicator, Top Navigation Title\"}),/*#__PURE__*/e(\"p\",{children:\"We can give the same color to all of these items so they play well alongside one another inside the theme.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"382\",src:\"https://framerusercontent.com/images/scyCchLyW9rlrCO5akO89vOC7U.png\",srcSet:\"https://framerusercontent.com/images/scyCchLyW9rlrCO5akO89vOC7U.png?scale-down-to=512 512w,https://framerusercontent.com/images/scyCchLyW9rlrCO5akO89vOC7U.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/scyCchLyW9rlrCO5akO89vOC7U.png 1427w\",style:{aspectRatio:\"1427 / 764\"},width:\"713\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"a,\\n/* title of the each item in list in settings page */\\n.settings-overview__redirect-panel__title,\\n.selected,\\n.top-bar__title {\\n  color: #01894d !important;\\n}\\n\\n.tabs__indicator {\\n  background: #01894d !important;\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Customized Argo CD Theme Template\"}),/*#__PURE__*/t(\"p\",{children:[\"Finally, if we combine all of the properties above and separate the actual \",/*#__PURE__*/e(\"strong\",{children:\"Theme\"}),\" values by CSS variables, here is what it will look like.\"]}),/*#__PURE__*/e(\"blockquote\",{children:/*#__PURE__*/e(\"p\",{children:\"Try to include this CSS in your Argo CD instance!\"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\"/* Asphalt Theme by Akuity */\\n\\n:root {\\n  --sidebar-background: #32201b;\\n  --page-and-panel-background: #f0ece8;\\n  --button-primary: #7d7370;\\n  --button-secondary: #7d7370;\\n  --button-disabled: #968f8c;\\n  --primary: #01894d;\\n}\\n\\n.sidebar,\\n.nav-bar {\\n  background: var(--sidebar-background);\\n}\\n\\n.page__content-wrapper {\\n  background: var(--page-and-panel-background) !important;\\n}\\n\\n.sliding-panel__header,\\n.sliding-panel__body {\\n  background: var(--page-and-panel-background) !important;\\n}\\n\\n/* primary */\\n.argo-button--base,\\n.argo-button--base:hover {\\n  background: var(--button-primary) !important;\\n}\\n\\n.argo-button--base:hover {\\n  background: var(--button-primary) !important;\\n  opacity: 0.8 !important;\\n}\\n\\n/* secondary */\\n.argo-button--base-o {\\n  color: var(--button-primary) !important;\\n  box-shadow: inset 0 0 0 1px var(--button-primary) !important;\\n}\\n\\n.argo-button--base-o:hover,\\n.argo-button--base-o:focus {\\n  background: var(--button-secondary) !important;\\n  color: #fff !important;\\n  box-shadow: inset 0 0 0 1px var(--button-secondary) !important;\\n}\\n\\n/* disabled */\\n.argo-button.disabled,\\n.argo-button[disabled] {\\n  background: var(--button-disabled) !important;\\n}\\n\\na,\\n/* title of the each item in list in settings page */\\n.settings-overview__redirect-panel__title,\\n.selected,\\n.top-bar__title {\\n  color: var(--primary) !important;\\n}\\n\\n.tabs__indicator {\\n  background: var(--primary) !important;\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Customize Logo\"}),/*#__PURE__*/t(\"p\",{children:['When mentioning branding, we have to mention logos. As per the available Argo CD versions, while writing this blog, there is no \"official\" way to change the logo in the sidebar or on the login screen. But it is possible to do using CSS - ',/*#__PURE__*/e(n,{href:\"https://saumeya.github.io/4.custom-styles-argocd.html\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"here is a blog post on how to replace the logo in the sidebar\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you don't have your logo hosted anywhere, you can convert the logo to base64 string and use it in CSS instead of using a link! You have to be careful as the size limit of \",/*#__PURE__*/e(\"code\",{children:\"ConfigMap\"}),\" is 1MB.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/QVzZltTawVJTjmjAWG3C/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(s,{...t,code:\".nav-bar__logo img,\\n.sidebar__logo img {\\n  content: url(data:image/svg+xml;base64,...);\\n}\",language:\"Markdown\"})})}),/*#__PURE__*/e(\"h2\",{children:\"Try Out the Argo CD Custom Style Wizard\"}),/*#__PURE__*/t(\"p\",{children:[\"You can save a lot of time that you would spend on coming up with custom themes, mixing and matching colors, and spitting out the CSS code if you are already using \",/*#__PURE__*/e(n,{href:\"https://akuity.io/akuity-platform\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity platform\"})}),\" to manage your Argo CD instance. We have introduced an Argo CD Custom Style Wizard where you can choose from available themes or create a new one using the Akuity dashboard GUI.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Help and Support\"}),/*#__PURE__*/t(\"p\",{children:[\"You can also \",/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"schedule a technical demo\"})}),\" with our team or go through the \",/*#__PURE__*/e(n,{href:\"https://docs.akuity.io/getting-started/create-argo-cd-instance\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"“Getting started”\"})}),\" manual on the Akuity Documentation website.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Loved this blog? Get the most out of your Argo CD learning experience with these neat resources:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-security\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Security\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-flexibility\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Flexibility\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-ultimate-flexibility\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Unlocking Ultimate Argo CD Scalability\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argo-cd-architectures-explained\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"How Many Do You Need? Argo CD Architectures Explained - 2024 Update\"})})]})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"[Video] Introduction to Argo CD Using the Akuity Platform:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=w9tUyp-NXko\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"[Video] Creating a fully-managed Kubernetes GitOps platform with Argo CD: \"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=73nufrbL3Rw\"})})})]})]})]});export const richText8=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:'This year North America\\'s \"motor city\", Detroit, hosted KubeCon. It wasn’t our first KubeCon as individuals, but it was our first KubeCon as a team.'}),/*#__PURE__*/e(\"h2\",{children:\"Our First Time on Stage During a KubeCon Keynote talk\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"800\",src:\"https://framerusercontent.com/images/bh8VDoY1ZUm7DZFyiYZvdijNztA.png\",srcSet:\"https://framerusercontent.com/images/bh8VDoY1ZUm7DZFyiYZvdijNztA.png?scale-down-to=512 512w,https://framerusercontent.com/images/bh8VDoY1ZUm7DZFyiYZvdijNztA.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/bh8VDoY1ZUm7DZFyiYZvdijNztA.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/bh8VDoY1ZUm7DZFyiYZvdijNztA.png 2400w\",style:{aspectRatio:\"2400 / 1600\"},width:\"1200\"}),/*#__PURE__*/t(\"p\",{children:[\"A couple of days before KubeCon we’ve found out that our colleague \",/*#__PURE__*/e(n,{href:\"https://terrytangyuan.github.io/about/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Yuan Tang\"})}),\" has been invited to share the stage with Priyanka Sharma during the Day 3 keynote speech! Imagine our excitement and Yuan’s stage fright 😅\"]}),/*#__PURE__*/t(\"p\",{children:[\"Yuan and \",/*#__PURE__*/e(n,{href:\"https://twitter.com/helayoty/status/1586458918263193600?s=20&t=cyqfhMro_2WK-atzW8JK0Q\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Heba Elayoty\"})}),\" (Software Engineer at Microsoft) joined the CNCF Executive Director to deliver a quick fireside chat on the challenges of contributing to open source and how we as a cloud native community can support and enable each other.\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you want to learn more about the everyday life of both Heba and Yuan make sure you check their profiles on \",/*#__PURE__*/e(n,{href:\"https://www.cncf.io/humans-of-cloud-native/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"CNCFs Humans of Cloud Native Blog\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Our First Time at GitOpsCon\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"1512\",src:\"https://framerusercontent.com/images/W56mGBNo8v4pHo0RvuqC5K50.png\",srcSet:\"https://framerusercontent.com/images/W56mGBNo8v4pHo0RvuqC5K50.png?scale-down-to=512 512w,https://framerusercontent.com/images/W56mGBNo8v4pHo0RvuqC5K50.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/W56mGBNo8v4pHo0RvuqC5K50.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/W56mGBNo8v4pHo0RvuqC5K50.png 4032w\",style:{aspectRatio:\"4032 / 3024\"},width:\"2016\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://events.linuxfoundation.org/gitopscon-north-america/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"GitOpsCon\"})}),\" is a KubeCon co-located event designed to foster collaboration, discussion, and knowledge sharing on GitOps. Knowing that Argo and GitOps go hand-in-hand we wanted to get involved in the talks. Our Akuity colleagues Nikita Kutselev and Daniel Hoang delivered a talk on the best practices of storing secrets when using GitOps. It was their first time delivering a talk on stage, so it was a great opportunity for them to leave their comfort zone and share some knowledge with the community.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://youtu.be/PTdwW-wG2uA\"})})}),/*#__PURE__*/t(\"p\",{children:[\"After the talk the audience still had many questions, so whoever is still interested in handling secrets with Argo CD make sure to check the blog post co-written by the duo entitled \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/how-to-manage-kubernetes-secrets-gitops/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"“How to manage Kubernetes secrets with GitOps?”\"})})]}),/*#__PURE__*/e(\"h2\",{children:\"Our KubeCon Talks Recap\"}),/*#__PURE__*/e(\"h3\",{children:\"How To Build Production Grade DevOps Platform Using Argo\"}),/*#__PURE__*/e(\"p\",{children:\"One of Argo’s creators and Akuity’s Chief Architect, Alexander Matyushentsev, shared the stage with Leonardo Luz Almeida, his colleague from Intuit, to talk about building a first-class production grade DevOps platform that’s ready for scaling up and serving a team of 100+ developers.\"}),/*#__PURE__*/e(\"p\",{children:\"This talk was all about taming the complexity and versatility of the Argo Project and integrating it with various other systems in order to have a production-grade Argo-based DevOps platform for Kubernetes.\"}),/*#__PURE__*/e(\"h3\",{children:\"Like Peas And Carrots: Argo CD And Crossplane For Infrastructure Management\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"2016\",src:\"https://framerusercontent.com/images/YhEdwsRhWIhfsVEtLgf1zwoL0o.png\",srcSet:\"https://framerusercontent.com/images/YhEdwsRhWIhfsVEtLgf1zwoL0o.png?scale-down-to=1024 768w,https://framerusercontent.com/images/YhEdwsRhWIhfsVEtLgf1zwoL0o.png?scale-down-to=2048 1536w,https://framerusercontent.com/images/YhEdwsRhWIhfsVEtLgf1zwoL0o.png 3024w\",style:{aspectRatio:\"3024 / 4032\"},width:\"1512\"}),/*#__PURE__*/t(\"p\",{children:[\"Another presentation from our staff was the talk by our CTO Jesse Suen and \",/*#__PURE__*/e(n,{href:\"https://twitter.com/vfarcic\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Viktor Farcic\"})}),\", Developer Advocate at Upbound and a \",/*#__PURE__*/e(n,{href:\"https://youtu.be/yrj4lmScKHQ\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"YouTube star\"})}),\". The aim of the talk was to look closely at how Argo CD and Crossplane work great together.\"]}),/*#__PURE__*/e(\"p\",{children:\"The Crossplane project extends Kubernetes to enable the provisioning of cloud infrastructure. Combined with Argo CD, they become a powerful infrastructure management dashboard. The duo focused on delivering best practices recommended directly from the project maintainers.\"}),/*#__PURE__*/e(\"h2\",{children:\"Our First Booth at KubeCon\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"1512\",src:\"https://framerusercontent.com/images/QrQ1RflRTCQ3EmI8P0FZcG3ViE.png\",srcSet:\"https://framerusercontent.com/images/QrQ1RflRTCQ3EmI8P0FZcG3ViE.png?scale-down-to=512 512w,https://framerusercontent.com/images/QrQ1RflRTCQ3EmI8P0FZcG3ViE.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/QrQ1RflRTCQ3EmI8P0FZcG3ViE.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/QrQ1RflRTCQ3EmI8P0FZcG3ViE.png 4032w\",style:{aspectRatio:\"4032 / 3024\"},width:\"2016\"}),/*#__PURE__*/t(\"p\",{children:[\"What also brought us a lot of excitement was the fact that it was our first time with a proper company booth at KubeCon. The part of the team that was present in Detroit got together and thanks to this we were able to talk to many of you about \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/announcing-akuity-platform/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"the Akuity Platform\"})}),\" and \",/*#__PURE__*/e(n,{href:\"https://agroproj.github.io/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"the Argo Project\"})}),\" in general.\"]}),/*#__PURE__*/e(\"p\",{children:\"It was our pleasure to wander between our booth and the Argo Project stand to learn about the various use cases and challenges that platform and DevOps teams are addressing with Argo.\"}),/*#__PURE__*/e(\"p\",{children:\"Although three days at the booth are exhausting, the feeling we got after KubeCon in Detroit is that Argo is here to stay as the default open source solution for executing and managing GitOps workflows.\"}),/*#__PURE__*/t(\"p\",{children:[\"We’ve already registered for both \",/*#__PURE__*/e(n,{href:\"https://events.linuxfoundation.org/kubecon-cloudnativecon-europe/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"KubeCon EU\"})}),\" and \",/*#__PURE__*/e(n,{href:\"https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america-2023/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"KubeCon NA\"})}),\" in 2023. Hope to see you there as well and learn more about your experience with Argo.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Check Out Our Other Event Recaps!\"}),/*#__PURE__*/e(\"p\",{children:\"Loved this blog? Check out our other events recaps:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/kubeconeu-2022-akuity-team-recap\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"KubeCon EU 2022 Akuity Team Recap\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argocon-2021-akuity-team-recap\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"ArgoCon 2021 Akuity Team Recap\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/argocon-kubecon-na-2024-recap\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo/KubeCon 2024 NA 2024 Recap\"})})})})]})]});export const richText9=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"We're happy to announce that the Akuity Platform has received several advancements. With this release, it has never been easier to get up and running with Argo CD, the Akuity agent supports several new use cases, and we've added some quality-of-life improvements.\"}),/*#__PURE__*/e(\"h2\",{children:\"The Getting Started Wizard\"}),/*#__PURE__*/e(\"p\",{children:\"The Getting Started wizard will walk users through creating an Argo CD instance, deploying the Akuity Agent to a cluster, and standing up their first Application. All in under 10 minutes.\"}),/*#__PURE__*/e(\"p\",{children:\"Thanks to the Akuity Platform's unique architecture, the cluster does not need to be publicly accessible; this allows users to connect a cluster on their laptop (using a tool like minikube, or my preference, kind). No longer will you need to spin up a cluster on the cloud and expose it to support an external Argo CD control plane.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"599\",src:\"https://framerusercontent.com/images/OJcPjIR0ZmM5ZtkLeJvlCF4g0.png\",srcSet:\"https://framerusercontent.com/images/OJcPjIR0ZmM5ZtkLeJvlCF4g0.png?scale-down-to=1024 810w,https://framerusercontent.com/images/OJcPjIR0ZmM5ZtkLeJvlCF4g0.png 949w\",style:{aspectRatio:\"949 / 1199\"},width:\"474\"}),/*#__PURE__*/e(\"h2\",{children:\"Akuity Agent\"}),/*#__PURE__*/e(\"h3\",{children:\"Improved Customization\"}),/*#__PURE__*/e(\"p\",{children:\"Even if your environment has strict compliance policies for where images can be sourced from, the namespace names, or automatic upgrades, the Akuity Agent is ready.\"}),/*#__PURE__*/e(\"p\",{children:\"To make the agent adaptable to your environment, you can now override the target namespace.\"}),/*#__PURE__*/e(\"p\",{children:\"The auto-upgrade functionality of the agent can now be disabled, allowing you to update the version of an Argo CD instance without it cascading to agents in connected clusters. Instead, you can apply the updated manifests manually.\"}),/*#__PURE__*/e(\"p\",{children:\"The image registries for the agent can be personalized to suit your environment.\"}),/*#__PURE__*/e(\"p\",{children:\"The auto-upgrade and image registry options can be configured per cluster or as a default for an Argo CD instance.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"246\",src:\"https://framerusercontent.com/images/hhLTVFr7QbntsWVI8D9sgaoJMg.png\",srcSet:\"https://framerusercontent.com/images/hhLTVFr7QbntsWVI8D9sgaoJMg.png?scale-down-to=512 512w,https://framerusercontent.com/images/hhLTVFr7QbntsWVI8D9sgaoJMg.png 875w\",style:{aspectRatio:\"875 / 492\"},width:\"437\"}),/*#__PURE__*/e(\"h3\",{children:\"Conflicting Agent Installation Detection\"}),/*#__PURE__*/e(\"p\",{children:\"The Clusters dashboard for an Argo CD instance will now display a warning if the Akuity Agent for one of the clusters has been installed in additional clusters.\"}),/*#__PURE__*/e(\"p\",{children:\"An agent has a one-to-one relationship with the destination (either a cluster or a namespace in a cluster). This means that it should not be deployed to multiple places; instead, an agent should be provisioned for each unique destination.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"407\",src:\"https://framerusercontent.com/images/HqPZaGJqXEpYf6EvbOYsBM8Sg.png\",srcSet:\"https://framerusercontent.com/images/HqPZaGJqXEpYf6EvbOYsBM8Sg.png?scale-down-to=512 512w,https://framerusercontent.com/images/HqPZaGJqXEpYf6EvbOYsBM8Sg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/HqPZaGJqXEpYf6EvbOYsBM8Sg.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/HqPZaGJqXEpYf6EvbOYsBM8Sg.png 2434w\",style:{aspectRatio:\"2434 / 814\"},width:\"1217\"}),/*#__PURE__*/e(\"h2\",{children:\"Dashboard Improvements\"}),/*#__PURE__*/e(\"h3\",{children:\"Save Changes Prompt\"}),/*#__PURE__*/e(\"p\",{children:\"The Argo CD settings section will prompt you if there are unsaved changes. A simple yet effective quality-of-life improvement.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"166\",src:\"https://framerusercontent.com/images/04D4roSUN3Q1wCA5qkC5hSrS1M.png\",srcSet:\"https://framerusercontent.com/images/04D4roSUN3Q1wCA5qkC5hSrS1M.png?scale-down-to=512 512w,https://framerusercontent.com/images/04D4roSUN3Q1wCA5qkC5hSrS1M.png 591w\",style:{aspectRatio:\"591 / 332\"},width:\"295\"}),/*#__PURE__*/e(\"h3\",{children:\"Organization Audit Filtering\"}),/*#__PURE__*/e(\"p\",{children:\"Chances are that if you look at your organization's audit dashboard, you are looking for a particular incident. Now you can drill down to the event you are interested in by filtering based on a time range, object type, actor, and action. Compliance is much easier with the commit history from your GitOps repository and the audit log provided by the Akuity Platform.\"}),/*#__PURE__*/e(\"p\",{children:\"We also snuck in some subtle improvements to the overall look and feel of the audit dashboard.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"814\",src:\"https://framerusercontent.com/images/C4MiJPIY9iwWlCWfApTrMXeyuLk.png\",srcSet:\"https://framerusercontent.com/images/C4MiJPIY9iwWlCWfApTrMXeyuLk.png?scale-down-to=512 512w,https://framerusercontent.com/images/C4MiJPIY9iwWlCWfApTrMXeyuLk.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/C4MiJPIY9iwWlCWfApTrMXeyuLk.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/C4MiJPIY9iwWlCWfApTrMXeyuLk.png 2932w\",style:{aspectRatio:\"2932 / 1628\"},width:\"1466\"}),/*#__PURE__*/e(\"h3\",{children:\"Multi-Line Secrets\"}),/*#__PURE__*/e(\"p\",{children:\"Argo CD Instance Notifications and SSO Wizards now support multi-line secrets. Bug fix or feature, you decide!\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"597\",src:\"https://framerusercontent.com/images/l5zRbAf9eiwkO0UeT2wdYkiNc.png\",srcSet:\"https://framerusercontent.com/images/l5zRbAf9eiwkO0UeT2wdYkiNc.png?scale-down-to=512 512w,https://framerusercontent.com/images/l5zRbAf9eiwkO0UeT2wdYkiNc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/l5zRbAf9eiwkO0UeT2wdYkiNc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/l5zRbAf9eiwkO0UeT2wdYkiNc.png 2822w\",style:{aspectRatio:\"2822 / 1194\"},width:\"1411\"}),/*#__PURE__*/e(\"h2\",{children:\"Help and Support\"}),/*#__PURE__*/t(\"p\",{children:[\"You can \",/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"schedule a technical demo with our team\"})}),\" or \",/*#__PURE__*/e(n,{href:\"https://docs.akuity.io/getting-started/create-argo-cd-instance\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"go through the “Getting started”\"})}),\" manual on the Akuity Documentation website.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Loved this blog post? Want to see other amazing features the Akuity Platform has to offer? Check out these neat resources:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://docs.akuity.io/changelog/cloud/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform Changelog\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/akuity-december-2022-update\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform December 2022 Update\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/akuity-january-2023-update\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Akuity Platform January 2023 Update\"})})]})})]})]});export const richText10=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"We are excited to announce the general availability of the Akuity Platform, offering fully-managed Argo CD as a hosted service. With the Akuity Platform, it’s never been easier to get a production-grade, highly available Argo CD instance, which you’ll be able to create and manage in minutes.\"}),/*#__PURE__*/e(\"p\",{children:\"While many people love Argo CD, and we frequently get feedback on how it “just works,” we have heard from users who could do without the burden of self-hosting and managing it. Adding to that, Argo has been consistently one of the most active projects in the CNCF, and keeping up with all its new features, patches, and updates can be challenging. The Akuity Platform manages the provisioning, scaling, upgrades, and security patching of Argo CD, eliminating the need for customers to do it themselves.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://youtu.be/5aB2SlNB4es\"})})}),/*#__PURE__*/e(\"h2\",{children:\"The challenges of self-hosting\"}),/*#__PURE__*/e(\"p\",{children:\"Having built Argo CD, supported its users, and operated countless instances in production over the past four years, we know from experience that it can take dedicated engineering resources and operate and fine-tune as your Kubernetes usage grows. Here are some of the challenges you may eventually encounter:\"}),/*#__PURE__*/e(\"h3\",{children:\"Scalability\"}),/*#__PURE__*/t(\"p\",{children:[\"Over time, as Argo CD is tasked to manage more and more clusters, it eventually reaches a limit to how much the controller can handle. All of Argo CD’s resource monitoring/processing happens centrally in the controller, putting a large processing pressure on a single component. After reaching a certain scale, operators will eventually need to tune this controller to handle the additional load, employing various techniques, such as sharding and tuning parameters (\",/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=ESQLqjbM8h0\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"which we’ve covered in the past\"})}),\").\"]}),/*#__PURE__*/e(\"h3\",{children:\"Security\"}),/*#__PURE__*/e(\"p\",{children:\"If you are using Argo CD to manage remote clusters, you know that Argo CD requires public access to the Kubernetes API server. But for security-restricted environments or ones with prohibitive networking setups, this requirement is often a blocker to adoption. This often results in Argo CD operators running an Argo CD instance per cluster, which only increases the operational burden.\"}),/*#__PURE__*/e(\"h3\",{children:\"Cost\"}),/*#__PURE__*/t(\"p\",{children:[\"One overlooked aspect of self-hosting Argo CD, is that Argo CD \",/*#__PURE__*/e(\"strong\",{children:\"itself\"}),\" needs an environment to run in. As a deployment tool, Argo CD is likely one of your most privileged pieces of software, having write access to a large part of your infrastructure. Hence, an often recommended security practice is running Argo CD in a separate Kubernetes cluster isolated from your application workloads. But this is just one more cluster to manage, secure, and pay for.\"]}),/*#__PURE__*/e(\"p\",{children:\"One of the most popular features of Argo CD is its real-time visualization of cluster resources. However, presenting this information in real time comes with a hidden cost. To power this UI, all Kubernetes resource activity and pod churn are streamed back to the remote control plane to be processed. Even worse is that much of this data is irrelevant and discarded, leading to unnecessary traffic and bandwidth consumption. In the past, we’ve spent thousands of dollars on Kubernetes API egress traffic alone.\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"1480\",src:\"https://framerusercontent.com/images/3NkRORZKCVqYc5CY4yOyHlWnXpc.png\",srcSet:\"https://framerusercontent.com/images/3NkRORZKCVqYc5CY4yOyHlWnXpc.png?scale-down-to=512 512w,https://framerusercontent.com/images/3NkRORZKCVqYc5CY4yOyHlWnXpc.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/3NkRORZKCVqYc5CY4yOyHlWnXpc.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/3NkRORZKCVqYc5CY4yOyHlWnXpc.png 3665w\",style:{aspectRatio:\"3665 / 2961\"},width:\"1832\"}),/*#__PURE__*/e(\"h2\",{children:\"Separating the Data Plane from Control Plane\"}),/*#__PURE__*/e(\"p\",{children:\"When embarking on this initiative, we realized we could do much more than simply offer a hosted Argo CD. We had the opportunity to make fundamental improvements to the architecture to address these operational challenges that Argo CD admins faced over time.\"}),/*#__PURE__*/e(\"p\",{children:\"One of the unique innovations of the Akuity Platform is that it separates Argo CD’s data plane from the control plane. By this, we mean that each cluster runs its own agent and controller. This provides numerous benefits, but in short, it allows most of the heavy lifting to happen closer to its source.\"}),/*#__PURE__*/e(\"p\",{children:\"Higher scalability is achieved by allowing the work of the controller to be distributed and delegated to individual clusters. Sharding and tuning have become things of the past. With our agent-based approach, resource processing happens in-cluster instead of over the network. Only the relevant pieces of metadata presented in the Argo CD UI are sent over the network. In our real-world testing, this has been shown to reduce traffic consumption by as much as 80%. We think this new approach will enable even more use cases for Argo CD, allowing for clusters to be managed over even unreliable and bandwidth-constricted edge environments.\"}),/*#__PURE__*/e(\"p\",{children:\"On the security front, the Akuity Platform allows you to run more secure clusters, while simultaneously simplifying the networking requirements. Instead of opening your Kubernetes API server to the world, your managed cluster only needs the ability to make an outbound connection to the control plane. This feature allows Argo CD to manage private Kubernetes API endpoints, something not possible before.\"}),/*#__PURE__*/e(\"h2\",{children:\"More than just CD\"}),/*#__PURE__*/e(\"p\",{children:\"But we weren't satisfied there. We wanted to enhance the Argo CD experience by providing observability into user and development activity. In the Akuity Platform, application activity is persisted long-term, allowing you to see historical data about your deployment trends and development velocity. An audit record of configuration changes is preserved in the event a significant incident needs to be pinpointed back to its source. And in the future we’ll be providing even richer analytics and metrics to provide deeper insights about your clusters.\"}),/*#__PURE__*/e(\"p\",{children:\"Through our conversations with users, we’ve observed that our users weren’t using Argo CD to its fullest potential. The Argo ecosystem is rich with plugins, extensions, and labs/community projects. Still, much of this additional functionality is hidden behind documentation or requires Argo CD know-how to configure and enable. The Akuity Platform solves this by making it dead simple to configure and enable these addons, with the support and backing of the creators of the Argo project itself.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://youtu.be/AEVnfo84mHI\"})})}),/*#__PURE__*/e(\"p\",{children:\"We want the Akuity Platform to become more than “just another Argo CD as a managed service” offer. The unique architecture of the platform allows us not only to simplify using Argo, but provides a solid foundation that powers dozens of important DevOps use cases. Expect more DevOps tooling innovation coming from our team, both as features of the platform and new open source initiatives.\"}),/*#__PURE__*/e(\"p\",{children:\"We hope you join us on this journey 🚀\"}),/*#__PURE__*/e(\"h2\",{children:\"Additional Resources\"}),/*#__PURE__*/e(\"p\",{children:\"Are you new to the Akuity Platform? Check out these amazing resources to aid you in your learning journey:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post]: \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/deployment-made-easy-with-argo-cd\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Deployment Made Easy with Argo CD\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/promotion-made-easy-with-kargo\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Promotion Made Easy with Kargo\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/t(\"p\",{children:[\"[Blog Post] \",/*#__PURE__*/e(n,{href:\"https://akuity.io/blog/cluster-monitoring-made-easy-with-kubevision-kubevision-for-beginners\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Cluster Monitoring Made Easy with Akuity\"})})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"11px\",\"--framer-text-color\":\"rgb(0, 0, 0)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://akuity.io/get-in-touch\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Book a demo today!\"})})})})]})]});export const richText11=/*#__PURE__*/t(a.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"This blog post is a summary of a webinar we held live in June 2022. You can find \",/*#__PURE__*/e(n,{href:\"https://youtu.be/PaxOzh9LdSo\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"the recording of the full 40-minute session on YouTube\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Kubernetes has become the standard for container orchestration, but managing secrets securely remains a challenge for many teams. Secrets management ensures that sensitive data remains protected while still being accessible to applications.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In this post, we will be exploring multiple methods of managing secrets in GitOps with Argo CD specifically. However, these methods apply to other GitOps tooling as well.\"}),/*#__PURE__*/e(\"h2\",{children:\"What is Secret Management?\"}),/*#__PURE__*/e(\"p\",{children:\"Secrets management refers to the tools and methods for managing digital authentication credentials (secrets), including: \"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"13.5px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"API keys\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"13.5px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Passwords\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"13.5px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"TLS certificates\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"13.5px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Encryption keys\"})})]}),/*#__PURE__*/e(\"p\",{children:\"A strong secrets management strategy ensures that sensitive data is protected, encrypted, and rotated while remaining accessible to authorized applications.\"}),/*#__PURE__*/e(\"h2\",{children:\"Why Does Kubernetes Secrets Management Matter?\"}),/*#__PURE__*/e(\"p\",{children:\"Oftentimes security is overlooked and treated as an afterthought in software delivery. In my experience as a DevOps consultant I have seen countless examples where passwords and other crucial information is left unencrypted or stored in plain text. Make sure that you always develop software and infrastructure with a security first approach using the best practices of DevSecOps. Also, I want to encourage you to consider what your needs are and stay open- minded to emerging solutions.\"}),/*#__PURE__*/e(\"p\",{children:\"When you first start implementing Argo CD you will realize that all the tools in the Argo Project family are extremely flexible and un-opinionated which means you need to figure out which solution fulfills your needs in the best way possible.\"}),/*#__PURE__*/e(\"h2\",{children:\"How to Choose the Right Way to Manage Kubernetes Secrets\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"Some things to consider, when selecting the way you manage secrets are:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"Scale and Scalability\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"If you expect your organization to scale, it may make sense to put a bit more effort into a solution that is complex to configure in the beginning instead of the easiest solution to implement.\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"Maintenance & Developer Experience\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"What is the developer experience to rotate secrets? Or to maintain sidecars?\"})})})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:[/*#__PURE__*/e(\"p\",{children:\"Use Case & Business Needs\"}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"You might need to implement a solution quickly to meet a deadline, or you may have a good reason to use a specific solution like a pre-existing architecture.\"})})})]})]}),/*#__PURE__*/e(\"h2\",{children:\"Top Kubernetes Secrets Management Solutions\"}),/*#__PURE__*/e(\"p\",{children:\"Choosing the right secrets management solution is crucial for maintaining security and ensuring seamless operations within your Kubernetes environment. Below, we break down some of the popular tools and approaches for managing Kubernetes secrets with GitOps. Whether you're looking for a simple Git-based approach or a robust external secrets manager, this guide will help you select the best fit for your needs.\"}),/*#__PURE__*/e(\"h3\",{children:\"Sealed Secrets\"}),/*#__PURE__*/e(\"img\",{alt:\"Sealed Secrets diagram\",className:\"framer-image\",height:\"320\",src:\"https://framerusercontent.com/images/L2EVBkaDgGtUCSxcKGtxuhNkIo.png\",srcSet:\"https://framerusercontent.com/images/L2EVBkaDgGtUCSxcKGtxuhNkIo.png?scale-down-to=512 512w,https://framerusercontent.com/images/L2EVBkaDgGtUCSxcKGtxuhNkIo.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/L2EVBkaDgGtUCSxcKGtxuhNkIo.png 1049w\",style:{aspectRatio:\"1049 / 640\"},width:\"524\"}),/*#__PURE__*/t(\"p\",{children:[\"The concept behind \",/*#__PURE__*/e(n,{href:\"https://github.com/bitnami-labs/sealed-secrets\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Sealed Secrets\"})}),\" is essentially composed of two parts using source code to store secrets and utilizing a decryption key in the cluster. First you encrypt the secret on your computer, then it is decrypted on the cluster by the controller. To encrypt the secret you use a tool called Kubeseal, which has access to the cluster to retrieve an encryption key.\"]}),/*#__PURE__*/e(\"p\",{children:\"There is a custom resource named SealedSecret which contains encrypted information and the controller decrypts it and creates a Kubernetes Secret. The sealed secret controller watches for any sealed secrets in the cluster across all namespaces, so everytime you create a new sealed secret the controller will detect it.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Features:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Sealed Secrets are stored in Git, which means this method doesn’t need a connection to any Secrets Manager.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"You have to manually encrypt each secret.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"When to use:\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"When you have a small number of clusters or as a temporary solution for a quick start.\"})})}),/*#__PURE__*/e(\"h3\",{children:\"Argo CD Vault Plugin\"}),/*#__PURE__*/e(\"img\",{alt:\"Argo CD Vault Plugin Diagram\",className:\"framer-image\",height:\"403\",src:\"https://framerusercontent.com/images/OcW3EuKVuQ1Ghi2hDRcNLnTWOA.png\",srcSet:\"https://framerusercontent.com/images/OcW3EuKVuQ1Ghi2hDRcNLnTWOA.png?scale-down-to=512 512w,https://framerusercontent.com/images/OcW3EuKVuQ1Ghi2hDRcNLnTWOA.png 1024w\",style:{aspectRatio:\"1024 / 806\"},width:\"512\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://argocd-vault-plugin.readthedocs.io/en/stable/\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Argo CD Vault Plugin\"})}),\" works by replacing placeholders in secret manifests you store in Git with actual secrets. When Argo CD synchronizes the repo with the cluster it runs a plugin which finds the placeholder and replaces it with the data retrieved from the configured Secret Manager. This tool currently has a limitation of only being able to integrate with one secrets manager at a time (AVP is able to connect to any secrets manager, but there is only one configured backend per Argo CD, so you can have only one configured backend in your environment).\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Features:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"It doesn’t require Custom Resources and controllers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"It supports a wide variety of secrets managers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"It can only connect to one secrets manager at a time.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Requires a hard refresh when a secret is updated.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"When to use:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"When you don’t want CRDs and controllers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"When you only manage resources with Argo CD.\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"SOPS (Secrets OPerationS)\"}),/*#__PURE__*/e(\"img\",{alt:\"SOPS (Secrets OPerationS) Diagram\",className:\"framer-image\",height:\"316\",src:\"https://framerusercontent.com/images/UQtjJfOXyRSVfNFlDMXV1dvfm0g.png\",srcSet:\"https://framerusercontent.com/images/UQtjJfOXyRSVfNFlDMXV1dvfm0g.png?scale-down-to=512 512w,https://framerusercontent.com/images/UQtjJfOXyRSVfNFlDMXV1dvfm0g.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/UQtjJfOXyRSVfNFlDMXV1dvfm0g.png 1040w\",style:{aspectRatio:\"1040 / 633\"},width:\"520\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://github.com/mozilla/sops\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"SOPS\"})}),\" is like if Sealed Secrets and Argo CD Vault Plugin had a baby. This tool uses keystores instead of a secrets manager. It’s a very popular option because of its age - people started using it when there weren’t any secrets managers, only keystores.\"]}),/*#__PURE__*/e(\"p\",{children:\"It’s similar to sealed secrets because you need to encrypt secrets manually. Where it differs from sealed secrets is that it reads the decryption key from a key store. It decrypts secrets in a similar fashion by using a binary that Argo CD runs (SOPS binary).\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Features:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Doesn’t require Custom Resources and controllers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Stored in Git.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Manual encryption of secrets.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Needs SOPS plugin for Argo CD.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"When to use:\"})}),/*#__PURE__*/e(\"ul\",{children:/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"In 2018\"})})}),/*#__PURE__*/e(\"h3\",{children:\"Vault Agent\"}),/*#__PURE__*/e(\"img\",{alt:\"Vault Agent Diagram\",className:\"framer-image\",height:\"340\",src:\"https://framerusercontent.com/images/Mk1i5rwi60EI6YkrAv2rAlhYw.png\",srcSet:\"https://framerusercontent.com/images/Mk1i5rwi60EI6YkrAv2rAlhYw.png?scale-down-to=512 512w,https://framerusercontent.com/images/Mk1i5rwi60EI6YkrAv2rAlhYw.png 888w\",style:{aspectRatio:\"888 / 680\"},width:\"444\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.vaultproject.io/docs/agent\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Vault Agent\"})}),\" is a tool created by Hashicorp specifically for Vault.\"]}),/*#__PURE__*/e(\"p\",{children:\"This solution works in a completely different way from the previously mentioned ones. Whenever you run a pod in the cluster, the controller injects a sidecar into your pod with the vault agent, which connects to the vault server and mounts a volume in the file system. Then whenever your application needs to read secrets it should read them from that mounted volume. This might be a good thing, but there is a price to pay in terms of maintenance and scalability - if you had 1000 pods, you would also have 1000s of agents running and making connections.\"}),/*#__PURE__*/e(\"p\",{children:\"This method doesn’t use Kubernetes secrets - Kubernetes won’t know anything about your secrets.\"}),/*#__PURE__*/e(\"p\",{children:\"When using this method, your applications have a dependency on Vault. If Vault is offline, the Vault agent will return error messages, but also your applications won’t be able to start.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Features:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Doesn’t create a Kubernetes secret\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Uses templates for rendering files.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Can update mounted files.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Only works with Hashicorp Vault.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"When to use:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"You only use Vault.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"You don’t want Kubernetes secrets.\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Secrets Store CSI Driver\"})}),/*#__PURE__*/e(\"img\",{alt:\"Secrets Store CSI Driver Diagram\",className:\"framer-image\",height:\"353\",src:\"https://framerusercontent.com/images/ibdWxahO97T2VLN6cvrxr79Kw.png\",srcSet:\"https://framerusercontent.com/images/ibdWxahO97T2VLN6cvrxr79Kw.png?scale-down-to=512 512w,https://framerusercontent.com/images/ibdWxahO97T2VLN6cvrxr79Kw.png 957w\",style:{aspectRatio:\"957 / 706\"},width:\"478\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://github.com/kubernetes-sigs/secrets-store-csi-driver\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"Secrets Store CSI Driver\"})}),\" (Container Storage Interface) is a DaemonSet that runs on each node. This approach scales a bit better than the agent-per-pod approach in Vault Agent. However it works a bit differently.\"]}),/*#__PURE__*/e(\"p\",{children:\"CSI is a special type of volume. In this method you will need to install the CSI Driver, then describe the volume in your workload. Because it’s a storage driver, it doesn’t watch for secret updates; it only runs on volume creation (Pod start/restart).\"}),/*#__PURE__*/e(\"p\",{children:\"The secret provider class is the configuration which tells the driver how to connect to all the secrets managers.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Features:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Very flexible option. It doesn’t create a Kubernetes secret by default, but can.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Can’t update mounted files\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"DaemonSet\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"When to use:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"You have multiple different types of secrets managers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"You don’t want Kubernetes secrets.\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"External Secrets\"})}),/*#__PURE__*/e(\"img\",{alt:\"External Secrets Diagram\",className:\"framer-image\",height:\"373\",src:\"https://framerusercontent.com/images/zwwC6mCRXSFPYRSNobAS5NvoYQ.png\",srcSet:\"https://framerusercontent.com/images/zwwC6mCRXSFPYRSNobAS5NvoYQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/zwwC6mCRXSFPYRSNobAS5NvoYQ.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/zwwC6mCRXSFPYRSNobAS5NvoYQ.png 1228w\",style:{aspectRatio:\"1228 / 746\"},width:\"614\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://github.com/external-secrets/external-secrets\",motionChild:!0,nodeId:\"Fkr90Y0Ui\",openInNewTab:!0,relValues:[],scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(r.a,{children:\"External Secrets\"})}),\" works by creating a secret for each external secret. In the Custom Resource you specify the SecretStore which can be either namespace or cluster scoped. The SecretStore has the configuration to connect to the secrets manager (this can be cluster-scoped or namespace-scoped).\"]}),/*#__PURE__*/e(\"p\",{children:\"The ExternalSecret has a reference to the secret store, and it points to the exact location of your secret within this store.\"}),/*#__PURE__*/e(\"p\",{children:\"This method also supports immutable secrets, instead of updating a secret you can create a new version of a secret.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Features:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Connects to multiple sources, including other Kubernetes clusters.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Can use templates.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"Updates secrets discreetly.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"When to use:\"})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"When you might have multiple different secrets managers.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",style:{\"--framer-font-size\":\"12px\",\"--framer-text-color\":\"rgb(30, 41, 59)\",\"--framer-text-decoration\":\"none\"},children:/*#__PURE__*/e(\"p\",{children:\"You want to use Kubernetes secrets.\"})})]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Secrets Management and the Cloud\"})}),/*#__PURE__*/e(\"p\",{children:\"Traditionally when you want to connect to any Cloud, you have some type of secret key or password to authenticate. How do you initially connect to your secrets manager?\"}),/*#__PURE__*/e(\"p\",{children:\"To solve this problem each cloud provider introduced their own solution which is IAM (Identity Access Management).\"}),/*#__PURE__*/e(\"p\",{children:\"This works if you have your secrets manager and Kubernetes cluster in the same cloud. But what if you don’t?\"}),/*#__PURE__*/e(\"p\",{children:\"For this scenario there is also a solution usually called Workload Identity Federation, but it might have different naming with different cloud providers.\"}),/*#__PURE__*/e(\"h3\",{children:\"Making Kubernetes Secrets Management Work for You\"}),/*#__PURE__*/e(\"p\",{children:\"After understanding all of the options I’m sure you’ve come to a similar conclusion as we have. We strongly advise you to use the External Secrets method, because this method is Kubernetes-native, secrets management agnostic, and rapidly being adopted by the community which means it will have continued support.\"}),/*#__PURE__*/e(\"p\",{children:\"Typically in a mature organization you may already have certain limitations, situations, or secrets managers in use which means the solution that best fits your need may already be limited to one or two options that we shared. However, depending on your preferences regarding maintenance and scale, you may consider implementing a completely different solution.\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Want to dive deeper into Kubernetes secrets management?\"}),\" Watch our full 40-minute webinar below where we break down these strategies in detail:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(o,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/1de6WpgIbCrKkRcPfQcW/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(i,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://youtu.be/PaxOzh9LdSo\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText8\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText11\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText9\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText10\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}