Skip to content

Repository files navigation

One chart to rule them all

A generic Helm chart for your application deployments.

Because no-one can remember the Kubernetes yaml syntax.

Getting started

OneChart is a generic Helm Chart for web applications. The idea is that most Kubernetes manifest look alike, only very few parts actually change.

Add the Onechart Helm repository:

helm repo add onechart https://unite-as.github.io/onechart/

Set your image name and version, the boilerplate is generated.

helm template my-release onechart/onechart \
--set image.repository=nginx \
--set image.tag=1.19.3

The example below deploys your application image, sets environment variables and configures the Kubernetes Ingress domain name:

helm repo add onechart https://unite-as.github.io/onechart/
helm template my-release onechart/onechart -f values.yaml
# values.yaml
image:
repository: my-app
tag: fd803fc
vars:
VAR_1: "value 1"
VAR_2: "value 2"
ingress:
name: my-app-public
annotations:
kubernetes.io/ingress.class: nginx
host: my-app.mycompany.com

When you need multiple Ingress resources for the same host (for example keeping /metrics private), use ingresses with explicit name values so each resource is unique.

For rollout blue/green preview traffic, OneChart also creates a preview ingress when rollout.enabled=true and ingress.host is set. You can make that preview ingress private (Tailscale) instead of public (Kong):

rollout:
enabled: trueblueGreen:
previewIngress:
private: true

Gateway API support (HTTPRoute)

OneChart can render HTTPRoute resources (Gateway API) as an opt-in feature.

  • Set gatewayApi.enabled=true to enable it.
  • Route input can be declared directly via gatewayApi.route / gatewayApi.routes.
  • If those are omitted, ingress / ingresses are reused as fallback route input.
  • Parent Gateway references are prefilled for platform-managed Gateways.
  • HTTPS redirects are handled by Kong route annotations on the main HTTPRoute (for example konghq.com/https-redirect-status-code: "301").
  • Ingress is not disabled automatically: if both ingress and gatewayApi.enabled are set, both resources are rendered.
  • Set ingress.resourcesEnabled=false for Gateway-only mode while still reusing ingress host/path values as HTTPRoute input.
  • ingress.enabled is not used; use ingress.resourcesEnabled explicitly.
gatewayApi:
enabled: trueroute:
host: my-app.mycompany.compath: /pathType: PrefixparentRefs:
- name: edge-sharednamespace: kongsectionName: httpsport: 443ingress:
resourcesEnabled: false # optional: Gateway-only mode

pathType mapping from Ingress-style values to HTTPRoute:

  • Prefix -> PathPrefix
  • Exact -> Exact
  • RegularExpression -> RegularExpression

Alternative: using an OCI repository

You can also template and install onechart from an OCI repository as follows:

Check the generated Kubernetes yaml:

helm template my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Deploy with Helm:

helm install my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Contribution Guidelines

Below are some guidelines and best practices for contributing to this repository:

Issues

If you are running a fork of OneChart and would like to upstream a feature, please open a pull request for it.

New Features

If you are planning to add a new feature to OneChart, please open an issue for it first. Helm charts are prone to having too many features, and OneChart want to keep the supported use-cases in-check. Proposed features have to be generally applicable, targeting newcomers to the Kubernetes ecosystem.

Pull Request Process

  • Fork the repository.
  • Create a new branch and make your changes.
  • Open a pull request with detailed commit message and reference issue number if applicable.
  • A maintainer will review your pull request, and help you throughout the process.

Development

Development of OneChart does not differ from developing a regular Helm chart.

The source for OneChart is under charts/onechart where you can locate the Chart.yaml, values.yaml and the templates.

We write unit tests for our helm charts. Pull requests are only accepted with proper test coverage.

The tests are located under charts/onechart/test and use the https://github.com/helm-unittest/helm-unittest Helm plugin to run the tests.

For installation, refer to the CI workflow at .github/workflows/build.yaml.

Build and Release Process

Building and Testing Locally

  1. Lint the charts:

    make lint
  2. Run tests:

    make test
  3. Package the charts:

    make package

or

Run all steps at once:

make all

The make all command will lint, test, and package the Helm charts. The packaged chart archives (.tgz files) are placed in the docs/ directory.

Updating the Helm Repository Index

After packaging new chart versions, you need to update the Helm repository index:

helm repo index docs

This command generates or updates the index.yaml file in the docs/ directory, which is the Helm repository manifest that lists all available charts and their versions.

Release Process

  1. Update the chart version in the respective Chart.yaml file
  2. Run make all to test and package the updated chart
  3. Update the Helm repository index as described above
  4. Commit and push your changes
  5. Create a git tag for the new version
  6. Push the tag to trigger the GitHub Actions workflow

The chart archives in the docs/ directory, along with the updated index.yaml, are served via GitHub Pages at https://unite-as.github.io/onechart/.

GitHub Actions is configured to automate these steps on git tag events, making the release process smoother.

About

A generic Helm chart for your application deployments

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - Unite-AS/onechart: A generic Helm chart for your application deployments · GitHub
Skip to content

