{"id":15716655,"url":"https://github.com/cloudymax/argocd-nvidia-lab","last_synced_at":"2026-02-06T21:33:02.615Z","repository":{"id":147016391,"uuid":"618544693","full_name":"cloudymax/argocd-nvidia-lab","owner":"cloudymax","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-25T13:30:21.000Z","size":606,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-14T14:42:38.081Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/cloudymax.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":"2023-03-24T17:45:42.000Z","updated_at":"2023-12-03T15:41:26.000Z","dependencies_parsed_at":"2024-03-25T15:09:55.333Z","dependency_job_id":"be12d2ba-b497-43cf-af98-d8906b50cde7","html_url":"https://github.com/cloudymax/argocd-nvidia-lab","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cloudymax/argocd-nvidia-lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudymax%2Fargocd-nvidia-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudymax%2Fargocd-nvidia-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudymax%2Fargocd-nvidia-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudymax%2Fargocd-nvidia-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudymax","download_url":"https://codeload.github.com/cloudymax/argocd-nvidia-lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudymax%2Fargocd-nvidia-lab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29177551,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T20:14:21.878Z","status":"ssl_error","status_checked_at":"2026-02-06T20:14:21.443Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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-03T21:46:25.827Z","updated_at":"2026-02-06T21:33:02.600Z","avatar_url":"https://github.com/cloudymax.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# argocd-nvidia-lab\n\nAn ArgoCD [app-of-apps] to deploy a Nvidia-based HPC cluster on [smol-k8s-lab].\n\n## Contents\n| Role | Service |\n| ---  | ---     |\n| Metrics \u0026 Dashboards | Kube-prometheus-stack + Extra Scrape targets |\n| Log Aggregation | Loki-stack + Extra Scrape targets |\n| GPU Management | Nvidia GPU Operator |\n| SSO/Oauth | Vouch Proxy |\n| Virtual Machines | Kubervirt |\n\n## Reccomended Dashboards\n- https://grafana.com/grafana/dashboards/15172-node-exporter-for-prometheus-dashboard-based-on-11074/\n- https://grafana.com/grafana/dashboards/14314-kubernetes-nginx-ingress-controller-nextgen-devops-nirvana/\n\n## Extras\n\n - nvidia-glx-desktop\n - nvidia-egl-desktop\n - games-on-whales\n - novnc-desktop\n - juicefs (wip)\n - knative\n\n\n\u003c!-- external link references --\u003e\n[smol-k8s-lab]: https://github.com/small-hack/smol-k8s-lab \"Get started with k0s, k3s, or kind to bootstrap simple projects on kubernetes with a friendly smol vibe. Great for testing webapps and benchmarking.\"\n[app-of-apps]: https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/ \"ArgoCD App-of-Apps pattern documentation\"\n\n## ArgoCD Web Terminal\n\nEdit the configmap:\n```bash\nkubectl edit configmap argocd-cm -n argocd\n```\n\nChange exec.enabled to true\n\n```yaml\napiVersion: v1\ndata:\n  admin.enabled: \"true\"\n  application.instanceLabelKey: argocd.argoproj.io/instance\n  exec.enabled: \"true\"\n```\n\nEdit the role\n```bash\nkubectl edit role argo-cd-argocd-server -n argocd\n```\n\nAdd `pods/exec` to the allowd rules\n```yaml\nrules:\n- apiGroups:\n  - \"\"\n  resources:\n  - secrets\n  - configmaps\n  - pods/exec\n  verbs:\n```\n\n\n\n## Scrape Configs\n\nAdd this yaml for a prometheus scrape configs as a secret\n\n```yaml\n- job_name: \"nginx-ingress\"\n  static_configs:\n  - targets: [\"ingress-nginx-controller-metrics.ingress-nginx.svc.cluster.local:10254\"]\n- job_name: \"postgres\"\n  static_configs:\n  - targets: [\"postgres-postgresql-metrics.default.svc.cluster.local:9187\"]\n- job_name: \"nvidia-smi\"\n  static_configs:\n  - targets: [\"nvidia-dcgm-exporter.default.svc.cluster.local:9400\"]\n```\n\n```bash\nkubectl create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml \\\n    --dry-run=client -oyaml \u003e additional-scrape-configs.yaml\n```\n\n## NGINX MOD Security + Metrics\n\nUpdate the Nginx configmap:\n\n```bash\nkubectl edit configmap -n ingress-nginx ingress-nginx-controller\n```\n\n```yaml\napiVersion: v1\ndata:\n  # ...\n  allow-snippet-annotations: \"true\"\n  enable-modsecurity: \"true\"\n  enable-owasp-modsecurity-crs: \"true\"\n  load-balance: ewma\n  modsecurity-snippet: |-\n    SecRuleEngine DetectionOnly\n    SecAuditEngine RelevantOnly\n    SecStatusEngine On\n    SecRequestBodyAccess On\n    SecAuditLog /dev/stdout\n    SecAuditLogFormat JSON\n    SecRequestBodyLimitAction ProcessPartial\n    SecResponseBodyLimitAction ProcessPartial\n    SecRequestBodyLimit 13107200\n    SecRequestBodyNoFilesLimit 131072\n    SecResponseBodyLimit 524288\n    SecPcreMatchLimit 250000\n    SecPcreMatchLimitRecursion 250000\n    SecCollectionTimeout 600\n    SecRuleRemoveById 920420\n    SecRuleRemoveById 920350\n  # ...\n```\n\n```bash\nhelm upgrade ingress-nginx ingress-nginx \\\n--repo https://kubernetes.github.io/ingress-nginx \\\n--namespace ingress-nginx \\\n--set controller.metrics.enabled=true \\\n--set-string controller.podAnnotations.\"prometheus\\.io/scrape\"=\"true\" \\\n--set-string controller.podAnnotations.\"prometheus\\.io/port\"=\"10254\"\n```\n\n## Install the ArgoCD CLI and log in\n\n```bash\n# Install the argocd CLI\ncurl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64\nsudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd\nrm argocd-linux-amd64\n```\n\n```bash\n# Login to argocd via cli\nargocd login argocd.cloudydev.net --username admin \\\n    --grpc-web \\\n    --password $(bw get password argocd.cloudydev.net)\n```\n\n## Postgres secret\n\n```\nkubectl create namespace postgres\nkubectl create secret generic postgres \\\n    --namespace postgres \\\n    --from-literal=POSTGRES_USER_PASSWORD=\"\" \\\n    --from-literal=POSTGRES_ADMIN_PASSWORD=\"\" \\\n    --from-literal=POSTGRES_REPLICATION_PASSWORD=\"\"\n```\n## Postgres Benchmarks\n\n1. https://github.com/AbdallahCoptan/PostGreSQL-Bench/blob/master/Pgbench.md\n2. https://computingforgeeks.com/install-postgresql-12-on-ubuntu/\n\n## Postgres Setup\n\n```bash\npsql postgres://admin:\u003cpassword\u003e@\u003cip\u003e:5432/postgres\n\nCREATE DATABASE benchmarks;\n\n\\c benchmarks\n\nCREATE TABLE pcmark (\n  id INTEGER NOT NULL,\n  vendor TEXT NOT NULL,\n  machine_name TEXT NOT NULL,\n  cpu_alias TEXT,\n  baseline_info JSONB,\n  version JSONB,\n  results JSONB,\n  system_info JSONB\n);\n```\n\n## Adding Benchmarks\n\n```bash\nRun benchmark\n\nexport id=0\nexport machine_name=\"ax102\"\nexport vendor=\"hetzner\"\nexport cpu_alias=\"7950X3D\"\nexport baseline_info=$(yq -o=json -I=0 '.BaselineInfo' results_all.yml)\nexport version=$(yq -o=json -I=0 '.Version' results_all.yml)\nexport results=$(yq -o=json -I=0 '.Results' results_all.yml)\nexport system_info=$(yq -o=json -I=0 '.SystemInformation' results_all.yml)\n\nPGPASSWORD= \\\npsql \\\n --username=admin  \\\n --port=5432  \\\n --no-password  \\\n --host=85.10.207.24  \\\n --dbname=benchmarks  \\\n -t  \\\n -c \"INSERT INTO pcmark VALUES ($id, '$vendor', '$machine_name', '$cpu_alias', '$baseline_info', '$version', '$results', '$system_info')\"\n```\n\n## Query Benchmarks\n\n```bash\nPGPASSWORD=\\\npsql \\\n --username=admin  \\\n --port=5432  \\\n --no-password  \\\n --host=85.10.207.24  \\\n --dbname=benchmarks  \\\n -c \"SELECT vendor AS vendor, \n  machine_name AS machine_name, \n  cpu_alias AS cpu_alias, \n  system_info-\u003e\u003e'Processor' AS cpu, \n  results-\u003e\u003e'CPU_SINGLETHREAD' AS single_threaded FROM pcmark\"\n```\n\n## Deploy the app of apps\n\n```bash\n# deploy the app of apps\nkubectl config set-context --current --namespace=argocd\nargocd app create app-of-apps --repo https://github.com/cloudymax/argocd-nvidia-lab.git \\\n    --path templates/ \\\n    --dest-server https://kubernetes.default.svc\n    \nargocd app sync app-of-apps\n```\n\n## Install Argo Rollouts\n\nOther install methods: https://github.com/argoproj/argo-rollouts/blob/master/docs/installation.md#kubectl-plugin-installation\n\nInatlls plugin\n```bash\nbrew install argoproj/tap/kubectl-argo-rollouts\n```\n\nWatch a rollout\n```bash\nkubectl argo rollouts get rollout rollout-bluegreen -n nginx-hello-bluegreen --watch\n```\n\nChange rollout image:\n```bash\nkubectl argo rollouts set image rollout-bluegreen nginx-hello-bluegreen=argoproj/rollouts-demo:yellow -n nginx-hello-bluegreen\n```\n\nPromote rollout:\n```bash\nkubectl argo rollouts promote rollout-bluegreen -n nginx-hello-bluegreen\n```\n\n## Argo Workflows CLI\nCheck for latest release at https://github.com/argoproj/argo-workflows/releases\n\n- Linux\n \n```bash\n# Download the binary\ncurl -sLO https://github.com/argoproj/argo-workflows/releases/download/v3.4.7/argo-linux-amd64.gz\n\n# Unzip\ngunzip argo-linux-amd64.gz\n\n# Make binary executable\nchmod +x argo-linux-amd64\n\n# Move binary to path\nmv ./argo-linux-amd64 /usr/local/bin/argo\n\n# Test installation\nargo version\n```\n\n## validate virtualization support\n\n```bash\nvirt-host-validate qemu\n```\n\n## Kubevirt Dashboard\n\n- https://grafana.com/grafana/dashboards/11748-kubevirt/\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudymax%2Fargocd-nvidia-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudymax%2Fargocd-nvidia-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudymax%2Fargocd-nvidia-lab/lists"}