carvel-dev / carvel-dev/kapp-controller

Seeking clarification on PackageInstall values.

Open
#1,461 2 comments 0 reactions 0 assignees View on GitHub
discussion
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.