Repository files navigation

One chart to rule them all

A generic Helm chart for your application deployments.

Because no-one can remember the Kubernetes yaml syntax.

Getting started

OneChart is a generic Helm Chart for web applications. The idea is that most Kubernetes manifest look alike, only very few parts actually change.

Add the Onechart Helm repository:

helm repo add onechart https://unite-as.github.io/onechart/

Set your image name and version, the boilerplate is generated.

helm template my-release onechart/onechart \
--set image.repository=nginx \
--set image.tag=1.19.3

The example below deploys your application image, sets environment variables and configures the Kubernetes Ingress domain name:

helm repo add onechart https://unite-as.github.io/onechart/
helm template my-release onechart/onechart -f values.yaml
# values.yaml
image:
repository: my-app
tag: fd803fc
vars:
VAR_1: "value 1"
VAR_2: "value 2"
ingress:
name: my-app-public
annotations:
kubernetes.io/ingress.class: nginx
host: my-app.mycompany.com

When you need multiple Ingress resources for the same host (for example keeping /metrics private), use ingresses with explicit name values so each resource is unique.

For rollout blue/green preview traffic, OneChart also creates a preview ingress when rollout.enabled=true and ingress.host is set. You can make that preview ingress private (Tailscale) instead of public (Kong):

rollout:
enabled: trueblueGreen:
previewIngress:
private: true

Gateway API support (HTTPRoute)

OneChart can render HTTPRoute resources (Gateway API) as an opt-in feature.

  • Set gatewayApi.enabled=true to enable it.
  • Route input can be declared directly via gatewayApi.route / gatewayApi.routes.
  • If those are omitted, ingress / ingresses are reused as fallback route input.
  • Parent Gateway references are prefilled for platform-managed Gateways.
  • HTTPS redirects are handled by Kong route annotations on the main HTTPRoute (for example konghq.com/https-redirect-status-code: "301").
  • Ingress is not disabled automatically: if both ingress and gatewayApi.enabled are set, both resources are rendered.
  • Set ingress.resourcesEnabled=false for Gateway-only mode while still reusing ingress host/path values as HTTPRoute input.
  • ingress.enabled is not used; use ingress.resourcesEnabled explicitly.
gatewayApi:
enabled: trueroute:
host: my-app.mycompany.compath: /pathType: PrefixparentRefs:
- name: edge-sharednamespace: kongsectionName: httpsport: 443ingress:
resourcesEnabled: false # optional: Gateway-only mode

pathType mapping from Ingress-style values to HTTPRoute:

  • Prefix -> PathPrefix
  • Exact -> Exact
  • RegularExpression -> RegularExpression

Alternative: using an OCI repository

You can also template and install onechart from an OCI repository as follows:

Check the generated Kubernetes yaml:

helm template my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Deploy with Helm:

helm install my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Contribution Guidelines

Below are some guidelines and best practices for contributing to this repository:

Issues

If you are running a fork of OneChart and would like to upstream a feature, please open a pull request for it.

New Features

If you are planning to add a new feature to OneChart, please open an issue for it first. Helm charts are prone to having too many features, and OneChart want to keep the supported use-cases in-check. Proposed features have to be generally applicable, targeting newcomers to the Kubernetes ecosystem.

Pull Request Process

  • Fork the repository.
  • Create a new branch and make your changes.
  • Open a pull request with detailed commit message and reference issue number if applicable.
  • A maintainer will review your pull request, and help you throughout the process.

Development

Development of OneChart does not differ from developing a regular Helm chart.

The source for OneChart is under charts/onechart where you can locate the Chart.yaml, values.yaml and the templates.

We write unit tests for our helm charts. Pull requests are only accepted with proper test coverage.

The tests are located under charts/onechart/test and use the https://github.com/helm-unittest/helm-unittest Helm plugin to run the tests.

For installation, refer to the CI workflow at .github/workflows/build.yaml.

Build and Release Process

Building and Testing Locally

  1. Lint the charts:

    make lint
  2. Run tests:

    make test
  3. Package the charts:

    make package

or

Run all steps at once:

make all

The make all command will lint, test, and package the Helm charts. The packaged chart archives (.tgz files) are placed in the docs/ directory.

Updating the Helm Repository Index

After packaging new chart versions, you need to update the Helm repository index:

helm repo index docs

This command generates or updates the index.yaml file in the docs/ directory, which is the Helm repository manifest that lists all available charts and their versions.

Release Process

  1. Update the chart version in the respective Chart.yaml file
  2. Run make all to test and package the updated chart
  3. Update the Helm repository index as described above
  4. Commit and push your changes
  5. Create a git tag for the new version
  6. Push the tag to trigger the GitHub Actions workflow

The chart archives in the docs/ directory, along with the updated index.yaml, are served via GitHub Pages at https://unite-as.github.io/onechart/.

GitHub Actions is configured to automate these steps on git tag events, making the release process smoother.

About

A generic Helm chart for your application deployments

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Unite-AS/onechart: A generic Helm chart for your application deployments · GitHub
Skip to content

