carvel-dev / carvel-dev/kapp-controller
Seeking clarification on PackageInstall values.
- Dominant language
- Go
- Stars
- 323
- Forks
- 127
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 6
Description
Hi,
I'm seeking clarification on the way to pass a `PackageInstall` customized values.
I have a package that has a 2-step template.
1. Templates a helm chart
2. Uses ytt for patching and adding additional templates
I am trying to figure out how I can have _one_ set of values held in a Secret where I can provide configuration options to both helm and ytt.
I believe the issue I am hitting is described in this below note from the [docs](https://carvel.dev/kapp-controller/docs/develop/packaging/#package-install), but wanting to clarify my understanding and determine if there are any known workarounds or suggestions how I might proceed?
>
> Note: Values will only be included in the first templating step of the package, though we intend to improve this experience in later releases.
>
## Example
The goal with this example is to get the `namespace` value passed to both the helm chart during templating and also the ytt templating as if you were either using the `--data-values-file` flag to ytt or using the `valuesFrom` part of the App spec.
When testing, I found that the helm template correctly uses the updated value but ytt does not continuing to use the default.
- tree
```bash
carvel/packages/test.mydomain/
├── artifacts
│ └── packages
│ └── test.mydomain
│ ├── metadata.yml
│ └── package.yml
├── build-values.yml
├── config
│ └── ytt
│ ├── defaults.yaml
│ ├── overlays
│ └── example-overlay.yaml
│ ├── schema.yaml
│ └── templates
│ └── ConfigMap.yaml
├── examples
│ ├── PackageInstall.yaml
│ ├── PackageRepository.yaml
│ └── Secret.yaml
├── package-build.yml
├── package-resources.yml
├── tests
├── upstream
│ └── helm
│ └── test
│ ├── Chart.yaml
│ ├── charts
│ ├── templates
│ │ ├── ConfigMap.yaml
│ │ └── Namespace.yaml
│ └── values.yaml
└── vendir.yml
```
- A snippet from an example App spec
```yaml
template:
- helmTemplate:
name: test
path: upstream/helm/test
- ytt:
paths:
- '-'
- config/ytt
```
- Example helm chart default values.yaml
```yaml
namespace: test
```
- An example of the defaults file I'm using for the ytt side in `config/ytt/defaults.yaml`
```yaml
#@data/values
---
namespace: test
```
- Example Secret where I would like to put value overrides
```yaml
---
apiVersion: v1
kind: Secret
metadata:
name: test-values
namespace: carvel
stringData:
values.yaml: |
---
namespace: test-override
```
- Example `PackageInstall`
```yaml
apiVersion: packaging.carvel.dev/v1alpha1
kind: PackageInstall
metadata:
annotations:
kctrl.carvel.dev/local-fetch-0: .
creationTimestamp: null
name: test
namespace: carvel
spec:
packageRef:
refName: test.mydomain
versionSelection:
constraints: 0.0.1
serviceAccountName: kapp-controller-sa
syncPeriod: 5m0s
values:
- secretRef:
name: test-values
```
## Related
- #122
- #129
Contributor guide
Assessment
This issue has not been assessed yet.