Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for secrets for helm v2 #79

Merged
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -107,6 +107,8 @@ invincible-zebu-metrics-server Deployment extensions/v1beta1 apps/v1
lunging-bat-metrics-server Deployment apps/v1 false false
```

In case you have configured helm 2 with `--storage=secret`, you can add the optional `--helm-store secrets`. Default configuration for helm 2 is configmaps.

If you only have access to a certain namespace (helm 3), or if you only want to see information for a single namespace, you can pass the `--namespace` or `-n` flag to restrict the output. Due to the way that helm2 stores configmaps, you will still need access to the tiller namespace if you are using helm 2.

```
Expand Down
10 changes: 9 additions & 1 deletion cmd/root.go
Expand Up @@ -38,6 +38,7 @@ var (
outputFormat string
showAll bool
helmVersion string
helmStore string
ignoreDeprecations bool
ignoreRemovals bool
targetVersion string
Expand All @@ -58,6 +59,7 @@ func init() {
rootCmd.AddCommand(detectHelmCmd)
detectHelmCmd.PersistentFlags().StringVar(&helmVersion, "helm-version", "3", "Helm version in current cluster (2|3)")
detectHelmCmd.PersistentFlags().StringVarP(&namespace, "namespace", "n", "", "Only detect releases in a specific namespace.")
detectHelmCmd.PersistentFlags().StringVar(&helmStore, "helm-store", "configmaps", "Helm storage for v2 (configmaps|secrets)")

rootCmd.AddCommand(listVersionsCmd)
rootCmd.AddCommand(detectCmd)
Expand Down Expand Up @@ -135,7 +137,7 @@ var detectHelmCmd = &cobra.Command{
Short: "detect-helm",
Long: `Detect Kubernetes apiVersions in a helm release (in cluster)`,
Run: func(cmd *cobra.Command, args []string) {
h := helm.NewHelm(helmVersion, namespace)
h := helm.NewHelm(helmVersion, helmStore, namespace)
err := h.FindVersions()
if err != nil {
fmt.Println("Error running helm-detect:", err)
Expand All @@ -158,6 +160,12 @@ var detectHelmCmd = &cobra.Command{
klog.V(5).Infof("retCode: %d", retCode)
os.Exit(retCode)
},
PreRun: func(cmd *cobra.Command, args []string) {
if helmStore != "secrets" && helmStore != "configmaps" && helmVersion == "2" {
fmt.Println("helm-store should be configmaps or secrets")
os.Exit(1)
}
},
}

var detectCmd = &cobra.Command{
Expand Down
19 changes: 18 additions & 1 deletion e2e/tests/02_helm-detect-2.yaml
@@ -1,7 +1,7 @@
version: "2"
name: "Static Code Files (including helm)"
testcases:
- name: install helm 2 configmaps
- name: install helm 2 configmaps and secrets
steps:
- script: |
kubectl create ns helm-system
Expand Down Expand Up @@ -34,6 +34,23 @@ testcases:
- result.code ShouldEqual 0
- result.systemout ShouldContainSubstring "NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "kindled-toucan/kindled-toucan-basic-demo demo1 Deployment apps/v1 false false"

- name: helm2 detect in-cluster show-all wide namespaced confimaps
steps:
- script: pluto detect-helm --helm-version=2 --helm-store configmaps -A -t v1.15.0 -owide -n demo1
assertions:
- result.code ShouldEqual 0
- result.systemout ShouldContainSubstring "NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "kindled-toucan/kindled-toucan-basic-demo demo1 Deployment apps/v1 false false"

- name: helm detect show all wide namespaced secrets
laghoule marked this conversation as resolved.
Show resolved Hide resolved
steps:
- script: pluto detect-helm --helm-version=2 --helm-store secrets -A -t v1.16.0 -owide
assertions:
- result.code ShouldEqual 3
- result.systemout ShouldContainSubstring "NAME NAMESPACE KIND VERSION REPLACEMENT DEPRECATED DEPRECATED IN REMOVED REMOVED IN"
- result.systemout ShouldContainSubstring "invincible-zebu/invincible-zebu-metrics-server default Deployment extensions/v1beta1 apps/v1 true v1.9.0 true v1.16.0"

- name: cleanup
steps:
- script: |
Expand Down
17 changes: 17 additions & 0 deletions e2e/tests/assets/helm2/helm2secrets-deprecated.yaml
@@ -0,0 +1,17 @@
apiVersion: v1
data:
release: SDRzSUFBQUFBQUFDLyt3OFFZd2t5VkhhMnh0akp6YVk0YmpIOFFuM25ObmQ4VmIxenQxNmRXcTBpTG5adFQzeTdWNXJaNzJXdFZyZFpGZEZkNmNucTdJdU02dG4rbVlHZ2N3UC9FQkNGano0SUV2d1FNSUNKQjQ4TFBqeDRnRXYzaUFRRmo5TGZIaWd6S3lxenFycTd1bVoyNzJibGRuSGJIZFZaR1JFWkdSa1JHUkVrMTlrNllTbEVSdHdERDdDUWI3K24xZkkzMTc1N0pYT1gxMTVQRVpJVUVzV2dVSTVRUWxqcW1DQW1FS01HUmRUakVNZ1pEY0ZDa004aElTbHVVWUZVNUdER291Y3h6QkFvQU9Pb0FWd3BuU0JUa0d1V0RvQ1BVWVlDczdGSVV0SEpCSkpRdE80UndqQVFUN0FTSE1Zb1lZZ2tQUVFPbDJhTWRVdEVJUUg3NmlRaWU1a2E0Q2FiblZURWFQcWtQWFBmL2FQZnZUSFAxMzc0bTkvN3g5LytNb2J0VytiWDl4TmxhYWNReVNTaktQR04vN3ArMWZJMzd4Q2ZxRkFHamd1MSsrTXRjNVVyOXNkTVQzT0IyRWtrcTRoU0thb1VRVXNqZklCMVVKMjYrUGV1T0M0em1mZUNyZHVoVnViT3c4SzZldzVhVE1GRkNLZUs0MHlPR1F4QWgyTkpJNE1EaEJEa0toRUxpT0VYTkVSUWt3MURkOXFNTlBya004SmpnbVZCN2xhL3hVUkhqSTkvazJWQ2FrbGphazBSUForalh6K0FOTVU5WmhTUmRQMTF3OUMrNkVCOStpVnlkWjMxMjZGYjRkMzFuOThsZnl5eGlUalZLUHFQbnovOGYyOVVCL3A5VCs3dXByV0hCOERHMEw0aFBJY1ZVZ3pabmhtRVlhUlJLb1JUazh2azE0ZEh3TnlaYWt5clBiZ095S0hNWjBneEV3WlFtSTc1M1ovMS9MTUlnVExCeE1wRElVRVBXWUtKSEtrQ2tPWVNVZ1JNK1NRY1E2cDBIQW81QUdZQmFvTmdEemxxQno3a1VpSGJKUkx0UE9WWEcvM2QwazVyOGkxTXFvaWhnN0pONUFuRUkycDFDRTVQZzRBMHhpQzAxT3kvdWRmSUsvUFZ2Q0RNZklNcFFwMXh0ZS8vNFhqNCs0bVRGalNBNFVhaG95am5tWjROOG1WcHRFWWU3RFpQVDBsQm9yY1A4cG82dmhQYVZKTWpPV1VCVndBTVE1Wml0Q3BxMmRvaG5Rc1FRVVF6Ym1HY01lT2ZtandsVHBpSU4rZm9KU0d1eFBRTWs4anVQTzIvY2lTdlh3NFpFZlFDV2JJU2s0ZG1UdE9yMmcxeHpEbmZBb2Y1cFN6SWNNWWFKWlpCa0x5YlhUWUxidzJjeGhtakE1SE5GY0lTaVFJMzZ3MnRtTjd5SkRIQ3FoRTRDeGgycWlFY0V0d2ZUQzFJcm4zY00vQUdnMVZHVVkzUXJJN3JCYlpJb2xFcWlsTGxaT2VlOGEwVTVDQjJlZUdUbU1WRFBFRnRXZEoySURXcGV4dHZQSmxKZGdTWmlIQVNwSTNlNlg4OHFibG9uZDM5Y1gxNkt3RTRyQ0VqNG85WkFkWHROYWVucHZBVExKVUQ2SHpaUlY4V1hVYTJOeTg1MUczUlo5cmF1aXRyOWs4RTVUSzJBcXEzQm9YQ3VPZ09CMGdQM3VkTFhCbklWZSswTjNuSjhXa0p5QXg0elJDNkh5bEE1MFBPaDluZDVWbXlMS214MVNYeTY3TWR2ZzA5dGhaY2lzb25yTlBTdVVzSVJyN1lKNCtMeE5PMDBLV29xSlJKUEpVRzFaeWhhdlN1KzFHUFZ5MHMrdGc1YkZxQUFFQWpvOHI4cSt6Tk9KNXZNeHdoRGNXb1UxOXBzdE4xWmlnVTN6b3JJUmt6czVaLzdzMTh0WFpVVlU2UVJnSEpjVVNhWXd5S0gwbEtUaUdVNXJ3OWQ5WmE0aEZEbWprQytPQXBYRVBkdHpBUjRJam9Sa3Jka1lQTERUTjlWaEk5cEU5em1jT0FrbFFVK056OVFqWWRlMkJtaXFOU2UvNEdFcHFGNXgzSVp5ZUJoNGZqbjRDYnErcm5oVWh6YkllckliTHdsc0RzSHhFWVNPcUljWGhZd2ZWN1Y0Qk1FYkpOQjAxSUFwZnJjS3lVRW9WaTRFV3dZVGhZUTg2V3ViWU9jODRqSm0reURnYUp5eXRCc3Fjb3hWc0FEUmpYNWNpejFRUG5uYnFqbC9uV1NFWDUxbGJpRXpFcW5PejQxeEI5MzZDY21EZmpWQjNia0xIK0tEbS8wT3FvM0huV1YxNy8yU05mTW5UM2x5UGd4aTVjK09EU0E2Y3B2N1BxMmRvNnNwNjJWTHBkMWthRzBlNHJiRExkTVhiL25CNjJpdDB1MDUrZ1VobE5NS2VkYTREQi9jeXFyS3hHbzl3YUNndU5XU0pwRTB3MGJJZERVUFFFSmJLQjkvRlNCZGE2RWJ2MVV5aEpmVHNwWmwzQkZTQzhCYWtLUXI3dUdscDEzL3ZNK1JYWi9yWnRxRS9XWHRobW5reEcxclh6SmRTMWVZWkl6czBnRTZuWVlMc1YvUEdHS0xxaXpWSDlXOWRwYW4ybnBVcnJqeWJWYjBkb2E0K0cvTlZmYkUyakpnVHZMM29tY3J1cHk3ZXRhek9JUitQTktaR0Z4UXBxZVlzbXM3anlYR0VVUzZabmxvd1Z0QmFBbHFscllBbG16Q09JNHlEYzJsSGpmWEErbGlPdTdtK3hvL1h5SnV6M2VCd0Y2aUQwaEcwMitJSGE3N2VWOXBkclBMSE1yWXZxeU5nQkduVEYwM1AyWEhqTzRkYWZJY21IRUk0Z1pTbE1hWWFidnRvekhyWXJ6Uk5oYmFHcEpDR2VWdU9ia3pqd1JhQlN4TzlpUWtNbWt4STdXbGhJYTRtUHZPaUpBb2drMEtMU1BBZVBON3BGODgwbFNQVWZZdkFadjhJZ0VLT2tSYnlZb3QzeGtyb2FZWnphVFV2REFoWi85ZFhTYWVwd1NxZ0dhdnI3MTgzSFk1MkVxNXAzR25HSkk2WTBySmgyVzJ5ck5nQTIvM2R4WHVnQUEzclh0ZkxxTytsSmhVeTdhMTRkTSt4VHFzYzJBQWo1NCswQkRlWldTQzNDZ0FzdFVZVjl3NVk5dmk5dlNjbzJYRGFNL0UybG9qNmtnbGpkUit3bENWNTBvT3RXN2RteU1xMzduSE5QUDVCelptdE16ZHpabi95YVRpelB4dWV3M04zVXM4aHIwdnF3UDdvZFhKOW9VNjZPNGNFVSsxVTgzdXYrN28zODFZYVZ1eGVOZXhuN2lTZldUYi9IRXVNVy9pZXg4djV1VG1UT0lrWlp4RlZ0UU91ZkZpY2Y4VmNCVkhlMHBoL3ZFYmZSU2hjUVlDbEUrS1p0MHpFVGpST041dit5ZXoxQ1JUZXlEdE5iSlhETTllUnlrUzg3VGszRldETE8zSmpKVTFIQ0c4ZTRQUW12RGt4S0tCM3Q4N204YkY5YjBKNys5bEJuY0NIdWRCWXA2UkZtdmVnVkphMlNJb3paSWRUcGVyaWE3M3FRY2RiOEhrak8yVE8zSTBaV1VKSDJNODUzOE5Jb3ZhazFIelRGdFhaT01xSXl1bkZRbm0wNU5VMmRSYzBqUTF1eDBMcGg2Z1BoVHdJMFkvSjdCNmZ2U3pPL1JaZHhjMEtTbSs3TktiQUl5M3BUZ1hYMU5qcm9ETU8xeHU2M2hoMEEwSzQ0WG5oeS9WK0p1UzZWS3JYeFZyV0ZjWStNblpDS0thRnREcmRlcTNwcU5LamhsYjBiWVJhTXpwdVRGYTk5RWswc2l0dWxNSDdGMEIzSWRIbWJSQkVLSFVRTTNtM3E1T3M5WmFMa1JaS3h5amJJNTAvRjVoNDVPNDd0MisvWFFOb2F6R1ZJMVduMktDcDYrM0NGYWdGUitYWVNsdGNxTk9pd1MxYUdRR1YvemliWUlwSzlhVVlZSzgxY1VOemF0RHQrRzNyclRxVkVtbk1Wc2RlQjE4RmZTUC9zZ1J6QVhrMjBqTFpZZllISHVrelVUZmd6NTVnSW5pZTRBTmpPaG9yNkZhb3FYaUpnZXhUUGU1QlF5bGJSNURkMkU4OC9QV1pmZXA5QW0rMXdXb0tsNG9ZOTJxZXhnSlorSUJ0UVhoMmhRNkhMRFhSeXpKc0pkQlNURnB3bFBYVGRTNHlEMjRwUHJjNlhoS3V2U2lZWkhwNmo4a2VIQzkwQnJ5VlVQV0RhTTRDM0psM1VxMy83bFZ5YzZITFhCeEJ4YjJrYzV2LytaV1Y3eGVYcGNYS01PRjhQdldTY09HbDg2NXJrY3YvcnBIMTJUSmtjUkUrLy90YTI3Kzh4NVRNTTZOajcrYnhDSFYxNkRkRjd2S3RqWENtMzBaUVc0T1hNTjE0Z1ZCc2xjaXlDbjlXV0lLRXBkc1R5cmd0UmJNeitFOXFEc1ZxdzB2bG1IMDdpd0o2OUsyVU5taW9QVHViaWprbzZuUTgxMERRMC8vMS83cGFVMytWRmJibTZ0bDNENnRvL0Y1eGVqb1hibzdOdWRpTlFxa2dsSE54aVBFT3plaUFjYVpaZWFWemJmTWFBUmdxbDUxeENwK2JsWGlVcDl0cU81MFM4S2F1RW5QU3ZQMldRcmxnaU1MM1dKb2ZMWHFiWnhuSEJGTk51WDhqMHdMMERxR1NWQk11OUhmdlZaU1k3N3Y5bmRyM2VqaFJqQ2tkeFFEc1ZmdFdvU0JIUGJqejFhKytmY2VQT3RiL2NNMi9acFNDWXpCd3VUeTM2ajk5empuRDUzUHpiUXMxY2oyZWxXajh6Rjk0MTVLSVZRSXRvQmtyL0FjekdsUE5JanU4bE53bFRSNyt4NnQrUWx1ajB1NXZVT1RDblhMKy9hdHp2WnEraUQ5V2VqQXdNNzJjeDI4cjg5UVpJMDlDTmU2T2hUam85TUFLVWVWUmhFcFZOck9lZFNnZDRNUHlNcm9JN2dlNW1nN0VFZkZqYlhoNnJUdGdhVmVOcjdrYUhCUGtsamQ0UVZSOHVIWm9LN3MvZkQrQXNoai8rQmhXcUhCcjVBd2FONERkU1ZVck9aS1lRZkExV0pCZ3VHYlRtRXBUcWN1MHdrT2NvQ1NrODVldmtiOTR6V3d2US9VRzdHVVlzU0ZEQllkajFHT1U4T2pkN1oxWjNPbVZ1anNqR0J2NTJVK1ZFWjZkaVQwWVVxNlFrUHJ1V0RRVmJXeTlWU2Jic0lYcmZnVmpBNGNyWUF3dDZPN1FWclFyMUxiQXRURGpURmxrTjRFV3RjMEtScGlhMkFsanYzYS9XSmRLbzh1dFJjanNrckxKR25NMHpiOWhySlhtdDNpMUpGdDAzeEU1NkduR0lzcjVGQTZwNFdyTUZCVE85cGNNWDFPUmwyWC84eXYrcDJWemdCWVdhVUpUT3JLRjNNM2lmRmZnT3hRU01CeUJOYmxtZzNESVJBdzAxMEpGbEZ1cE9FenpHd1RDNWxvUi84QnVpNm0rQ3p4eFdMWEZHRmpxSC9tUWlCanJJanEwSXlSK21EUGJpakNUa01GditNOFZBdVVhWldyV1hVeFFjanFGMUdFMEhCbW1NeEVyb3g0V2J5bEtsSkNuWlhPSDJmMTV5bXlac09XN3NZTmgyeUFBUEtKSnh2R21JOFZLeHBMbU1Ic2tmUnZOdWhSa2dFamgvamYzQ0pURVY1dkkyU0YzSTFFa0ZYc3dpcVJ4TUVaQ2pEaCtNTE5remZDWkp2R2Qyd1JBMDFFUEpyWmR4bXhWTDlHNE8zd29kRitpd2xRWGsvblphWGo2akd4QUFNVmQrOVE5Ti9hWkVHdjFIQUFXVXJJc0QyZGFwNUFQQThWR0tjWVFvZFJzYU9XbmJvTENNa2wzN2lZbHN1RXlrUWFVb3c3S08rWkFjMFdJVnk5NWZFcElMYWRqbi9pWkZFTTlxWkkwOXZYczRtZUxrRVlHMmNGWFZ5aHVRUDAreEQ3YkFHdWZxcjRmLzRTQ1VVNGxUVFVpcUdpTWNjNUxGWXdrTTQ0S0J4ckhnVWl0U29ZR0Y4QWVJaVJDSWxBOWs5cE1WRVlYWWhHcHJxYnFRSFZ0dFNtenBYTkZDVjIzbWpRT1pyTUc1WXdCaldPUkJtYkNycG13QUVFWlVwNk5hVmlmcVJxVmliZ0gxNjZaRVhQdVVad3pHcGdGcUNZcUpPcW43Z29OcWc1ZzVUVFA4ZTNuQkZGSEhzdmRHcHp4Njk1UGVWbFo0TSt5ZkFMM3BlZStsRjhkL2RhanJqeEpRbG9aWkxNT1g4Y2ljNW81SXNkSXVSNS9STXJjdForSU5sSTFpTC94K0hGL3o5WkdNTTBvdjRlY21uMGwwbGoxNEsxYlJnV2I2ZVFYTnRXY0xMQ05KZnRsVEhqZm1IMnJ1YVZGQW9nYVlTWkFMRVhXZzZjZHlya3RTeTdYNDVFUSttdU1ZM0cvWHdzdkN5ZC82OWF0VzF2bHM0Y2lOVVBteEtFRkhQRnFYR2hqMTFXK3EvdXlBYkFkMjJZd2hjVWJZOGF0WFdvZk80ZVFaK2F3MlMvYjhzcmlVNVlPeGI1RDE5Z0dCVUJKMGF3c3ZBWHFGSy96b041clNjcDFjemNZcnB5cXFJN1k3VnZEMHN5UXVCUDBUQU1nY3hNRFdUdG14bmFyVnIwZ2l3ZmQ5aUhUU0JhMUV6ZGs4OTllSVQ4ZkdyZWFqVkloY2YxZlh0bUFQdFhtVkxWaWRZK05VNWZDSUdmY3hMcVEwZWlBanRCYXNjZm1iRkI1Wm05MFFJMlJjeGh4TVhCSkhKYU9iaG9mZ21vMlFhdmgzbk56TEc5QWlpUG4wMXpQSkE3WkVjYnVHUDdTalJDTXJvRkk3VWhERW1Rb2diTVVRL0wrdHgvZWY3Ukh3bnQ3SCt4cElaRnN3STVJRXBIQ2s1MDlpSmxVSkJ3eDNiVi9IUmNrSEh3a3UvWnYrV0E4NnBvLzVWYzFTYnN6UkFNYUhlU1piVTFVWkROVWh4blpEQWYwZ0d5R09zbkk1bStSRFhoQ0pSTzVndDE3OXhVSk15bE1BRXBDRmlQdE9qZ3B2a3MyZi9nYStkeWorOXYzSHR3UGszajlCNjl0Tkc4ZnlkTjZaKzZ6NnhjN1JHOWNxS1VYSHBVUHkzNVBLckhxRTR0RWtva1VVNjJBc3dPYzdTVXRzbjBvT3pPZmZtUG1XL1pGRE51RmIrbnpzckptei94VWN4b0ZwWitLTjR4TzJrL1dVZVdDeGlxRXg2THlaQkVHMUpDZFp5STFjc2lWRmtuQmxmVk9ISzE5S1JJVHB1UUt0bU9hYVpUT1VaNHJkck05dXZhMTZnNjRHSFFUYWc5ZnBjMG02bVlWcm9BNlhEZENRamFNR3JudGFWa2lwRThsVGRCTWRRTDNVRVdTV1F0Z3Y5bnVKUklFQVp4QTlaZnNlL21wZlRnQkY0alo3RWpnMkt6blFlQUU5bzJ4Mmk5R3ptSTNiN1R4Kzh2am9jaHJsdnZYakxlV1k1L3N6NzE4TVdoMmg4VWtOOHVRaTBLS2g2MWVzeGt0YzNxeERLSzlkbk5hMFlBYU5tTzdSZFF3VmRGeXpuRFBrTGRQOWxzRnFZWXdyNWx1aFZCdnh1ZWNlZ2xQN3Mxd3h4ZDJzN3pBeXRrODg2SURBMyt1K0tEQ3ErbG9obERUa2NGa2c0YTNLcEJaNkRDRE5NOUtCVG1CZlQraUtNZDVJVVZqWE9HTm1ZRlBueGxCeTVFRjJYRzVGbXZFZ2NwUm5saTdVb0pWWHI2RjdYK3Ird0FUdzN0bHRFelVaUk5vdGp0VGhXYms4ZWsrMmZmY2Z6UDJQYWEwc1hiR1RRVWpKZGNkV2tBaFhDL0NOK1YzZ1A3RzNhM3d6bzJLR0QvR01EZ2ZHbHlGeDFIRWxrQ1ZDWU1NRXhVbFpkeFJEZkV1Z2gxRUdZdFlpRHdaWUdHWWl5cTBFOWpmMmlmN0xaZmFnRzliQjIxcWVNbWttQmp6N3JMdHpxZDJUSTdkTGkvNThMM21wVGptanE3NXgyNEpDN1dyaWk4TUdsdndZT0taaWN0WVRXbkN5WDRWVTlrMXFaeTFBWnBneVBYVzJnaTlsRXc5NkxMRWVpSFcwcEhOU01VTU51ZFErUUlpODhiQWR6cDJEWHhudk01WDlXNHhZM1A2QWVaUVMrTzRGS2xuTGl5OTliNkZ4ZUx4Zm9TaGNtc1hvREltM0RlczFxUnJBWGlVQ1dYQmI5OSsyNE0zbnFtQmZ6ek5iTDZveEt0RmFkbFBZTDl5WE4zcUxMb2o5dXdtblhjVjdGdTdzeTRxRGE2aWFoeG10NFlzVlpxbUVhcGZMNXpTdU1qSFNXdjFVekYvMmdYVDFmeGdPeUU5c2hQbTZYT1lzcEZmMkFjd3VoSEhabG1aQWFYY3kxTkR1ZGMyLy9RSythV0lkU01XZU1xMi92dFhObUJuMSthYzhqUTFSNXBJNGV2ZnZIOFREc2NzR2dQbFJtR25vTVlzVTYzMGxYWFFiY2M3MmJBLzdzRlpwSlZCWVZScmRnQldOalpzcGtETHhKOExLanByNU9yeEtkbjg3NjhZZjRWc3dKNGQxYXluNjU2bjl1T0NCUjJOM3hVS1dzVnhyVXVQT2VWenhlVkdnMGozZXpuMXE0ekdkSTFyak1lTWM1U3J5dVFjSGVZdnBJRzg2VENzMGlqKzRvWDMvNjNlODFxOVYxU3B0dUs4aUs3Wnk3am5Mbit2NjZwV1lYN24vZ3ZwWlZxK2tNK2hHZjhUV1BkTDFVNS81czZvQ1MrZXhmd1hPRU5mcUdaYzVwMyszRmY4REM0dmp3YTB5cG1lYjdYU2N0b3ZYS0IwYVZYaWt5Z3grZ1Fzd3J6ZkRTRG4vTldBeTdqUjUzWGxMKzJ0bjdXTGZJd20ramw4TFNHN2ViTnpNVlBlNkI0bEg3OTM5REt1NS9rNlB1ZDJPUzJaMEwvY3YxQUQ1NEsycXFVOHp2b1M1N2ZncmJENzUvZklyZHlnZHE1MGNNL1ZpU3h0VDZ0VmpWek9aclJQb25Pc2RpM3ZUZDIrb0svVDFaNWszcVc5Si84RjEvZXJkYUJkSmlybk43S3QzSmQyZG0yQ3A0eXRLb1haUDF1djBIZ1dHT3kxWjJkVU1YaUFjK29aR20rYmxRMk4xMzZOdy9OdW9WdlExcmFrUjIxcDA5blRaeGRzSVR2bnNkZjhsWmhQN2VkZlBzbERyL1VETGhkekRUL0YzMmg1NjRldmtvMHpnZ1NOU3E5ZjdZdjRqVnNMMVdCQitYdm5INjZlby94OUJUb3VqZHQ2V1l2V3o4ai8zTDc5OXB5U2RPZERMS3BBMzd6eXVYZXV2UHR6aGJiK1h3QUFBUC8vOW5renR2aGZBQUE9Cg==
kind: Secret
metadata:
creationTimestamp: "2020-04-02T21:24:40Z"
labels:
MODIFIED_AT: "1585862680"
NAME: invincible-zebu
OWNER: TILLER
STATUS: DEPLOYED
VERSION: "1"
name: invincible-zebu.v1
namespace: helm-system
resourceVersion: "265249"
selfLink: /api/v1/namespaces/helm-system/configmaps/invincible-zebu.v1
uid: 362f70c7-91dc-4478-88eb-08a7b368bfd0
19 changes: 15 additions & 4 deletions pkg/helm/helm.go
Expand Up @@ -33,6 +33,7 @@ type Helm struct {
Version string
Kube *kube
Namespace string
Store string
}

// Release represents a single helm release
Expand All @@ -55,11 +56,12 @@ type ChartMeta struct {
}

// NewHelm returns a basic helm struct with the version of helm requested
func NewHelm(version string, namespace string) *Helm {
func NewHelm(version, store, namespace string) *Helm {
return &Helm{
Version: version,
Kube: getConfigInstance(),
Namespace: namespace,
Store: store,
}
}

Expand All @@ -78,13 +80,22 @@ func (h *Helm) FindVersions() error {
return err
}

// getReleasesVersionTwo retrieves helm 2 releases from ConfigMaps
// getReleasesVersionTwo retrieves helm 2 releases from ConfigMaps or Secrets
func (h *Helm) getReleasesVersionTwo() error {
var helmClient *helmstoragev2.Storage
if h.Version != "2" {
return fmt.Errorf("helm 2 function called without helm 2 version set")
}
hcm := driverv2.NewConfigMaps(h.Kube.Client.CoreV1().ConfigMaps(""))
helmClient := helmstoragev2.Init(hcm)
switch h.Store {
case "secrets":
hs := driverv2.NewSecrets(h.Kube.Client.CoreV1().Secrets(h.Namespace))
helmClient = helmstoragev2.Init(hs)
case "configmaps":
hcm := driverv2.NewConfigMaps(h.Kube.Client.CoreV1().ConfigMaps(""))
helmClient = helmstoragev2.Init(hcm)
default:
return fmt.Errorf("helm-store should be configmap or secrets")
}
list, err := helmClient.ListReleases()
if err != nil {
return err
Expand Down