Repository files navigation

One chart to rule them all

A generic Helm chart for your application deployments.

Because no-one can remember the Kubernetes yaml syntax.

Getting started

OneChart is a generic Helm Chart for web applications. The idea is that most Kubernetes manifest look alike, only very few parts actually change.

Add the Onechart Helm repository:

helm repo add onechart https://unite-as.github.io/onechart/

Set your image name and version, the boilerplate is generated.

helm template my-release onechart/onechart \
--set image.repository=nginx \
--set image.tag=1.19.3

The example below deploys your application image, sets environment variables and configures the Kubernetes Ingress domain name:

helm repo add onechart https://unite-as.github.io/onechart/
helm template my-release onechart/onechart -f values.yaml
# values.yaml
image:
repository: my-app
tag: fd803fc
vars:
VAR_1: "value 1"
VAR_2: "value 2"
ingress:
name: my-app-public
annotations:
kubernetes.io/ingress.class: nginx
host: my-app.mycompany.com

When you need multiple Ingress resources for the same host (for example keeping /metrics private), use ingresses with explicit name values so each resource is unique.

For rollout blue/green preview traffic, OneChart also creates a preview ingress when rollout.enabled=true and ingress.host is set. You can make that preview ingress private (Tailscale) instead of public (Kong):

rollout:
enabled: trueblueGreen:
previewIngress:
private: true

Gateway API support (HTTPRoute)

OneChart can render HTTPRoute resources (Gateway API) as an opt-in feature.

  • Set gatewayApi.enabled=true to enable it.
  • Route input can be declared directly via gatewayApi.route / gatewayApi.routes.
  • If those are omitted, ingress / ingresses are reused as fallback route input.
  • Parent Gateway references are prefilled for platform-managed Gateways.
  • HTTPS redirects are handled by Kong route annotations on the main HTTPRoute (for example konghq.com/https-redirect-status-code: "301").
  • Ingress is not disabled automatically: if both ingress and gatewayApi.enabled are set, both resources are rendered.
  • Set ingress.resourcesEnabled=false for Gateway-only mode while still reusing ingress host/path values as HTTPRoute input.
  • ingress.enabled is not used; use ingress.resourcesEnabled explicitly.
gatewayApi:
enabled: trueroute:
host: my-app.mycompany.compath: /pathType: PrefixparentRefs:
- name: edge-sharednamespace: kongsectionName: httpsport: 443ingress:
resourcesEnabled: false # optional: Gateway-only mode

pathType mapping from Ingress-style values to HTTPRoute:

  • Prefix -> PathPrefix
  • Exact -> Exact
  • RegularExpression -> RegularExpression

Alternative: using an OCI repository

You can also template and install onechart from an OCI repository as follows:

Check the generated Kubernetes yaml:

helm template my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Deploy with Helm:

helm install my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Contribution Guidelines

Below are some guidelines and best practices for contributing to this repository:

Issues

If you are running a fork of OneChart and would like to upstream a feature, please open a pull request for it.

New Features

If you are planning to add a new feature to OneChart, please open an issue for it first. Helm charts are prone to having too many features, and OneChart want to keep the supported use-cases in-check. Proposed features have to be generally applicable, targeting newcomers to the Kubernetes ecosystem.

Pull Request Process

  • Fork the repository.
  • Create a new branch and make your changes.
  • Open a pull request with detailed commit message and reference issue number if applicable.
  • A maintainer will review your pull request, and help you throughout the process.

Development

Development of OneChart does not differ from developing a regular Helm chart.

The source for OneChart is under charts/onechart where you can locate the Chart.yaml, values.yaml and the templates.

We write unit tests for our helm charts. Pull requests are only accepted with proper test coverage.

The tests are located under charts/onechart/test and use the https://github.com/helm-unittest/helm-unittest Helm plugin to run the tests.

For installation, refer to the CI workflow at .github/workflows/build.yaml.

Build and Release Process

Building and Testing Locally

  1. Lint the charts:

    make lint
  2. Run tests:

    make test
  3. Package the charts:

    make package

or

Run all steps at once:

make all

The make all command will lint, test, and package the Helm charts. The packaged chart archives (.tgz files) are placed in the docs/ directory.

Updating the Helm Repository Index

After packaging new chart versions, you need to update the Helm repository index:

helm repo index docs

This command generates or updates the index.yaml file in the docs/ directory, which is the Helm repository manifest that lists all available charts and their versions.

Release Process

  1. Update the chart version in the respective Chart.yaml file
  2. Run make all to test and package the updated chart
  3. Update the Helm repository index as described above
  4. Commit and push your changes
  5. Create a git tag for the new version
  6. Push the tag to trigger the GitHub Actions workflow

The chart archives in the docs/ directory, along with the updated index.yaml, are served via GitHub Pages at https://unite-as.github.io/onechart/.

GitHub Actions is configured to automate these steps on git tag events, making the release process smoother.

About

A generic Helm chart for your application deployments

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Unite-AS/onechart: A generic Helm chart for your application deployments · GitHub
Skip to content

Repository files navigation

