carvel-dev / carvel-dev/kbld

kbld inspect should have an output option for lock file

Open
#95 5 comments 0 reactions 0 assignees View on GitHub
carvel accepted enhancement
Dominant language
Go
Stars
329
Forks
52
PR merge metrics
No merged PRs in 30d

Description

**Describe the problem/challenge you have**
I am bringing in new capabilities, for example from a `helm template` call, and I want to quickly and efficiently build a kbld configuration file that I know encompasses the images outlined in that template.

```
$ helm template harbor bitnami/harbor | kbld inspect -f -
Images

Image docker.io/bitnami/chartmuseum:0.12.0-debian-10-r261
Metadata -
Resource deployment/harbor-chartmuseum (apps/v1) cluster

... [removed for brevity]

Image docker.io/bitnami/redis:6.0.9-debian-10-r66
Metadata -
Resource statefulset/harbor-redis-master (apps/v1) namespace: default

14 images

Succeeded
```

This output, while very helpful, requires a fair bit of massaging to get into a kbld config format. There is a JSON output, but even that output is a far cry from kbld's config format.

**Describe the solution you'd like**
Something along these lines:

```
$ helm template harbor bitnami/harbor | kbld inspect -f - -o kbld
apiVersion: kbld.k14s.io/v1alpha1
kind: Config
minimumRequiredVersion: 0.24.0
overrides:
- image: docker.io/bitnami/chartmuseum:0.12.0-debian-10-r261
- image: docker.io/bitnami/harbor-adapter-clair:2.1.2-debian-10-r34
- image: docker.io/bitnami/harbor-adapter-trivy:2.1.2-debian-10-r37
- image: docker.io/bitnami/harbor-clair:2.1.2-debian-10-r33
- image: docker.io/bitnami/harbor-core:2.1.2-debian-10-r30
- image: docker.io/bitnami/harbor-jobservice:2.1.2-debian-10-r31
- image: docker.io/bitnami/harbor-notary-server:2.1.2-debian-10-r30
- image: docker.io/bitnami/harbor-notary-signer:2.1.2-debian-10-r31
- image: docker.io/bitnami/harbor-portal:2.1.3-debian-10-r0
- image: docker.io/bitnami/harbor-registry:2.1.2-debian-10-r31
- image: docker.io/bitnami/harbor-registryctl:2.1.2-debian-10-r31
- image: docker.io/bitnami/nginx:1.19.6-debian-10-r25
- image: docker.io/bitnami/postgresql:11.10.0-debian-10-r52
- image: docker.io/bitnami/redis:6.0.9-debian-10-r66
```

(I used `helm template harbor bitnami/harbor | kbld inspect -f - --json | jq -r '.Tables[0].Rows[].image'` to get the list of images)

**This would also need to accept a kbld config as input, since some helm charts or similar manifests hide images in places that need to be added to the `searchRules`**

**Anything else you would like to add:**

For super bonus points, and possibly outside the scope of this request, allow something to keep the original `helm template` in the output as well, so a `--preserve-output ` option or similar:

```
$ helm template harbor bitnami/harbor | kbld inspect -f - --preserve-output -o kbld
---
apiVersion: kbld.k14s.io/v1alpha1
kind: Config
minimumRequiredVersion: 0.24.0
overrides:
- image: docker.io/bitnami/chartmuseum:0.12.0-debian-10-r261
- image: docker.io/bitnami/harbor-adapter-clair:2.1.2-debian-10-r34
- image: docker.io/bitnami/harbor-adapter-trivy:2.1.2-debian-10-r37
- image: docker.io/bitnami/harbor-clair:2.1.2-debian-10-r33
- image: docker.io/bitnami/harbor-core:2.1.2-debian-10-r30
- image: docker.io/bitnami/harbor-jobservice:2.1.2-debian-10-r31
- image: docker.io/bitnami/harbor-notary-server:2.1.2-debian-10-r30
- image: docker.io/bitnami/harbor-notary-signer:2.1.2-debian-10-r31
- image: docker.io/bitnami/harbor-portal:2.1.3-debian-10-r0
- image: docker.io/bitnami/harbor-registry:2.1.2-debian-10-r31
- image: docker.io/bitnami/harbor-registryctl:2.1.2-debian-10-r31
- image: docker.io/bitnami/nginx:1.19.6-debian-10-r25
- image: docker.io/bitnami/postgresql:11.10.0-debian-10-r52
- image: docker.io/bitnami/redis:6.0.9-debian-10-r66
---
# Source: harbor/charts/postgresql/templates/secrets.yaml
apiVersion: v1
kind: Secret
metadata:
name: harbor-postgresql
labels:
app.kubernetes.io/name: postgresql
helm.sh/chart: postgresql-10.2.1
app.kubernetes.io/instance: harbor
app.kubernetes.io/managed-by: Helm
type: Opaque
data:
postgresql-postgres-password: "cEhlTzU4RFFRbQ=="
postgresql-password: "bm90LXNlY3VyZS1kYXRhYmFzZS1wYXNzd29yZA=="
---
# Source: harbor/templates/chartmuseum/chartmuseum-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: harbor-chartmuseum-secret
labels:
app.kubernetes.io/name: harbor
helm.sh/chart: harbor-9.3.1
app.kubernetes.io/instance: harbor
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/component: chartmuseum
type: Opaque
data:
CACHE_REDIS_PASSWORD: ""
---
... [rest removed]
```

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.