Replies: 19 comments 35 replies
-
Graph of Kubernetes structures dependencies// todo: add url Components
|
Beta Was this translation helpful? Give feedback.
-
Repositories vs Registries?V12 different types. repositories:
bitnami: https://charts.bitnami.com/bitnami
registries:
ghcr.io: {}V2Merge Repositories & Repositories into one spec. repositories:
bitnami: https://charts.bitnami.com/bitnami
ghcr.io: oci://ghcr.io |
Beta Was this translation helpful? Give feedback.
-
Tags vs Labels?Labels! releases:
app@prod:
labels:
env: prod
db@prod:
labels:
env: prod
app@stage:
labels:
env: stage
db@stage:
labels:
env: stage
Label Logic!!! Looking for solutions glob:
RE
expressions, = , !=, >, <, ?
|
Beta Was this translation helpful? Give feedback.
-
ValuesV1Non-map. values:
- s3://mybucket/config/file.json
- ../path/to/values.json
- src: git+https://github.com/hairyhenderson/gomplate//docs-src/content/functions/values.yml
alias: gitfileV2URL is a key. values:
"https://raw.githubusercontent.com/my.store.yml":
alias: my-store
render: sopsV3Alias is a key. values:
my:
src: https://raw.githubusercontent.com/my.yml
render: sopsThe third way looks good. |
Beta Was this translation helpful? Give feedback.
-
StoreFilesreleases:
app:
storefiles:
my: # <--- this is an alias
src: https://raw.githubusercontent.com/my.store.yml
render: sops
values:
a: # <--- this is an alias
src: a.values.yml
render: copy
b: # <--- this is an alias
src: b.values.yml
render: copyHow to call the data from the store?
podLabels:
name: (ds "store/my").blaGet any stores by datasource by How to call the data from another value?!!! You can face a problem with cyclic dependencies.
podLabels:
name: (ds "values/a").blaGet any values by datasource by |
Beta Was this translation helpful? Give feedback.
-
DefaultsDefaults can be passed by Any fields in this section can be passed by ENVIRONMENT VARIABLES. Example
defaults:
gomplate:
leftDelim: '[['
rightDelim: ']]'
It's equal to
defaults:
gomplate:
leftDelim: '[[' |
Beta Was this translation helpful? Give feedback.
-
Gomplate vs Sprig?Gomplate! Sprig must die. |
Beta Was this translation helpful? Give feedback.
-
Slice or Map?Map! releases:
- name: foo
- name: barreleases:
foo:
bar:It's prettier for yaml merge and finding the uniqname problems. |
Beta Was this translation helpful? Give feedback.
-
Magic UniqnameUniqname is V1releases:
nginx@example@custom-context:
version: 0.3.0
nginx@hello: # = nginx@hello@my-shell-kube-context
version: 0.1.0
nginx: # = nginx@default@my-shell-kube-context
version: 0.2.0
Issues:
V2If you escalate to a new scope, you should also provide a new context for the uniqname. Uniqname is only a namereleases:
nginx: {} # ok
redis: {} # okUniqname escalates to namespaceIf one of the releases has a namespace, it means everyone should have a namespace. releases:
nginx@prod: {} # prod is a namespace
redis@stage: {} # stage is a namespace
my: {} # err invalid, namespace not defined.Uniqname escalates to kubecontextIf one of the releases has a kubecontext, it means everyone should have a kubecontext. releases:
nginx@default@stage: {} # stage is a kubecontext
nginx@default@prod : {} # prod is a kubecontext
my: {} # err invalid, namespace and kubecontext not defined.
my@default: {} # err invalid, namespace not defined. |
Beta Was this translation helpful? Give feedback.
-
Deploy manifests step-by-stepOrder by weightapiVersion: v1
kind: ConfigMap
metadata:
name: order-by-weight
annotations:
"helmwave.app/weight": "1"flowchart LR
subgraph weight_0
configmap_A
configmap_B
end
weight_0 --> weight_1
subgraph weight_1
deployment_A
deployment_B
end
Issues
Order by NeedsapiVersion: v1
kind: Deployment
metadata:
name: order-by-needs
annotations:
"helmwave.app/needs": "configMap/order-by-weight,<$kind>/<$name>"flowchart LR
configmap_A --> deployment_A
configmap_B --> deployment_B
Issues
|
Beta Was this translation helpful? Give feedback.
-
Levels of abstractionflowchart TD
configmap_A & deployment_A & service_A & ingress_A --> helm_chart_A
configmap_B & deployment_B & service_B & ingress_B --> helm_chart_B
helm_chart_A --> release_A1 & release_A2 --> helmwave
helm_chart_B --> release_B1 & release_B2 --> helmwave
|
Beta Was this translation helpful? Give feedback.
-
Deploy releases step-by-stepStrict needsreleases:
app:
needs:
namespace:
prod: {}
name:
db: {}
labels:
app: dbIssues
Smart needsreleases:
app:
needs:
my-rule-name:
- namespace = "prod" and name = "db" and label.app = "db"Issues
|
Beta Was this translation helpful? Give feedback.
-
Client-Side Apply (CSA) vs Server-Side Apply (SSA)Server-Side Apply! |
Beta Was this translation helpful? Give feedback.
-
How to choose a render?V1Create an additional field where users can set a render. files:
my:
src:
url: https://raw.githubusercontent.com/my.yml
render: sopsV2KISS, it's the users' responsibility. Users can use Overriding MIME Types
files:
only-copy-file:
src: https://raw.githubusercontent.com/my.yml?type=text/plain
render-and-copy:
src: https://raw.githubusercontent.com/my.yml
sops-and-copy:
src: https://raw.githubusercontent.com/my.yml?type=text/sops # create custom MIME types for specific usage.V3Use Headers to pass options files:
only-copy-file:
src:
url: https://raw.githubusercontent.com/my.yml
header:
x-bla-type: text/plain # create custom header
render-and-copy:
src:
url: https://raw.githubusercontent.com/my.yml
sops-and-copy:
src:
url: https://raw.githubusercontent.com/my.yml
header:
x-bla-type: text/sops # create custom header with custom valuesV4Define options by extensions? If a file extension is If a file extension is The default behavior is just to copy. files:
only-copy-file:
src: https://raw.githubusercontent.com/my.yml
render-and-copy:
src: https://raw.githubusercontent.com/my.yml.tpl
sops-and-copy:
src: https://raw.githubusercontent.com/my.sops.ymlV5like V4, but extensions defined in aliases. files:
my.yml: # <-- just copy
src: https://raw.githubusercontent.com/my.txt
my.yml.tpl: # <-- render and copy
src: https://raw.githubusercontent.com/my.txt
my.yml.sops: # <-- sops and copy
src: https://raw.githubusercontent.com/my.txtThe easiest way to understand is V1 or V4. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Version pinning ?Nice suggestions, but I think we miss a very important feature: version pinning. Its a bad practice to always take the latest version of a chart, its safer to update charts manually. Or have a system where only patch versions are update automatically. Helm and Helmfile tool are supporting this https://helm.sh/docs/chart_best_practices/dependencies/#versions . charts.lock.yaml always get version like this in helmwave.yml.tml if I want to programatilly check for available updates, I need to run a set of commands (I put it in a Gitlab CI job). Providing an empty chart.lock.yaml makes helmwave create a planfile with latest version of charts. as you can see its very home-made, it would be amazing to integrate such feature into helmwave |
Beta Was this translation helpful? Give feedback.
-
PlandirV1.helmwave/
Deploy with kubectlRun the pull modelV2.helmwave/
|
Beta Was this translation helpful? Give feedback.
-
helmwave.yml.tplSelf-render configuration. V1Left 2 steps for render. It's current behavior. helmwave.yml.tpl -- helmwave yml --> helmwave.yml V2Only 1 file! helmwave.yml can contain templating. For example werf.yml, (Pulumi.yaml)[https://www.pulumi.com/blog/pulumi-yaml/] You will get a template error in |
Beta Was this translation helpful? Give feedback.
-
Plan behaviorV1The current concept is that a plan is a subject on which you can perform actions. Such as deploy a plan, delete a plan, and rollback a plan. It means that if you delete the release from the plan. It won't delete the release. For example, you need to uninstall the release FooBar flowchart LR
subgraph Plan
release_A
release_B
end
generate((generate)) --> Plan --> up((up)) & down((down)) & rollback((rollback))
V2Plan it's what we want to see in a k8s cluster. It means a plan is a list of actions for a deployer. releases:
a:
plan: uninstall
b:
plan: install
c:
plan: rollbackThus, inconsistency of the plan may occur. When the command flowchart LR
up((up))
down((down))
rollback((rollback))
subgraph Plan
release_A --> down
release_B --> up
release_C --> rollback
end
generate((generate)) --> Plan --> apply((apply))
V3It's like V1. Set the option behavior for helmwave cli.
Issues
V4is coming... |
Beta Was this translation helpful? Give feedback.


Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
helmwave.yml
It's not a final! Just the current developed version.
Beta Was this translation helpful? Give feedback.
All reactions