One chart to rule them all

A generic Helm chart for your application deployments.

Because no-one can remember the Kubernetes yaml syntax.

Getting started

OneChart is a generic Helm Chart for web applications. The idea is that most Kubernetes manifest look alike, only very few parts actually change.

Add the Onechart Helm repository:

helm repo add onechart https://unite-as.github.io/onechart/

Set your image name and version, the boilerplate is generated.

helm template my-release onechart/onechart \
--set image.repository=nginx \
--set image.tag=1.19.3

The example below deploys your application image, sets environment variables and configures the Kubernetes Ingress domain name:

helm repo add onechart https://unite-as.github.io/onechart/
helm template my-release onechart/onechart -f values.yaml
# values.yaml
image:
repository: my-app
tag: fd803fc
vars:
VAR_1: "value 1"
VAR_2: "value 2"
ingress:
name: my-app-public
annotations:
kubernetes.io/ingress.class: nginx
host: my-app.mycompany.com

When you need multiple Ingress resources for the same host (for example keeping /metrics private), use ingresses with explicit name values so each resource is unique.

For rollout blue/green preview traffic, OneChart also creates a preview ingress when rollout.enabled=true and ingress.host is set. You can make that preview ingress private (Tailscale) instead of public (Kong):

rollout:
enabled: trueblueGreen:
previewIngress:
private: true

Gateway API support (HTTPRoute)

OneChart can render HTTPRoute resources (Gateway API) as an opt-in feature.

  • Set gatewayApi.enabled=true to enable it.
  • Route input can be declared directly via gatewayApi.route / gatewayApi.routes.
  • If those are omitted, ingress / ingresses are reused as fallback route input.
  • Parent Gateway references are prefilled for platform-managed Gateways.
  • HTTPS redirects are handled by Kong route annotations on the main HTTPRoute (for example konghq.com/https-redirect-status-code: "301").
  • Ingress is not disabled automatically: if both ingress and gatewayApi.enabled are set, both resources are rendered.
  • Set ingress.resourcesEnabled=false for Gateway-only mode while still reusing ingress host/path values as HTTPRoute input.
  • ingress.enabled is not used; use ingress.resourcesEnabled explicitly.
gatewayApi:
enabled: trueroute:
host: my-app.mycompany.compath: /pathType: PrefixparentRefs:
- name: edge-sharednamespace: kongsectionName: httpsport: 443ingress:
resourcesEnabled: false # optional: Gateway-only mode

pathType mapping from Ingress-style values to HTTPRoute:

  • Prefix -> PathPrefix
  • Exact -> Exact
  • RegularExpression -> RegularExpression

Alternative: using an OCI repository

You can also template and install onechart from an OCI repository as follows:

Check the generated Kubernetes yaml:

helm template my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Deploy with Helm:

helm install my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Contribution Guidelines

Below are some guidelines and best practices for contributing to this repository:

Issues

If you are running a fork of OneChart and would like to upstream a feature, please open a pull request for it.

New Features

If you are planning to add a new feature to OneChart, please open an issue for it first. Helm charts are prone to having too many features, and OneChart want to keep the supported use-cases in-check. Proposed features have to be generally applicable, targeting newcomers to the Kubernetes ecosystem.

Pull Request Process

  • Fork the repository.
  • Create a new branch and make your changes.
  • Open a pull request with detailed commit message and reference issue number if applicable.
  • A maintainer will review your pull request, and help you throughout the process.

Development

Development of OneChart does not differ from developing a regular Helm chart.

The source for OneChart is under charts/onechart where you can locate the Chart.yaml, values.yaml and the templates.

We write unit tests for our helm charts. Pull requests are only accepted with proper test coverage.

The tests are located under charts/onechart/test and use the https://github.com/helm-unittest/helm-unittest Helm plugin to run the tests.

For installation, refer to the CI workflow at .github/workflows/build.yaml.

Build and Release Process

Building and Testing Locally

  1. Lint the charts:

    make lint
  2. Run tests:

    make test
  3. Package the charts:

    make package

or

Run all steps at once:

make all

The make all command will lint, test, and package the Helm charts. The packaged chart archives (.tgz files) are placed in the docs/ directory.

Updating the Helm Repository Index

After packaging new chart versions, you need to update the Helm repository index:

helm repo index docs

This command generates or updates the index.yaml file in the docs/ directory, which is the Helm repository manifest that lists all available charts and their versions.

Release Process

  1. Update the chart version in the respective Chart.yaml file
  2. Run make all to test and package the updated chart
  3. Update the Helm repository index as described above
  4. Commit and push your changes
  5. Create a git tag for the new version
  6. Push the tag to trigger the GitHub Actions workflow

The chart archives in the docs/ directory, along with the updated index.yaml, are served via GitHub Pages at https://unite-as.github.io/onechart/.

GitHub Actions is configured to automate these steps on git tag events, making the release process smoother.

About

A generic Helm chart for your application deployments

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - Unite-AS/onechart: A generic Helm chart for your application deployments · GitHub
Skip to content

Repository files navigation

