Deploy MinIO via ArgoCD with 1Password Operator and Tailscale Ingress #195
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds MinIO object storage to the observability stack for Loki persistence. Standalone deployment on NFS with credentials managed via 1Password Operator, console exposed over Tailscale.
Implementation
ArgoCD Applications (
argocd/apps/observability/)minio-secrets.yml(wave 10): Syncs 1Password credentials intominio-credentialsSecretminio.yml(wave 20): Deploys MinIO Helm chart v5.3.0 in standalone mode1Password Integration (
k8s/minio_secrets/)vaults/HomeLab/items/k3s-observability-miniorootUser,rootPassword,lokiSecretKeyexistingSecret: minio-credentialsMinIO Configuration
nfs-synology-retain)lokibucket +lokiuser with restricted RW policyTailscale Ingress (
k8s/resources/ingresses/observability-minio/)minio.rohu-shark.ts.net→minio-console:9001S3 Endpoint
Prerequisites
Create 1Password item
k3s-observability-minioinHomeLabvault with fields:rootUser,rootPassword,lokiSecretKey.Original prompt
This section details on the original issue you should resolve
<issue_title>Deploy MinIO via Argo CD using 1Password Operator secrets (k3s + NFS)</issue_title>
<issue_description>### Goal
Deploy MinIO into k3s via Argo CD Application, with:
OnePasswordItem)Repo changes
1) Add new MinIO app folder and manifests
Create (match your repo conventions; names here are suggested):
argocd/minio/minio.yml(ArgoCD Application)argocd/minio/minio-onepassword.yml(OnePasswordItem CR(s))Namespace:
observability-minioArgo project:
coachlight-k3s-observability2) 1Password Operator objects (no raw Secret manifests)
2.1 Create a 1Password item in your vault
Copilot should not do this step in git (obviously), but the PR should document the required 1Password item.
Create a 1Password item (example name):
k3s-observability-minioIt must contain fields for:
rootUserrootPasswordlokiAccessKeylokiSecretKey(Exact field names can be adjusted to whatever the MinIO Helm chart expects; Copilot must map these correctly.)
2.2 Create
OnePasswordItemCR in-clusterCreate
argocd/minio/minio-onepassword.ymlthat defines aOnePasswordIteminobservability-miniothat materializes a Kubernetes Secret (generated by the operator) with the above fields.Example (Copilot must adapt to your established 1Password Operator patterns in-repo):
Copilot requirements
Search the repo for existing
OnePasswordItemusage and mirror:itemPathconventionsEnsure Argo CD will apply this CR before the MinIO Helm release needs the Secret (sync-wave or separate Application ordering).
3) MinIO Helm chart: use
existingSecretgenerated by 1Password Operator3.1 Chart source and version pin
Use the same chart approach you already intended (MinIO chart repo), but:
targetRevisionto a specific chart version (no floating).Copilot must fetch chart values/docs and confirm parameter names.
3.2 Helm values: NFS persistence + secret wiring
In
argocd/minio/minio.yml, set:mode: standalone(or equivalent)persistence.enabled: truepersistence.storageClass: <YOUR_NFS_STORAGECLASS>service.type: ClusterIPingress.enabled: falseexistingSecret: minio-credentials(this is the Secret produced by the OnePasswordItem)Important
Copilot must confirm the exact key names the chart expects inside that Secret (often rootUser/rootPassword or accesskey/secretkey style). If the chart expects different keys, either:
No guessing. Copilot must validate against the chart’s
values.yaml.4) Provisioning: bucket + Loki user
We want MinIO to:
lokilokilokibucketCopilot requirements
lokiAccessKey/lokiSecretKeyfrom the Secret produced by the OnePasswordItem, not hardcoded.Again: verify chart structure; don’t invent YAML.
5) Argo CD application manifests
5.1 OnePasswordItem should land first
You have two acceptable patterns. Copilot should use whichever matches your repo:
Pattern A: same Argo Application, split via sync-waves
OnePasswordItemin the same folder and ensure it applies before Helm render depends on the Secret.argocd.argoproj.io/sync-waveannotations on the CR manifest (or Kustomize ordering if you use it).Pattern B: separate Argo Application
minio-secretsApplication (wave 10)minioApplication (wave 20)This is often cleaner/less fragile.
Copilot should search the repo for how you already deploy 1Password items and follow that exact pattern.
5.2 MinIO Argo Application skeleton
Create
argocd/minio/minio.ymlsimilar to: