mirror of https://github.com/linkerd/website.git
Adds helm chart to app version matrix (#1714)
* Adds helm chart to app version matrix
* Previously, there was not an easy way to correlate the app version
to a helm chart version. Many people ask this question in public
slack channel or must get data themselves. This adds a script
to produce the desired matrix data as a table, json, or yaml output
to help folks who are upgrading.
Signed-off-by: Corey Osman <corey@logicminds.biz>
* Remove bin directory from gitignore
* Previously the bin directory was being ignored despite this being
a logical place to contain scripts. It has been re-enabled
and the python script was added as a result.
* Update script to handle edge releases better
Signed-off-by: Corey Osman <corey@logicminds.biz>
* Add build release matrix to build target
Signed-off-by: Corey Osman <corey@logicminds.biz>
* Rebase and regenerate matrix with 2.14.7
Signed-off-by: Corey Osman <corey@logicminds.biz>
---------
Signed-off-by: Corey Osman <corey@logicminds.biz>
This commit is contained in:
parent
94a29f5d1c
commit
feddd13b69
|
|
@ -4,4 +4,4 @@ node_modules
|
|||
.DS_Store
|
||||
tmp
|
||||
.idea
|
||||
bin
|
||||
bin/htmltest
|
||||
12
Makefile
12
Makefile
|
|
@ -112,7 +112,7 @@ serve-api.linkerd.io: build-api.linkerd.io
|
|||
&& python3 -m http.server 9999
|
||||
|
||||
.PHONY: build-linkerd.io
|
||||
build-linkerd.io: get-versions tmp/linkerd.io
|
||||
build-linkerd.io: build-release-matrix get-versions tmp/linkerd.io
|
||||
@# Build linkerd.io
|
||||
ifndef HAS_HUGO
|
||||
@printf "Install hugo first. For OSX: brew install hugo\n"; exit 1
|
||||
|
|
@ -140,6 +140,14 @@ replace-env-%: has-env-% tmp-sites
|
|||
sed 's/$*/$($*)/g' < $$fname > /tmp/__sed && mv /tmp/__sed $$fname; \
|
||||
done
|
||||
|
||||
.PHONY: build-release-matrix
|
||||
build-release-matrix:
|
||||
@# Build release matrix
|
||||
./bin/generate_release_matrix.py --release_type=stable --format=json > linkerd.io/data/releases/release_matrix.json
|
||||
./bin/generate_release_matrix.py --release_type=stable --format=yaml > linkerd.io/content/releases/release_matrix.yaml
|
||||
cp linkerd.io/data/releases/release_matrix.json linkerd.io/content/releases/release_matrix.json
|
||||
|
||||
|
||||
.PHONY: has-env-%
|
||||
has-env-%:
|
||||
@if [ ! $${$*:-} ]; then printf "You must define: $*\n" && exit 1; fi
|
||||
|
|
@ -147,3 +155,5 @@ has-env-%:
|
|||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf tmp
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,292 @@
|
|||
#!/usr/bin/env python3
|
||||
# Author: Corey Osman <corey@logicminds.biz>
|
||||
# Purpose: Geneate a list in specified format of all the linkerd charts by app version
|
||||
# Usage: ./generate_release_matrix.py [--format=json|table|yaml] [--update_repo]
|
||||
# Notes: Help determine which charts go with which app versions
|
||||
# Notes: This is primary aimed at the stable release only, although a slight modification
|
||||
# could yeild support for edge and Enterprise releases too. Right now edge versions
|
||||
# follow date schemes and the manual mappings do not work
|
||||
|
||||
|
||||
import subprocess
|
||||
import json
|
||||
import yaml
|
||||
import argparse
|
||||
|
||||
|
||||
charts = [
|
||||
# "linkerd2", # This makes the search return results for everything
|
||||
"linkerd2-cni",
|
||||
"linkerd-viz",
|
||||
"linkerd-control-plane",
|
||||
"linkerd-jaeger",
|
||||
"linkerd-multicluster",
|
||||
"linkerd-failover",
|
||||
]
|
||||
|
||||
# these versions are old and do not have the proper mappings anyways
|
||||
ignored_y_versions = [6, 7, 8, 9]
|
||||
|
||||
# Manually map in the old chart, otherwise we get duplicates mixed in
|
||||
linkerd2_map = {
|
||||
'2.11': {
|
||||
"linkerd2": {
|
||||
"chart_name": "linkerd2",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2/2.11.5"
|
||||
}
|
||||
},
|
||||
'2.10': {
|
||||
"linkerd2": {
|
||||
"chart_name": "linkerd2",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2/2.10.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
# Manually map in the crds because there is no app version associated with them
|
||||
crds_map = {
|
||||
"2.12": {
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.6.1",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.6.1"
|
||||
}
|
||||
},
|
||||
"2.13": {
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.6.1",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.6.1"
|
||||
}
|
||||
},
|
||||
"2.14": {
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.8.0",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.8.0"
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def find_newest_versions(versions):
|
||||
"""
|
||||
Finds the newest version with the highest X value for a given Y version
|
||||
|
||||
Parameters:
|
||||
versions (list): A list of version objects
|
||||
Example: [('linkerd2/linkerd2', '2.11.5', 'stable-2.11.5'), ('linkerd2/linkerd2', '2.11.4', 'stable-2.11.4')
|
||||
|
||||
Returns:
|
||||
list: A list of version objects
|
||||
Example: [('linkerd2/linkerd2', '2.11.5', 'stable-2.11.5'),
|
||||
('linkerd2/linkerd2', '2.10.2', 'stable-2.10.2'),
|
||||
('linkerd2/linkerd2', '30.12.1', 'stable-2.14.3'),
|
||||
('linkerd2/linkerd2', '30.8.5', 'stable-2.13.7'),
|
||||
('linkerd2/linkerd2', '30.3.8', 'stable-2.12.6'),
|
||||
('linkerd2/linkerd2', '2.11.5', 'stable-2.11.5'),
|
||||
('linkerd2/linkerd2', '2.10.2', 'stable-2.10.2')]
|
||||
|
||||
"""
|
||||
winners = {}
|
||||
for entry in versions:
|
||||
_, _, version, _ = entry
|
||||
try:
|
||||
x, y, z = map(int, version.split("-")[1].split("."))
|
||||
if not y in ignored_y_versions:
|
||||
current_winner = winners.get(
|
||||
f"{x}.{y}.Z", {"x": x, "y": y, "z": z, version: version}
|
||||
)
|
||||
if current_winner["y"] == y and z >= current_winner["z"]:
|
||||
# new winner
|
||||
winners[f"{x}.{y}.Z"] = {"x": x, "y": y, "z": z, "version": version}
|
||||
|
||||
except IndexError:
|
||||
next
|
||||
except UnboundLocalError:
|
||||
next
|
||||
|
||||
latest_versions = [v["version"] for v in winners.values()]
|
||||
common_versions = []
|
||||
|
||||
for version in versions:
|
||||
if version[2] in latest_versions:
|
||||
common_versions.append(version)
|
||||
|
||||
return common_versions
|
||||
|
||||
|
||||
def combine_charts_by_app_version(versions):
|
||||
"""
|
||||
Gathers all charts tuples under a single app version
|
||||
|
||||
Parameters:
|
||||
versions (list): Raw list of versions tuples
|
||||
[('linkerd2/linkerd-control-plane', '1.12.7', 'stable-2.13.7'),
|
||||
('linkerd2/linkerd-control-plane', '1.16.4', 'stable-2.14.3'),
|
||||
('linkerd2/linkerd-control-plane', '1.9.8', 'stable-2.12.6')]
|
||||
|
||||
Returns:
|
||||
dict: versions object after combing under an app version.
|
||||
{'stable-2.13.7':
|
||||
{'linkerd2-crds':
|
||||
{'chart_name': 'linkerd2/linkerd2-crds', 'chart_version': '1.6.1'},
|
||||
'linkerd-jaeger': {
|
||||
'chart_name': 'linkerd2/linkerd-jaeger', 'chart_version': '30.8.7'}
|
||||
}
|
||||
}
|
||||
|
||||
"""
|
||||
combined_charts = {}
|
||||
for chart, version, app_version, link in versions:
|
||||
name = chart # chart.split("/")[1]
|
||||
|
||||
if not app_version:
|
||||
app_version = version
|
||||
if not combined_charts.get(app_version):
|
||||
combined_charts[app_version] = {}
|
||||
|
||||
combined_charts[app_version][name] = {
|
||||
"chart_name": chart,
|
||||
"chart_version": version,
|
||||
"chart_url": link
|
||||
}
|
||||
# merge in the crds chart info if it exist for the version
|
||||
x, y, z = map(int, app_version.split("-")[1].split("."))
|
||||
try:
|
||||
if y > 11 and x == 2:
|
||||
combined_charts[app_version] = {**combined_charts[app_version], **crds_map[f"{x}.{y}"]}
|
||||
elif x == 2:
|
||||
combined_charts[app_version] = {**combined_charts[app_version], **linkerd2_map[f"{x}.{y}"]}
|
||||
except KeyError as e:
|
||||
print(e)
|
||||
|
||||
# sorted(combined_charts.items(), key=lambda x: x[0] != "stable-2.11.5")
|
||||
return combined_charts
|
||||
|
||||
def find_repo_name(release_type):
|
||||
if release_type == "stable":
|
||||
repo_name = "linkerd2"
|
||||
elif release_type == "edge":
|
||||
repo_name = "linkerd2-edge"
|
||||
else:
|
||||
repo_name = "linkerd2"
|
||||
|
||||
return repo_name
|
||||
|
||||
def add_repo(release_type, helm_url, repo_name):
|
||||
command = ["helm", "repo", "add", repo_name, f"{helm_url}/{release_type}"]
|
||||
|
||||
try:
|
||||
process = subprocess.Popen(
|
||||
command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
|
||||
)
|
||||
stdout, stderr = process.communicate()
|
||||
|
||||
except OSError as e:
|
||||
print(f"Error: {e}")
|
||||
|
||||
return repo_name
|
||||
|
||||
|
||||
def update_repo(release_type, helm_url, repo_name):
|
||||
add_repo(release_type, helm_url, repo_name)
|
||||
|
||||
command = ["helm", "repo", "update", repo_name]
|
||||
|
||||
try:
|
||||
process = subprocess.Popen(
|
||||
command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
|
||||
)
|
||||
stdout, stderr = process.communicate()
|
||||
|
||||
except OSError as e:
|
||||
print(f"Error: {e}")
|
||||
|
||||
return repo_name
|
||||
|
||||
def list_chart_versions(charts, repo_name, latest_only=True):
|
||||
"""
|
||||
Fetches all the linkerd charts
|
||||
|
||||
Parameters:
|
||||
charts (list): A list of chart names to fetch
|
||||
|
||||
Returns:
|
||||
dict: A list of chart version tuples
|
||||
Example: {('linkerd2/linkerd2', '2.11.5', 'stable-2.11.5')}
|
||||
|
||||
"""
|
||||
all_versions = set()
|
||||
|
||||
|
||||
for chart in charts:
|
||||
# helm repo update linkerd2
|
||||
search_term = f"{repo_name}/{chart}"
|
||||
command = ["helm", "search", "repo", search_term, "--versions", "--output", "json"]
|
||||
try:
|
||||
process = subprocess.Popen(
|
||||
command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True
|
||||
)
|
||||
stdout, stderr = process.communicate()
|
||||
|
||||
if process.returncode == 0:
|
||||
chart_data = json.loads(stdout)
|
||||
versions = [
|
||||
(chart, item["version"], item["app_version"], f"https://artifacthub.io/packages/helm/{repo_name}/{chart}/{item['version']}") for item in chart_data
|
||||
]
|
||||
if latest_only:
|
||||
latest_versions = find_newest_versions(versions)
|
||||
else:
|
||||
latest_versions = versions
|
||||
|
||||
all_versions.update(latest_versions)
|
||||
else:
|
||||
print(f"Error: Failed to list chart versions for {chart}")
|
||||
print(stderr)
|
||||
except OSError as e:
|
||||
print(f"Error: {e}")
|
||||
|
||||
return sorted(all_versions)
|
||||
|
||||
|
||||
def print_output(data, format):
|
||||
if format == "json":
|
||||
print(json.dumps(data, indent=4))
|
||||
elif format == "yaml":
|
||||
print(yaml.dump(data, indent=4))
|
||||
else:
|
||||
try:
|
||||
from tabulate import tabulate
|
||||
except ImportError as e:
|
||||
print("Please install tabulate: pip3 install tabulate")
|
||||
exit(1)
|
||||
headers = ["App Version", "Chart Name", "Chart Version"]
|
||||
table = []
|
||||
for app_version, charts in sorted(
|
||||
data.items(), reverse=True
|
||||
):
|
||||
for chart_name, chart_data in charts.items():
|
||||
table.append(
|
||||
[app_version, chart_data["chart_name"], chart_data["chart_version"]]
|
||||
)
|
||||
print(tabulate(table, headers=headers, tablefmt="github"))
|
||||
print("\n")
|
||||
table = []
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(description="List linkerd chart versions in various formats")
|
||||
parser.add_argument(
|
||||
"--format", default="table", choices=["table", "json", "yaml"], help="Desired Output format, defaults to table"
|
||||
)
|
||||
parser.add_argument('--release_type', choices=["stable", "edge"], default="stable", help="Use the specific release type, defaults to stable")
|
||||
parser.add_argument('--helm_url', choices=["https://helm.linkerd.io"], default="https://helm.linkerd.io", help="The helm url to use" )
|
||||
args = parser.parse_args()
|
||||
|
||||
repo_name = find_repo_name(args.release_type)
|
||||
update_repo(args.release_type, args.helm_url, repo_name)
|
||||
|
||||
all_versions = list_chart_versions(charts, repo_name)
|
||||
combined_charts_by_app_version = combine_charts_by_app_version(all_versions)
|
||||
print_output(combined_charts_by_app_version, args.format)
|
||||
|
|
@ -36,6 +36,18 @@ bugfixes or enhancements.
|
|||
Commercial providers of Linkerd (e.g. [Buoyant](https://buoyant.io)) may
|
||||
provide stronger support guarantees.
|
||||
|
||||
## Helm Version Matrix
|
||||
|
||||
The following version matrices include only the latest versions of the stable
|
||||
releases along with corresponding app and helm versions for linkerd and
|
||||
extensions. Use these to guide you to the right helm chart version or to
|
||||
automate workflows you might have.
|
||||
|
||||
* [YAML matrix](./release_matrix.yaml)
|
||||
* [JSON matrix](./release_matrix.json)
|
||||
|
||||
{{< release-data-table />}}
|
||||
|
||||
## Edge (latest version: {{% latestedge %}})
|
||||
|
||||
Edge releases are frequent (usually, weekly) and can be used to work with the
|
||||
|
|
|
|||
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"stable-2.13.7": {
|
||||
"linkerd-control-plane": {
|
||||
"chart_name": "linkerd-control-plane",
|
||||
"chart_version": "1.12.7",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.12.7"
|
||||
},
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.6.1",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.6.1"
|
||||
},
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "30.8.7",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.8.7"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "30.7.7",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.7.7"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "30.8.7",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.8.7"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "30.8.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.8.5"
|
||||
}
|
||||
},
|
||||
"stable-2.14.7": {
|
||||
"linkerd-control-plane": {
|
||||
"chart_name": "linkerd-control-plane",
|
||||
"chart_version": "1.16.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.16.8"
|
||||
},
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.8.0",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.8.0"
|
||||
},
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "30.12.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.12.8"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "30.11.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.11.8"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "30.12.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.12.8"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "30.12.1",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.12.1"
|
||||
}
|
||||
},
|
||||
"stable-2.12.6": {
|
||||
"linkerd-control-plane": {
|
||||
"chart_name": "linkerd-control-plane",
|
||||
"chart_version": "1.9.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.9.8"
|
||||
},
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.6.1",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.6.1"
|
||||
},
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "30.4.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.4.8"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "30.2.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.2.8"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "30.3.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.3.8"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "30.3.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.3.8"
|
||||
}
|
||||
},
|
||||
"stable-2.10.2": {
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/2.10.2"
|
||||
},
|
||||
"linkerd2": {
|
||||
"chart_name": "linkerd2",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2/2.10.2"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/2.10.2"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/2.10.2"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/2.10.2"
|
||||
}
|
||||
},
|
||||
"stable-2.11.5": {
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/2.11.5"
|
||||
},
|
||||
"linkerd2": {
|
||||
"chart_name": "linkerd2",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2/2.11.5"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/2.11.5"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/2.11.5"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/2.11.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
stable-2.10.2:
|
||||
linkerd-jaeger:
|
||||
chart_name: linkerd-jaeger
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/2.10.2
|
||||
chart_version: 2.10.2
|
||||
linkerd-multicluster:
|
||||
chart_name: linkerd-multicluster
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/2.10.2
|
||||
chart_version: 2.10.2
|
||||
linkerd-viz:
|
||||
chart_name: linkerd-viz
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/2.10.2
|
||||
chart_version: 2.10.2
|
||||
linkerd2:
|
||||
chart_name: linkerd2
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd2/2.10.2
|
||||
chart_version: 2.10.2
|
||||
linkerd2-cni:
|
||||
chart_name: linkerd2-cni
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/2.10.2
|
||||
chart_version: 2.10.2
|
||||
stable-2.11.5:
|
||||
linkerd-jaeger:
|
||||
chart_name: linkerd-jaeger
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/2.11.5
|
||||
chart_version: 2.11.5
|
||||
linkerd-multicluster:
|
||||
chart_name: linkerd-multicluster
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/2.11.5
|
||||
chart_version: 2.11.5
|
||||
linkerd-viz:
|
||||
chart_name: linkerd-viz
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/2.11.5
|
||||
chart_version: 2.11.5
|
||||
linkerd2:
|
||||
chart_name: linkerd2
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd2/2.11.5
|
||||
chart_version: 2.11.5
|
||||
linkerd2-cni:
|
||||
chart_name: linkerd2-cni
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/2.11.5
|
||||
chart_version: 2.11.5
|
||||
stable-2.12.6:
|
||||
linkerd-control-plane:
|
||||
chart_name: linkerd-control-plane
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.9.8
|
||||
chart_version: 1.9.8
|
||||
linkerd-crds:
|
||||
chart_name: linkerd-crds
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.6.1
|
||||
chart_version: 1.6.1
|
||||
linkerd-jaeger:
|
||||
chart_name: linkerd-jaeger
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.4.8
|
||||
chart_version: 30.4.8
|
||||
linkerd-multicluster:
|
||||
chart_name: linkerd-multicluster
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.2.8
|
||||
chart_version: 30.2.8
|
||||
linkerd-viz:
|
||||
chart_name: linkerd-viz
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.3.8
|
||||
chart_version: 30.3.8
|
||||
linkerd2-cni:
|
||||
chart_name: linkerd2-cni
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.3.8
|
||||
chart_version: 30.3.8
|
||||
stable-2.13.7:
|
||||
linkerd-control-plane:
|
||||
chart_name: linkerd-control-plane
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.12.7
|
||||
chart_version: 1.12.7
|
||||
linkerd-crds:
|
||||
chart_name: linkerd-crds
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.6.1
|
||||
chart_version: 1.6.1
|
||||
linkerd-jaeger:
|
||||
chart_name: linkerd-jaeger
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.8.7
|
||||
chart_version: 30.8.7
|
||||
linkerd-multicluster:
|
||||
chart_name: linkerd-multicluster
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.7.7
|
||||
chart_version: 30.7.7
|
||||
linkerd-viz:
|
||||
chart_name: linkerd-viz
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.8.7
|
||||
chart_version: 30.8.7
|
||||
linkerd2-cni:
|
||||
chart_name: linkerd2-cni
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.8.5
|
||||
chart_version: 30.8.5
|
||||
stable-2.14.7:
|
||||
linkerd-control-plane:
|
||||
chart_name: linkerd-control-plane
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.16.8
|
||||
chart_version: 1.16.8
|
||||
linkerd-crds:
|
||||
chart_name: linkerd-crds
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.8.0
|
||||
chart_version: 1.8.0
|
||||
linkerd-jaeger:
|
||||
chart_name: linkerd-jaeger
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.12.8
|
||||
chart_version: 30.12.8
|
||||
linkerd-multicluster:
|
||||
chart_name: linkerd-multicluster
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.11.8
|
||||
chart_version: 30.11.8
|
||||
linkerd-viz:
|
||||
chart_name: linkerd-viz
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.12.8
|
||||
chart_version: 30.12.8
|
||||
linkerd2-cni:
|
||||
chart_name: linkerd2-cni
|
||||
chart_url: https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.12.1
|
||||
chart_version: 30.12.1
|
||||
|
||||
|
|
@ -0,0 +1,152 @@
|
|||
{
|
||||
"stable-2.13.7": {
|
||||
"linkerd-control-plane": {
|
||||
"chart_name": "linkerd-control-plane",
|
||||
"chart_version": "1.12.7",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.12.7"
|
||||
},
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.6.1",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.6.1"
|
||||
},
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "30.8.7",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.8.7"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "30.7.7",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.7.7"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "30.8.7",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.8.7"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "30.8.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.8.5"
|
||||
}
|
||||
},
|
||||
"stable-2.14.7": {
|
||||
"linkerd-control-plane": {
|
||||
"chart_name": "linkerd-control-plane",
|
||||
"chart_version": "1.16.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.16.8"
|
||||
},
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.8.0",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.8.0"
|
||||
},
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "30.12.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.12.8"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "30.11.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.11.8"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "30.12.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.12.8"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "30.12.1",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.12.1"
|
||||
}
|
||||
},
|
||||
"stable-2.12.6": {
|
||||
"linkerd-control-plane": {
|
||||
"chart_name": "linkerd-control-plane",
|
||||
"chart_version": "1.9.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-control-plane/1.9.8"
|
||||
},
|
||||
"linkerd-crds": {
|
||||
"chart_name": "linkerd-crds",
|
||||
"chart_version": "1.6.1",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-crds/1.6.1"
|
||||
},
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "30.4.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/30.4.8"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "30.2.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/30.2.8"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "30.3.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/30.3.8"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "30.3.8",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/30.3.8"
|
||||
}
|
||||
},
|
||||
"stable-2.10.2": {
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/2.10.2"
|
||||
},
|
||||
"linkerd2": {
|
||||
"chart_name": "linkerd2",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2/2.10.2"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/2.10.2"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/2.10.2"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "2.10.2",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/2.10.2"
|
||||
}
|
||||
},
|
||||
"stable-2.11.5": {
|
||||
"linkerd-jaeger": {
|
||||
"chart_name": "linkerd-jaeger",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-jaeger/2.11.5"
|
||||
},
|
||||
"linkerd2": {
|
||||
"chart_name": "linkerd2",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2/2.11.5"
|
||||
},
|
||||
"linkerd-multicluster": {
|
||||
"chart_name": "linkerd-multicluster",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-multicluster/2.11.5"
|
||||
},
|
||||
"linkerd-viz": {
|
||||
"chart_name": "linkerd-viz",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd-viz/2.11.5"
|
||||
},
|
||||
"linkerd2-cni": {
|
||||
"chart_name": "linkerd2-cni",
|
||||
"chart_version": "2.11.5",
|
||||
"chart_url": "https://artifacthub.io/packages/helm/linkerd2/linkerd2-cni/2.11.5"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
{{ $table := $.Site.Data.releases.release_matrix }}
|
||||
{{ $data := .Inner }}
|
||||
{{ $table_headers := slice "Chart Name" "Chart Version" "App Version" }}
|
||||
<style type="text/css" media="screen">
|
||||
|
||||
table{
|
||||
border-collapse:collapse;
|
||||
border:1px solid #000000;
|
||||
}
|
||||
th, td {
|
||||
padding: 5px;
|
||||
}
|
||||
table td{
|
||||
border:1px solid #000000;
|
||||
|
||||
}
|
||||
table th{
|
||||
border:1px solid #000000;
|
||||
}
|
||||
</style>
|
||||
<table>
|
||||
<caption>Helm to App version matrix</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="text-center">Release Name</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range $release_version, $charts := $table }}
|
||||
<tr>
|
||||
<td class="text-center">
|
||||
{{ $release_version }}
|
||||
</td>
|
||||
<td>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
{{ range $table_headers }} <th class="text-center" >{{ . | humanize }}</th> {{ end }}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ range $chart_name, $chart_data := $charts }}
|
||||
|
||||
<tr>
|
||||
<td> <a target="_blank" href="{{ $chart_data.chart_url }}">{{ $chart_name }}</a></td>
|
||||
<td> {{ $chart_data.chart_version }} </td>
|
||||
<td> {{ $release_version }} </td>
|
||||
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
Loading…
Reference in New Issue