{"id":16926994,"url":"https://github.com/dirien/kargo-test","last_synced_at":"2025-07-01T22:31:57.545Z","repository":{"id":257583946,"uuid":"858673573","full_name":"dirien/kargo-test","owner":"dirien","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-26T16:37:45.000Z","size":74,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-24T23:05:33.232Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Smarty","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dirien.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-17T10:34:18.000Z","updated_at":"2025-06-21T22:48:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"385eabae-428b-463e-a3b6-48f04ff7afd4","html_url":"https://github.com/dirien/kargo-test","commit_stats":null,"previous_names":["dirien/kargo-test"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/dirien/kargo-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirien%2Fkargo-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirien%2Fkargo-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirien%2Fkargo-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirien%2Fkargo-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dirien","download_url":"https://codeload.github.com/dirien/kargo-test/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dirien%2Fkargo-test/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263046041,"owners_count":23405122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T20:32:27.436Z","updated_at":"2025-07-01T22:31:57.506Z","avatar_url":"https://github.com/dirien.png","language":"Smarty","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Progressive Infrastructure Delivery using Kargo and Argo CD\n\nThis repository contains the code for my talk \"Progressive Infrastructure Delivery using Kargo and Argo CD\"\n\n### Abstract\n\nSince the day Kargo was released, I have been exploring the idea of using it not only to deliver and promote\napplications but also to deliver infrastructure through its progressive delivery capabilities. Using Kubernetes-based\ntools like Crossplane or Pulumi, we can define infrastructure as code and deliver it progressively to our management\nclusters and then promote this infrastructure through different stages without the need for extra CD script magic.\n\nLet me show you how Kargo helps platform engineering streamline and automate the progressive rollout of infrastructure\nchanges to all stages. This talk will cover the basics of Kargo and how to use it with Infrastructure as Code tools.\n\n### Installation\n\n##### Install Kind\n\n```shell\nkind create cluster \\\n  --wait 120s \\\n  --config - \u003c\u003cEOF\nkind: Cluster\napiVersion: kind.x-k8s.io/v1alpha4\nname: kargo-quickstart\nnodes:\n- extraPortMappings:\n  - containerPort: 31443 # Argo CD dashboard\n    hostPort: 31443\n  - containerPort: 31444 # Kargo dashboard\n    hostPort: 31444  \nEOF\n```\n\n##### Install Kargo\n\n```shell\nhelm upgrade -i cert-manager cert-manager \\\n  --repo https://charts.jetstack.io \\\n  --namespace cert-manager \\\n  --create-namespace \\\n  --set crds.enabled=true \\\n  --wait\n\nhelm upgrade -i argocd argo-cd \\\n  --repo https://argoproj.github.io/argo-helm \\\n  --namespace argocd \\\n  --create-namespace \\\n  --set 'configs.secret.argocdServerAdminPassword=$2a$10$5vm8wXaSdbuff0m9l21JdevzXBzJFPCi8sy6OOnpZMAG.fOXL7jvO' \\\n  --set dex.enabled=false \\\n  --set notifications.enabled=false \\\n  --set server.service.type=NodePort \\\n  --set server.service.nodePortHttp=31443 \\\n  --set server.extensions.enabled=true \\\n  --set \"server.extensions.extensionList[0].name=rollout-extension\" \\\n  --set \"server.extensions.extensionList[0].env[0].name=EXTENSION_URL\" \\\n  --set \"server.extensions.extensionList[0].env[0].value=https://github.com/argoproj-labs/rollout-extension/releases/download/v0.3.4/extension.tar\"\n  --wait\n\nhelm upgrade -i argo-rollouts argo-rollouts \\\n  --repo https://argoproj.github.io/argo-helm \\\n  --create-namespace \\\n  --namespace argo-rollouts \\\n  --wait\n\nhelm upgrade -i kargo \\\n  oci://ghcr.io/akuity/kargo-charts/kargo \\\n  --namespace kargo \\\n  --create-namespace \\\n  --set api.service.type=NodePort \\\n  --set api.service.nodePort=31444 \\\n  --set api.adminAccount.passwordHash='$2a$10$Zrhhie4vLz5ygtVSaif6o.qN36jgs6vjtMBdM6yrU1FOeiAAMMxOm' \\\n  --set api.adminAccount.tokenSigningKey=iwishtowashmyirishwristwatch \\\n  --wait\n```\n\n#### Install Crossplane and Pulumi Operator\n\n```shell\n\nhelm repo add komodorio https://helm-charts.komodor.io \\\n  \u0026\u0026 helm repo update komodorio \\\n  \u0026\u0026 helm upgrade -i komoplane komodorio/komoplane --namespace komoplane --create-namespace\n\nhelm upgrade -i crossplane \\\n--namespace crossplane-system \\\n--create-namespace crossplane-stable/crossplane \\\n--wait\n\nkubectl create secret generic do-creds  --namespace crossplane-system   --from-literal=credentials='{\"token\": \"dop_xxx\"}'\n\nkubectl apply -f - \u003c\u003cEOF\napiVersion: pkg.crossplane.io/v1\nkind: Provider\nmetadata:\n  name: provider-upjet-digitalocean\nspec:\n  package: xpkg.upbound.io/crossplane-contrib/provider-upjet-digitalocean:v0.2.1\nEOF\n\nkubectl apply -f - \u003c\u003cEOF\napiVersion: digitalocean.crossplane.io/v1beta1\nkind: ProviderConfig\nmetadata:\n  name: default\nspec:\n  credentials:\n    secretRef:\n      key: credentials\n      name: do-creds\n      namespace: crossplane-system\n    source: Secret\nEOF\n\nkubectl apply -f - \u003c\u003cEOF\napiVersion: project.digitalocean.crossplane.io/v1alpha1\nkind: Project\nmetadata:\n  name: do-project\nspec:\n  forProvider:\n    name: cp-test\n    description: A project to represent test resources\n    environment: development\nEOF\n\nkubectl create secret generic pulumi-operator-secrets --from-literal=pulumi-access-token=pul-xx --from-literal=do-token=dop_xxx\n\nhelm upgrade -i  pulumi-kubernetes-operator oci://ghcr.io/pulumi/helm-charts/pulumi-kubernetes-operator \\\n  --set \"extraEnv[0].name=PULUMI_ACCESS_TOKEN\" \\\n  --set \"extraEnv[0].valueFrom.secretKeyRef.key=pulumi-access-token\" \\\n  --set \"extraEnv[0].valueFrom.secretKeyRef.name=pulumi-operator-secrets\" \\\n  --set \"extraEnv[1].name=DIGITALOCEAN_TOKEN\" \\\n  --set \"extraEnv[1].valueFrom.secretKeyRef.key=do-token\" \\\n  --set \"extraEnv[1].valueFrom.secretKeyRef.name=pulumi-operator-secrets\" \\\n  --wait\n```\n\n\n#### Usage\n\n```shell\nkubectl apply -f setup/kargo-demo.yaml # Create the Kargo demo setup\nkubectl apply -f setup/infra-app-set.yaml # Create the Argo CD demo setup\n```\n\nOpen the Kargo dashboard at https://localhost:31444 and the Argo CD dashboard at https://localhost:31443\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdirien%2Fkargo-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdirien%2Fkargo-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdirien%2Fkargo-test/lists"}