One chart to rule them all

A generic Helm chart for your application deployments.

Because no-one can remember the Kubernetes yaml syntax.

Getting started

OneChart is a generic Helm Chart for web applications. The idea is that most Kubernetes manifest look alike, only very few parts actually change.

Add the Onechart Helm repository:

helm repo add onechart https://unite-as.github.io/onechart/

Set your image name and version, the boilerplate is generated.

helm template my-release onechart/onechart \
--set image.repository=nginx \
--set image.tag=1.19.3

The example below deploys your application image, sets environment variables and configures the Kubernetes Ingress domain name:

helm repo add onechart https://unite-as.github.io/onechart/
helm template my-release onechart/onechart -f values.yaml
# values.yaml
image:
repository: my-app
tag: fd803fc
vars:
VAR_1: "value 1"
VAR_2: "value 2"
ingress:
name: my-app-public
annotations:
kubernetes.io/ingress.class: nginx
host: my-app.mycompany.com

When you need multiple Ingress resources for the same host (for example keeping /metrics private), use ingresses with explicit name values so each resource is unique.

For rollout blue/green preview traffic, OneChart also creates a preview ingress when rollout.enabled=true and ingress.host is set. You can make that preview ingress private (Tailscale) instead of public (Kong):

rollout:
enabled: trueblueGreen:
previewIngress:
private: true

Gateway API support (HTTPRoute)

OneChart can render HTTPRoute resources (Gateway API) as an opt-in feature.

  • Set gatewayApi.enabled=true to enable it.
  • Route input can be declared directly via gatewayApi.route / gatewayApi.routes.
  • If those are omitted, ingress / ingresses are reused as fallback route input.
  • Parent Gateway references are prefilled for platform-managed Gateways.
  • HTTPS redirects are handled by Kong route annotations on the main HTTPRoute (for example konghq.com/https-redirect-status-code: "301").
  • Ingress is not disabled automatically: if both ingress and gatewayApi.enabled are set, both resources are rendered.
  • Set ingress.resourcesEnabled=false for Gateway-only mode while still reusing ingress host/path values as HTTPRoute input.
  • ingress.enabled is not used; use ingress.resourcesEnabled explicitly.
gatewayApi:
enabled: trueroute:
host: my-app.mycompany.compath: /pathType: PrefixparentRefs:
- name: edge-sharednamespace: kongsectionName: httpsport: 443ingress:
resourcesEnabled: false # optional: Gateway-only mode

pathType mapping from Ingress-style values to HTTPRoute:

  • Prefix -> PathPrefix
  • Exact -> Exact
  • RegularExpression -> RegularExpression

Alternative: using an OCI repository

You can also template and install onechart from an OCI repository as follows:

Check the generated Kubernetes yaml:

helm template my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Deploy with Helm:

helm install my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Contribution Guidelines

Below are some guidelines and best practices for contributing to this repository:

Issues

If you are running a fork of OneChart and would like to upstream a feature, please open a pull request for it.

New Features

If you are planning to add a new feature to OneChart, please open an issue for it first. Helm charts are prone to having too many features, and OneChart want to keep the supported use-cases in-check. Proposed features have to be generally applicable, targeting newcomers to the Kubernetes ecosystem.

Pull Request Process

  • Fork the repository.
  • Create a new branch and make your changes.
  • Open a pull request with detailed commit message and reference issue number if applicable.
  • A maintainer will review your pull request, and help you throughout the process.

Development

Development of OneChart does not differ from developing a regular Helm chart.

The source for OneChart is under charts/onechart where you can locate the Chart.yaml, values.yaml and the templates.

We write unit tests for our helm charts. Pull requests are only accepted with proper test coverage.

The tests are located under charts/onechart/test and use the https://github.com/helm-unittest/helm-unittest Helm plugin to run the tests.

For installation, refer to the CI workflow at .github/workflows/build.yaml.

Build and Release Process

Building and Testing Locally

  1. Lint the charts:

    make lint
  2. Run tests:

    make test
  3. Package the charts:

    make package

or

Run all steps at once:

make all

The make all command will lint, test, and package the Helm charts. The packaged chart archives (.tgz files) are placed in the docs/ directory.

Updating the Helm Repository Index

After packaging new chart versions, you need to update the Helm repository index:

helm repo index docs

This command generates or updates the index.yaml file in the docs/ directory, which is the Helm repository manifest that lists all available charts and their versions.

Release Process

  1. Update the chart version in the respective Chart.yaml file
  2. Run make all to test and package the updated chart
  3. Update the Helm repository index as described above
  4. Commit and push your changes
  5. Create a git tag for the new version
  6. Push the tag to trigger the GitHub Actions workflow

The chart archives in the docs/ directory, along with the updated index.yaml, are served via GitHub Pages at https://unite-as.github.io/onechart/.

GitHub Actions is configured to automate these steps on git tag events, making the release process smoother.

About

A generic Helm chart for your application deployments

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Unite-AS/onechart: A generic Helm chart for your application deployments · GitHub
Skip to content

Repository files navigation

One chart to rule them all

A generic Helm chart for your application deployments.

Because no-one can remember the Kubernetes yaml syntax.

Getting started

OneChart is a generic Helm Chart for web applications. The idea is that most Kubernetes manifest look alike, only very few parts actually change.

Add the Onechart Helm repository:

helm repo add onechart https://unite-as.github.io/onechart/

Set your image name and version, the boilerplate is generated.

helm template my-release onechart/onechart \
--set image.repository=nginx \
--set image.tag=1.19.3

The example below deploys your application image, sets environment variables and configures the Kubernetes Ingress domain name:

helm repo add onechart https://unite-as.github.io/onechart/
helm template my-release onechart/onechart -f values.yaml
# values.yaml
image:
repository: my-app
tag: fd803fc
vars:
VAR_1: "value 1"
VAR_2: "value 2"
ingress:
name: my-app-public
annotations:
kubernetes.io/ingress.class: nginx
host: my-app.mycompany.com

When you need multiple Ingress resources for the same host (for example keeping /metrics private), use ingresses with explicit name values so each resource is unique.

For rollout blue/green preview traffic, OneChart also creates a preview ingress when rollout.enabled=true and ingress.host is set. You can make that preview ingress private (Tailscale) instead of public (Kong):

rollout:
enabled: trueblueGreen:
previewIngress:
private: true

Gateway API support (HTTPRoute)

OneChart can render HTTPRoute resources (Gateway API) as an opt-in feature.

  • Set gatewayApi.enabled=true to enable it.
  • Route input can be declared directly via gatewayApi.route / gatewayApi.routes.
  • If those are omitted, ingress / ingresses are reused as fallback route input.
  • Parent Gateway references are prefilled for platform-managed Gateways.
  • HTTPS redirects are handled by Kong route annotations on the main HTTPRoute (for example konghq.com/https-redirect-status-code: "301").
  • Ingress is not disabled automatically: if both ingress and gatewayApi.enabled are set, both resources are rendered.
  • Set ingress.resourcesEnabled=false for Gateway-only mode while still reusing ingress host/path values as HTTPRoute input.
  • ingress.enabled is not used; use ingress.resourcesEnabled explicitly.
gatewayApi:
enabled: trueroute:
host: my-app.mycompany.compath: /pathType: PrefixparentRefs:
- name: edge-sharednamespace: kongsectionName: httpsport: 443ingress:
resourcesEnabled: false # optional: Gateway-only mode

pathType mapping from Ingress-style values to HTTPRoute:

  • Prefix -> PathPrefix
  • Exact -> Exact
  • RegularExpression -> RegularExpression

Alternative: using an OCI repository

You can also template and install onechart from an OCI repository as follows:

Check the generated Kubernetes yaml:

helm template my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Deploy with Helm:

helm install my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Contribution Guidelines

Below are some guidelines and best practices for contributing to this repository:

Issues

If you are running a fork of OneChart and would like to upstream a feature, please open a pull request for it.

New Features

If you are planning to add a new feature to OneChart, please open an issue for it first. Helm charts are prone to having too many features, and OneChart want to keep the supported use-cases in-check. Proposed features have to be generally applicable, targeting newcomers to the Kubernetes ecosystem.

Pull Request Process

  • Fork the repository.
  • Create a new branch and make your changes.
  • Open a pull request with detailed commit message and reference issue number if applicable.
  • A maintainer will review your pull request, and help you throughout the process.

Development

Development of OneChart does not differ from developing a regular Helm chart.

The source for OneChart is under charts/onechart where you can locate the Chart.yaml, values.yaml and the templates.

We write unit tests for our helm charts. Pull requests are only accepted with proper test coverage.

The tests are located under charts/onechart/test and use the https://github.com/helm-unittest/helm-unittest Helm plugin to run the tests.

For installation, refer to the CI workflow at .github/workflows/build.yaml.

Build and Release Process

Building and Testing Locally

  1. Lint the charts:

    make lint
  2. Run tests:

    make test
  3. Package the charts:

    make package

or

Run all steps at once:

make all

The make all command will lint, test, and package the Helm charts. The packaged chart archives (.tgz files) are placed in the docs/ directory.

Updating the Helm Repository Index

After packaging new chart versions, you need to update the Helm repository index:

helm repo index docs

This command generates or updates the index.yaml file in the docs/ directory, which is the Helm repository manifest that lists all available charts and their versions.

Release Process

  1. Update the chart version in the respective Chart.yaml file
  2. Run make all to test and package the updated chart
  3. Update the Helm repository index as described above
  4. Commit and push your changes
  5. Create a git tag for the new version
  6. Push the tag to trigger the GitHub Actions workflow

The chart archives in the docs/ directory, along with the updated index.yaml, are served via GitHub Pages at https://unite-as.github.io/onechart/.

GitHub Actions is configured to automate these steps on git tag events, making the release process smoother.

About

A generic Helm chart for your application deployments

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - Unite-AS/onechart: A generic Helm chart for your application deployments · GitHub
Skip to content

Repository files navigation

One chart to rule them all

A generic Helm chart for your application deployments.

Because no-one can remember the Kubernetes yaml syntax.

Getting started

OneChart is a generic Helm Chart for web applications. The idea is that most Kubernetes manifest look alike, only very few parts actually change.

Add the Onechart Helm repository:

helm repo add onechart https://unite-as.github.io/onechart/

Set your image name and version, the boilerplate is generated.

helm template my-release onechart/onechart \
--set image.repository=nginx \
--set image.tag=1.19.3

The example below deploys your application image, sets environment variables and configures the Kubernetes Ingress domain name:

helm repo add onechart https://unite-as.github.io/onechart/
helm template my-release onechart/onechart -f values.yaml
# values.yaml
image:
repository: my-app
tag: fd803fc
vars:
VAR_1: "value 1"
VAR_2: "value 2"
ingress:
name: my-app-public
annotations:
kubernetes.io/ingress.class: nginx
host: my-app.mycompany.com

When you need multiple Ingress resources for the same host (for example keeping /metrics private), use ingresses with explicit name values so each resource is unique.

For rollout blue/green preview traffic, OneChart also creates a preview ingress when rollout.enabled=true and ingress.host is set. You can make that preview ingress private (Tailscale) instead of public (Kong):

rollout:
enabled: trueblueGreen:
previewIngress:
private: true

Gateway API support (HTTPRoute)

OneChart can render HTTPRoute resources (Gateway API) as an opt-in feature.

  • Set gatewayApi.enabled=true to enable it.
  • Route input can be declared directly via gatewayApi.route / gatewayApi.routes.
  • If those are omitted, ingress / ingresses are reused as fallback route input.
  • Parent Gateway references are prefilled for platform-managed Gateways.
  • HTTPS redirects are handled by Kong route annotations on the main HTTPRoute (for example konghq.com/https-redirect-status-code: "301").
  • Ingress is not disabled automatically: if both ingress and gatewayApi.enabled are set, both resources are rendered.
  • Set ingress.resourcesEnabled=false for Gateway-only mode while still reusing ingress host/path values as HTTPRoute input.
  • ingress.enabled is not used; use ingress.resourcesEnabled explicitly.
gatewayApi:
enabled: trueroute:
host: my-app.mycompany.compath: /pathType: PrefixparentRefs:
- name: edge-sharednamespace: kongsectionName: httpsport: 443ingress:
resourcesEnabled: false # optional: Gateway-only mode

pathType mapping from Ingress-style values to HTTPRoute:

  • Prefix -> PathPrefix
  • Exact -> Exact
  • RegularExpression -> RegularExpression

Alternative: using an OCI repository

You can also template and install onechart from an OCI repository as follows:

Check the generated Kubernetes yaml:

helm template my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Deploy with Helm:

helm install my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Contribution Guidelines

Below are some guidelines and best practices for contributing to this repository:

Issues

If you are running a fork of OneChart and would like to upstream a feature, please open a pull request for it.

New Features

If you are planning to add a new feature to OneChart, please open an issue for it first. Helm charts are prone to having too many features, and OneChart want to keep the supported use-cases in-check. Proposed features have to be generally applicable, targeting newcomers to the Kubernetes ecosystem.

Pull Request Process

  • Fork the repository.
  • Create a new branch and make your changes.
  • Open a pull request with detailed commit message and reference issue number if applicable.
  • A maintainer will review your pull request, and help you throughout the process.

Development

Development of OneChart does not differ from developing a regular Helm chart.

The source for OneChart is under charts/onechart where you can locate the Chart.yaml, values.yaml and the templates.

We write unit tests for our helm charts. Pull requests are only accepted with proper test coverage.

The tests are located under charts/onechart/test and use the https://github.com/helm-unittest/helm-unittest Helm plugin to run the tests.

For installation, refer to the CI workflow at .github/workflows/build.yaml.

Build and Release Process

Building and Testing Locally

  1. Lint the charts:

    make lint
  2. Run tests:

    make test
  3. Package the charts:

    make package

or

Run all steps at once:

make all

The make all command will lint, test, and package the Helm charts. The packaged chart archives (.tgz files) are placed in the docs/ directory.

Updating the Helm Repository Index

After packaging new chart versions, you need to update the Helm repository index:

helm repo index docs

This command generates or updates the index.yaml file in the docs/ directory, which is the Helm repository manifest that lists all available charts and their versions.

Release Process

  1. Update the chart version in the respective Chart.yaml file
  2. Run make all to test and package the updated chart
  3. Update the Helm repository index as described above
  4. Commit and push your changes
  5. Create a git tag for the new version
  6. Push the tag to trigger the GitHub Actions workflow

The chart archives in the docs/ directory, along with the updated index.yaml, are served via GitHub Pages at https://unite-as.github.io/onechart/.

GitHub Actions is configured to automate these steps on git tag events, making the release process smoother.

About

A generic Helm chart for your application deployments

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - Unite-AS/onechart: A generic Helm chart for your application deployments · GitHub
Skip to content

Repository files navigation

One chart to rule them all

A generic Helm chart for your application deployments.

Because no-one can remember the Kubernetes yaml syntax.

Getting started

OneChart is a generic Helm Chart for web applications. The idea is that most Kubernetes manifest look alike, only very few parts actually change.

Add the Onechart Helm repository:

helm repo add onechart https://unite-as.github.io/onechart/

Set your image name and version, the boilerplate is generated.

helm template my-release onechart/onechart \
--set image.repository=nginx \
--set image.tag=1.19.3

The example below deploys your application image, sets environment variables and configures the Kubernetes Ingress domain name:

helm repo add onechart https://unite-as.github.io/onechart/
helm template my-release onechart/onechart -f values.yaml
# values.yaml
image:
repository: my-app
tag: fd803fc
vars:
VAR_1: "value 1"
VAR_2: "value 2"
ingress:
name: my-app-public
annotations:
kubernetes.io/ingress.class: nginx
host: my-app.mycompany.com

When you need multiple Ingress resources for the same host (for example keeping /metrics private), use ingresses with explicit name values so each resource is unique.

For rollout blue/green preview traffic, OneChart also creates a preview ingress when rollout.enabled=true and ingress.host is set. You can make that preview ingress private (Tailscale) instead of public (Kong):

rollout:
enabled: trueblueGreen:
previewIngress:
private: true

Gateway API support (HTTPRoute)

OneChart can render HTTPRoute resources (Gateway API) as an opt-in feature.

  • Set gatewayApi.enabled=true to enable it.
  • Route input can be declared directly via gatewayApi.route / gatewayApi.routes.
  • If those are omitted, ingress / ingresses are reused as fallback route input.
  • Parent Gateway references are prefilled for platform-managed Gateways.
  • HTTPS redirects are handled by Kong route annotations on the main HTTPRoute (for example konghq.com/https-redirect-status-code: "301").
  • Ingress is not disabled automatically: if both ingress and gatewayApi.enabled are set, both resources are rendered.
  • Set ingress.resourcesEnabled=false for Gateway-only mode while still reusing ingress host/path values as HTTPRoute input.
  • ingress.enabled is not used; use ingress.resourcesEnabled explicitly.
gatewayApi:
enabled: trueroute:
host: my-app.mycompany.compath: /pathType: PrefixparentRefs:
- name: edge-sharednamespace: kongsectionName: httpsport: 443ingress:
resourcesEnabled: false # optional: Gateway-only mode

pathType mapping from Ingress-style values to HTTPRoute:

  • Prefix -> PathPrefix
  • Exact -> Exact
  • RegularExpression -> RegularExpression

Alternative: using an OCI repository

You can also template and install onechart from an OCI repository as follows:

Check the generated Kubernetes yaml:

helm template my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Deploy with Helm:

helm install my-release oci://ghcr.io/unite-as/onechart/onechart --version 0.62.0 \
--set image.repository=nginx \
--set image.tag=1.19.3

Contribution Guidelines

Below are some guidelines and best practices for contributing to this repository:

Issues

If you are running a fork of OneChart and would like to upstream a feature, please open a pull request for it.

New Features

If you are planning to add a new feature to OneChart, please open an issue for it first. Helm charts are prone to having too many features, and OneChart want to keep the supported use-cases in-check. Proposed features have to be generally applicable, targeting newcomers to the Kubernetes ecosystem.

Pull Request Process

  • Fork the repository.
  • Create a new branch and make your changes.
  • Open a pull request with detailed commit message and reference issue number if applicable.
  • A maintainer will review your pull request, and help you throughout the process.

Development

Development of OneChart does not differ from developing a regular Helm chart.

The source for OneChart is under charts/onechart where you can locate the Chart.yaml, values.yaml and the templates.

We write unit tests for our helm charts. Pull requests are only accepted with proper test coverage.

The tests are located under charts/onechart/test and use the https://github.com/helm-unittest/helm-unittest Helm plugin to run the tests.

For installation, refer to the CI workflow at .github/workflows/build.yaml.

Build and Release Process

Building and Testing Locally

  1. Lint the charts:

    make lint
  2. Run tests:

    make test
  3. Package the charts:

    make package

or

Run all steps at once:

make all

The make all command will lint, test, and package the Helm charts. The packaged chart archives (.tgz files) are placed in the docs/ directory.

Updating the Helm Repository Index

After packaging new chart versions, you need to update the Helm repository index:

helm repo index docs

This command generates or updates the index.yaml file in the docs/ directory, which is the Helm repository manifest that lists all available charts and their versions.

Release Process

  1. Update the chart version in the respective Chart.yaml file
  2. Run make all to test and package the updated chart
  3. Update the Helm repository index as described above
  4. Commit and push your changes
  5. Create a git tag for the new version
  6. Push the tag to trigger the GitHub Actions workflow

The chart archives in the docs/ directory, along with the updated index.yaml, are served via GitHub Pages at https://unite-as.github.io/onechart/.

GitHub Actions is configured to automate these steps on git tag events, making the release process smoother.

About

A generic Helm chart for your application deployments

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages