mirror of
https://github.com/nubenetes/awesome-kubernetes.git
synced 2026-08-25 07:57:25 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
54d004e601 | ||
|
|
fa1852b88f | ||
|
|
01d3a60ce0 | ||
|
|
4cf28b9ea5 | ||
|
|
9a0d2ce7d1 | ||
|
|
89e76b0d6b | ||
|
|
2aea4a0634 | ||
|
|
5b06f98814 | ||
|
|
dfba434cdc | ||
|
|
c2e5772323 | ||
|
|
d76caa085c | ||
|
|
3d13cd83a7 | ||
|
|
a9fe5dded5 | ||
|
|
7a98574000 | ||
|
|
990994ff7a | ||
|
|
7837dde767 | ||
|
|
f574af6537 | ||
|
|
f05842eff7 | ||
|
|
154e6940c4 | ||
|
|
91769ff58e | ||
|
|
d19031a65f | ||
|
|
8420735abd | ||
|
|
ac7e582bcf | ||
|
|
94f7332477 | ||
|
|
01e34b7d28 | ||
|
|
2a39d52726 | ||
|
|
1b60f1829e | ||
|
|
c5ade61e3a | ||
|
|
e37f21b22a | ||
|
|
9313359bd3 | ||
|
|
1570a34697 | ||
|
|
d4d9062e89 | ||
|
|
12254d7495 | ||
|
|
c74fd93ab5 | ||
|
|
038c12f4d8 | ||
|
|
7118e43f73 | ||
|
|
a000b66a97 | ||
|
|
5801b8f311 | ||
|
|
00f1bc3826 | ||
|
|
640cc7d88e | ||
|
|
65d4fc3963 | ||
|
|
94ec98dd8b | ||
|
|
96332b5b00 | ||
|
|
55aeaab54b | ||
|
|
886f823c7f | ||
|
|
eb9d58e13f | ||
|
|
493f587265 | ||
|
|
1e3fefe56a | ||
|
|
0972de24e7 | ||
|
|
f298b586a9 | ||
|
|
def812e809 | ||
|
|
dc2c84066c | ||
|
|
d57210fb9e | ||
|
|
fa1a473b91 | ||
|
|
f413bebd38 | ||
|
|
0f3ed72f62 | ||
|
|
4f1117af89 | ||
|
|
a4cc05bdfc | ||
|
|
87523c5457 | ||
|
|
ba2de00ff2 | ||
|
|
098c33e879 | ||
|
|
d9860a77de | ||
|
|
e22dda5452 | ||
|
|
fd23eaa197 | ||
|
|
d5e36199c6 | ||
|
|
3cc56b9dee | ||
|
|
2f5bbb8246 | ||
|
|
dff7f5da47 | ||
|
|
2818a69da0 | ||
|
|
408344495c | ||
|
|
9047b2af3e | ||
|
|
8cb15cf20c | ||
|
|
3c28f54827 | ||
|
|
2d6c1f16ab | ||
|
|
e5c5b94d46 | ||
|
|
afe7432a55 | ||
|
|
8719fec736 | ||
|
|
ce82aa07ec | ||
|
|
0f57980748 | ||
|
|
9bc0ee991d | ||
|
|
0da202d00d | ||
|
|
42c0006340 | ||
|
|
ddbf3bdd3b | ||
|
|
3fb5fd8606 | ||
|
|
c271c69b1f | ||
|
|
8bda35ffb2 | ||
|
|
bf300df560 | ||
|
|
2963b905e5 | ||
|
|
8e6845a5cf | ||
|
|
72c80a0156 | ||
|
|
b394ee2b75 | ||
|
|
0e80915be8 | ||
|
|
79a13bd9ac | ||
|
|
c3149c3d25 | ||
|
|
76ff2c572d | ||
|
|
d36e33b3d0 | ||
|
|
8906200734 | ||
|
|
193560981c | ||
|
|
b0d1e9d5f8 | ||
|
|
a5b9841142 | ||
|
|
c737d4b52f | ||
|
|
8c44e3f665 | ||
|
|
84e5bd4d47 | ||
|
|
96e0c77d16 | ||
|
|
1c82f00594 | ||
|
|
c1ed9ce150 | ||
|
|
27be15380d | ||
|
|
8b39d2ae8e | ||
|
|
1cb2254877 | ||
|
|
ab53012f35 | ||
|
|
710ab6b536 | ||
|
|
9fdf528665 | ||
|
|
655166b83a | ||
|
|
fb6680e83e | ||
|
|
af4e2a2849 | ||
|
|
23508a4c1b | ||
|
|
cd81458560 | ||
|
|
4ff7402207 | ||
|
|
59b5508fe3 | ||
|
|
eb3efa310d | ||
|
|
56b0f539eb | ||
|
|
9f7d457819 | ||
|
|
27716bbb4c | ||
|
|
8ad4455049 | ||
|
|
59089c4918 | ||
|
|
2697f49e2c | ||
|
|
d5f71a6f84 | ||
|
|
d8fead1146 | ||
|
|
3edd424fd3 | ||
|
|
c80e1fd4b4 | ||
|
|
bba344afa8 | ||
|
|
ca83d27a3d | ||
|
|
7d28bd4e9c | ||
|
|
b015cec250 | ||
|
|
6637f3956b | ||
|
|
b111189475 | ||
|
|
049b994180 | ||
|
|
85e47f12af | ||
|
|
294b10dca5 | ||
|
|
ac1f6be919 | ||
|
|
c9bf1e46c7 | ||
|
|
84bb583cf6 | ||
|
|
466a315151 | ||
|
|
624e2ab543 | ||
|
|
40275974c0 | ||
|
|
0c5e17f874 | ||
|
|
ec8e38a1c2 | ||
|
|
f35c348ff1 | ||
|
|
9ba26201b5 | ||
|
|
a52bd87e00 | ||
|
|
16ed0cc9e1 | ||
|
|
98041bb7b4 | ||
|
|
2081c96b39 | ||
|
|
2d9d1cef09 | ||
|
|
d56192d7db | ||
|
|
088e35feac | ||
|
|
794734ad1c | ||
|
|
68b7029975 | ||
|
|
bfdec79f41 | ||
|
|
1e6c7bbd9a | ||
|
|
06f93282e2 | ||
|
|
8ee10a16ea | ||
|
|
0b3fe9c9c6 | ||
|
|
9971945e9f | ||
|
|
f721c5714b | ||
|
|
4e9d839f2e | ||
|
|
c377b4e4d9 | ||
|
|
bcbb3a2466 | ||
|
|
21a63a1992 | ||
|
|
6ef1580b43 | ||
|
|
1711eb594e | ||
|
|
680d5f83f5 | ||
|
|
b5f1a3d4a4 | ||
|
|
cedd14e128 | ||
|
|
6fb3808850 | ||
|
|
1698351fb9 | ||
|
|
48b1c80a80 | ||
|
|
b73d8315e5 | ||
|
|
d1e1ba5fb3 | ||
|
|
07ac1df305 | ||
|
|
e01f720655 | ||
|
|
8e065c5406 | ||
|
|
6b311deed5 | ||
|
|
2a90ce60ea | ||
|
|
f588a7254b | ||
|
|
a86f8f5c0a | ||
|
|
15aae43489 | ||
|
|
123d53848c | ||
|
|
7bf22fbe43 | ||
|
|
01c514b07b | ||
|
|
4d25baee03 | ||
|
|
3fa1370e30 | ||
|
|
a083fb2af4 | ||
|
|
f16a1ae9c0 | ||
|
|
a6e166661f | ||
|
|
f51d4094a1 | ||
|
|
fcdc4d0ec1 | ||
|
|
fcf47473da | ||
|
|
dcc323ead3 | ||
|
|
16784ce925 | ||
|
|
09d7a68ef8 | ||
|
|
a96919d3ad | ||
|
|
fdb93ccc16 | ||
|
|
e14e78c6e9 | ||
|
|
a07267dd2b | ||
|
|
58d1be6522 | ||
|
|
bff5d72a89 | ||
|
|
266499ac2f | ||
|
|
a6cf0d97ef | ||
|
|
41e4fc9502 | ||
|
|
15ffc91ec2 | ||
|
|
385c7f03da | ||
|
|
088dc12a8e | ||
|
|
a477989bc1 | ||
|
|
e7d9c0eccc | ||
|
|
7c8f36addd | ||
|
|
8643517e2e | ||
|
|
4ef377d62d | ||
|
|
ae0af172dc | ||
|
|
70f64d37b0 | ||
|
|
4d0be41548 | ||
|
|
b79209ab5e | ||
|
|
e21f237fa9 | ||
|
|
b22d1748c4 | ||
|
|
9bbb82b00c | ||
|
|
c7662a35b4 | ||
|
|
f983d787b0 | ||
|
|
c41028e023 | ||
|
|
ea5e6e80df | ||
|
|
d60cd4de4a | ||
|
|
bd5499a9c6 | ||
|
|
bfe743a6cd | ||
|
|
2e281e98ea | ||
|
|
32a2f5925a | ||
|
|
49b3405097 | ||
|
|
d90763f8bd | ||
|
|
17f438553b | ||
|
|
8f6fc3caad | ||
|
|
851efb3050 | ||
|
|
a5ff06cafb | ||
|
|
e1df3938d5 | ||
|
|
f91afaa6d2 | ||
|
|
dc8cdac96d | ||
|
|
44b4b81317 | ||
|
|
b52f793ea5 | ||
|
|
f60d071e40 | ||
|
|
57ebe6cec3 | ||
|
|
60abdc60d5 | ||
|
|
1834227e72 | ||
|
|
19b7b44e20 | ||
|
|
4cd9c4bbf0 | ||
|
|
600dceff4e | ||
|
|
2b7f55ad9d | ||
|
|
c76ad03539 | ||
|
|
ad62e46f9e | ||
|
|
48e8f71b6d | ||
|
|
d1d986bf78 | ||
|
|
81a73acc65 | ||
|
|
c095672810 | ||
|
|
2c9b460462 | ||
|
|
ebba2c81f6 | ||
|
|
92dab5e0ee | ||
|
|
da96dbc08a | ||
|
|
5eec0880f7 | ||
|
|
b470c4acdb | ||
|
|
c70aef8b78 | ||
|
|
3ff5a4e29a | ||
|
|
94ac0b73a2 | ||
|
|
3669753fb1 | ||
|
|
00cf39f19b | ||
|
|
8eea34b1d1 | ||
|
|
8ad8230014 | ||
|
|
ebc7e7a26f | ||
|
|
6a1b944e45 | ||
|
|
a05d33381a | ||
|
|
2b5bb54d94 | ||
|
|
803870adc5 | ||
|
|
eeef76614d | ||
|
|
cc9e7ae220 | ||
|
|
47aec8ed87 | ||
|
|
d31cf94c8d | ||
|
|
9f70c32ff5 | ||
|
|
7425a6a4cb | ||
|
|
891f4b8dbd | ||
|
|
7c467ea752 | ||
|
|
6050b39545 | ||
|
|
29abd31e56 | ||
|
|
6090747083 | ||
|
|
fe08a271f4 | ||
|
|
1fe0509433 | ||
|
|
d9ed471d16 | ||
|
|
6bed317cdc | ||
|
|
a0927d47f7 | ||
|
|
543e3c4d82 | ||
|
|
6a4a1278df | ||
|
|
a6b0b19fbd | ||
|
|
59d6234792 | ||
|
|
e95cd9dc56 | ||
|
|
68078fa253 | ||
|
|
79e0fc7f53 | ||
|
|
5ade4daaec | ||
|
|
421765d66f | ||
|
|
4eb8e1c21c | ||
|
|
9d13a6a21a | ||
|
|
5de57738cb | ||
|
|
c90d45cb4b | ||
|
|
325eb8a83a | ||
|
|
361f34a74a | ||
|
|
89016b7e64 | ||
|
|
4212b1f5ae | ||
|
|
8cd85a35e8 | ||
|
|
f85439c757 | ||
|
|
0d10c89a0f | ||
|
|
919ecd9dfd | ||
|
|
882baa7917 | ||
|
|
1def1edd28 | ||
|
|
1fe5356c7c |
@@ -66,8 +66,12 @@ jobs:
|
||||
echo "No changes in inventory to commit."
|
||||
else
|
||||
git commit -m "chore: update inventory stars and licenses [skip ci]"
|
||||
git pull origin develop --rebase
|
||||
git push origin develop
|
||||
# Retry rebase+push to survive concurrent bot pushes to develop.
|
||||
for i in {1..5}; do
|
||||
git pull origin develop --rebase && git push origin develop && exit 0
|
||||
echo "Push attempt $i/5 rejected — retrying..."; sleep $((i * 3))
|
||||
done
|
||||
echo "::error::Inventory metadata push failed after 5 attempts."; exit 1
|
||||
fi
|
||||
|
||||
- name: Persist Incremental Inventory to Cache
|
||||
|
||||
@@ -80,8 +80,12 @@ jobs:
|
||||
echo "No changes in AI analysis to commit."
|
||||
else
|
||||
git commit -m "chore: update inventory AI analysis"
|
||||
git pull origin develop --rebase
|
||||
git push origin develop
|
||||
# Retry rebase+push to survive concurrent bot pushes to develop.
|
||||
for i in {1..5}; do
|
||||
git pull origin develop --rebase && git push origin develop && exit 0
|
||||
echo "Push attempt $i/5 rejected — retrying..."; sleep $((i * 3))
|
||||
done
|
||||
echo "::error::Inventory AI-analysis push failed after 5 attempts."; exit 1
|
||||
fi
|
||||
|
||||
- name: Persist Incremental Inventory to Cache
|
||||
|
||||
@@ -90,8 +90,12 @@ jobs:
|
||||
echo "No automated changes to commit."
|
||||
else
|
||||
git commit -m "docs: update Video Hub with high-fidelity metadata"
|
||||
git pull origin develop --rebase
|
||||
git push origin develop
|
||||
# Retry rebase+push to survive concurrent bot pushes to develop.
|
||||
for i in {1..5}; do
|
||||
git pull origin develop --rebase && git push origin develop && exit 0
|
||||
echo "Push attempt $i/5 rejected — retrying..."; sleep $((i * 3))
|
||||
done
|
||||
echo "::error::Video Hub push failed after 5 attempts."; exit 1
|
||||
fi
|
||||
|
||||
- name: Persist Incremental Inventory Cache
|
||||
|
||||
@@ -124,37 +124,49 @@ jobs:
|
||||
python -m src.safety_readme
|
||||
|
||||
- name: Commit and Push V2 Elite Updates
|
||||
env:
|
||||
PYTHONPATH: ${{ github.workspace }}
|
||||
run: |
|
||||
git config --global user.name "Nubenetes Bot"
|
||||
git config --global user.email "bot@nubenetes.com"
|
||||
git add -A
|
||||
if git diff --staged --quiet; then
|
||||
echo "No automated changes to commit."
|
||||
else
|
||||
git commit -m "feat: sync V2 elite curated edition and README metrics [skip ci]"
|
||||
# Pull, rebase, and push with automatic resolution of README.md conflicts
|
||||
for i in {1..5}; do
|
||||
if git pull origin develop --rebase; then
|
||||
if git push origin develop; then
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "Rebase conflict detected, attempting self-healing..."
|
||||
# Discard local conflicting changes to README.md and accept remote
|
||||
git checkout --ours README.md || git checkout --theirs README.md
|
||||
git add README.md
|
||||
# Continue rebase
|
||||
GIT_EDITOR=true git rebase --continue || { git rebase --abort; git pull origin develop; }
|
||||
# Re-run README sync to update metrics with remote state incorporated
|
||||
python -m src.readme_updater
|
||||
python -m src.safety_readme
|
||||
git add README.md
|
||||
git commit --amend --no-edit
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
git push origin develop
|
||||
exit 0
|
||||
fi
|
||||
git commit -m "feat: sync V2 elite curated edition and README metrics [skip ci]"
|
||||
OUR=$(git rev-parse HEAD)
|
||||
# Deterministic publish loop (replaces the fragile rebase + --ours/--theirs
|
||||
# self-healing that could hang on a conflict and discard the bot's metrics).
|
||||
# The render is authoritative for its generated surface, so each attempt:
|
||||
# 1. hard-resets to the freshest remote tip (no conflict possible),
|
||||
# 2. overlays our generated outputs verbatim (docs/, v2-docs/, inventory,
|
||||
# news_digest) — source configs in data/ are left untouched,
|
||||
# 3. regenerates README.md (a pure function of the inventory) on top,
|
||||
# 4. commits and pushes; on rejection it retries from the new tip.
|
||||
GENERATED="docs v2-docs data/inventory.yaml data/inventory.sql data/news_digest.json"
|
||||
for i in {1..5}; do
|
||||
echo "Publish attempt $i/5..."
|
||||
git fetch origin develop
|
||||
git reset --hard origin/develop
|
||||
git checkout "$OUR" -- $GENERATED
|
||||
python -m src.readme_updater
|
||||
python -m src.safety_readme
|
||||
git add -A
|
||||
if git diff --staged --quiet; then
|
||||
echo "Remote already matches this render. Nothing to push."
|
||||
exit 0
|
||||
fi
|
||||
git commit -m "feat: sync V2 elite curated edition and README metrics [skip ci]"
|
||||
if git push origin develop; then
|
||||
echo "Push succeeded on attempt $i."
|
||||
exit 0
|
||||
fi
|
||||
echo "Attempt $i rejected — remote advanced, retrying from fresh tip..."
|
||||
sleep $((i * 3))
|
||||
done
|
||||
echo "::error::V2 publish push failed after 5 attempts (persistent write contention on develop)."
|
||||
exit 1
|
||||
|
||||
- name: Create or Update Promotion PR to Master
|
||||
env:
|
||||
|
||||
@@ -58,31 +58,34 @@ jobs:
|
||||
run: |
|
||||
git config --global user.name "Nubenetes Bot"
|
||||
git config --global user.email "bot@nubenetes.com"
|
||||
git add README.md
|
||||
if git diff --staged --quiet; then
|
||||
echo "No changes in README.md to commit."
|
||||
else
|
||||
export PYTHONPATH=$PYTHONPATH:.
|
||||
# README.md is a *pure function* of the inventory, so we never need to
|
||||
# preserve a local README state: each attempt hard-resets to the freshest
|
||||
# remote tip, regenerates, commits and pushes. This eliminates the two
|
||||
# failure classes that previously broke this job:
|
||||
# 1. Dirty-tree abort — the earlier steps modify README.md, then
|
||||
# `git pull` aborted with "local changes would be overwritten by merge".
|
||||
# 2. Merge/rebase --ours/--theirs confusion under concurrent bot pushes.
|
||||
# A push can now only be rejected if the remote advanced between reset and
|
||||
# push; we simply retry from the new tip. No conflict resolution required.
|
||||
for i in {1..5}; do
|
||||
echo "README sync attempt $i/5..."
|
||||
git fetch origin develop
|
||||
git reset --hard origin/develop
|
||||
python src/readme_updater.py
|
||||
python src/safety_readme.py
|
||||
git add README.md
|
||||
if git diff --staged --quiet; then
|
||||
echo "README already in sync with inventory. Nothing to commit."
|
||||
exit 0
|
||||
fi
|
||||
git commit -m "docs: automated README metric synchronization [skip ci]"
|
||||
# Pull, rebase, and push with automatic resolution of README.md conflicts
|
||||
for i in {1..5}; do
|
||||
if git pull origin develop --rebase; then
|
||||
if git push origin develop; then
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
echo "Rebase conflict detected, attempting self-healing..."
|
||||
# Discard local conflicting changes to README.md and accept remote
|
||||
git checkout --ours README.md || git checkout --theirs README.md
|
||||
git add README.md
|
||||
# Continue rebase
|
||||
GIT_EDITOR=true git rebase --continue || { git rebase --abort; git pull origin develop; }
|
||||
# Re-run README sync to update metrics with remote state incorporated
|
||||
python -m src.readme_updater
|
||||
python -m src.safety_readme
|
||||
git add README.md
|
||||
git commit --amend --no-edit
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
git push origin develop
|
||||
fi
|
||||
if git push origin develop; then
|
||||
echo "Push succeeded on attempt $i."
|
||||
exit 0
|
||||
fi
|
||||
echo "Attempt $i rejected — remote advanced, retrying from fresh tip..."
|
||||
sleep $((i * 3))
|
||||
done
|
||||
echo "::error::README sync failed after 5 attempts (persistent write contention on develop)."
|
||||
exit 1
|
||||
|
||||
@@ -25,6 +25,9 @@ jobs:
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
submodules: true
|
||||
# Full history so mkdocs-git-revision-date-localized can compute the
|
||||
# real per-page "last updated" date (shallow clone => all build-date).
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v6
|
||||
|
||||
@@ -10,6 +10,11 @@ on:
|
||||
required: false
|
||||
type: string
|
||||
|
||||
# Cancel superseded Guardian runs when a PR is updated (saves CI minutes + Gemini calls).
|
||||
concurrency:
|
||||
group: pr-guardian-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
agentic-presubmit:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -35,6 +40,11 @@ jobs:
|
||||
pip install --no-cache-dir pydantic PyGithub httpx fake-useragent pytz python-dotenv pyyaml tenacity
|
||||
|
||||
- name: Run PR Guardian Analysis
|
||||
# Advisory gate: the Guardian is an AI heuristic that can misattribute
|
||||
# pre-existing lines or mischaracterize a PR. It always posts its findings
|
||||
# as a PR comment, but a non-zero exit must NOT show the PR as a blocking
|
||||
# red ❌. continue-on-error keeps the check green while preserving the comment.
|
||||
continue-on-error: true
|
||||
env:
|
||||
GEMINI_API_KEY_1: ${{ secrets.GEMINI_API_KEY_1 }}
|
||||
GEMINI_API_KEY_2: ${{ secrets.GEMINI_API_KEY_2 }}
|
||||
@@ -49,7 +59,10 @@ jobs:
|
||||
run: |
|
||||
git config --global user.name "nubenetes-bot"
|
||||
git config --global user.email "bot@nubenetes.com"
|
||||
git add docs/ v2-docs/ README.md data/inventory.yaml data/inventory.sql src/memory/
|
||||
# NOTE: v2-docs/ is deliberately excluded. It is generated by
|
||||
# src/v2_optimizer.py (single source of truth); re-formatting it here
|
||||
# caused a perpetual cosmetic develop<->master drift (see pr_guardian.py).
|
||||
git add docs/ README.md data/inventory.yaml data/inventory.sql src/memory/
|
||||
if ! git diff --cached --quiet; then
|
||||
git commit -m "style(cleaner): auto-correcting formatting & URL normalization"
|
||||
git push origin HEAD:${{ github.event.pull_request.head.ref }} || echo "⚠️ Push failed (likely fork permission limit)."
|
||||
|
||||
@@ -10,6 +10,11 @@ on:
|
||||
paths:
|
||||
- '**/*.md'
|
||||
|
||||
# Supersede in-flight lint runs for the same PR/branch on new commits.
|
||||
concurrency:
|
||||
group: md-linter-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
+330
@@ -5,6 +5,336 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [[2.9.38]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.38) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **OpenShift submenu + grouped Kubernetes distros**: The Kubernetes menu's OpenShift entry only linked to the generic overview, hiding the substantial OpenShift 4 page (`ocp4`, 29 links) amid the ocp3-deprecated/openshift/ocp4 confusion. OpenShift is now a nested submenu (OpenShift ▸ → OpenShift 4 (current) · Overview · OpenShift 3 (legacy)), reusing the AWS nested-submenu mechanism. The Kubernetes distributions/platforms are grouped at the end of the menu — Managed K8s · OpenShift ▸ · Rancher · Distros & Alternatives (`kubernetes-alternatives` moved here and relabeled). The 2-column Kubernetes menu was also switched from CSS multicol to a deterministic column-major grid (11 rows × 2 cols, `overflow:visible`), removing a faint sub-pixel scrollbar. Verified in Chrome 148 (Playwright + screenshot): clean 2-column card with no scrollbar at viewport heights 768–1080; the OpenShift submenu opens to the side and keeps the parent open. Cache-bust `?v=2.9.38`; V2-only.
|
||||
|
||||
## [[2.9.37]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.37) - 2026-06-20
|
||||
|
||||
### Fixed
|
||||
- **Kubernetes quick-nav menu reliability**: The Kubernetes dropdown (22 items) was the only menu tall enough to need a scrollbar on an anchor-positioned popover, which made it open/behave unreliably compared to the others. It now uses a 2-column layout (`column-count: 2`), halving its height (~731px → ~353px) so it shows in full without a scrollbar at any realistic viewport; multicol is column-major, so reading order is preserved. Also removed `flip-block` from the menu position-try fallbacks (kept `flip-inline`): the quick-nav is a sticky top bar, so a tall menu flipping above would shoot off the top of the screen — menus now always open downward. Verified in Chrome 148 (Playwright) at viewport heights 700–1080. Cache-bust `?v=2.9.37`; V2-only.
|
||||
|
||||
## [[2.9.36]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.36) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **Quick-nav fully regrouped into 11 thematic menus + nested AWS submenu**: Reorganized the quick-nav into one direct pill (Topic Map) plus 11 category dropdowns that group related topics so every destination has a sensible home: Digest · Kubernetes (Overview · Docker · Tools · Helm · kubectl · all kubernetes-* · Managed · OpenShift · Rancher) · Delivery (GitOps · CI/CD · DevOps · Argo · Flux · Tekton · Jenkins · …) · IaC (Terraform · IaC · Ansible · Pulumi · Crossplane · Kustomize) · Cloud · Network · Security · Observability & SRE · AI & Data · Dev & Platform · More. Docker now lives inside Kubernetes; GitOps + CI/CD + DevOps share Delivery; Terraform + IaC share IaC. **AWS is a nested submenu inside Cloud** (Cloud → AWS ▸ → 8 AWS pages), built with nested Popover API + explicit `anchor()` side-positioning (position-area's horizontal axis isn't honored when the anchor is inside another popover). Pages may appear in more than one menu where it aids discovery; menus get `max-height:82vh` + scroll for the tall Kubernetes menu. Verified in Chrome 148 (Playwright). Cache-bust `?v=2.9.36`; V2-only.
|
||||
- **AWS + Kubernetes provider hubs now live**: This release also publishes the regenerated v2-docs from v2.9.34/v2.9.35 — the AWS landing page (3 → ~40 links + "Deep-Dive Topic Pages" hub, trivial sub-pages consolidated) and the Kubernetes sub-page hub.
|
||||
|
||||
## [[2.9.35]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.35) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **Kubernetes provider hub**: A fragmentation audit found only two prefix clusters — `aws` (fixed in v2.9.34) and `kubernetes`. Unlike AWS, Kubernetes is well-classified (rich parent at 157 links + substantial distinct children: tools 144, networking 64, security 52, monitoring 24, …), so nothing is merged. This adds a "Deep-Dive Topic Pages" hub to `kubernetes.md` indexing its 14 substantial sub-pages (Tools · Networking · Security · Monitoring · Storage · Autoscaling · Operators · Alternatives · Big Data · Tutorials · Backup & Migrations · Client Libraries · Local Dev · On-Premise) — purely additive navigation, no merging or pruning. Other small pages (pulumi, kustomize, registries, …) are legitimate distinct topics and were intentionally left alone. Generator-only (`src/v2_optimizer.py`); republished on the next curation run.
|
||||
|
||||
## [[2.9.34]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.34) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **AWS page de-fragmentation + provider hub**: The AWS landing page rendered with only ~3 links because AWS content was split across ~20 granular pages (Azure/GCP use a single rich page each), many with just 1-5 links. Two generator changes in `src/v2_optimizer.py` fix this: (A) `aws.md` now renders a "Deep-Dive Topic Pages" hub linking to the substantial sub-pages that remain (Serverless · Storage · Networking · Security · IaC · Backup · New Features) via a new `subpage_hubs` map; (B) the near-empty / junk-drawer AWS sub-pages (≤7 links + "miscellaneous": aws-pricing, aws-training, aws-data, aws-messaging, aws-tools-scripts, aws-monitoring, aws-architecture, aws-containers, aws-devops, aws-databases, aws-miscellaneous) merge into `aws.md` via the existing `merge_map`, with their slugs removed from `dimensions` so the pipeline prunes the orphans and auto-syncs the nav. Verified with `--render-only`: aws.md goes from 3 to 44 links plus the 7-child hub. V1 (`docs/`) is untouched by design (exhaustive archive + merge source). Generator-only; the AWS pages are republished on the next curation run.
|
||||
|
||||
## [[2.9.33]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.33) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **Quick-nav menu expansion — 38 destinations**: Data-driven expansion of the hybrid quick-nav (ranked by per-page link count + relevance). New 📊 Digest menu pairs both editions (Tech & Cloud Digest + Industry & Geo Digest); new 🧰 K8s menu surfaces the Kubernetes ecosystem (Kubernetes Tools · Helm · Managed K8s · OpenShift · Tutorials). Existing menus grew: ☁️ Cloud += Serverless · FinOps; 🌐 Network += Service Mesh (Istio emoji → ⛵); ⚙️ Ops += IaC · Developer Portals; ⋯ More += Technical Tags · Demos. 38 destinations total across 6 direct pills + 7 Popover menus; chip font trimmed to 0.62rem with tighter gap/padding so all 13 bar chips fit one row down to ~1280px. Verified in Chrome 148 (Playwright): every menu opens below its button, flips near the right edge, and closes on Esc. Cache-bust `?v=2.9.33`; V2-only.
|
||||
|
||||
## [[2.9.32]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.32) - 2026-06-20
|
||||
|
||||
### Fixed
|
||||
- **Quick-nav menus open below their button + fit one row**: Fixed two issues in the v2.9.31 hybrid quick-nav (verified in Chrome 148 via Playwright). (1) The Popover category menus did not visibly open on click — they used `position-area: bottom span-inline-end`, which mixes a physical keyword (`bottom`) with a logical one (`span-inline-end`); that is invalid CSS and silently computed to `none`, leaving the menu in its static position on top of the button. Fixed with a valid all-physical `position-area: bottom span-right` plus explicit `anchor-name` / `position-anchor` pairs per button↔menu, so each menu reliably drops below its trigger and auto-flips near the right edge. (2) The bar wrapped to a second row on common displays — reduced the chip font ~1pt (`0.7rem → 0.64rem`) and trimmed the column-gap/padding so all 7 pills + 5 menus fit a single row down to 1280px viewports. Cache-bust `?v=2.9.32`; V2-only, CSS-only.
|
||||
|
||||
## [[2.9.31]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.31) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **Hybrid quick-nav — direct pills + Popover category menus**: Collapsed the 25-destination quick-nav from 3 wrapped rows to a single slim row that stays one row regardless of how many destinations are added. The most-used flagships remain direct one-click pills (Topic Map · Digest · Kubernetes · Docker · GitOps · Terraform · AI & MCP); the long-tail clusters fold into five category menus — ☁️ Cloud, 🌐 Network, 🔐 Security, ⚙️ Ops, ⋯ More — built with the native HTML Popover API + CSS Anchor Positioning (Baseline 2026), zero JS. Menus drop below their button via `position-area` with flip fallbacks, animate in with `@starting-style`, rotate their caret via `:has()`, and inherit the Popover API's built-in Esc / click-outside dismissal and focus management (identical on touch and desktop); `prefers-reduced-motion` honored. All 25 destinations preserved. Touches `docs/overrides/main.html` + `docs/static/v2_elite.css` (cache-bust `?v=2.9.31`); V2-only, no page regeneration.
|
||||
|
||||
## [[2.9.30]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.30) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **Quick-nav — networking cluster + DevSecOps**: Grew the quick-nav bar to 25 destinations. Added a new networking cluster after the cloud providers (🌐 Networking · 🕸️ Istio · 🔗 K8s Net) and DevSecOps alongside Security (🔐 Security · 🛡️ DevSecOps), keeping short labels and category grouping. Template-only change to `docs/overrides/main.html` reusing the existing `.nb-quicknav` pill styling — no CSS change, no page regeneration. V2-only.
|
||||
|
||||
## [[2.9.29]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.29) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **Quick-nav redesign — centered category-grouped pill chips**: Grew the quick-nav bar to 21 destinations and restyled it as a modern, centered chip bar. Added CI/CD, Ansible, and the three hyperscalers (AWS, Azure, GCP), and reordered every tab into related category clusters with short labels: discovery (Topic Map · Digest · Videos) → platform (Kubernetes · Docker) → delivery (GitOps · CI/CD) → IaC (Terraform · Ansible) → cloud (AWS · Azure · GCP) → security → ops (Observability · SRE · DevOps) → data (Messaging) → AI/ML (AI & MCP · MLOps) → Methodology → V1 Archive (muted). Chip background/border/glow are derived from the theme accent via `color-mix(in srgb, …)` (Chrome 111+) so the bar restyles automatically with the palette; rows are centered (`justify-content: center`) for a balanced multi-row layout, with hover lift, `:focus-visible` outline, `prefers-reduced-motion` support, and a mobile single-row horizontal scroll. Touches `docs/overrides/main.html` + `docs/static/v2_elite.css` (cache-bust `?v=2.9.29`); V2-only, no page regeneration.
|
||||
|
||||
## [[2.9.28]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.28) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **Expanded quick-nav bar**: Grew the slim quick-nav bar from 6 to 16 curated one-click destinations, surfacing the principal topics across all of Nubenetes from any page. Added the cloud-native pillars (Kubernetes · Docker · GitOps · Terraform · K8s Security · Observability), the ops disciplines (SRE · DevOps), data/messaging (Message Queue), and MLOps alongside the existing AI & MCP hub. Template-only change to `docs/overrides/main.html` (no CSS change, no page regeneration); reuses the existing `.nb-quicknav__link` styling with `flex-wrap` handling density on narrow viewports. Still under the 18-tab overflow line the bar was designed to avoid. V2-only.
|
||||
|
||||
## [[2.9.27]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.27) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **Slim quick-nav bar**: A thin horizontal bar below the header on every V2 page with six curated one-click destinations (Topic Map · Intelligence Digest · Video Hub · AI & MCP · Methodology · V1 Archive). These cross-cutting destinations previously only existed as badge cards on the home; the bar makes them persistently reachable from any depth. Implemented by overriding Material's `tabs` block (empty since `navigation.tabs` is disabled) plus `.nb-quicknav` CSS — so it adds persistent shortcuts WITHOUT reintroducing the 18-tab overflow and WITHOUT collapsing the full collapsible left navigation tree. Template/CSS-only (no page regeneration); V2-only.
|
||||
|
||||
## [[2.9.26]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.26) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **Collapsible, nested left navigation**: After moving the sections to the left sidebar in 2.9.25, they rendered as a *flat* list of 18 labels with no expand/indent — `navigation.sections` made them non-collapsible group labels and `navigation.prune` stripped the inactive children. Disabled both so the sidebar is now a proper collapsible, nested, indented tree (14 toggles / chevrons, collapsed by default, click to expand). No size penalty (88,213 vs 88,516 bytes per page).
|
||||
|
||||
### Added
|
||||
- **Home section headings**: The V2 home had a single H2, leaving its right-hand "On this page" TOC empty. Added `## Explore the Ecosystem` (badge cards) and `## Trending Now` (Intelligence Digest) alongside the existing `## The Cloud Native Universe We Track`, so the home's right TOC now lists three real sections. Net effect: both side columns are now useful on every page — left = full collapsible directory, right = per-page section map.
|
||||
|
||||
## [[2.9.25]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.25) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **V2 navigation: tabs → left sidebar**: The 18 top-level sections were rendered as a horizontal tab bar (`navigation.tabs`), whose labels total ~3300px and overflowed a typical ~1400px laptop viewport — forcing horizontal scroll to reach the right-side dimensions and leaving the left sidebar nearly empty on top-level pages like the home. Disabled `navigation.tabs` (+ `.sticky`) so the sections render in the standard vertical left sidebar: it handles all 18 collapsed sections via normal scroll, stays populated on every page (the home's rendered nav goes from 23 links to the full 178-link tree), and nothing clips. Theme-only change preserved across publishes (the optimizer's nav-sync only rewrites the `nav:` block).
|
||||
|
||||
## [[2.9.24]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.24) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **Per-page JSON-LD structured data**: Each V2 content page now emits a second JSON-LD block — a schema.org `CollectionPage` tied to the existing `WebSite`/`Organization` `@graph` — carrying the page name, description, URL, and `datePublished` / `dateModified` fed by the `git-revision-date-localized` plugin's raw ISO dates (the creation/last-update dates from 2.9.23). This enables article/collection rich snippets in search results with real freshness dates. Template-only change (`docs/overrides/main.html`), applied at build time; the homepage is skipped (it is already the `WebSite` entity), and JSON is built with `| tojson` for safe escaping.
|
||||
|
||||
## [[2.9.23]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.23) - 2026-06-20
|
||||
|
||||
### Changed
|
||||
- **Richer per-page SEO meta descriptions**: The unique-but-templated descriptions from 2.9.22 now lead with each page's **top-ranked resource names** (long-tail keywords) — e.g. *"Top Kubernetes resources for 2026, AI-ranked: Helm, kube-prometheus and more — curated Cloud Native tools, guides and references."* URL/path-like and emoji-laden titles are filtered out, pages whose top links are all URL-like fall back to the clean template, and the text is capped at ~160 chars on a word boundary. (There is no per-page AI intro to mine, so the page's own top resources are the cleanest source.)
|
||||
|
||||
### Added
|
||||
- **Per-page creation dates**: Enabled `enable_creation_date` on the `git-revision-date-localized` plugin, so every V2 page footer now shows both **Created** and **Last update** — an additional age/freshness signal alongside the last-modified date introduced in 2.9.18.
|
||||
|
||||
## [[2.9.22]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.22) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **robots.txt**: Added `v2-docs/robots.txt` (deployed at the site root) that allows full crawl and references both the V2 (root) and V1 (`/v1/`) sitemaps — previously the site shipped a `sitemap.xml` with no `robots.txt` pointing at it.
|
||||
|
||||
### Changed
|
||||
- **Unique per-page SEO meta descriptions**: Every V2 page previously fell back to the identical global `site_description`, so ~140 pages shared one `<meta name="description">` (a duplicate-content SEO penalty). `v2_optimizer.py` now emits a unique `description:` front-matter per page — derived from the page title and its strategic dimension — which Material renders as `<meta name="description">` and `og:description`. The Topic Map and Methodology pages get tailored descriptions. The 12 redirect-stub pages were intentionally left untouched (they already 0s meta-refresh redirect with `canonical` pointing at the target, which passes authority better than `noindex`).
|
||||
|
||||
## [[2.9.21]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.21) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **README database & lifecycle diagrams**: Added two new collapsible Mermaid diagrams — a **Database Architecture** diagram (§6.1.3) detailing the YAML + SQLite coexistence engine (`inventory.sql` Git source-of-truth → in-memory SQLite → `inventory.yaml` mirror, plus the per-resource schema), and a **full Data Lifecycle** diagram (§6.3) tracing a resource from discovery and ingestion through cached maintenance/enrichment to render and deploy, with background garbage collection.
|
||||
|
||||
### Changed
|
||||
- **Grouped, compact Technical Tags Index TOC**: The `tags.md` table of contents was a flat 80-entry numbered list that buried the 8 maturity tags under a long tail of one-resource "X Content" language tags. It is now grouped into *Maturity and Quality* (numbered) plus *Technical Domains* / *Language and Format* (compact, count-sorted inline rows). Generator (`v2_optimizer.py`) now emits unique explicit heading anchors (`{#slug}`) shared by the TOC and section headers — fixing collisions where `C` / `C#` / `C++` all resolved to `#c-content` — corrects the `1 resource` grammar, and filters non-language values (`En`, `Not Applicable`, `Multi-Language`, `Polyglot`, …) that previously created meaningless tag buckets.
|
||||
- **README mermaid legibility & accuracy**: Fixed text overflow in four diagrams (Division of Labor, Agentic Data Flow, Debate Protocol, Deployment Lifecycle) by wrapping long node labels, removed a duplicate edge, and refreshed the V2 feature documentation with the v2.9.16–v2.9.20 work (Topic Map & Methodology pages, per-page last-updated dates, JSON-LD, branded 404, deterministic generated artifacts).
|
||||
|
||||
## [[2.9.20]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.20) - 2026-06-20
|
||||
|
||||
### Fixed
|
||||
- **RSS feed drift fully eliminated**: The 2.9.19 fix derived the feed's `<lastBuildDate>` from `_meta.last_updated`, but that analysis timestamp is bumped on every publish even when the ranked content is unchanged, so `v2-docs/feed.xml` still drifted between `develop` and `master`. `src/rss_generator.py` now derives `lastBuildDate` from the **freshest item's content date** (the items only change when the ranking actually changes), with `_meta.last_updated`/a constant as fallbacks. Verified deterministic across reruns, and the `develop` and `master` digests both yield `2026-06-18` — so `feed.xml` is now byte-identical across branches and no longer spawns no-op promotion diffs.
|
||||
|
||||
## [[2.9.19]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.19) - 2026-06-20
|
||||
|
||||
### Fixed
|
||||
- **Deterministic RSS `lastBuildDate` (residual develop↔master drift)**: `src/rss_generator.py` set the feed's `<lastBuildDate>` to `datetime.utcnow()`, so every republish rewrote it even when the digest was unchanged — leaving a perpetual 1-line diff in `v2-docs/feed.xml` (the last residual after the PR Guardian drift fix in 2.9.18). It now derives the date from the digest's `_meta.last_updated` (the actual analysis timestamp), falling back to the most recent item date then a fixed constant, making the feed a pure function of its input. Verified byte-identical output across repeated runs; the feed now changes only when the digest content actually changes.
|
||||
- **In-page filter no longer injected on Topic Map & Methodology**: The resource search / maturity-tag widget (`static/v2_filter.js`) auto-injects wherever a page has `<ul><li>` items. Topic Map lists category links (with counts) and Methodology lists legend rows — neither carries `.md-tag` maturity tags, so the pills always filtered to zero and the "Showing X of Y resources" counter mis-counted categories/rows as resources. Added both pages to the widget's existing `<h1>`-based skip-list (alongside the home, Video Hub, Tags and Digest pages). Cache-bust `v2_filter.js?v=2.9.19`.
|
||||
|
||||
## [[2.9.18]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.18) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **Per-page "Last update" dates (SEO freshness)**: Enabled the `git-revision-date-localized` MkDocs plugin on the V2 portal, surfacing a real last-modified date on every page. Added the dependency to `requirements.txt`, configured it in `v2-mkdocs.yml` (`type: date`, `fallback_to_build_date: true` so a missing git history never fails the build), and set `fetch-depth: 0` on the `06.deploy_final.yml` checkout so the plugin reads full history instead of collapsing every page to the build date.
|
||||
- **JSON-LD structured data**: Injected schema.org `WebSite` (with a sitelinks `SearchAction`) + publishing `Organization` markup via an `extrahead` block in `docs/overrides/main.html`, making the canonical `nubenetes.com` root eligible for richer search results and knowledge-panel association. Validated: build exits 0 and the emitted JSON-LD parses to `[WebSite, Organization]`.
|
||||
|
||||
### Fixed
|
||||
- **`develop ↔ master` cosmetic drift loop (recurring no-op release PRs)**: The PR Guardian (`07.1.pr_guardian.yml` → `src/pr_guardian.py`) ran its auto-formatter ("&"→"and" in headings, URL trailing-slash/tracking-param stripping) on every changed `.md` — including the **generated** `v2-docs/` tree — and committed the result back to the PR branch. Because feature PRs land on `develop` (Guardian runs) but release branches merge to `master` via plain `git merge` (Guardian does not run), `develop` accumulated the normalized form while `master` kept the generator's raw form, producing a perpetual cosmetic diff that spawned recurring no-op "🚀 Release: Agentic V2 Portal Update" PRs (e.g. #399). Since `v2_optimizer.py` is the single source of truth for `v2-docs/` formatting, the Guardian now skips that tree in its auto-format loop and drops it from the auto-commit `git add`; hand-authored `docs/` and `README`/`inventory` are unaffected.
|
||||
|
||||
## [[2.9.17]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.17) - 2026-06-20
|
||||
|
||||
### Fixed
|
||||
- **Topic Map heading increment (MD001 lint failure)**: The new `topic-map.md` page emitted its per-dimension headings as `###` (h3) directly under the page `#` (h1) title, skipping h2. This tripped `markdownlint` **MD001/heading-increment**, turning the `07.2. Markdown Linter` workflow red on both `develop` and `master` right after the v2.9.16 release. Fixed the generator (`v2_optimizer.py`) and the committed page to emit dimensions as `##` (h2), and updated the CSS selector to `.topic-map-dim h2`. As a bonus, the h2 dimensions now populate the right-hand "On this page" TOC with a clean per-dimension index. Verified with the exact CI `markdownlint` config (0 errors); cache-bust bumped to `?v=2.9.17`.
|
||||
|
||||
## [[2.9.16]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.16) - 2026-06-20
|
||||
|
||||
### Added
|
||||
- **V2 Topic Map page**: A new `topic-map.md` (generated by `v2_optimizer.py`) presents the complete category directory grouped by strategic dimension in a **responsive multi-column CSS grid** (3 → 2 → 1 columns), with a **per-category resource count** badge derived from a recursive walk of each category's link tree. This replaces the ~130-link "Strategic Dimensions" dump that previously bloated the home page, and is reachable from a new hero badge card and the top-level nav.
|
||||
- **V2 Methodology page**: The Maturity Taxonomy and Technical Impact (star score) legend tables moved out of the home into a dedicated `methodology.md`, leaving the landing page focused while keeping the reference one click away.
|
||||
- **Branded 404 page** (`docs/overrides/404.html`, shared V1/V2): replaces the theme's bare "404 - Not found" with a helpful page offering Home / Topic Map / V1 Archive — a safety net for the deep-link stability the portal depends on.
|
||||
|
||||
### Changed
|
||||
- **Home landing page restructured for altitude**: Moved the fresh, dynamic **Trending Now / Intelligence Digest** block *above* the signature YouTube channel mosaic (previously the static mosaic pushed the live content below the fold). The mosaic is preserved as a brand showcase and now closes the page under a new **"The Cloud Native Universe We Track"** heading, with a slim reference footer linking the Topic Map, Methodology and Video Hub.
|
||||
- **YouTube mosaic legibility & performance**: Surfaced the seven per-group category labels that were previously hidden in a `title=` tooltip (visible accent-bordered labels), and added `loading="lazy"` to the ~150 channel logos for a meaningful LCP/initial-load improvement.
|
||||
- **About page videos hardened**: The two embedded videos now use `youtube-nocookie.com` (no tracking cookies until play — consistent with the active `privacy` plugin), `loading="lazy"`, and a responsive `aspect-ratio` wrapper that no longer overflows on mobile.
|
||||
- **Collapsed left navigation**: Disabled `navigation.expand` in `v2-mkdocs.yml`; with ~169 nav entries it forced every section open (heavy DOM, overwhelming). The new Topic Map page now serves as the full scannable directory.
|
||||
- **CSS hygiene**: Hoisted repeated inline styles (hero badge row) into `v2_elite.css` classes and bumped the cache-bust to `?v=2.9.16`.
|
||||
|
||||
## [[2.9.15]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.15) - 2026-06-19
|
||||
|
||||
### Changed
|
||||
- **Navigable Intelligence Digest TOC**: The Tech & Cloud and Industry & Geo digest pages now show their sections in the right-hand "On this page" TOC. They were rendered period-first (three time-window tabs, each nesting every category as **bold text**), so the pages had zero real headings and an empty TOC. Inverted the layout in `_generate_digest_pages()` to **category-first**: each category is a real `##` heading (Kubernetes & Orchestration, Containers & Runtime, … / Americas, Europe, Spain, Asia-Pacific), with the three time-windows (3 / 6 / 12 months) as content tabs *inside* each category. The TOC now lists all 22 tech categories and 4 geo regions exactly once, headings sit at column 0 (no more MD023 workaround), and the tabbed UX is preserved.
|
||||
|
||||
## [[2.9.14]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.14) - 2026-06-19
|
||||
|
||||
### Changed
|
||||
- **Deterministic V2 Publisher Push (04.1)**: Replaced the fragile rebase + `git checkout --ours/--theirs README.md` self-healing in `04.1.agentic_v2_publish.yml` — which could hang on a non-README conflict and silently discard the bot's README metrics — with the same deterministic model now used by `05.1`. The render is authoritative for its generated surface, so each attempt hard-resets to the freshest `origin/develop` tip, overlays the generated outputs verbatim (`docs/`, `v2-docs/`, `data/inventory.yaml`, `data/inventory.sql`, `data/news_digest.json` — source configs like `link_rules.yaml`/`special_assets.yaml` are deliberately left untouched), regenerates `README.md` on top, then commits and pushes with a 5-attempt retry. This never hangs on a conflict and never loses data. Also pinned `PYTHONPATH` on the step so the in-loop `readme_updater`/`safety_readme` calls always resolve `src`.
|
||||
|
||||
## [[2.9.13]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.13) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **README Sync Dirty-Tree / Race Failure (root cause)**: `05.1.readme_sync.yml` modified `README.md` in earlier steps and then ran `git pull`, which aborted with *"Your local changes to README.md would be overwritten by merge"* — guaranteed to fail whenever a concurrent bot commit (e.g. the V2 Publisher's `[skip ci]` sync) advanced `develop` first. Rewrote the commit step as a `fetch → reset --hard origin/develop → regenerate → commit → push` retry loop. Since `README.md` is a *pure function* of the inventory, hard-resetting to the freshest remote tip is always safe and removes the merge-conflict and `--ours/--theirs` confusion classes entirely. A push is now only rejected if the remote advances mid-attempt, in which case it retries from the new tip.
|
||||
|
||||
### Changed
|
||||
- **Inventory Push Retries (03.1 / 03.2 / 03.3)**: The metadata, AI-analysis and Video-Hub workflows did a single `git pull --rebase && git push` with no retry, so any rejection from a concurrent push failed the run. Wrapped each in a 5-attempt rebase+push loop (matching the proven `09.weekly_digest.yml` idiom).
|
||||
- **PR Guardian is now advisory (07.1)**: The AI presubmit is a heuristic that can misattribute pre-existing lines or mischaracterize a PR (it flagged an untouched `about.md` line on PR #392). It still posts its findings as a PR comment, but `continue-on-error: true` stops a non-zero exit from showing the PR as a blocking red ❌. Added PR-scoped `concurrency` so superseded runs are cancelled (saving CI minutes and Gemini calls).
|
||||
- **Markdown Linter concurrency (07.2)**: Added PR/branch-scoped `concurrency` with `cancel-in-progress` so new commits supersede in-flight lint runs.
|
||||
|
||||
## [[2.9.12]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.12) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **V2 In-Page Search/Tag Filter Disappeared**: The per-page resource search box with maturity tag-pills (`static/v2_filter.js`) stopped appearing on every page after `navigation.instant` was enabled in the `2026-06-19` MkDocs UX overhaul. The widget hooked only `DOMContentLoaded`, which under Material's instant (SPA) navigation fires solely on the first load — subsequent in-nav page swaps never re-injected it. Reworked the script to initialize through Material's `document$` observable (emits on every instant navigation, with a `DOMContentLoaded` fallback), guard against double-injection, bind the clickable-tag delegation once on `document`, and show a "no results" state. Cache-bust bumped to `?v=2.9.12`.
|
||||
|
||||
### Changed
|
||||
- **Removed Redundant In-Page Table of Contents**: Dropped the Markdown `## Table of Contents` block from all 156 V2 content pages and from the renderer (`v2_optimizer.py`). It duplicated the theme's heading index and, on large pages, forced hundreds of links of scroll before any content (e.g. `kubernetes-tools` 297 lines, `kubernetes` 295, `demos` 227). Replaced by the MkDocs Material native sticky **"On this page"** TOC: removed `toc.integrate` and added `toc.follow` in `v2-mkdocs.yml` so headings render in the right sidebar and track scroll position. The `tags.md` index page keeps its TOC (it *is* a navigation index).
|
||||
|
||||
## [[2.9.10]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.10) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **README Sync Push Loop**: Rewrote the `05.1.readme_sync.yml` retry logic to use a push-first / merge-on-rejection loop instead of a pull-first / rebase loop. The old rebase loop never attempted a push after self-healing — it cycled back to `git pull --rebase`, hitting a fresh conflict on every iteration (×5) because a concurrent V2 sync workflow kept advancing `develop`. Additionally, `--ours` during a rebase refers to the *upstream* side, so the bot's README metrics were silently discarded each round. The fix: pull latest before committing (shrinks conflict window), then retry with `git merge -X ours` (correct semantics) after each rejected push.
|
||||
- **Digest Table Broken by Pipe in Title**: Titles containing ` | ` (e.g. "Neo, Now in the Terminal | Pulumi Blog") broke the Markdown table in `tech-digest.md` because the unescaped pipe was parsed as a column separator. Root cause in `v2_optimizer.py`: the `why` column escaped pipes (`.replace("|", "-")`) but the link title `t` did not. Fixed with `.replace("|", r"\|")` on the title. The 4 already-rendered broken entries in `tech-digest.md` are corrected directly.
|
||||
|
||||
## [[2.9.9]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.9) - 2026-06-19
|
||||
|
||||
### Changed
|
||||
- **Changelog Backfill**: Reconstructed the missing `2.6.0`–`2.9.1` entries from the GitHub Release notes, closing the gap where `CHANGELOG.md` had stalled at `2.5.8` while releases reached `2.9.x`. The changelog is now complete and continuous.
|
||||
|
||||
## [[2.9.8]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.8) - 2026-06-19
|
||||
|
||||
### Changed
|
||||
- **Inventory `gh_pushed` Data Cleanup**: Normalized 281 existing inventory entries whose `gh_pushed` date field held the literal string `"N/A"` to `null`, completing the `2.9.4` source fix. Deterministic and CI-reproducible (`last_checked` already migrated to integer by the pipeline).
|
||||
- **Changelog Maintenance**: Documented releases `2.9.2`–`2.9.8` in `CHANGELOG.md`.
|
||||
|
||||
## [[2.9.7]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.7) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Hero Card Height Consistency**: Aligned the emoji-based "Intelligence Digest" hero card with the other four logo cards on the V2 index by giving `.hero-badge-icon` a 100px flex-centered box in `v2_elite.css` (was ~32px tall). Cache-bust bumped to `?v=2.9.7`.
|
||||
|
||||
## [[2.9.6]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.6) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Deterministic Inventory Dump**: Stored `last_checked` as an `INTEGER` (epoch seconds) instead of a `REAL` in `inventory_manager.py`, normalizing the value on the entry before both the SQL and YAML dump. SQLite's version-specific `REAL`→text float printing previously rewrote ~every row of `inventory.sql` when regenerated outside CI. Verified `load→save` idempotent and byte-identical between local SQLite 3.40.1 and the CI-equivalent `python:3.11` (SQLite 3.46.1).
|
||||
|
||||
## [[2.9.5]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.5) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Index Outage (Runaway YouTube Mosaic)**: Fixed `reorganize_mosaic.load_inventory_channels()` selecting channels by `'youtube_mosaic' in entry` (key presence). Because the SQL round-trip materializes that column as an empty dict `{}` on every entry, the filter matched all ~18,647 inventory entries and emitted ~18.6k inline image links on a single line — producing a 4 MB `v2-docs/index.md` (and 2.9 MB `docs/index.md`) that hung both the V1 and V2 index pages. Now only entries with a non-empty `youtube_mosaic` dict and a logo image are rendered (136 curated channels).
|
||||
|
||||
## [[2.9.4]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.4) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **`gh_pushed` Source Normalization**: The enrichment writers (`fast_enrich.py`, `gemini_utils.py`) now store `gh_pushed` as `None` when GitHub data is unavailable, instead of the string `"N/A"` that reached `datetime.fromisoformat()` downstream. `gh_license` keeps its displayed `"N/A"` string sentinel.
|
||||
- **Curator Date-Parse Hardening**: Guarded the twin `fromisoformat()` call in `agentic_curator.py`'s MVQ-penalty check so a bad date value can't crash a curation batch.
|
||||
|
||||
### Added
|
||||
- **Inventory Migration Script**: Added `scripts/normalize_gh_pushed.py` to clean existing `gh_pushed: "N/A"` rows.
|
||||
|
||||
## [[2.9.3]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.3) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Platinum Audit Null Handling**: Hardened `safety_guard.py` against null/`"N/A"` inventory fields. The MVQ compliance check no longer passes `"N/A"` to `datetime.fromisoformat()` or multiplies a `None` star count; the linguistic-tagging check no longer calls `None.lower()` on a null `language` (which had aborted the entire audit). Each mandate now runs in isolation so one bad entry cannot kill the whole report.
|
||||
|
||||
## [[2.9.2]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.2) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Dark-Theme CSS Flashes**: Removed `content-visibility: auto` from broad `<ul>`/`<ol>` selectors and `.v2-tag-section` in `v2_elite.css`. On the slate (dark) theme it caused black flashes while scrolling and made link lists below the index mosaic appear collapsed (intrinsic-size mismatch). The tags page already uses collapsed `<details>` for native render-skipping, so the optimization was redundant. Cache-bust bumped to `?v=2.9.2`.
|
||||
|
||||
## [[2.9.1]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.1) - 2026-06-19
|
||||
|
||||
### Changed
|
||||
- **Incremental Digest Engine**: Each `(category × period)` cell in `news_digest.json` now stores a fingerprint (`entry_hash`, `entry_count`, `last_analyzed`, `method`) of its entry pool. Before calling Gemini, the engine checks the hash and staleness (`MAX_STALENESS_DAYS=30`) and reuses the stored result on a match — dropping Gemini calls from 66 to 0 when the inventory is unchanged, and to ~5–10 for a new ingestion batch.
|
||||
- **Trending Badge Source**: The freshness badge now shows the actual Gemini analysis date from `_meta.last_updated`.
|
||||
|
||||
### Removed
|
||||
- Redundant GitHub Actions digest cache (the committed `news_digest.json` is the persistent store) and the invalid `extra_head` key from `v2-mkdocs.yml`.
|
||||
|
||||
## [[2.9.0]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.9.0) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Portal Outage — Publisher/Deploy Safety**: Resolved a multi-bug portal outage. Pruning and nav sync are now skipped entirely in `--render-only` mode (CI uses it, and pruning had deleted pages that the render pass didn't regenerate); page deletion is gated on `_sync_enterprise_navigation` returning success; the fragile `nav:` regex was replaced with a string split; and the deploy now verifies the V2 build has a minimum page count (50+ HTML pages + `index.html`) before overwriting V1, falling back to V1-only if V2 looks broken. Pages in `self.dimensions` are never pruned.
|
||||
|
||||
## [[2.8.5]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.8.5) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **V2 Build**: Removed the invalid `extra_head` key from `v2-mkdocs.yml` (was breaking V2 HTML generation) and fixed a broken `digital-money.md → finops.md` redirect (now points to `kubernetes.md` since `finops.md` was removed by the publisher).
|
||||
|
||||
## [[2.8.4]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.8.4) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Comprehensive None-Stars Guard**: Replaced all `.get('stars', 0)` patterns in `v2_optimizer.py` with `.get('stars') or 0`, fixing `TypeError: '>=' not supported between NoneType and int` in `_render_single_link` and 13 other comparison/arithmetic sites.
|
||||
|
||||
## [[2.8.3]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.8.3) - 2026-06-19
|
||||
|
||||
### Added
|
||||
- **Digest Cache**: The publisher and weekly cron now cache `data/news_digest.json` with a day-scoped key (`news-digest-YYYY-MM-DD`). Same-day re-runs restore from cache and skip Gemini entirely (~20 min CI + 66 API calls saved per skipped run).
|
||||
|
||||
## [[2.8.2]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.8.2) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **None-Stars Sort Crashes**: Fixed three `-x.get('stars', default)` sites in `v2_optimizer.py` that crashed with `TypeError: bad operand for unary -: 'NoneType'` when `stars` was null, using the `-(x.get('stars') or default)` pattern (`sort_rec`, `trending_pool`, `sorted_links`).
|
||||
|
||||
## [[2.8.1]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.8.1) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **None `resource_type` Crash**: Fixed `AttributeError: 'NoneType' object has no attribute 'lower'` in `_calculate_tags` when `resource_type` was present but null, via `(item.get('resource_type') or 'Reference')`.
|
||||
|
||||
## [[2.8.0]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.8.0) - 2026-06-19
|
||||
|
||||
### Added
|
||||
- **geo_region Inference**: `_infer_geo_from_url()` maps URL TLDs to regions (`.es`→España, EU TLDs→Europe, APAC TLDs→Asia-Pacific, Americas TLDs→Americas), populating the industry digest.
|
||||
- **Freshness Badge**: The Trending section header shows an `Updated <date>` pill derived from `news_digest.json` mtime.
|
||||
- **Search Boost**: `tech-digest.md` and `industry-digest.md` are generated with `search.boost: 2` frontmatter.
|
||||
- **RSS Feed**: New `src/rss_generator.py` emits `v2-docs/feed.xml` (top-20 from the 3-month digest) with autodiscovery links, at `https://nubenetes.com/feed.xml`.
|
||||
- **Weekly Cron**: `.github/workflows/09.weekly_digest.yml` runs Mondays 06:00 UTC to regenerate the digest and trigger the publisher.
|
||||
|
||||
## [[2.7.1]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.7.1) - 2026-06-19
|
||||
|
||||
### Changed
|
||||
- **Cleaner Index**: Removed the `digest-preview` list from the index — the trending cards already show the same content with better design. Flow is now hero amber card → trending cards → `/tech-digest/`.
|
||||
|
||||
## [[2.7.0]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.7.0) - 2026-06-19
|
||||
|
||||
### Added
|
||||
- **Intelligence Digest Hero Card**: New amber `Intelligence Digest` card on the V2 index linking to `/tech-digest/`, plus a `digest-preview` mini-block showing the top pick from 5 priority categories. New `hero-badge-card--amber` and `digest-preview` CSS components.
|
||||
|
||||
## [[2.6.9]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.9) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **NoneType Crashes Across Pipeline**: Inventory entries with `stars: null` crashed `_calculate_tags` (`v2_optimizer.py`), the title-dedup index and entry scoring (`dedup.py`), and category sorting (`news_digest.py`). Replaced `.get("stars", 0)` with `.get("stars") or 0`.
|
||||
|
||||
## [[2.6.8]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.8) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Unbounded License Check**: `detect_license_changes()` iterated every entry with `gh_license` set (thousands of GitHub API calls). Applied the `MAX_REPOS_DEFAULT=200` cap, bringing total enrichment time to ~3–4 min.
|
||||
|
||||
## [[2.6.7]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.7) - 2026-06-19
|
||||
|
||||
### Changed
|
||||
- **Enrichment 7.5× Faster**: Reduced GitHub activity enrichment from 2 API calls/repo to 1 (`open_issues_count` already includes PRs), capped at 200 repos/run, 0.5s delay, with 429 backoff — ~100s vs 12.5 min.
|
||||
|
||||
## [[2.6.6]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.6) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **CNCF Enrichment API**: The CNCF Landscape API became a SPA and stopped returning JSON. Enrichment now queries the GitHub Search API with official CNCF maturity topics (`cncf-graduated`/`cncf-incubating`/`cncf-sandbox`) using the existing `GH_TOKEN`.
|
||||
|
||||
## [[2.6.4]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.4) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Differentiated Digest Periods**: 3/6/12-month windows now yield 10/15/20 items per category; backfilled `discovered_at` entries appear in wider windows; null-`stars` entries no longer crash the generator.
|
||||
|
||||
## [[2.6.3]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.3) - 2026-06-19
|
||||
|
||||
### Added
|
||||
- **First Real Intelligence Digest**: Generated locally with 0 Gemini tokens — 22 categories, 660 items (220 per period) from the 18,647-entry inventory, with star-based ranking (upgrades to AI ranking on the next keyed pipeline run).
|
||||
|
||||
## [[2.6.2]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.2) - 2026-06-19
|
||||
|
||||
### Fixed
|
||||
- **Clean URL Policy**: Removed the `offline` plugin that forced `.html` suffixes on all V2 URLs (breaking SEO/deep-links) and added placeholder `tech-digest.md`/`industry-digest.md` pages to prevent 404s before the first Gemini run. `use_directory_urls: true` is now mandatory and `offline` permanently forbidden (documented in `CLAUDE.md`/`GEMINI.md`/`README`).
|
||||
|
||||
## [[2.6.1]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.1) - 2026-06-19
|
||||
|
||||
### Added
|
||||
- **Agent Instructions**: Created `CLAUDE.md` (Gitflow, repo structure, build commands, conventions) and added a Gitflow section to `GEMINI.md` so both AI agents follow the branching model automatically.
|
||||
|
||||
## [[2.6.0]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.6.0) - 2026-06-19
|
||||
|
||||
### Added
|
||||
- **AI-Powered Intelligence Digest**: 26-category news digest engine with Gemini ranking, 3/6/12-month temporal panels, Trending Now cards, and dedicated `tech-digest`/`industry-digest` pages with company & geo_region extraction.
|
||||
- **Data Quality Pipeline**: CNCF Landscape integration, GitHub activity enrichment, license-change detection, a deduplication engine (URL + content-hash + 85% title similarity), and AI re-evaluation flagging for stale entries.
|
||||
- **MkDocs UX Overhaul**: Enabled tags/RSS/minify/PWA plugins, instant navigation with prefetch, breadcrumbs, footer nav, and an announcement bar (28 improvements across 31 files, 4 new modules, 18,647 entries backfilled).
|
||||
|
||||
### Fixed
|
||||
- **Disabled Plugins**: Fixed plugins being nested under `theme:` in MkDocs config (silently disabled since deployment).
|
||||
|
||||
## [[2.5.8]](https://github.com/nubenetes/awesome-kubernetes/releases/tag/v2.5.8) - 2026-06-18
|
||||
|
||||
### Added
|
||||
|
||||
@@ -24,7 +24,7 @@ This repository uses **Gitflow**. All agents MUST follow this branching model:
|
||||
10. Create GitHub Release: `gh release create vX.Y.Z --title "..." --notes "..."`
|
||||
|
||||
### Versioning
|
||||
- Current: `v2.6.0`
|
||||
- Current: `v2.9.2`
|
||||
- Format: `v{major}.{minor}.{patch}`
|
||||
- Major: breaking changes or architectural shifts
|
||||
- Minor: new features (like the digest engine, new modules)
|
||||
|
||||
@@ -135,14 +135,14 @@ Additionally, as of May 2026, Nubenetes has reached the **Platinum Operational T
|
||||
## 2. Repository Metrics and Evolution
|
||||
|
||||
### 2.1. The "Heart" of Nubenetes
|
||||
(Stats as of 2026-06-19)
|
||||
(Stats as of 2026-06-20)
|
||||
|
||||
<!-- HEART_STATS_START -->
|
||||
| Metric | Value |
|
||||
| :--- | :--- |
|
||||
| **Total Technical Resources (Links)** | **18647+** |
|
||||
| **Specialized MD Pages** | **162** |
|
||||
| **Total Commits** | **6114+** |
|
||||
| **Total Commits** | **6435+** |
|
||||
| **Primary AI Engine** | **Google Gemini (Agentic)** |
|
||||
<!-- HEART_STATS_END -->
|
||||
|
||||
@@ -180,7 +180,7 @@ The growth of Nubenetes reflects the acceleration of the Cloud Native ecosystem.
|
||||
| 6 | 2023 | 30 | 123 | Maintenance & Refinement |
|
||||
| 7 | 2024 | 53 | 218 | Curation Strategy Pivot |
|
||||
| 8 | 2025 | 5 | 20 | Stability & Research Phase |
|
||||
| 9 | 2026 | 2555 | 10,552 | **Agentic AI Surge** (May 2026 Inception) |
|
||||
| 9 | 2026 | 2876 | 11,877 | **Agentic AI Surge** (May 2026 Inception) |
|
||||
<!-- ANNUAL_GROWTH_END -->
|
||||
|
||||
<!-- ANNUAL_CHART_START -->
|
||||
@@ -195,9 +195,9 @@ config:
|
||||
xychart-beta
|
||||
title "Nubenetes Annual Growth Metrics (2018–2026)"
|
||||
x-axis ["2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026"]
|
||||
y-axis "Volume (Commits / Estimated New Refs)" 0 --> 11000
|
||||
bar [1445, 586, 8449, 2193, 1660, 123, 218, 20, 10552]
|
||||
bar [350, 142, 2046, 531, 402, 30, 53, 5, 2555]
|
||||
y-axis "Volume (Commits / Estimated New Refs)" 0 --> 12000
|
||||
bar [1445, 586, 8449, 2193, 1660, 123, 218, 20, 11877]
|
||||
bar [350, 142, 2046, 531, 402, 30, 53, 5, 2876]
|
||||
```
|
||||
<!-- ANNUAL_CHART_END -->
|
||||
|
||||
@@ -207,7 +207,7 @@ xychart-beta
|
||||
| :--- | :---: | :---: | :--- |
|
||||
| 2026-04 | 25 | 103 | Active Curation |
|
||||
| 2026-05 | 2101 | 8,677 | **Agentic Inception (Gemini Era)** |
|
||||
| 2026-06 | 429 | 1,771 | Active Curation |
|
||||
| 2026-06 | 750 | 3,097 | Active Curation |
|
||||
<!-- MONTHLY_SURGE_END -->
|
||||
|
||||
### 2.4. Content Distribution and Semantic Clustering
|
||||
@@ -350,9 +350,9 @@ Nubenetes partitions AI Agent tasks between the automated cloud pipeline and loc
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["awesome-kubernetes Repository"] --> B["GEMINI.md<br>(Curation & Data Mandates)"]
|
||||
A --> C[".gemini/skills/awesome-kubernetes-ops/SKILL.md<br>(Local Dev Operations Guide)"]
|
||||
|
||||
A["awesome-kubernetes Repository"] --> B["GEMINI.md<br>(Curation and Data Mandates)"]
|
||||
A --> C[".gemini/skills/<br>awesome-kubernetes-ops/SKILL.md<br>(Local Dev Operations Guide)"]
|
||||
|
||||
B --> D["Cloud Automation<br>(GitHub Actions runner)"]
|
||||
B --> E["Local Workspace<br>(Antigravity Coding Session)"]
|
||||
|
||||
@@ -443,6 +443,15 @@ The V2 portal includes an **AI-powered Intelligence Digest** system that surface
|
||||
- **Clean URLs enforced**: Both V1 and V2 use `use_directory_urls: true` producing SEO-friendly URLs (e.g., `/kubernetes/` not `/kubernetes.html`).
|
||||
- **Offline plugin permanently removed**: The MkDocs `offline` plugin forces `.html` suffixes on all URLs, breaking thousands of existing deep-links and SEO authority. It is explicitly forbidden in both `CLAUDE.md` and `GEMINI.md` mandates.
|
||||
|
||||
#### V2 Home Restructure and SEO (v2.9.16–v2.9.20)
|
||||
- **Category-first landing page**: The home leads with the dynamic **Trending Now / Intelligence Digest**, followed by the signature YouTube mosaic (now framed under a *"The Cloud Native Universe We Track"* heading with **visible per-group category labels** and `loading="lazy"` on its ~150 logos).
|
||||
- **Topic Map page** ([`topic-map.md`](v2-docs/topic-map.md)): The complete category directory grouped by strategic dimension in a **responsive multi-column CSS grid**, with a **per-category resource count** derived from a recursive walk of each category's link tree. Replaces the long flat "Strategic Dimensions" list that previously bloated the home.
|
||||
- **Methodology page** ([`methodology.md`](v2-docs/methodology.md)): The Maturity Taxonomy and Technical Impact (star-score) legend tables, moved off the home into a dedicated reference page.
|
||||
- **Per-page "Last update" dates**: The `git-revision-date-localized` plugin surfaces a real last-modified date on every page (freshness signal for SEO and readers); the deploy checkout uses `fetch-depth: 0` for full history.
|
||||
- **JSON-LD structured data**: schema.org `WebSite` (with a sitelinks `SearchAction`) + publishing `Organization` markup injected via `docs/overrides/main.html` for richer search results.
|
||||
- **Branded 404 page** and **privacy-friendly video embeds** (`youtube-nocookie.com` + lazy-loading + responsive `aspect-ratio` wrapper).
|
||||
- **Deterministic generated artifacts**: the RSS feed's `lastBuildDate` derives from item content dates (not wall-clock), and the PR Guardian no longer auto-formats the generated `v2-docs/` tree — both eliminating spurious `develop ↔ master` churn.
|
||||
|
||||
### 5.3. Architecture Comparison Matrix: V1 vs. V2
|
||||
To better understand the dual-nature of the project, the following matrix details the technical and philosophical differences between the two editions:
|
||||
|
||||
@@ -550,6 +559,41 @@ To guarantee backward compatibility and Git efficiency, the system operates on a
|
||||
* **Structural Intelligence**: `hierarchy` (Recursive JSON list), `tags` (JSON list), `v1_locations`, `v2_locations`, `youtube_mosaic` (JSON dict).
|
||||
* **Platinum Lifecycle**: `content_hash` (SHA256 fingerprint), `health_score` (0-100), `source_provenance`, `social_preview_url`, `mentions_count`, `addition_method`.
|
||||
|
||||
#### 6.1.3. Database Architecture Diagram (YAML + SQLite Coexistence)
|
||||
The following diagram details the dual-format storage engine: the flat `inventory.sql` text file is the Git source of truth, compiled into an in-memory SQLite database at runtime for relational queries, then decompiled back on save and mirrored to `inventory.yaml` for backward-compatible, high-speed parsing.
|
||||
|
||||
<details><summary>🗺️ <b>View Database Architecture Diagram</b></summary>
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
subgraph GIT["Git Source of Truth (versioned · 1 line per resource)"]
|
||||
SQL["data/inventory.sql<br/>flat SQL text"]
|
||||
YAML["data/inventory.yaml<br/>backward-compatible mirror"]
|
||||
end
|
||||
|
||||
SQL -->|"compile on load"| MEM[("In-memory SQLite<br/>relational schema + SQL queries")]
|
||||
MEM -->|"iterdump() on save"| SQL
|
||||
MEM -->|"dual-save sync"| YAML
|
||||
YAML -->|"CSafeLoader / CSafeDumper<br/>native C speed (10-20x)"| PARSE["Python consumers<br/>v2_optimizer · reorganize_mosaic<br/>safety_guard"]
|
||||
AI["Gemini AI agents"] -->|"JSON messages in / out"| MEM
|
||||
|
||||
subgraph SCHEMA["Per-resource record — url = Primary Key"]
|
||||
CORE["Core<br/>title · year · stars 0-5<br/>description V1 · ai_summary V2 · category"]
|
||||
STRUCT["Structural<br/>hierarchy JSON · tags JSON<br/>v1/v2_locations · youtube_mosaic JSON"]
|
||||
PLAT["Platinum lifecycle<br/>content_hash SHA256 · health_score<br/>discovered_at · last_ai_eval · addition_method"]
|
||||
end
|
||||
|
||||
MEM -.->|"defines"| CORE
|
||||
MEM -.->|"defines"| STRUCT
|
||||
MEM -.->|"defines"| PLAT
|
||||
|
||||
style SQL fill:#bbf,stroke:#333,stroke-width:2px
|
||||
style MEM fill:#f96,stroke:#333,stroke-width:2px
|
||||
style YAML fill:#86efac,stroke:#333,stroke-width:2px
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### 6.2. The 'Database-First' Reasoning Protocol (Zero-Redundancy)
|
||||
To maximize economic efficiency and maintain the **30-minute execution standard**, all AI agents follow a **Database-First** and **Zero-Redundancy** protocol:
|
||||
1. **Local Lookup**: Before initiating any Gemini call, the agent queries the compiled SQLite/SQL database to see if the URL is already indexed.
|
||||
@@ -561,7 +605,48 @@ To maximize economic efficiency and maintain the **30-minute execution standard*
|
||||
7. **Mandatory Persistence**: Modified databases are automatically injected into Pull Requests, ensuring that "System Memory" is version-controlled and shared across all workflows.
|
||||
|
||||
### 6.3. Database Lifecycle and Hygiene
|
||||
To maintain a high-performance "Single Source of Truth", Nubenetes implements automated hygiene protocols:
|
||||
To maintain a high-performance "Single Source of Truth", Nubenetes implements automated hygiene protocols. The diagram below traces a resource's full lifecycle — from autonomous discovery and ingestion, through incremental (cached) maintenance and enrichment, to rendering and deployment — with continuous background garbage collection.
|
||||
|
||||
<details><summary>🗺️ <b>View Full Data Lifecycle Diagram</b></summary>
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
subgraph S1["1 · Discovery and Ingestion"]
|
||||
SRC["X.com · RSS · GitHub Trending<br/>autonomous source discovery"] --> CUR["Agentic Curator<br/>dedup · vaporware filter · scoring"]
|
||||
end
|
||||
CUR -->|"new resources"| DB[("Unified DB<br/>inventory.sql + inventory.yaml")]
|
||||
|
||||
subgraph S2["2 · Maintenance and Enrichment (incremental + cached)"]
|
||||
HEALTH["Health Monitor<br/>200 OK · rescue 404s"]
|
||||
META["Metadata Engine<br/>GitHub stars · license · CNCF status"]
|
||||
AIEVAL["AI Curator<br/>summary · hierarchy · tags · debate"]
|
||||
DRIFT["Drift and Staleness<br/>SHA256 · re-eval after 6 months"]
|
||||
end
|
||||
DB <--> HEALTH
|
||||
DB <--> META
|
||||
DB <--> AIEVAL
|
||||
DB <--> DRIFT
|
||||
|
||||
subgraph S3["3 · Render"]
|
||||
DB -->|"surgical line edits"| V1["V1 Archive<br/>docs/"]
|
||||
DB -->|"elite selection + rebuild"| V2["V2 Portal<br/>v2-docs/"]
|
||||
DB --> AUX["RSS feed · digest<br/>README metrics"]
|
||||
end
|
||||
|
||||
subgraph S4["4 · Publish and Deploy"]
|
||||
V1 --> REL["develop → master<br/>tag + GitHub Release"]
|
||||
V2 --> REL
|
||||
REL --> PAGES["Native GH Pages<br/>nubenetes.com"]
|
||||
end
|
||||
|
||||
GC["Bi-monthly GC<br/>orphan pruning · audit log"] -.->|"hygiene"| DB
|
||||
|
||||
style DB fill:#f96,stroke:#333,stroke-width:2px
|
||||
style PAGES fill:#86efac,stroke:#333,stroke-width:2px
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
- **Universal Rescue Protocol (The Resurrection Rule)**: For ALL technical resources, the engine refuses to delete a link immediately upon a 404 or generic redirect. Instead, it triggers a "Technical Resurrection" cycle using **Real-time Web Grounding** to identify specific paths on destination domains. This is essential for preserving legendary content during massive corporate site migrations (e.g., **Nginx** to **F5**, or the **Ansible Blog** move to personal domains).
|
||||
- **High-Value Preservation (The 'Review Required' Rule)**: Resources identified as **High-Value** (marked with 🌟 or bold formatting) are exempt from automatic deletion. If rescue fails, they are marked as `status: review_required` for manual verification, ensuring no significant technical assets are lost during autonomous cleaning.
|
||||
|
||||
@@ -761,10 +846,10 @@ graph TD
|
||||
end
|
||||
|
||||
subgraph "Agentic Tiering and Debate (Multi-Agent)"
|
||||
AA["Analyst Agent (Flash)"]
|
||||
AV["Auditor Agent (Pro)"]
|
||||
MCP[["MCP Grounding (Search)"]]
|
||||
DBT["Consensus and Debate (Flash and Pro)"]
|
||||
AA["Analyst Agent<br/>(Flash)"]
|
||||
AV["Auditor Agent<br/>(Pro)"]
|
||||
MCP[["MCP Grounding<br/>(Search)"]]
|
||||
DBT["Consensus and Debate<br/>(Flash and Pro)"]
|
||||
end
|
||||
|
||||
AC -->|"Raw Discovery"| AA
|
||||
@@ -876,19 +961,19 @@ To eliminate individual LLM rating bias, resolve borderline cases, and prevent a
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A["New Resource Found"] --> FP["Fast-Pass Evaluator (Flash)"]
|
||||
FP -->|Confident Score Outside 60-75| G["Accept / Reject Directly"]
|
||||
FP -->|Borderline Score 60-75| B["Persona 1: Security Architect"]
|
||||
FP -->|Borderline Score 60-75| C["Persona 2: Cloud Native SRE"]
|
||||
FP -->|Borderline Score 60-75| D["Persona 3: AI Platform Engineer"]
|
||||
B --> E["Independent expert Evaluations"]
|
||||
A["New Resource Found"] --> FP["Fast-Pass Evaluator<br/>(Flash)"]
|
||||
FP -->|Confident Score Outside 60-75| G["Accept /<br/>Reject Directly"]
|
||||
FP -->|Borderline Score 60-75| B["Persona 1:<br/>Security Architect"]
|
||||
FP -->|Borderline Score 60-75| C["Persona 2:<br/>Cloud Native SRE"]
|
||||
FP -->|Borderline Score 60-75| D["Persona 3:<br/>AI Platform Engineer"]
|
||||
B --> E["Independent Expert<br/>Evaluations"]
|
||||
C --> E
|
||||
D --> E
|
||||
E -->|Expert Scores Diverge >= 15 points| F["Trigger Debate Round"]
|
||||
E -->|Expert Scores Diverge >= 15 points| F["Trigger<br/>Debate Round"]
|
||||
E -->|Expert Scores Converge| G
|
||||
F --> H["Round-Robin Discussion: Argue Pros and Cons"]
|
||||
H --> I["Consensus Reached and Final Score Assigned"]
|
||||
I --> J["Save Decision to Persistent Memory JSON"]
|
||||
F --> H["Round-Robin Discussion:<br/>Argue Pros and Cons"]
|
||||
H --> I["Consensus Reached and<br/>Final Score Assigned"]
|
||||
I --> J["Save Decision to<br/>Persistent Memory JSON"]
|
||||
G --> J
|
||||
```
|
||||
|
||||
@@ -1079,11 +1164,10 @@ graph LR
|
||||
B --> D["V2 Vision Engine"]
|
||||
B --> Z["README Sync"]
|
||||
D --> E["V2 Update (develop)"]
|
||||
M["Sync to 'master'"] --> C["Pip Cache & CI/CD Build"]
|
||||
M["Sync to 'master'"] --> C["Pip Cache and<br/>CI/CD Build"]
|
||||
C --> F["Upload Pages Artifact"]
|
||||
F --> G["Native Deploy: V1 (Root/SEO), V2 (/v2/), V1 Fallback (/v1/)"]
|
||||
G --> H["Inject Root Redirect to /v2/"]
|
||||
Z --> B
|
||||
F --> G["Native Deploy:<br/>V1 (Root/SEO) · V2 (/v2/)<br/>· V1 Fallback (/v1/)"]
|
||||
G --> H["Inject Root<br/>Redirect to /v2/"]
|
||||
Z --> B
|
||||
```
|
||||
|
||||
|
||||
+11029
-11029
File diff suppressed because it is too large
Load Diff
+18978
-11165
File diff suppressed because it is too large
Load Diff
+5003
-3638
File diff suppressed because it is too large
Load Diff
+1
-1684
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,23 @@
|
||||
{% extends "main.html" %}
|
||||
|
||||
<!--
|
||||
Branded 404. The portal cares about deep-link stability (see CLAUDE.md URL
|
||||
policy), so a dead link lands on a helpful page with clear ways back rather
|
||||
than the theme's bare "404 - Not found". Shared by V1 and V2 (custom_dir is
|
||||
docs/overrides for both), so styling is self-contained and links are root-relative.
|
||||
-->
|
||||
{% block content %}
|
||||
<div style="text-align:center; max-width:42rem; margin:3rem auto; padding:0 1rem;">
|
||||
<p style="font-size:6rem; font-weight:700; line-height:1; margin:0; opacity:0.15;">404</p>
|
||||
<h1 style="margin-top:0.5rem;">This page took a wrong turn</h1>
|
||||
<p style="font-size:0.9rem; opacity:0.8;">
|
||||
The resource you are looking for may have moved or never existed. Use the
|
||||
search at the top, or jump back to a known starting point below.
|
||||
</p>
|
||||
<div style="display:flex; gap:0.75rem; justify-content:center; flex-wrap:wrap; margin-top:1.5rem;">
|
||||
<a href="/" class="md-button md-button--primary">🏠 Home</a>
|
||||
<a href="/topic-map/" class="md-button">🗺️ Topic Map</a>
|
||||
<a href="/v1/" class="md-button">📚 V1 Archive</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -3,3 +3,297 @@
|
||||
{% block announce %}
|
||||
<strong>New:</strong> <a href="./tech-digest/">Intelligence Digest</a> — AI-curated trending resources across 26 categories
|
||||
{% endblock %}
|
||||
|
||||
{#-
|
||||
Quick-nav bar rendered below the header on every page (via the `tabs` block,
|
||||
which is empty here since navigation.tabs is disabled). Single slim row that
|
||||
stays one row no matter how many destinations are added: the most-used
|
||||
flagships are direct one-click pills, and the long-tail clusters collapse into
|
||||
category menus built with the native HTML Popover API + CSS Anchor Positioning
|
||||
(Baseline 2026) — zero JS, with free Esc/click-outside dismissal and focus
|
||||
management. Adding a leaf grows a menu, never the bar.
|
||||
|
||||
Fully category-grouped into 13 thematic dropdowns (no direct pills).
|
||||
Related topics live together (CI/CD · GitOps · DevOps in Delivery; Terraform ·
|
||||
IaC in IaC; Docker in Kubernetes; …). AWS is a NESTED submenu inside Cloud,
|
||||
OpenShift a NESTED submenu inside Kubernetes.
|
||||
Pages may appear in more than one menu when that aids discovery.
|
||||
Portal Guide (Topic Map · Methodology · Tags · About) · Digest · Videos
|
||||
· Kubernetes (+Docker, OpenShift▸) · Delivery (CI/CD·GitOps·DevOps) · IaC
|
||||
· Cloud (AWS▸ · Azure · GCP · …) · Network · Security · Observability & SRE
|
||||
· AI & Data · Dev & Platform · More
|
||||
-#}
|
||||
{% block tabs %}
|
||||
<nav class="nb-quicknav" aria-label="Quick navigation">
|
||||
<div class="nb-quicknav__inner">
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-guide" type="button">🧭 Portal Guide <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-guide" popover>
|
||||
<a href="/topic-map/">🗺️ Topic Map</a>
|
||||
<a href="/methodology/">📐 Methodology</a>
|
||||
<a href="/tags/">🏷️ Technical Tags</a>
|
||||
<a href="/about/">ℹ️ About</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-digest" type="button">📊 Digest <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-digest" popover>
|
||||
<a href="/tech-digest/">📊 Tech & Cloud Digest</a>
|
||||
<a href="/industry-digest/">🌍 Industry & Geo Digest</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-videos" type="button">🎥 Videos <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-videos" popover>
|
||||
<a href="/videos/">🎥 Video Hub</a>
|
||||
<a href="/videos/ai-agents/">🤖 AI Agents & MCP</a>
|
||||
<a href="/videos/devops-iac/">♾️ DevOps, IaC & SRE</a>
|
||||
<a href="/videos/cloud-native/">☸️ Cloud Native Core</a>
|
||||
<a href="/videos/fundamentals/">🎓 Fundamentals</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-k8s" type="button">☸️ Kubernetes <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu nb-quicknav__menu--cols" id="nb-pop-k8s" popover>
|
||||
<a href="/kubernetes/">☸️ Overview</a>
|
||||
<a href="/docker/">🐳 Docker</a>
|
||||
<a href="/kubernetes-tools/">🧰 Tools</a>
|
||||
<a href="/helm/">📦 Helm</a>
|
||||
<a href="/kubectl-commands/">⌨️ kubectl</a>
|
||||
<a href="/container-managers/">📦 Container Managers</a>
|
||||
<a href="/kubernetes-networking/">🌐 Networking</a>
|
||||
<a href="/kubernetes-security/">🔐 Security</a>
|
||||
<a href="/kubernetes-monitoring/">📈 Monitoring</a>
|
||||
<a href="/kubernetes-storage/">💾 Storage</a>
|
||||
<a href="/kubernetes-autoscaling/">⚖️ Autoscaling</a>
|
||||
<a href="/kubernetes-operators-controllers/">🎛️ Operators</a>
|
||||
<a href="/kubernetes-bigdata/">📊 Big Data</a>
|
||||
<a href="/kubernetes-tutorials/">🎓 Tutorials</a>
|
||||
<a href="/kubernetes-backup-migrations/">🗄️ Backup & Migrations</a>
|
||||
<a href="/kubernetes-client-libraries/">📚 Client Libraries</a>
|
||||
<a href="/kubernetes-based-devel/">💻 Local Dev</a>
|
||||
<a href="/kubernetes-on-premise/">🏢 On-Premise</a>
|
||||
<a href="/managed-kubernetes-in-public-cloud/">☁️ Managed K8s</a>
|
||||
<span class="nb-quicknav__subwrap">
|
||||
<button class="nb-quicknav__subtrigger" popovertarget="nb-pop-ocp" type="button"><span>🎩 OpenShift</span><span class="nb-quicknav__caret" aria-hidden="true">▸</span></button>
|
||||
<div class="nb-quicknav__menu nb-quicknav__submenu" id="nb-pop-ocp" popover>
|
||||
<a href="/ocp4/">🎩 OpenShift 4 (current)</a>
|
||||
<a href="/openshift/">🎩 Overview</a>
|
||||
<a href="/ocp3/">🎩 OpenShift 3 (legacy)</a>
|
||||
</div>
|
||||
</span>
|
||||
<a href="/rancher/">🐮 Rancher</a>
|
||||
<a href="/kubernetes-alternatives/">🔀 Distros & Alternatives</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-delivery" type="button">🔄 Delivery <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-delivery" popover>
|
||||
<a href="/gitops/">🔄 GitOps</a>
|
||||
<a href="/cicd/">🚀 CI/CD</a>
|
||||
<a href="/devops/">♾️ DevOps</a>
|
||||
<a href="/argo/">🐙 Argo</a>
|
||||
<a href="/flux/">🔱 Flux</a>
|
||||
<a href="/tekton/">🛠️ Tekton</a>
|
||||
<a href="/jenkins/">🤵 Jenkins</a>
|
||||
<a href="/registries/">📦 Registries</a>
|
||||
<a href="/sonarqube/">🔎 SonarQube</a>
|
||||
<a href="/keptn/">🎯 Keptn</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-iac" type="button">🏗️ IaC <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-iac" popover>
|
||||
<a href="/terraform/">🏗️ Terraform</a>
|
||||
<a href="/iac/">📜 IaC</a>
|
||||
<a href="/ansible/">📋 Ansible</a>
|
||||
<a href="/pulumi/">🧩 Pulumi</a>
|
||||
<a href="/crossplane/">✈️ Crossplane</a>
|
||||
<a href="/kustomize/">🧱 Kustomize</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-cloud" type="button">☁️ Cloud <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-cloud" popover>
|
||||
<span class="nb-quicknav__subwrap">
|
||||
<button class="nb-quicknav__subtrigger" popovertarget="nb-pop-aws" type="button"><span>☁️ AWS</span><span class="nb-quicknav__caret" aria-hidden="true">▸</span></button>
|
||||
<div class="nb-quicknav__menu nb-quicknav__submenu" id="nb-pop-aws" popover>
|
||||
<a href="/aws/">☁️ AWS Overview</a>
|
||||
<a href="/aws-serverless/">⚡ Serverless</a>
|
||||
<a href="/aws-storage/">💾 Storage</a>
|
||||
<a href="/aws-networking/">🌐 Networking</a>
|
||||
<a href="/aws-security/">🔐 Security</a>
|
||||
<a href="/aws-iac/">📜 IaC</a>
|
||||
<a href="/aws-backup/">🗄️ Backup</a>
|
||||
<a href="/aws-newfeatures/">🆕 New Features</a>
|
||||
</div>
|
||||
</span>
|
||||
<a href="/azure/">☁️ Azure</a>
|
||||
<a href="/GoogleCloudPlatform/">☁️ GCP</a>
|
||||
<a href="/serverless/">⚡ Serverless</a>
|
||||
<a href="/finops/">💰 FinOps</a>
|
||||
<a href="/edge-computing/">🌍 Edge</a>
|
||||
<a href="/digitalocean/">🌊 DigitalOcean</a>
|
||||
<a href="/oraclecloud/">🔴 Oracle</a>
|
||||
<a href="/ibm_cloud/">🔵 IBM Cloud</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-net" type="button">🌐 Network <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-net" popover>
|
||||
<a href="/networking/">🌐 Networking</a>
|
||||
<a href="/istio/">⛵ Istio</a>
|
||||
<a href="/servicemesh/">🕸️ Service Mesh</a>
|
||||
<a href="/kubernetes-networking/">🔗 K8s Net</a>
|
||||
<a href="/caching/">⚡ Caching</a>
|
||||
<a href="/web-servers/">🖥️ Web Servers</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-sec" type="button">🔐 Security <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-sec" popover>
|
||||
<a href="/kubernetes-security/">🔐 K8s Security</a>
|
||||
<a href="/devsecops/">🛡️ DevSecOps</a>
|
||||
<a href="/securityascode/">📜 Security as Code</a>
|
||||
<a href="/aws-security/">☁️ AWS Security</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-obs" type="button">📈 Observability <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-obs" popover>
|
||||
<a href="/monitoring/">📈 Observability</a>
|
||||
<a href="/prometheus/">🔥 Prometheus</a>
|
||||
<a href="/grafana/">📊 Grafana</a>
|
||||
<a href="/sre/">🛠️ SRE</a>
|
||||
<a href="/chaos-engineering/">🌪️ Chaos Engineering</a>
|
||||
<a href="/performance-testing-with-jenkins-and-jmeter/">⏱️ Performance Testing</a>
|
||||
<a href="/qa/">✅ QA</a>
|
||||
<a href="/test-automation-frameworks/">🤖 Test Automation</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-aidata" type="button">🤖 AI & Data <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-aidata" popover>
|
||||
<a href="/ai-agents-mcp/">🤖 AI & MCP</a>
|
||||
<a href="/mlops/">🧠 MLOps</a>
|
||||
<a href="/ai/">🤖 AI</a>
|
||||
<a href="/chatgpt/">💬 ChatGPT</a>
|
||||
<a href="/databases/">🗃️ Databases</a>
|
||||
<a href="/nosql/">🍃 NoSQL</a>
|
||||
<a href="/message-queue/">📨 Messaging</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-dev" type="button">🧑💻 Dev <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-dev" popover>
|
||||
<a href="/developerportals/">🏛️ Developer Portals</a>
|
||||
<a href="/python/">🐍 Python</a>
|
||||
<a href="/golang/">🐹 Go</a>
|
||||
<a href="/java_frameworks/">☕ Java</a>
|
||||
<a href="/javascript/">🟨 JavaScript</a>
|
||||
<a href="/dotnet/">🟣 .NET</a>
|
||||
<a href="/api/">🔌 API</a>
|
||||
<a href="/postman/">📮 Postman</a>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
<span class="nb-quicknav__group">
|
||||
<button class="nb-quicknav__link nb-quicknav__btn" popovertarget="nb-pop-more" type="button">⋯ More <span class="nb-quicknav__caret" aria-hidden="true">▾</span></button>
|
||||
<div class="nb-quicknav__menu" id="nb-pop-more" popover>
|
||||
<a href="/demos/">🧪 Demos</a>
|
||||
<a href="/faq/">❓ FAQ</a>
|
||||
<a href="/recruitment/">💼 Career</a>
|
||||
<a class="nb-quicknav__menu-muted" href="/v1/">📚 V1 Archive</a>
|
||||
</div>
|
||||
</span>
|
||||
</div>
|
||||
</nav>
|
||||
{% endblock %}
|
||||
|
||||
{#-
|
||||
JSON-LD structured data (schema.org) for richer search results: declares the
|
||||
WebSite (with a sitelinks SearchAction) and the publishing Organization.
|
||||
Only the V2 portal uses this overrides dir (custom_dir: docs/overrides), so
|
||||
this injects on the canonical nubenetes.com root; V1 uses the stock theme.
|
||||
-#}
|
||||
{% block extrahead %}
|
||||
{{ super() }}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@graph": [
|
||||
{
|
||||
"@type": "WebSite",
|
||||
"@id": "https://nubenetes.com/#website",
|
||||
"url": "https://nubenetes.com/",
|
||||
"name": "Nubenetes",
|
||||
"description": "AI-curated portal for the modern Cloud Native ecosystem: high-density, ranked selection of top-tier Kubernetes, DevOps and Cloud resources.",
|
||||
"publisher": { "@id": "https://nubenetes.com/#organization" },
|
||||
"potentialAction": {
|
||||
"@type": "SearchAction",
|
||||
"target": {
|
||||
"@type": "EntryPoint",
|
||||
"urlTemplate": "https://nubenetes.com/?q={search_term_string}"
|
||||
},
|
||||
"query-input": "required name=search_term_string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"@type": "Organization",
|
||||
"@id": "https://nubenetes.com/#organization",
|
||||
"name": "Nubenetes",
|
||||
"url": "https://nubenetes.com/",
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": "https://nubenetes.com/images/favicon-ultra.png"
|
||||
},
|
||||
"sameAs": [
|
||||
"https://github.com/nubenetes/awesome-kubernetes",
|
||||
"https://twitter.com/nubenetes",
|
||||
"https://www.linkedin.com/groups/1937212/"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
</script>
|
||||
{#-
|
||||
Per-page structured data: a CollectionPage (each V2 page is a curated
|
||||
collection of resources) tied to the WebSite/Organization above, with
|
||||
datePublished / dateModified fed by the git-revision-date plugin. Enables
|
||||
richer search results. Skipped on the homepage (already the WebSite entity).
|
||||
-#}
|
||||
{% if page and not page.is_homepage and page.canonical_url %}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "CollectionPage",
|
||||
"@id": {{ (page.canonical_url ~ "#webpage") | tojson }},
|
||||
"url": {{ page.canonical_url | tojson }},
|
||||
"name": {{ (page.title or config.site_name) | tojson }},
|
||||
"isPartOf": { "@id": "https://nubenetes.com/#website" },
|
||||
"publisher": { "@id": "https://nubenetes.com/#organization" },
|
||||
"inLanguage": "en"
|
||||
{%- if page.meta and page.meta.description %},
|
||||
"description": {{ page.meta.description | tojson }}
|
||||
{%- endif %}
|
||||
{%- if page.meta and page.meta.git_creation_date_localized_raw_iso_date %},
|
||||
"datePublished": {{ page.meta.git_creation_date_localized_raw_iso_date | tojson }}
|
||||
{%- endif %}
|
||||
{%- if page.meta and page.meta.git_revision_date_localized_raw_iso_date %},
|
||||
"dateModified": {{ page.meta.git_revision_date_localized_raw_iso_date | tojson }}
|
||||
{%- endif %}
|
||||
}
|
||||
</script>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
Vendored
+541
-2
@@ -176,6 +176,62 @@ html {
|
||||
color: #c4b5fd;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------- */
|
||||
/* LABEL HEATMAP (Confluence-style popular-labels cloud) */
|
||||
/* ---------------------------------------------------- */
|
||||
|
||||
.v2-tag-heatmap {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.45rem 0.7rem;
|
||||
align-items: baseline;
|
||||
padding: 1.1rem 1.2rem;
|
||||
margin: 1rem 0 1.75rem;
|
||||
border: 1px solid rgba(38, 50, 56, 0.12);
|
||||
border-radius: 10px;
|
||||
background: rgba(38, 50, 56, 0.04);
|
||||
}
|
||||
|
||||
[data-md-color-scheme="slate"] .v2-tag-heatmap {
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
border-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.v2-heat-tag {
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
gap: 0.2em;
|
||||
line-height: 1.1;
|
||||
font-weight: 600;
|
||||
text-decoration: none;
|
||||
color: #455a64;
|
||||
transition: color 0.15s ease, transform 0.15s ease;
|
||||
}
|
||||
|
||||
.v2-heat-tag:hover {
|
||||
transform: translateY(-1px);
|
||||
color: var(--md-accent-fg-color);
|
||||
}
|
||||
|
||||
.v2-heat-n {
|
||||
font-size: 0.6em;
|
||||
font-weight: 700;
|
||||
opacity: 0.55;
|
||||
vertical-align: super;
|
||||
}
|
||||
|
||||
/* Size + warmth ramp: level 1 = least used, level 6 = most used. */
|
||||
.v2-heat-1 { font-size: 0.8rem; opacity: 0.7; }
|
||||
.v2-heat-2 { font-size: 0.95rem; }
|
||||
.v2-heat-3 { font-size: 1.15rem; }
|
||||
.v2-heat-4 { font-size: 1.45rem; }
|
||||
.v2-heat-5 { font-size: 1.8rem; color: #ef6c00; }
|
||||
.v2-heat-6 { font-size: 2.25rem; color: #d84315; font-weight: 700; }
|
||||
|
||||
[data-md-color-scheme="slate"] .v2-heat-tag { color: #b0bec5; }
|
||||
[data-md-color-scheme="slate"] .v2-heat-5 { color: #ffb74d; }
|
||||
[data-md-color-scheme="slate"] .v2-heat-6 { color: #ff8a65; }
|
||||
|
||||
/* ---------------------------------------------------- */
|
||||
/* MICRO-ANIMATIONS & HOVER STATES */
|
||||
/* ---------------------------------------------------- */
|
||||
@@ -363,9 +419,15 @@ a {
|
||||
}
|
||||
|
||||
.hero-badge-icon {
|
||||
font-size: 2rem;
|
||||
/* Match the 100px logo <img> box on the other hero cards so the
|
||||
emoji-based Intelligence Digest card is the same height. */
|
||||
height: 100px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 3.5rem;
|
||||
line-height: 1;
|
||||
margin-bottom: 4px;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.hero-badge-title {
|
||||
@@ -1148,6 +1210,17 @@ input[type="text"] {
|
||||
color: #0ea5e9;
|
||||
}
|
||||
|
||||
.trending-card__new {
|
||||
margin-left: 6px;
|
||||
padding: 1px 6px;
|
||||
border-radius: 6px;
|
||||
font-size: 0.85em;
|
||||
font-weight: 800;
|
||||
letter-spacing: 0.03em;
|
||||
background: rgba(16, 185, 129, 0.18);
|
||||
color: #10b981;
|
||||
}
|
||||
|
||||
/* Digest link cards (CTA to full digest pages) */
|
||||
.digest-links {
|
||||
display: flex;
|
||||
@@ -1179,6 +1252,472 @@ input[type="text"] {
|
||||
color: #09090b;
|
||||
}
|
||||
|
||||
/* ===================================================================
|
||||
v2.9.16 — Home restructure: hero badge row, Topic Map grid,
|
||||
mosaic labels, responsive video embeds
|
||||
=================================================================== */
|
||||
|
||||
/* Hero badge row (was an inline flexbox style on the index) */
|
||||
.hero-badge-row {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 24px;
|
||||
margin: 16px 0;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
/* Indigo accent for the new Topic Map badge card */
|
||||
.hero-badge-card--indigo {
|
||||
border-color: rgba(99, 102, 241, 0.2);
|
||||
background: rgba(99, 102, 241, 0.02);
|
||||
}
|
||||
.hero-badge-card--indigo:hover {
|
||||
background: rgba(99, 102, 241, 0.06) !important;
|
||||
box-shadow: 0 8px 24px rgba(99, 102, 241, 0.18);
|
||||
border-color: #6366f1 !important;
|
||||
}
|
||||
|
||||
/* Topic Map: full category directory as a multi-column grid.
|
||||
CSS columns flow the per-dimension sections into 3 (then 2, then 1)
|
||||
columns; break-inside keeps a dimension block intact across columns. */
|
||||
.topic-map-grid {
|
||||
column-count: 3;
|
||||
column-gap: 2.5rem;
|
||||
margin-top: 1.5rem;
|
||||
}
|
||||
.topic-map-dim {
|
||||
break-inside: avoid;
|
||||
-webkit-column-break-inside: avoid;
|
||||
page-break-inside: avoid;
|
||||
display: inline-block; /* helps WebKit honor break-inside */
|
||||
width: 100%;
|
||||
margin: 0 0 1.4rem;
|
||||
}
|
||||
.topic-map-dim h2 {
|
||||
margin-top: 0;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
/* ===================================================================
|
||||
Slim quick-nav bar (rendered in the theme `tabs` block, below header)
|
||||
Persistent one-click access to key destinations on every page.
|
||||
=================================================================== */
|
||||
.nb-quicknav {
|
||||
background: var(--md-header-bg-color);
|
||||
border-bottom: 1px solid color-mix(in srgb, var(--md-accent-fg-color) 22%, transparent);
|
||||
}
|
||||
.nb-quicknav__inner {
|
||||
max-width: 1600px;
|
||||
margin-inline: auto;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
justify-content: center; /* centered rows read as a balanced command bar */
|
||||
gap: 0.4rem 0.32rem;
|
||||
padding-block: 0.5rem;
|
||||
padding-inline: 0.7rem;
|
||||
}
|
||||
.nb-quicknav__link {
|
||||
/* chip colors derived from the theme accent via color-mix (Chrome 111+) */
|
||||
--nb-chip-bg: color-mix(in srgb, var(--md-accent-fg-color) 8%, transparent);
|
||||
--nb-chip-bd: color-mix(in srgb, var(--md-accent-fg-color) 18%, transparent);
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.3em;
|
||||
color: rgba(255, 255, 255, 0.82) !important;
|
||||
text-decoration: none;
|
||||
font-size: 0.62rem; /* sized so all pills + menus fit one row down to ~1280px */
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.01em;
|
||||
white-space: nowrap;
|
||||
padding: 0.22rem 0.55rem;
|
||||
border-radius: 999px;
|
||||
background: var(--nb-chip-bg);
|
||||
border: 1px solid var(--nb-chip-bd);
|
||||
transition: background 0.18s ease, border-color 0.18s ease,
|
||||
color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
|
||||
}
|
||||
.nb-quicknav__link:hover {
|
||||
color: #fff !important;
|
||||
background: color-mix(in srgb, var(--md-accent-fg-color) 32%, transparent);
|
||||
border-color: var(--md-accent-fg-color);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 2px 10px color-mix(in srgb, var(--md-accent-fg-color) 40%, transparent);
|
||||
}
|
||||
.nb-quicknav__link:focus-visible {
|
||||
outline: 2px solid var(--md-accent-fg-color);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
.nb-quicknav__link--muted {
|
||||
opacity: 0.6;
|
||||
}
|
||||
.nb-quicknav__link--muted:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* ── Category menus: native Popover API + CSS Anchor Positioning (Baseline 2026)
|
||||
The long-tail clusters collapse behind category buttons so the bar stays one
|
||||
row. Opening is click-driven via the Popover API (free Esc / click-outside
|
||||
dismissal + focus management); zero JS. ── */
|
||||
.nb-quicknav__group {
|
||||
display: inline-flex;
|
||||
}
|
||||
/* thin divider between the direct pills and the category menus */
|
||||
.nb-quicknav__group:first-of-type {
|
||||
margin-inline-start: 0.3rem;
|
||||
padding-inline-start: 0.55rem;
|
||||
border-inline-start: 1px solid color-mix(in srgb, var(--md-accent-fg-color) 18%, transparent);
|
||||
}
|
||||
.nb-quicknav__btn {
|
||||
font-family: inherit;
|
||||
cursor: pointer;
|
||||
}
|
||||
.nb-quicknav__caret {
|
||||
font-size: 0.85em;
|
||||
opacity: 0.75;
|
||||
transition: transform 0.18s ease;
|
||||
}
|
||||
.nb-quicknav__group:has(.nb-quicknav__menu:popover-open) .nb-quicknav__caret {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
/* Explicit anchor pairing per button↔menu — do NOT rely on the popover's
|
||||
implicit anchor (it isn't established reliably, leaving the menu in its
|
||||
static position over the button). */
|
||||
[popovertarget="nb-pop-guide"] { anchor-name: --nb-a-guide; }
|
||||
#nb-pop-guide { position-anchor: --nb-a-guide; }
|
||||
[popovertarget="nb-pop-digest"] { anchor-name: --nb-a-digest; }
|
||||
#nb-pop-digest { position-anchor: --nb-a-digest; }
|
||||
[popovertarget="nb-pop-videos"] { anchor-name: --nb-a-videos; }
|
||||
#nb-pop-videos { position-anchor: --nb-a-videos; }
|
||||
[popovertarget="nb-pop-k8s"] { anchor-name: --nb-a-k8s; }
|
||||
#nb-pop-k8s { position-anchor: --nb-a-k8s; }
|
||||
[popovertarget="nb-pop-delivery"] { anchor-name: --nb-a-delivery; }
|
||||
#nb-pop-delivery { position-anchor: --nb-a-delivery; }
|
||||
[popovertarget="nb-pop-iac"] { anchor-name: --nb-a-iac; }
|
||||
#nb-pop-iac { position-anchor: --nb-a-iac; }
|
||||
[popovertarget="nb-pop-cloud"] { anchor-name: --nb-a-cloud; }
|
||||
#nb-pop-cloud { position-anchor: --nb-a-cloud; }
|
||||
[popovertarget="nb-pop-net"] { anchor-name: --nb-a-net; }
|
||||
#nb-pop-net { position-anchor: --nb-a-net; }
|
||||
[popovertarget="nb-pop-sec"] { anchor-name: --nb-a-sec; }
|
||||
#nb-pop-sec { position-anchor: --nb-a-sec; }
|
||||
[popovertarget="nb-pop-obs"] { anchor-name: --nb-a-obs; }
|
||||
#nb-pop-obs { position-anchor: --nb-a-obs; }
|
||||
[popovertarget="nb-pop-aidata"] { anchor-name: --nb-a-aidata; }
|
||||
#nb-pop-aidata { position-anchor: --nb-a-aidata; }
|
||||
[popovertarget="nb-pop-dev"] { anchor-name: --nb-a-dev; }
|
||||
#nb-pop-dev { position-anchor: --nb-a-dev; }
|
||||
[popovertarget="nb-pop-more"] { anchor-name: --nb-a-more; }
|
||||
#nb-pop-more { position-anchor: --nb-a-more; }
|
||||
/* nested submenus anchor to their in-menu trigger */
|
||||
[popovertarget="nb-pop-aws"] { anchor-name: --nb-a-aws; }
|
||||
#nb-pop-aws { position-anchor: --nb-a-aws; }
|
||||
[popovertarget="nb-pop-ocp"] { anchor-name: --nb-a-ocp; }
|
||||
#nb-pop-ocp { position-anchor: --nb-a-ocp; }
|
||||
.nb-quicknav__menu {
|
||||
inset: auto; /* reset the UA-centered popover defaults */
|
||||
margin: 0;
|
||||
max-height: 82vh; /* tall menus (e.g. Kubernetes) scroll instead of overflowing */
|
||||
overflow-y: auto;
|
||||
overscroll-behavior: contain;
|
||||
/* drop below the invoking button, left-aligned. NB: position-area values must
|
||||
be all-physical or all-logical — mixing (e.g. `bottom span-inline-end`) is
|
||||
invalid and silently computes to `none`, leaving the menu over the button. */
|
||||
position-area: bottom span-right;
|
||||
/* Only flip horizontally near the right edge. NEVER flip-block: the quick-nav
|
||||
is a sticky top bar, so a tall menu flipped above would shoot off-screen. */
|
||||
position-try-fallbacks: flip-inline;
|
||||
margin-block-start: 0.45rem;
|
||||
min-width: 9.5rem;
|
||||
padding: 0.35rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.1rem;
|
||||
border: 1px solid color-mix(in srgb, var(--md-accent-fg-color) 30%, transparent);
|
||||
border-radius: 0.6rem;
|
||||
background: color-mix(in srgb, var(--md-header-bg-color) 86%, #000);
|
||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
|
||||
/* entry/exit animation across the display toggle */
|
||||
opacity: 0;
|
||||
transform: translateY(-4px);
|
||||
transition: opacity 0.16s ease, transform 0.16s ease,
|
||||
overlay 0.16s allow-discrete, display 0.16s allow-discrete;
|
||||
}
|
||||
.nb-quicknav__menu:popover-open {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
@starting-style {
|
||||
.nb-quicknav__menu:popover-open {
|
||||
opacity: 0;
|
||||
transform: translateY(-4px);
|
||||
}
|
||||
}
|
||||
.nb-quicknav__menu a {
|
||||
display: block;
|
||||
padding: 0.34rem 0.6rem;
|
||||
border-radius: 0.4rem;
|
||||
color: rgba(255, 255, 255, 0.86);
|
||||
text-decoration: none;
|
||||
font-size: 0.72rem;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
transition: background 0.14s ease, color 0.14s ease;
|
||||
}
|
||||
.nb-quicknav__menu a:hover,
|
||||
.nb-quicknav__menu a:focus-visible {
|
||||
background: color-mix(in srgb, var(--md-accent-fg-color) 30%, transparent);
|
||||
color: #fff;
|
||||
outline: none;
|
||||
}
|
||||
.nb-quicknav__menu-muted {
|
||||
opacity: 0.62;
|
||||
margin-block-start: 0.15rem;
|
||||
padding-block-start: 0.42rem !important;
|
||||
border-block-start: 1px solid rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
/* Two-column layout for long menus (e.g. Kubernetes, 22 items) so they stay
|
||||
short enough to show in full WITHOUT a scrollbar — the scrollable tall popover
|
||||
was unreliable. Multicol is column-major, so reading order is preserved. */
|
||||
/* Deterministic 2-column layout (column-major grid) so the menu height equals
|
||||
the row count exactly — no balancing remainder, hence no stray scrollbar.
|
||||
11 rows × 2 cols fits the 22 top-level Kubernetes entries. */
|
||||
.nb-quicknav__menu--cols {
|
||||
display: grid;
|
||||
grid-auto-flow: column;
|
||||
grid-template-rows: repeat(11, auto);
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
column-gap: 0.4rem;
|
||||
min-width: 22rem;
|
||||
/* a 2-column menu (~370px) always fits below the sticky bar, so never
|
||||
scroll — avoids the sub-pixel grid/overflow scrollbar entirely */
|
||||
max-height: none;
|
||||
overflow: visible;
|
||||
}
|
||||
/* the submenu wrapper must be a real block (not display:contents) so its
|
||||
trigger occupies one grid cell cleanly */
|
||||
.nb-quicknav__menu--cols .nb-quicknav__subwrap {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* ── Nested submenu (e.g. Cloud → AWS ▸ → AWS pages) ──
|
||||
A second-level popover invoked from inside a menu. The trigger looks like a
|
||||
menu item; the submenu opens to the side (inline-end) of the trigger, with a
|
||||
flip fallback so it never leaves the viewport. Popover nesting keeps the
|
||||
parent menu open while the submenu is shown. */
|
||||
.nb-quicknav__subwrap { display: contents; }
|
||||
.nb-quicknav__subtrigger {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 0.6rem;
|
||||
width: 100%;
|
||||
padding: 0.34rem 0.6rem;
|
||||
border: none;
|
||||
border-radius: 0.4rem;
|
||||
background: none;
|
||||
color: rgba(255, 255, 255, 0.86);
|
||||
font-family: inherit;
|
||||
font-size: 0.72rem;
|
||||
font-weight: 600;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
transition: background 0.14s ease, color 0.14s ease;
|
||||
}
|
||||
.nb-quicknav__subtrigger:hover,
|
||||
.nb-quicknav__subtrigger:focus-visible {
|
||||
background: color-mix(in srgb, var(--md-accent-fg-color) 30%, transparent);
|
||||
color: #fff;
|
||||
outline: none;
|
||||
}
|
||||
.nb-quicknav__subwrap:has(.nb-quicknav__submenu:popover-open) .nb-quicknav__caret {
|
||||
transform: rotate(0); /* caret is a side-arrow ▸, keep it static */
|
||||
}
|
||||
.nb-quicknav__submenu {
|
||||
/* Open to the RIGHT of the trigger, top-aligned. position-area's horizontal
|
||||
axis isn't honored reliably when the anchor lives inside another popover,
|
||||
so place explicitly with anchor(): left edge at the trigger's right edge. */
|
||||
position-area: none;
|
||||
top: anchor(top);
|
||||
left: anchor(right);
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
position-try-fallbacks: flip-inline;
|
||||
margin-block-start: 0;
|
||||
margin-inline-start: 0.35rem;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.nb-quicknav__link,
|
||||
.nb-quicknav__caret,
|
||||
.nb-quicknav__menu { transition: none; }
|
||||
.nb-quicknav__link:hover { transform: none; }
|
||||
}
|
||||
/* On phones the left drawer already exposes navigation; one scrollable row. */
|
||||
@media screen and (max-width: 44.9375em) {
|
||||
.nb-quicknav__inner {
|
||||
flex-wrap: nowrap;
|
||||
justify-content: flex-start;
|
||||
overflow-x: auto;
|
||||
scrollbar-width: none; /* Firefox */
|
||||
}
|
||||
.nb-quicknav__inner::-webkit-scrollbar { display: none; } /* WebKit/Blink */
|
||||
}
|
||||
.topic-map-dim ul {
|
||||
margin-top: 0.3rem;
|
||||
}
|
||||
.topic-count {
|
||||
display: inline-block;
|
||||
margin-left: 0.35rem;
|
||||
padding: 0 0.45rem;
|
||||
font-size: 0.68rem;
|
||||
font-weight: 600;
|
||||
line-height: 1.4;
|
||||
border-radius: 10px;
|
||||
color: var(--md-default-fg-color--light);
|
||||
background: var(--md-default-fg-color--lightest);
|
||||
vertical-align: middle;
|
||||
}
|
||||
@media screen and (max-width: 76.1875em) {
|
||||
.topic-map-grid { column-count: 2; }
|
||||
}
|
||||
@media screen and (max-width: 44.9375em) {
|
||||
.topic-map-grid { column-count: 1; }
|
||||
}
|
||||
|
||||
/* ===================================================================
|
||||
Topic Map: Resource Density Heatmap
|
||||
A true colour matrix (distinct from the size-based Label cloud). Each
|
||||
category is a tile whose warmth (.th-1..6) encodes resource density,
|
||||
grouped by strategic dimension. Generated by v2_optimizer.py.
|
||||
=================================================================== */
|
||||
.topic-heatmap {
|
||||
margin: 1rem 0 2rem;
|
||||
padding: 1.1rem 1.2rem 1.3rem;
|
||||
border: 1px solid rgba(38, 50, 56, 0.12);
|
||||
border-radius: 10px;
|
||||
background: rgba(38, 50, 56, 0.04);
|
||||
}
|
||||
[data-md-color-scheme="slate"] .topic-heatmap {
|
||||
background: rgba(255, 255, 255, 0.03);
|
||||
border-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.topic-heatmap__legend {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.3rem;
|
||||
margin-bottom: 1rem;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.03em;
|
||||
color: var(--md-default-fg-color--light);
|
||||
}
|
||||
.topic-heatmap__legend .topic-heatcell {
|
||||
width: 26px;
|
||||
height: 14px;
|
||||
padding: 0;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.topic-heatmap__cap { text-transform: uppercase; opacity: 0.7; }
|
||||
.topic-heatmap__row {
|
||||
display: grid;
|
||||
grid-template-columns: 190px 1fr;
|
||||
gap: 0.5rem 1rem;
|
||||
align-items: start;
|
||||
padding: 0.6rem 0;
|
||||
border-top: 1px solid rgba(38, 50, 56, 0.08);
|
||||
}
|
||||
[data-md-color-scheme="slate"] .topic-heatmap__row {
|
||||
border-top-color: rgba(255, 255, 255, 0.07);
|
||||
}
|
||||
.topic-heatmap__row:first-of-type { border-top: none; padding-top: 0; }
|
||||
.topic-heatmap__dim {
|
||||
font-size: 0.78rem;
|
||||
font-weight: 700;
|
||||
line-height: 1.25;
|
||||
padding-top: 0.25rem;
|
||||
color: var(--md-default-fg-color);
|
||||
}
|
||||
.topic-heatmap__cells {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.35rem;
|
||||
}
|
||||
.topic-heatcell {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.3em;
|
||||
padding: 0.28rem 0.5rem;
|
||||
border-radius: 5px;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 600;
|
||||
line-height: 1.2;
|
||||
text-decoration: none;
|
||||
color: #1a2327;
|
||||
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
||||
}
|
||||
.topic-heatcell:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.18);
|
||||
}
|
||||
.topic-heatcell__n {
|
||||
font-size: 0.62em;
|
||||
font-weight: 700;
|
||||
opacity: 0.7;
|
||||
}
|
||||
/* Sequential warmth ramp: th-1 = sparsest, th-6 = densest. */
|
||||
.th-1 { background: #e3f2fd; }
|
||||
.th-2 { background: #ffe0b2; }
|
||||
.th-3 { background: #ffcc80; }
|
||||
.th-4 { background: #ffa726; }
|
||||
.th-5 { background: #fb8c00; color: #fff; }
|
||||
.th-6 { background: #e64a19; color: #fff; }
|
||||
[data-md-color-scheme="slate"] .th-1 { background: #2d4456; color: #d7e3ea; }
|
||||
[data-md-color-scheme="slate"] .th-2 { background: #6d4c1f; color: #f5e7d3; }
|
||||
[data-md-color-scheme="slate"] .th-3 { background: #97601f; color: #fff3e0; }
|
||||
[data-md-color-scheme="slate"] .th-4 { background: #c2701a; color: #fff; }
|
||||
[data-md-color-scheme="slate"] .th-5 { background: #e2701a; color: #fff; }
|
||||
[data-md-color-scheme="slate"] .th-6 { background: #ff5722; color: #fff; }
|
||||
@media screen and (max-width: 44.9375em) {
|
||||
.topic-heatmap__row { grid-template-columns: 1fr; gap: 0.35rem; }
|
||||
.topic-heatmap__dim { padding-top: 0; }
|
||||
}
|
||||
|
||||
/* Visible label for each YouTube mosaic category block (was hidden in title=) */
|
||||
.mosaic-cat-label {
|
||||
margin: 0 0 0.5rem;
|
||||
padding-left: 0.55rem;
|
||||
border-left: 3px solid var(--cat-color, #64748b);
|
||||
font-size: 0.72rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.04em;
|
||||
text-transform: uppercase;
|
||||
color: var(--md-default-fg-color--light);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* Responsive, privacy-friendly video embeds (about page) */
|
||||
.video-embed-grid {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 16px;
|
||||
flex-wrap: wrap;
|
||||
margin: 24px 0;
|
||||
}
|
||||
.video-embed {
|
||||
flex: 1 1 420px;
|
||||
max-width: 480px;
|
||||
aspect-ratio: 16 / 9;
|
||||
}
|
||||
.video-embed iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 0;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Vendored
+245
-233
@@ -1,263 +1,275 @@
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
// Initialize the filter only if we are on a page with resource lists
|
||||
const contentArea = document.querySelector(".md-content__inner");
|
||||
if (!contentArea) return;
|
||||
// Nubenetes V2 — in-page resource search & tag filter widget.
|
||||
//
|
||||
// IMPORTANT: The V2 theme enables `navigation.instant` (SPA-style page swaps),
|
||||
// so `DOMContentLoaded` fires only on the very first load. We therefore drive
|
||||
// initialization through Material's `document$` observable, which emits on every
|
||||
// (instant) navigation. We fall back to `DOMContentLoaded` when the observable
|
||||
// is unavailable (e.g. instant nav disabled or local preview without the bundle).
|
||||
|
||||
// Check if there are any resource items on the page (li or details)
|
||||
const listItems = Array.from(contentArea.querySelectorAll("ul > li"));
|
||||
const detailsItems = Array.from(contentArea.querySelectorAll("details.note"));
|
||||
|
||||
// If there are no list items and no details items, do not inject the filter
|
||||
if (listItems.length === 0 && detailsItems.length === 0) return;
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
// Do not show on the homepage, video hub index page, or technical tags index page (performance)
|
||||
const h1 = contentArea.querySelector("h1");
|
||||
if (h1 && (
|
||||
h1.textContent.includes("Nubenetes Elite Portal (V2)") ||
|
||||
h1.textContent.includes("Agentic Video Hub") ||
|
||||
h1.textContent.includes("Technical Tags Index") ||
|
||||
h1.textContent.includes("Intelligence Digest")
|
||||
)) {
|
||||
return;
|
||||
}
|
||||
function initFilterWidget() {
|
||||
const contentArea = document.querySelector(".md-content__inner");
|
||||
if (!contentArea) return;
|
||||
|
||||
// Build the filter container element
|
||||
const filterContainer = document.createElement("div");
|
||||
filterContainer.className = "v2-filter-container";
|
||||
filterContainer.innerHTML = `
|
||||
<div class="v2-search-wrapper">
|
||||
<input type="text" class="v2-search-input" placeholder="Search resources in this page..." />
|
||||
<span class="v2-search-clear" style="display:none;">×</span>
|
||||
</div>
|
||||
<div class="v2-tag-pills">
|
||||
<button class="v2-pill active" data-filter="all">All</button>
|
||||
<button class="v2-pill" data-filter="DE FACTO STANDARD">De Facto Standard</button>
|
||||
<button class="v2-pill" data-filter="ENTERPRISE-STABLE">Enterprise Stable</button>
|
||||
<button class="v2-pill" data-filter="EMERGING">Emerging</button>
|
||||
<button class="v2-pill" data-filter="GUIDE">Guide</button>
|
||||
<button class="v2-pill" data-filter="CASE STUDY">Case Study</button>
|
||||
<button class="v2-pill" data-filter="COMMUNITY-TOOL">Community Tool</button>
|
||||
<button class="v2-pill" data-filter="SPANISH">Spanish</button>
|
||||
</div>
|
||||
<div class="v2-filter-stats">
|
||||
<span>Showing <strong class="v2-visible-count">0</strong> of <strong class="v2-total-count">0</strong> resources</span>
|
||||
<span class="v2-active-filters" style="font-style: italic;"></span>
|
||||
</div>
|
||||
`;
|
||||
// Guard against double-injection (document$ can emit more than once).
|
||||
if (contentArea.querySelector(".v2-filter-container")) return;
|
||||
|
||||
// Insert the filter container right after the main H1
|
||||
if (h1 && h1.nextSibling) {
|
||||
h1.parentNode.insertBefore(filterContainer, h1.nextSibling);
|
||||
} else {
|
||||
contentArea.insertBefore(filterContainer, contentArea.firstChild);
|
||||
}
|
||||
// Only inject where there are resources to filter.
|
||||
const listItems = Array.from(contentArea.querySelectorAll("ul > li"));
|
||||
const detailsItems = Array.from(contentArea.querySelectorAll("details.note"));
|
||||
if (listItems.length === 0 && detailsItems.length === 0) return;
|
||||
|
||||
const searchInput = filterContainer.querySelector(".v2-search-input");
|
||||
const searchClear = filterContainer.querySelector(".v2-search-clear");
|
||||
const pills = filterContainer.querySelectorAll(".v2-pill");
|
||||
const visibleCountSpan = filterContainer.querySelector(".v2-visible-count");
|
||||
const totalCountSpan = filterContainer.querySelector(".v2-total-count");
|
||||
|
||||
// All target elements we want to filter
|
||||
const targets = [];
|
||||
|
||||
// Prepare list items
|
||||
listItems.forEach(item => {
|
||||
// Make sure it's a resource list item (has a link and some content)
|
||||
if (item.querySelector("a")) {
|
||||
targets.push({
|
||||
element: item,
|
||||
type: "li",
|
||||
text: item.textContent.toLowerCase(),
|
||||
tags: Array.from(item.querySelectorAll(".md-tag")).map(t => t.textContent.toUpperCase())
|
||||
});
|
||||
// Skip on curated landing/index pages where the widget adds no value.
|
||||
const h1 = contentArea.querySelector("h1");
|
||||
if (h1 && (
|
||||
h1.textContent.includes("Nubenetes Elite Portal (V2)") ||
|
||||
h1.textContent.includes("Agentic Video Hub") ||
|
||||
h1.textContent.includes("Technical Tags Index") ||
|
||||
h1.textContent.includes("Intelligence Digest") ||
|
||||
// Topic Map / Methodology list categories and legend rows, not
|
||||
// tagged resources: their <li> items carry no .md-tag, so the
|
||||
// maturity pills would always filter to zero and the "X of Y
|
||||
// resources" count is misleading. Skip them.
|
||||
h1.textContent.includes("Topic Map") ||
|
||||
h1.textContent.includes("Methodology")
|
||||
)) {
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
// Prepare details.note items (if any, like in some V2 structures)
|
||||
detailsItems.forEach(detail => {
|
||||
const summary = detail.querySelector("summary");
|
||||
targets.push({
|
||||
element: detail,
|
||||
type: "details",
|
||||
text: detail.textContent.toLowerCase(),
|
||||
tags: summary ? [summary.textContent.toUpperCase()] : []
|
||||
});
|
||||
});
|
||||
const filterContainer = document.createElement("div");
|
||||
filterContainer.className = "v2-filter-container";
|
||||
filterContainer.innerHTML = `
|
||||
<div class="v2-search-wrapper">
|
||||
<input type="text" class="v2-search-input" placeholder="Search resources in this page..." aria-label="Search resources in this page" />
|
||||
<span class="v2-search-clear" style="display:none;" title="Clear search">×</span>
|
||||
</div>
|
||||
<div class="v2-tag-pills">
|
||||
<button class="v2-pill active" data-filter="all">All</button>
|
||||
<button class="v2-pill" data-filter="DE FACTO STANDARD">De Facto Standard</button>
|
||||
<button class="v2-pill" data-filter="ENTERPRISE-STABLE">Enterprise Stable</button>
|
||||
<button class="v2-pill" data-filter="EMERGING">Emerging</button>
|
||||
<button class="v2-pill" data-filter="GUIDE">Guide</button>
|
||||
<button class="v2-pill" data-filter="CASE STUDY">Case Study</button>
|
||||
<button class="v2-pill" data-filter="COMMUNITY-TOOL">Community Tool</button>
|
||||
<button class="v2-pill" data-filter="SPANISH">Spanish</button>
|
||||
</div>
|
||||
<div class="v2-filter-stats">
|
||||
<span>Showing <strong class="v2-visible-count">0</strong> of <strong class="v2-total-count">0</strong> resources</span>
|
||||
<span class="v2-active-filters" style="font-style: italic;"></span>
|
||||
<span class="v2-no-results" style="display:none; color: var(--md-typeset-color); opacity:.75;">No resources match your filter.</span>
|
||||
</div>
|
||||
`;
|
||||
|
||||
totalCountSpan.textContent = targets.length;
|
||||
visibleCountSpan.textContent = targets.length;
|
||||
// Insert directly after the main H1.
|
||||
if (h1 && h1.nextSibling) {
|
||||
h1.parentNode.insertBefore(filterContainer, h1.nextSibling);
|
||||
} else {
|
||||
contentArea.insertBefore(filterContainer, contentArea.firstChild);
|
||||
}
|
||||
|
||||
let activeFilter = "all";
|
||||
let searchText = "";
|
||||
const searchInput = filterContainer.querySelector(".v2-search-input");
|
||||
const searchClear = filterContainer.querySelector(".v2-search-clear");
|
||||
const pills = filterContainer.querySelectorAll(".v2-pill");
|
||||
const visibleCountSpan = filterContainer.querySelector(".v2-visible-count");
|
||||
const totalCountSpan = filterContainer.querySelector(".v2-total-count");
|
||||
const noResultsSpan = filterContainer.querySelector(".v2-no-results");
|
||||
|
||||
function updateFilters() {
|
||||
let visibleCount = 0;
|
||||
|
||||
targets.forEach(item => {
|
||||
let matchesSearch = true;
|
||||
let matchesPill = true;
|
||||
|
||||
// 1. Search text filter
|
||||
if (searchText) {
|
||||
matchesSearch = item.text.includes(searchText);
|
||||
// Collect filter targets (resource <li> and details.note blocks).
|
||||
const targets = [];
|
||||
listItems.forEach(item => {
|
||||
if (item.querySelector("a")) {
|
||||
targets.push({
|
||||
element: item,
|
||||
type: "li",
|
||||
text: item.textContent.toLowerCase(),
|
||||
tags: Array.from(item.querySelectorAll(".md-tag")).map(t => t.textContent.toUpperCase())
|
||||
});
|
||||
}
|
||||
});
|
||||
detailsItems.forEach(detail => {
|
||||
const summary = detail.querySelector("summary");
|
||||
targets.push({
|
||||
element: detail,
|
||||
type: "details",
|
||||
text: detail.textContent.toLowerCase(),
|
||||
tags: summary ? [summary.textContent.toUpperCase()] : []
|
||||
});
|
||||
});
|
||||
|
||||
// 2. Pill/Category filter
|
||||
if (activeFilter !== "all") {
|
||||
if (activeFilter === "SPANISH") {
|
||||
matchesPill = item.tags.some(tag => tag.includes("SPANISH"));
|
||||
} else {
|
||||
matchesPill = item.tags.some(tag => tag.includes(activeFilter));
|
||||
totalCountSpan.textContent = targets.length;
|
||||
visibleCountSpan.textContent = targets.length;
|
||||
|
||||
let activeFilter = "all";
|
||||
let searchText = "";
|
||||
|
||||
function updateFilters() {
|
||||
let visibleCount = 0;
|
||||
|
||||
targets.forEach(item => {
|
||||
let matchesSearch = true;
|
||||
let matchesPill = true;
|
||||
|
||||
if (searchText) {
|
||||
matchesSearch = item.text.includes(searchText);
|
||||
}
|
||||
}
|
||||
|
||||
if (matchesSearch && matchesPill) {
|
||||
item.element.classList.remove("v2-filtered-hidden");
|
||||
visibleCount++;
|
||||
} else {
|
||||
item.element.classList.add("v2-filtered-hidden");
|
||||
}
|
||||
});
|
||||
|
||||
visibleCountSpan.textContent = visibleCount;
|
||||
|
||||
// 3. Hide empty headers and subheadings
|
||||
// If a section (e.g., under h2, h3, h4) has no visible items, hide the section header
|
||||
const headings = Array.from(contentArea.querySelectorAll("h2, h3, h4"));
|
||||
headings.forEach(heading => {
|
||||
let next = heading.nextElementSibling;
|
||||
let totalItemsInSection = 0;
|
||||
let hiddenItemsInSection = 0;
|
||||
|
||||
while (next && !["H1", "H2", "H3", "H4"].includes(next.tagName)) {
|
||||
if (next.tagName === "UL") {
|
||||
const lis = Array.from(next.querySelectorAll("li"));
|
||||
lis.forEach(li => {
|
||||
if (targets.some(t => t.element === li)) {
|
||||
totalItemsInSection++;
|
||||
if (li.classList.contains("v2-filtered-hidden")) {
|
||||
hiddenItemsInSection++;
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (next.tagName === "DETAILS" && next.classList.contains("note")) {
|
||||
totalItemsInSection++;
|
||||
if (next.classList.contains("v2-filtered-hidden")) {
|
||||
hiddenItemsInSection++;
|
||||
if (activeFilter !== "all") {
|
||||
if (activeFilter === "SPANISH") {
|
||||
matchesPill = item.tags.some(tag => tag.includes("SPANISH"));
|
||||
} else {
|
||||
matchesPill = item.tags.some(tag => tag.includes(activeFilter));
|
||||
}
|
||||
}
|
||||
next = next.nextElementSibling;
|
||||
}
|
||||
|
||||
if (totalItemsInSection > 0 && totalItemsInSection === hiddenItemsInSection) {
|
||||
heading.classList.add("v2-filtered-hidden");
|
||||
} else {
|
||||
heading.classList.remove("v2-filtered-hidden");
|
||||
}
|
||||
});
|
||||
}
|
||||
if (matchesSearch && matchesPill) {
|
||||
item.element.classList.remove("v2-filtered-hidden");
|
||||
visibleCount++;
|
||||
} else {
|
||||
item.element.classList.add("v2-filtered-hidden");
|
||||
}
|
||||
});
|
||||
|
||||
// Input event listener
|
||||
searchInput.addEventListener("input", function (e) {
|
||||
searchText = e.target.value.toLowerCase().trim();
|
||||
if (searchText) {
|
||||
searchClear.style.display = "block";
|
||||
} else {
|
||||
searchClear.style.display = "none";
|
||||
visibleCountSpan.textContent = visibleCount;
|
||||
noResultsSpan.style.display = visibleCount === 0 ? "inline" : "none";
|
||||
|
||||
// Hide section headings whose every resource is filtered out.
|
||||
const headings = Array.from(contentArea.querySelectorAll("h2, h3, h4"));
|
||||
headings.forEach(heading => {
|
||||
let next = heading.nextElementSibling;
|
||||
let totalItemsInSection = 0;
|
||||
let hiddenItemsInSection = 0;
|
||||
|
||||
while (next && !["H1", "H2", "H3", "H4"].includes(next.tagName)) {
|
||||
if (next.tagName === "UL") {
|
||||
Array.from(next.querySelectorAll("li")).forEach(li => {
|
||||
if (targets.some(t => t.element === li)) {
|
||||
totalItemsInSection++;
|
||||
if (li.classList.contains("v2-filtered-hidden")) hiddenItemsInSection++;
|
||||
}
|
||||
});
|
||||
} else if (next.tagName === "DETAILS" && next.classList.contains("note")) {
|
||||
totalItemsInSection++;
|
||||
if (next.classList.contains("v2-filtered-hidden")) hiddenItemsInSection++;
|
||||
}
|
||||
next = next.nextElementSibling;
|
||||
}
|
||||
|
||||
if (totalItemsInSection > 0 && totalItemsInSection === hiddenItemsInSection) {
|
||||
heading.classList.add("v2-filtered-hidden");
|
||||
} else {
|
||||
heading.classList.remove("v2-filtered-hidden");
|
||||
}
|
||||
});
|
||||
}
|
||||
updateFilters();
|
||||
});
|
||||
|
||||
// Clear search
|
||||
searchClear.addEventListener("click", function () {
|
||||
searchInput.value = "";
|
||||
searchText = "";
|
||||
searchClear.style.display = "none";
|
||||
updateFilters();
|
||||
searchInput.focus();
|
||||
});
|
||||
|
||||
// Pill click event listener
|
||||
pills.forEach(pill => {
|
||||
pill.addEventListener("click", function () {
|
||||
pills.forEach(p => p.classList.remove("active"));
|
||||
this.classList.add("active");
|
||||
activeFilter = this.getAttribute("data-filter");
|
||||
searchInput.addEventListener("input", function (e) {
|
||||
searchText = e.target.value.toLowerCase().trim();
|
||||
searchClear.style.display = searchText ? "block" : "none";
|
||||
updateFilters();
|
||||
});
|
||||
});
|
||||
|
||||
// Make tag badges clickable to trigger filtering
|
||||
document.addEventListener("click", function (e) {
|
||||
const tagSpan = e.target.closest(".md-tag");
|
||||
if (!tagSpan) return;
|
||||
|
||||
// Skip if inside the filter container itself to avoid loop
|
||||
if (e.target.closest(".v2-filter-container")) return;
|
||||
|
||||
let tagText = tagSpan.textContent.trim().replace(/[\[\]]/g, "").toUpperCase();
|
||||
if (tagText.includes("CONTENT")) {
|
||||
tagText = tagText.replace(" CONTENT", "");
|
||||
}
|
||||
|
||||
// 1. Check if the tag matches a predefined filter pill
|
||||
const matchingPill = Array.from(pills).find(p => p.getAttribute("data-filter") === tagText);
|
||||
if (matchingPill) {
|
||||
pills.forEach(p => p.classList.remove("active"));
|
||||
matchingPill.classList.add("active");
|
||||
activeFilter = tagText;
|
||||
// Reset search input
|
||||
searchClear.addEventListener("click", function () {
|
||||
searchInput.value = "";
|
||||
searchText = "";
|
||||
searchClear.style.display = "none";
|
||||
updateFilters();
|
||||
filterContainer.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
||||
} else {
|
||||
// 2. If it's a technical stack tag, use it as search input query
|
||||
pills.forEach(p => p.classList.remove("active"));
|
||||
const allPill = Array.from(pills).find(p => p.getAttribute("data-filter") === "all");
|
||||
if (allPill) allPill.classList.add("active");
|
||||
activeFilter = "all";
|
||||
|
||||
// Populate search input and fire input event
|
||||
searchInput.value = tagSpan.textContent.trim().toLowerCase();
|
||||
searchText = searchInput.value;
|
||||
searchClear.style.display = "block";
|
||||
updateFilters();
|
||||
filterContainer.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
||||
searchInput.focus();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Lazy Loading Video Playback Integration
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
const lazyContainers = document.querySelectorAll(".video-lazy-container");
|
||||
lazyContainers.forEach(container => {
|
||||
container.addEventListener("click", function() {
|
||||
const videoUrl = this.getAttribute("data-video-url");
|
||||
const videoId = this.getAttribute("data-video-id");
|
||||
if (!videoUrl || !videoId) return;
|
||||
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.setAttribute("width", "720");
|
||||
iframe.setAttribute("height", "405");
|
||||
const autoplayUrl = videoUrl.includes("?") ? `${videoUrl}&autoplay=1` : `${videoUrl}?autoplay=1`;
|
||||
iframe.setAttribute("src", autoplayUrl);
|
||||
iframe.setAttribute("title", "YouTube Video");
|
||||
iframe.setAttribute("frameborder", "0");
|
||||
iframe.setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");
|
||||
iframe.setAttribute("allowfullscreen", "true");
|
||||
iframe.style.border = "none";
|
||||
iframe.style.width = "100%";
|
||||
iframe.style.height = "100%";
|
||||
iframe.style.borderRadius = "8px";
|
||||
|
||||
this.innerHTML = "";
|
||||
this.appendChild(iframe);
|
||||
this.style.cursor = "default";
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
pills.forEach(pill => {
|
||||
pill.addEventListener("click", function () {
|
||||
pills.forEach(p => p.classList.remove("active"));
|
||||
this.classList.add("active");
|
||||
activeFilter = this.getAttribute("data-filter");
|
||||
updateFilters();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Make tag badges anywhere in the content act as filter triggers.
|
||||
// Bound once on `document` (which survives instant navigation) and resolves
|
||||
// the current page's widget lazily, dispatching native events so the
|
||||
// per-page listeners above stay the single source of truth.
|
||||
function bindTagClicksOnce() {
|
||||
if (window.__v2TagClickBound) return;
|
||||
window.__v2TagClickBound = true;
|
||||
|
||||
document.addEventListener("click", function (e) {
|
||||
const tagSpan = e.target.closest(".md-tag");
|
||||
if (!tagSpan) return;
|
||||
if (e.target.closest(".v2-filter-container")) return;
|
||||
|
||||
const filterContainer = document.querySelector(".v2-filter-container");
|
||||
if (!filterContainer) return;
|
||||
|
||||
const pills = filterContainer.querySelectorAll(".v2-pill");
|
||||
const searchInput = filterContainer.querySelector(".v2-search-input");
|
||||
|
||||
let tagText = tagSpan.textContent.trim().replace(/[\[\]]/g, "").toUpperCase();
|
||||
if (tagText.includes("CONTENT")) tagText = tagText.replace(" CONTENT", "");
|
||||
|
||||
const matchingPill = Array.from(pills).find(p => p.getAttribute("data-filter") === tagText);
|
||||
if (matchingPill) {
|
||||
// Reset search, then activate the matching maturity pill.
|
||||
searchInput.value = "";
|
||||
searchInput.dispatchEvent(new Event("input", { bubbles: true }));
|
||||
matchingPill.click();
|
||||
} else {
|
||||
// Treat fine-grained technical tags as a search query.
|
||||
const allPill = Array.from(pills).find(p => p.getAttribute("data-filter") === "all");
|
||||
if (allPill) allPill.click();
|
||||
searchInput.value = tagSpan.textContent.trim().toLowerCase();
|
||||
searchInput.dispatchEvent(new Event("input", { bubbles: true }));
|
||||
}
|
||||
filterContainer.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
||||
});
|
||||
}
|
||||
|
||||
// Lazy YouTube playback: click a poster to swap in the iframe.
|
||||
function initLazyVideos() {
|
||||
document.querySelectorAll(".video-lazy-container").forEach(container => {
|
||||
if (container.dataset.lazyBound) return;
|
||||
container.dataset.lazyBound = "1";
|
||||
container.addEventListener("click", function () {
|
||||
const videoUrl = this.getAttribute("data-video-url");
|
||||
const videoId = this.getAttribute("data-video-id");
|
||||
if (!videoUrl || !videoId) return;
|
||||
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.setAttribute("width", "720");
|
||||
iframe.setAttribute("height", "405");
|
||||
const autoplayUrl = videoUrl.includes("?") ? `${videoUrl}&autoplay=1` : `${videoUrl}?autoplay=1`;
|
||||
iframe.setAttribute("src", autoplayUrl);
|
||||
iframe.setAttribute("title", "YouTube Video");
|
||||
iframe.setAttribute("frameborder", "0");
|
||||
iframe.setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture");
|
||||
iframe.setAttribute("allowfullscreen", "true");
|
||||
iframe.style.border = "none";
|
||||
iframe.style.width = "100%";
|
||||
iframe.style.height = "100%";
|
||||
iframe.style.borderRadius = "8px";
|
||||
|
||||
this.innerHTML = "";
|
||||
this.appendChild(iframe);
|
||||
this.style.cursor = "default";
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function init() {
|
||||
initFilterWidget();
|
||||
initLazyVideos();
|
||||
}
|
||||
|
||||
bindTagClicksOnce();
|
||||
|
||||
// Material exposes `document$` (an RxJS observable) that emits on every
|
||||
// instant navigation. Prefer it; fall back to DOMContentLoaded otherwise.
|
||||
if (typeof window.document$ !== "undefined" && typeof window.document$.subscribe === "function") {
|
||||
window.document$.subscribe(init);
|
||||
} else {
|
||||
document.addEventListener("DOMContentLoaded", init);
|
||||
}
|
||||
})();
|
||||
|
||||
@@ -5,3 +5,4 @@ youtube-transcript-api
|
||||
mkdocs-redirects>=1.2.3
|
||||
mkdocs-minify-plugin>=0.8.0
|
||||
mkdocs-rss-plugin>=1.15.0
|
||||
mkdocs-git-revision-date-localized-plugin>=1.3.0
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
"""One-off migration: normalize `gh_pushed` to None.
|
||||
|
||||
The enrichment writers historically stored the string "N/A" in the date
|
||||
field `gh_pushed` when GitHub data was unavailable. That literal reached
|
||||
`datetime.fromisoformat()` in the safety audit and curator, producing
|
||||
"Invalid isoformat string: 'N/A'" warnings (and, combined with other null
|
||||
fields, an aborted audit). The writers now emit None; this script cleans
|
||||
the existing inventory so the stored data matches.
|
||||
|
||||
Usage:
|
||||
python3 -m scripts.normalize_gh_pushed --dry-run # report only
|
||||
python3 -m scripts.normalize_gh_pushed # apply + save (YAML+SQL)
|
||||
|
||||
NOTE: save_inventory() round-trips through in-memory SQLite, and SQLite's
|
||||
iterdump renders REAL columns (e.g. epoch timestamps) with version-specific
|
||||
float precision. Running this on a machine whose SQLite differs from the one
|
||||
that generated the committed inventory.sql will rewrite ~all rows with no
|
||||
semantic change. Run it in CI (same SQLite as the pipeline) so the committed
|
||||
diff stays limited to the actual gh_pushed values.
|
||||
"""
|
||||
import sys
|
||||
|
||||
from src.inventory_manager import load_inventory, save_inventory
|
||||
from src.logger import log_event
|
||||
|
||||
BAD_VALUES = {"N/A", "NONE", ""}
|
||||
|
||||
|
||||
def main(dry_run: bool):
|
||||
inv = load_inventory()
|
||||
changed = 0
|
||||
for url, meta in inv.items():
|
||||
if not isinstance(meta, dict):
|
||||
continue
|
||||
pushed = meta.get("gh_pushed")
|
||||
if isinstance(pushed, str) and pushed.strip().upper() in BAD_VALUES:
|
||||
changed += 1
|
||||
if not dry_run:
|
||||
meta["gh_pushed"] = None
|
||||
|
||||
log_event(f"[Migration] gh_pushed normalize: {changed} entries with non-date value")
|
||||
if dry_run:
|
||||
log_event("[Migration] dry-run — no files written")
|
||||
return
|
||||
if changed:
|
||||
save_inventory(inv)
|
||||
log_event(f"[Migration] saved inventory (YAML+SQL); normalized {changed} entries")
|
||||
else:
|
||||
log_event("[Migration] nothing to change")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(dry_run="--dry-run" in sys.argv)
|
||||
@@ -115,9 +115,13 @@ async def evaluate_extracted_assets(raw_assets: List[Dict]) -> Dict[str, Dict]:
|
||||
gh_meta = await _get_github_activity(asset["url"]) if "github.com" in asset["url"] else {}
|
||||
|
||||
mvq_penalty = False
|
||||
if gh_meta.get("gh_pushed"):
|
||||
ld = datetime.fromisoformat(gh_meta["gh_pushed"].replace("Z", "+00:00"))
|
||||
if (datetime.now(ld.tzinfo) - ld).days > (365 * 4): mvq_penalty = True
|
||||
pushed = gh_meta.get("gh_pushed")
|
||||
if pushed and str(pushed).strip().upper() not in ("N/A", "NONE"):
|
||||
try:
|
||||
ld = datetime.fromisoformat(str(pushed).replace("Z", "+00:00"))
|
||||
if (datetime.now(ld.tzinfo) - ld).days > (365 * 4): mvq_penalty = True
|
||||
except Exception as e:
|
||||
log_event(f"[WARN] MVQ penalty date parse for {asset['url']}: {str(e)[:100]}")
|
||||
|
||||
batch_data.append({
|
||||
"asset": asset, "content": web_content[:1500], "hash": c_hash,
|
||||
|
||||
+4
-4
@@ -50,7 +50,7 @@ def get_readable_category(category: str) -> str:
|
||||
async def fetch_github_metadata(client: httpx.AsyncClient, url: str, sem: asyncio.Semaphore) -> tuple[str, dict]:
|
||||
default_meta = {
|
||||
"gh_stars": 0,
|
||||
"gh_pushed": "N/A",
|
||||
"gh_pushed": None, # date field: unknown = None, never the string "N/A"
|
||||
"gh_license": "N/A"
|
||||
}
|
||||
match = re.search(r'github\.com/([^/]+/[^/]+)', url)
|
||||
@@ -72,20 +72,20 @@ async def fetch_github_metadata(client: httpx.AsyncClient, url: str, sem: asynci
|
||||
lic_id = lic.get("spdx_id", "N/A") if isinstance(lic, dict) else "N/A"
|
||||
return url, {
|
||||
"gh_stars": data.get("stargazers_count", 0),
|
||||
"gh_pushed": data.get("pushed_at", "N/A"),
|
||||
"gh_pushed": data.get("pushed_at"),
|
||||
"gh_license": lic_id
|
||||
}
|
||||
elif resp.status_code == 404:
|
||||
return url, {
|
||||
"gh_stars": 0,
|
||||
"gh_pushed": "N/A",
|
||||
"gh_pushed": None,
|
||||
"gh_license": "N/A",
|
||||
"status": "dead"
|
||||
}
|
||||
else:
|
||||
return url, {
|
||||
"gh_stars": 0,
|
||||
"gh_pushed": "N/A",
|
||||
"gh_pushed": None,
|
||||
"gh_license": "N/A",
|
||||
"status": "unreachable"
|
||||
}
|
||||
|
||||
+2
-2
@@ -211,7 +211,7 @@ async def get_github_activity(url: str) -> Dict:
|
||||
"""
|
||||
default_meta = {
|
||||
"gh_stars": 0,
|
||||
"gh_pushed": "N/A",
|
||||
"gh_pushed": None, # date field: unknown = None, never the string "N/A"
|
||||
"gh_license": "N/A"
|
||||
}
|
||||
match = re.search(r'github\.com/([^/]+/[^/]+)', url)
|
||||
@@ -236,7 +236,7 @@ async def get_github_activity(url: str) -> Dict:
|
||||
lic_id = lic.get("spdx_id", "N/A") if isinstance(lic, dict) else "N/A"
|
||||
return {
|
||||
"gh_stars": data.get("stargazers_count", 0),
|
||||
"gh_pushed": data.get("pushed_at", "N/A"),
|
||||
"gh_pushed": data.get("pushed_at"),
|
||||
"gh_license": lic_id
|
||||
}
|
||||
except Exception as e:
|
||||
|
||||
@@ -113,7 +113,7 @@ def save_inventory(inv: Dict, shard_file: str = None):
|
||||
addition_method TEXT,
|
||||
content_hash TEXT,
|
||||
health_score REAL,
|
||||
last_checked REAL,
|
||||
last_checked INTEGER,
|
||||
needs_ai_refresh BOOLEAN,
|
||||
discovered_at TEXT,
|
||||
last_ai_eval TEXT,
|
||||
@@ -139,7 +139,16 @@ def save_inventory(inv: Dict, shard_file: str = None):
|
||||
for url, entry in inv.items():
|
||||
if not isinstance(entry, dict):
|
||||
continue
|
||||
|
||||
|
||||
# last_checked is a coarse staleness timestamp (epoch seconds). Normalize
|
||||
# it to int on the entry itself — before building the SQL record AND the
|
||||
# YAML dump below — so both serializations agree, and SQLite's
|
||||
# version-specific REAL->text float formatting can't rewrite every row on
|
||||
# dump. Sub-second precision is not used by any reader.
|
||||
lc = entry.get("last_checked")
|
||||
if isinstance(lc, float):
|
||||
entry["last_checked"] = int(lc)
|
||||
|
||||
record = {col: entry.get(col) for col in columns if col not in ["hierarchy", "tags", "v1_locations", "v2_locations", "youtube_mosaic", "extra_metadata"]}
|
||||
record["url"] = url
|
||||
|
||||
@@ -160,7 +169,7 @@ def save_inventory(inv: Dict, shard_file: str = None):
|
||||
# Conversions
|
||||
record["is_microservice"] = 1 if record.get("is_microservice") else 0
|
||||
record["needs_ai_refresh"] = 1 if record.get("needs_ai_refresh") else 0
|
||||
|
||||
|
||||
placeholders = ", ".join(["?"] * len(columns))
|
||||
values = [record[col] for col in columns]
|
||||
cursor.execute(f"INSERT OR REPLACE INTO resources ({', '.join(columns)}) VALUES ({placeholders})", values)
|
||||
|
||||
+7
-7
@@ -133,14 +133,14 @@ class NewsDigestEngine:
|
||||
# --- INDUSTRY / GEO (4) – resolved via geo_region, not slugs ---
|
||||
"Americas": [],
|
||||
"Europe": [],
|
||||
"España": [],
|
||||
"Spain": [],
|
||||
"Asia-Pacific": [],
|
||||
}
|
||||
|
||||
GEO_CATEGORIES: Dict[str, str] = {
|
||||
"Americas": "americas",
|
||||
"Europe": "europe",
|
||||
"España": "spain",
|
||||
"Spain": "spain",
|
||||
"Asia-Pacific": "asia_pacific",
|
||||
}
|
||||
|
||||
@@ -186,14 +186,14 @@ class NewsDigestEngine:
|
||||
return self.category_map[cat]
|
||||
return None
|
||||
|
||||
def _get_entry_geo(self, entry: dict) -> str | None:
|
||||
def _get_entry_geo(self, entry: dict, url: str = "") -> str | None:
|
||||
"""Return the geo digest category using geo_region field, falling back to URL TLD inference."""
|
||||
region = entry.get("geo_region", "")
|
||||
for geo_name, geo_val in self.GEO_CATEGORIES.items():
|
||||
if region == geo_val:
|
||||
return geo_name
|
||||
# Fallback: infer from URL TLD
|
||||
return self._infer_geo_from_url(entry.get("url", ""))
|
||||
# Fallback: infer from URL TLD (entry.get("url") populated only after url injection)
|
||||
return self._infer_geo_from_url(entry.get("url", "") or url)
|
||||
|
||||
@staticmethod
|
||||
def _infer_geo_from_url(url: str) -> str | None:
|
||||
@@ -205,7 +205,7 @@ class NewsDigestEngine:
|
||||
tld_to_region = [
|
||||
(".com.au", "Asia-Pacific"), (".co.uk", "Europe"), (".co.jp", "Asia-Pacific"),
|
||||
(".co.kr", "Asia-Pacific"), (".com.br", "Americas"), (".com.mx", "Americas"),
|
||||
(".es", "España"), (".de", "Europe"), (".fr", "Europe"), (".it", "Europe"),
|
||||
(".es", "Spain"), (".de", "Europe"), (".fr", "Europe"), (".it", "Europe"),
|
||||
(".pt", "Europe"), (".nl", "Europe"), (".be", "Europe"), (".se", "Europe"),
|
||||
(".dk", "Europe"), (".fi", "Europe"), (".no", "Europe"), (".ch", "Europe"),
|
||||
(".at", "Europe"), (".pl", "Europe"), (".cz", "Europe"), (".uk", "Europe"),
|
||||
@@ -410,7 +410,7 @@ class NewsDigestEngine:
|
||||
category_pools.setdefault(cat, []).append(
|
||||
dict(entry, url=url)
|
||||
)
|
||||
geo = self._get_entry_geo(entry)
|
||||
geo = self._get_entry_geo(entry, url=url)
|
||||
if geo:
|
||||
category_pools.setdefault(geo, []).append(
|
||||
dict(entry, url=url)
|
||||
|
||||
+7
-1
@@ -95,7 +95,13 @@ def main():
|
||||
files = pr.get_files()
|
||||
modified_files = [f.filename for f in files if f.status in ["modified", "added"]]
|
||||
for filepath in modified_files:
|
||||
if filepath.endswith(".md"):
|
||||
# The v2-docs/ tree is generated by src/v2_optimizer.py, which is its
|
||||
# single source of truth for formatting. Auto-formatting it here
|
||||
# ("&"->"and" in headings, URL trailing-slash stripping) only fights
|
||||
# the generator: the rewrite lands on develop via the PR while master
|
||||
# gets the generator's raw form via release merges, producing a
|
||||
# perpetual cosmetic develop<->master drift. Skip the generated tree.
|
||||
if filepath.endswith(".md") and not filepath.startswith("v2-docs/"):
|
||||
auto_format_file(filepath)
|
||||
except Exception as e:
|
||||
print(f"Warning: Failed to fetch files for auto-formatting: {e}")
|
||||
|
||||
+26
-14
@@ -18,16 +18,24 @@ def load_inventory_channels():
|
||||
|
||||
channels = []
|
||||
for url, entry in inventory.items():
|
||||
if isinstance(entry, dict) and 'youtube_mosaic' in entry:
|
||||
metadata = entry['youtube_mosaic']
|
||||
channels.append({
|
||||
'title': entry.get('title', 'Unknown Channel'),
|
||||
'url': url,
|
||||
'image': metadata.get('image', ''),
|
||||
'category': metadata.get('category', 'learning_influencers_communities'),
|
||||
'order_v1': metadata.get('order_v1', 9999),
|
||||
'order_v2': metadata.get('order_v2', 9999)
|
||||
})
|
||||
if not isinstance(entry, dict):
|
||||
continue
|
||||
metadata = entry.get('youtube_mosaic')
|
||||
# Every inventory entry carries a 'youtube_mosaic' column that the SQL
|
||||
# round-trip materializes as an empty dict {}, so a bare key-presence
|
||||
# check matches the entire inventory and explodes the mosaic to ~18k
|
||||
# logos. Only treat an entry as a mosaic channel when it actually has
|
||||
# mosaic metadata with a logo image.
|
||||
if not isinstance(metadata, dict) or not metadata.get('image'):
|
||||
continue
|
||||
channels.append({
|
||||
'title': entry.get('title', 'Unknown Channel'),
|
||||
'url': url,
|
||||
'image': metadata.get('image', ''),
|
||||
'category': metadata.get('category', 'learning_influencers_communities'),
|
||||
'order_v1': metadata.get('order_v1', 9999),
|
||||
'order_v2': metadata.get('order_v2', 9999)
|
||||
})
|
||||
return channels
|
||||
|
||||
def build_v2_mosaic_markdown_from_channels(channels):
|
||||
@@ -52,13 +60,17 @@ def build_v2_mosaic_markdown_from_channels(channels):
|
||||
cat_chans.sort(key=lambda x: x['order_v2'])
|
||||
|
||||
# Open category block container
|
||||
lines.append(f'<div markdown="1" style="border: 1px solid {cat_info["color"]}; border-radius: 8px; padding: 10px; margin: 8px 0; background: rgba(255, 255, 255, 0.01);" title="{cat_info["name"]}">')
|
||||
lines.append(f'<div markdown="1" class="mosaic-cat-block" style="border: 1px solid {cat_info["color"]}; border-radius: 8px; padding: 10px; margin: 8px 0; background: rgba(255, 255, 255, 0.01);" title="{cat_info["name"]}">')
|
||||
lines.append('') # Mandatory blank line after block tag
|
||||
|
||||
# Channel links
|
||||
|
||||
# Visible category label (previously only exposed via the hidden title= tooltip)
|
||||
lines.append(f'<p class="mosaic-cat-label" style="--cat-color: {cat_info["color"]}">{cat_info["name"]}</p>')
|
||||
lines.append('')
|
||||
|
||||
# Channel links (loading="lazy" — ~150 logos, almost all below the fold)
|
||||
chan_links = []
|
||||
for chan in cat_chans:
|
||||
chan_links.append(f"[![{chan['title']}]({chan['image']}){{: style=\"width:48px; height:48px; object-fit:contain; margin:6px;\" .channel-logo}}]({chan['url']})")
|
||||
chan_links.append(f"[![{chan['title']}]({chan['image']}){{: style=\"width:48px; height:48px; object-fit:contain; margin:6px;\" loading=\"lazy\" .channel-logo}}]({chan['url']})")
|
||||
|
||||
lines.append(" ".join(chan_links))
|
||||
lines.append('')
|
||||
|
||||
+22
-1
@@ -61,7 +61,28 @@ def generate_rss() -> None:
|
||||
)
|
||||
items = items[:ITEMS_PER_FEED]
|
||||
|
||||
build_date = _rfc822(datetime.utcnow())
|
||||
# Deterministic build date = the freshest item's content date, so the feed
|
||||
# is a pure function of its items. (This used wall-clock now() — rewritten on
|
||||
# every republish — then _meta.last_updated, but that analysis timestamp is
|
||||
# itself bumped on each publish even when the ranked content is unchanged, so
|
||||
# the feed still drifted between develop and master. The item dates only move
|
||||
# when the content actually changes.) Falls back to _meta.last_updated, then
|
||||
# a fixed constant, only when no item carries a parseable date.
|
||||
item_dates = []
|
||||
for _it in items:
|
||||
try:
|
||||
item_dates.append(datetime.strptime(_it.get("date", ""), "%Y-%m-%d"))
|
||||
except Exception:
|
||||
pass
|
||||
if item_dates:
|
||||
build_dt = max(item_dates)
|
||||
else:
|
||||
meta_updated = digest.get("_meta", {}).get("last_updated", "")
|
||||
try:
|
||||
build_dt = datetime.fromisoformat(meta_updated) if meta_updated else datetime(2026, 1, 1)
|
||||
except Exception:
|
||||
build_dt = datetime(2026, 1, 1)
|
||||
build_date = _rfc822(build_dt)
|
||||
|
||||
lines = [
|
||||
'<?xml version="1.0" encoding="UTF-8"?>',
|
||||
|
||||
+38
-19
@@ -86,15 +86,23 @@ class SafetyGuard:
|
||||
for url, meta in self.inventory.items():
|
||||
if "github.com" in url and meta.get("v2_locations"):
|
||||
pushed = meta.get("gh_pushed", "")
|
||||
if pushed:
|
||||
try:
|
||||
last_date = datetime.fromisoformat(pushed.replace("Z", "+00:00"))
|
||||
inactive_years = (datetime.now(last_date.tzinfo) - last_date).days / 365
|
||||
stars = meta.get("gh_stars", meta.get("stars", 0) * 100)
|
||||
if inactive_years > 4 and stars < 30:
|
||||
self.warnings.append(f"🏚️ **MVQ Violation**: Stale repo `{url}` (>4yrs) in V2 with low impact")
|
||||
except Exception as e:
|
||||
log_event(f"[WARN] MVQ compliance check for {url}: {str(e)[:100]}")
|
||||
# Skip entries with no usable push date. Enrichment stores "N/A"
|
||||
# (and historically None/empty) when GitHub data is unavailable;
|
||||
# these are not ISO dates and must not reach fromisoformat().
|
||||
if not pushed or str(pushed).strip().upper() in ("N/A", "NONE"):
|
||||
continue
|
||||
try:
|
||||
last_date = datetime.fromisoformat(str(pushed).replace("Z", "+00:00"))
|
||||
inactive_years = (datetime.now(last_date.tzinfo) - last_date).days / 365
|
||||
# gh_stars may be missing; fall back to V1 stars (×100 heuristic).
|
||||
# Coalesce None so a stored null never reaches the multiplication.
|
||||
stars = meta.get("gh_stars")
|
||||
if stars is None:
|
||||
stars = (meta.get("stars") or 0) * 100
|
||||
if inactive_years > 4 and stars < 30:
|
||||
self.warnings.append(f"🏚️ **MVQ Violation**: Stale repo `{url}` (>4yrs) in V2 with low impact")
|
||||
except Exception as e:
|
||||
log_event(f"[WARN] MVQ compliance check for {url}: {str(e)[:100]}")
|
||||
|
||||
def validate_linguistic_tagging(self):
|
||||
"""Mandate 10: Explicit Language Tagging."""
|
||||
@@ -104,7 +112,9 @@ class SafetyGuard:
|
||||
with open(os.path.join(V2_DIR, file), "r") as f:
|
||||
content = f.read()
|
||||
for url, meta in self.inventory.items():
|
||||
lang = meta.get("language", "English")
|
||||
# language may be stored as null; coalesce to avoid None.lower()
|
||||
# aborting the entire audit.
|
||||
lang = meta.get("language") or "English"
|
||||
if lang.lower() != "english" and url in content:
|
||||
tag = f"[{lang.upper()} CONTENT]"
|
||||
if tag not in content:
|
||||
@@ -289,15 +299,24 @@ class SafetyGuard:
|
||||
except Exception as e:
|
||||
log_event(f"[WARN] load old inventory for data integrity check: {str(e)[:100]}")
|
||||
|
||||
self.validate_semantic_interlinking()
|
||||
self.validate_special_assets_completeness()
|
||||
self.validate_mvq_compliance()
|
||||
self.validate_linguistic_tagging()
|
||||
self.validate_platinum_schema()
|
||||
self.validate_structural_standards() # Mandate 30 & 19
|
||||
self.validate_v2_architecture()
|
||||
self.validate_navigation_sync() # Mandate 11
|
||||
self.validate_forbidden_tags() # Safety Hardening
|
||||
# Run each mandate in isolation so one bad entry can't abort the
|
||||
# entire audit (e.g. a null field raising mid-validation).
|
||||
validations = [
|
||||
self.validate_semantic_interlinking,
|
||||
self.validate_special_assets_completeness,
|
||||
self.validate_mvq_compliance,
|
||||
self.validate_linguistic_tagging,
|
||||
self.validate_platinum_schema,
|
||||
self.validate_structural_standards, # Mandate 30 & 19
|
||||
self.validate_v2_architecture,
|
||||
self.validate_navigation_sync, # Mandate 11
|
||||
self.validate_forbidden_tags, # Safety Hardening
|
||||
]
|
||||
for check in validations:
|
||||
try:
|
||||
check()
|
||||
except Exception as e:
|
||||
log_event(f"[WARN] audit mandate {check.__name__} failed: {str(e)[:100]}")
|
||||
|
||||
status = "✅ PASS" if not self.errors else "❌ FAILED"
|
||||
if not self.errors and self.warnings: status = "⚠️ WARNING"
|
||||
|
||||
+590
-116
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
import re
|
||||
import json
|
||||
import math
|
||||
import hashlib
|
||||
import asyncio
|
||||
import yaml
|
||||
@@ -42,7 +43,7 @@ class V2VisionEngine:
|
||||
"Architectural Foundations": ["introduction", "faq", "kubernetes", "linux", "git", "cloud-arch-diagrams", "matrix-table", "other-awesome-lists", "about"],
|
||||
"Platform & Site Reliability": ["sre", "devops", "developerportals", "scaffolding", "finops", "chaos-engineering", "performance-testing-with-jenkins-and-jmeter", "project-management-methodology", "project-management-tools", "qa", "test-automation-frameworks", "testops"],
|
||||
"Hardened Infrastructure": ["iac", "terraform", "pulumi", "crossplane", "ansible", "securityascode", "kubernetes-security", "aws-security", "devsecops", "kustomize", "liquibase"],
|
||||
"Cloud Providers (Hyperscalers)": ["aws", "azure", "GoogleCloudPlatform", "ibm_cloud", "oraclecloud", "digitalocean", "cloudflare", "managed-kubernetes-in-public-cloud", "public-cloud-solutions", "edge-computing", "aws-architecture", "aws-security", "aws-networking", "aws-databases", "aws-storage", "aws-monitoring", "aws-iac", "aws-tools-scripts", "aws-messaging", "aws-data", "aws-devops", "aws-serverless", "aws-containers", "aws-backup", "aws-training", "aws-newfeatures", "aws-miscellaneous", "aws-pricing"],
|
||||
"Cloud Providers (Hyperscalers)": ["aws", "azure", "GoogleCloudPlatform", "ibm_cloud", "oraclecloud", "digitalocean", "cloudflare", "managed-kubernetes-in-public-cloud", "public-cloud-solutions", "edge-computing", "aws-security", "aws-networking", "aws-storage", "aws-iac", "aws-serverless", "aws-backup", "aws-newfeatures"],
|
||||
"Networking & Service Mesh": ["networking", "kubernetes-networking", "servicemesh", "istio", "caching", "web-servers", "cloudflare"],
|
||||
"The Container Stack": ["docker", "container-managers", "serverless", "kubernetes-autoscaling", "kubernetes-operators-controllers", "kubernetes-storage", "kubernetes-monitoring", "kubernetes-troubleshooting", "kubernetes-backup-migrations", "kubernetes-on-premise", "kubernetes-bigdata", "kubernetes-client-libraries", "kubernetes-releases", "kubernetes-based-devel", "kubernetes-alternatives", "kubectl-commands", "rancher", "openshift", "ocp3", "ocp4", "noops"],
|
||||
"Data & Advanced Analytics": ["databases", "nosql", "message-queue", "crunchydata", "yaml", "bigdata"],
|
||||
@@ -65,6 +66,57 @@ class V2VisionEngine:
|
||||
"oauth": "securityascode",
|
||||
"digital-money": "finops",
|
||||
"aws-spain": "aws",
|
||||
# AWS de-fragmentation: the near-empty / junk-drawer AWS sub-pages
|
||||
# (<=7 links, plus "miscellaneous") merge into the main aws page so
|
||||
# it stops being a 3-link stub. The substantial AWS topics
|
||||
# (serverless, storage, networking, security, iac, backup,
|
||||
# newfeatures) stay as their own pages and are surfaced via the
|
||||
# provider hub block (self.subpage_hubs) on aws.md.
|
||||
"aws-miscellaneous": "aws",
|
||||
"aws-databases": "aws",
|
||||
"aws-devops": "aws",
|
||||
"aws-containers": "aws",
|
||||
"aws-monitoring": "aws",
|
||||
"aws-architecture": "aws",
|
||||
"aws-tools-scripts": "aws",
|
||||
"aws-messaging": "aws",
|
||||
"aws-data": "aws",
|
||||
"aws-training": "aws",
|
||||
"aws-pricing": "aws",
|
||||
}
|
||||
|
||||
# Provider hub: pages that should render a "deep-dive topic pages" index
|
||||
# linking to the substantial sub-pages that remain after consolidation.
|
||||
# (slug, display label) — labels kept short and human-readable.
|
||||
self.subpage_hubs = {
|
||||
"aws": [
|
||||
("aws-serverless", "Serverless"),
|
||||
("aws-storage", "Storage"),
|
||||
("aws-networking", "Networking"),
|
||||
("aws-security", "Security"),
|
||||
("aws-iac", "IaC"),
|
||||
("aws-backup", "Backup"),
|
||||
("aws-newfeatures", "New Features"),
|
||||
],
|
||||
# Kubernetes is well-classified (rich parent + substantial distinct
|
||||
# children), so nothing is merged here — the hub is purely an index
|
||||
# so the flagship landing surfaces its deep-dive topic pages.
|
||||
"kubernetes": [
|
||||
("kubernetes-tools", "Tools"),
|
||||
("kubernetes-networking", "Networking"),
|
||||
("kubernetes-security", "Security"),
|
||||
("kubernetes-monitoring", "Monitoring"),
|
||||
("kubernetes-storage", "Storage"),
|
||||
("kubernetes-autoscaling", "Autoscaling"),
|
||||
("kubernetes-operators-controllers", "Operators"),
|
||||
("kubernetes-alternatives", "Alternatives"),
|
||||
("kubernetes-bigdata", "Big Data"),
|
||||
("kubernetes-tutorials", "Tutorials"),
|
||||
("kubernetes-backup-migrations", "Backup & Migrations"),
|
||||
("kubernetes-client-libraries", "Client Libraries"),
|
||||
("kubernetes-based-devel", "Local Dev"),
|
||||
("kubernetes-on-premise", "On-Premise"),
|
||||
],
|
||||
}
|
||||
|
||||
self.library_criteria = (
|
||||
@@ -169,7 +221,7 @@ class V2VisionEngine:
|
||||
|
||||
# --- SURGICAL GARBAGE COLLECTION ---
|
||||
# Track every file we generate
|
||||
generated_files = {"index.md", "audit-log.md", "videos.md", "tags.md", "tech-digest.md", "industry-digest.md"}
|
||||
generated_files = {"index.md", "audit-log.md", "videos.md", "tags.md", "tech-digest.md", "industry-digest.md", "topic-map.md", "methodology.md"}
|
||||
for f_name in v2_data.keys():
|
||||
generated_files.add(f_name)
|
||||
|
||||
@@ -963,7 +1015,7 @@ class V2VisionEngine:
|
||||
"FinOps & Cloud Cost", "Certification & Training",
|
||||
"AWS", "Azure", "GCP, OCI & Others", "OpenShift / Red Hat", "Virtualization & Private Cloud"
|
||||
]
|
||||
geo_cats = ["Americas", "Europe", "España", "Asia-Pacific"]
|
||||
geo_cats = ["Americas", "Europe", "Spain", "Asia-Pacific"]
|
||||
period_labels = {"3_months": "Last 3 Months", "6_months": "Last 6 Months", "12_months": "Last 12 Months"}
|
||||
|
||||
def render_digest_page(title, categories, digest_data, search_boost=1):
|
||||
@@ -971,19 +1023,26 @@ class V2VisionEngine:
|
||||
md += f"# {title}\n\n"
|
||||
md += "!!! tip \"Nubenetes Intelligence Digest\"\n"
|
||||
md += " AI-curated ranking of the most impactful resources, updated monthly.\n\n"
|
||||
for period_key, period_label in period_labels.items():
|
||||
md += f'=== "{period_label}"\n\n'
|
||||
period_data = digest_data.get(period_key, {})
|
||||
for cat in categories:
|
||||
items = period_data.get(cat, [])
|
||||
# Category-first layout: each category is a real H2 heading (at column 0)
|
||||
# so it appears exactly once in the MkDocs Material right-hand "On this page"
|
||||
# TOC, with the three time-windows as content tabs *inside* the category.
|
||||
# (The previous period-first layout nested categories as bold text inside
|
||||
# tabs, which produced no TOC entries and tripped MD023 on indented headings.)
|
||||
for cat in categories:
|
||||
# Skip categories with no ranked items in any time window.
|
||||
if not any(digest_data.get(pk, {}).get(cat) for pk in period_labels):
|
||||
continue
|
||||
md += f"## {cat}\n\n"
|
||||
for period_key, period_label in period_labels.items():
|
||||
items = digest_data.get(period_key, {}).get(cat, [])
|
||||
if not items:
|
||||
continue
|
||||
md += f" **{cat}**\n\n"
|
||||
md += f'=== "{period_label}"\n\n'
|
||||
md += " | Date | Resource | Impact | Why It Matters |\n"
|
||||
md += " | :--- | :--- | :---: | :--- |\n"
|
||||
for item in items:
|
||||
impact_badge = {"critical": "🔴", "high": "🟡", "medium": "🔵"}.get(item.get("impact", "medium"), "🔵")
|
||||
t = nuclear_strip(item.get("title", "Unknown"))
|
||||
t = nuclear_strip(item.get("title", "Unknown")).replace("|", r"\|")
|
||||
why = (item.get("why", "") or "").replace("|", "-").replace("\n", " ")
|
||||
md += f' | {item.get("date", "")} | [{t}]({item.get("url", "#")}) | {impact_badge} {item.get("impact", "medium")} | {why} |\n'
|
||||
md += "\n"
|
||||
@@ -1012,14 +1071,140 @@ class V2VisionEngine:
|
||||
pass
|
||||
|
||||
if digest_data and "3_months" in digest_data:
|
||||
top_items = []
|
||||
for cat_name, items in digest_data.get("3_months", {}).items():
|
||||
for item in items[:2]:
|
||||
top_items.append({**item, "digest_category": cat_name})
|
||||
top_items.sort(key=lambda x: {"critical": 3, "high": 2, "medium": 1}.get(x.get("impact", "medium"), 0), reverse=True)
|
||||
top_items = top_items[:6]
|
||||
|
||||
# --- Trending v2: momentum-weighted, category-diverse selection ---
|
||||
# Score = impact_weight * recency_decay so the section actually rotates
|
||||
# with fresh items instead of pinning evergreen/foundational tools.
|
||||
# Anchor "now" to the digest's analysis timestamp (not wall-clock) so
|
||||
# identical digest input always renders identical cards — re-renders on
|
||||
# later days must not shuffle ages/NEW pills and churn the committed HTML.
|
||||
now = datetime.now(MADRID_TZ)
|
||||
try:
|
||||
raw_now = digest_data.get("_meta", {}).get("last_updated", "")
|
||||
if raw_now:
|
||||
now = datetime.fromisoformat(raw_now)
|
||||
except Exception as e:
|
||||
log_event(f"[WARN] trending now-anchor: {str(e)[:100]}")
|
||||
impact_weight = {"critical": 1.0, "high": 0.66, "medium": 0.4}
|
||||
impact_icons = {"critical": "🔴", "high": "🟡", "medium": "🔵"}
|
||||
|
||||
def _parse_day(s):
|
||||
try:
|
||||
return datetime.fromisoformat(
|
||||
str(s).replace("Z", "+00:00").split("T")[0]
|
||||
).date()
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
def _clean_title(t):
|
||||
t = nuclear_strip(t)
|
||||
# "github.com/owner/repo" -> "repo"
|
||||
if "github.com/" in t.lower():
|
||||
t = t.rstrip("/").split("/")[-1]
|
||||
# "domain.tld: Real Name" -> "Real Name" (Gemini host-prefixed titles)
|
||||
m = re.match(r'^[\w.-]+\.[a-z]{2,}:\s*(.+)$', t, re.I)
|
||||
if m:
|
||||
t = m.group(1)
|
||||
return t
|
||||
|
||||
def _fmt_stars(n):
|
||||
if not n:
|
||||
return ""
|
||||
if n >= 1000:
|
||||
return f"{n / 1000:.1f}k★".replace(".0k", "k")
|
||||
return f"{n}★"
|
||||
|
||||
def _select_lane(window_key, count, exclude_urls, score_fn):
|
||||
# Build a scored pool from the window's top-2 items per category,
|
||||
# then apply a per-category diversity quota. The scoring policy is
|
||||
# supplied by score_fn so each lane surfaces a different signal.
|
||||
pool = []
|
||||
for cat_name, items in digest_data.get(window_key, {}).items():
|
||||
for item in (items or [])[:2]:
|
||||
if not isinstance(item, dict) or item.get("url") in exclude_urls:
|
||||
continue
|
||||
d = _parse_day(item.get("date"))
|
||||
age_days = (now.date() - d).days if d else 999
|
||||
pool.append({**item, "digest_category": cat_name, "_age_days": age_days, "_score": score_fn(item, age_days)})
|
||||
pool.sort(key=lambda x: x["_score"], reverse=True)
|
||||
# Diversity quota: at most one card per category, then backfill.
|
||||
sel, used_cats, used = [], set(), set(exclude_urls)
|
||||
for it in pool:
|
||||
if it["digest_category"] in used_cats or it.get("url") in used:
|
||||
continue
|
||||
sel.append(it)
|
||||
used_cats.add(it["digest_category"])
|
||||
used.add(it.get("url"))
|
||||
if len(sel) >= count:
|
||||
break
|
||||
if len(sel) < count:
|
||||
for it in pool:
|
||||
if it.get("url") in used:
|
||||
continue
|
||||
sel.append(it)
|
||||
used.add(it.get("url"))
|
||||
if len(sel) >= count:
|
||||
break
|
||||
return sel
|
||||
|
||||
def _render_cards(items, show_new=True):
|
||||
html = ""
|
||||
for item in items:
|
||||
impact = item.get("impact", "medium")
|
||||
# Momentum: prefer real GitHub star count from the inventory join;
|
||||
# fall back to the 1-5 Gemini impact score rendered as 🌟.
|
||||
inv_meta = self.inventory.get(item.get("url")) if isinstance(self.inventory, dict) else None
|
||||
gh_stars = inv_meta.get("gh_stars") if isinstance(inv_meta, dict) else None
|
||||
metric = _fmt_stars(gh_stars)
|
||||
if not metric:
|
||||
score = item.get("stars") or 0
|
||||
metric = "🌟" * score if score else ""
|
||||
meta = item.get("date", "")
|
||||
if metric:
|
||||
meta += f" · {metric}"
|
||||
new_pill = ' <span class="trending-card__new">🆕 NEW</span>' if show_new and item.get("_age_days", 999) <= 7 else ""
|
||||
html += (
|
||||
f'<div class="trending-card">\n'
|
||||
f' <div class="trending-card__impact trending-card__impact--{impact}">{impact_icons.get(impact, "🔵")} {impact.upper()}{new_pill}</div>\n'
|
||||
f' <div class="trending-card__category">{item.get("digest_category", "")}</div>\n'
|
||||
f' <div class="trending-card__title"><a href="{item.get("url", "#")}">{_clean_title(item.get("title", "Unknown"))}</a></div>\n'
|
||||
f' <div class="trending-card__meta">{meta}</div>\n'
|
||||
f' <div class="trending-card__why">{item.get("why", "")}</div>\n'
|
||||
f'</div>\n'
|
||||
)
|
||||
return html
|
||||
|
||||
# Proven-staying-power signal for lane 2: URLs that the digest ranks in
|
||||
# the top-2 of any category over the full 12-month window.
|
||||
twelve_mo_urls = {
|
||||
it.get("url")
|
||||
for items in digest_data.get("12_months", {}).values()
|
||||
for it in (items or [])
|
||||
if isinstance(it, dict)
|
||||
}
|
||||
|
||||
def _impact(item):
|
||||
return impact_weight.get(item.get("impact", "medium"), 0.4)
|
||||
|
||||
def _fresh_score(item, age_days):
|
||||
# Aggressive 21d half-life: surfaces the very newest high-impact items.
|
||||
recency = 0.5 ** (max(age_days, 0) / 21.0)
|
||||
return _impact(item) * (0.35 + 0.65 * recency)
|
||||
|
||||
def _sustained_score(item, age_days):
|
||||
# "Rising this Quarter": reward proven staying power (present across
|
||||
# the 12-month window) and de-prioritise <7d items (those belong in
|
||||
# lane 1) so the two lanes surface genuinely different resources —
|
||||
# not just lane 1's leftovers under a different label.
|
||||
persistence = 1.0 if item.get("url") in twelve_mo_urls else 0.5
|
||||
maturity = 0.35 if age_days < 7 else 1.0
|
||||
decay = 0.5 ** (max(age_days, 0) / 120.0)
|
||||
return _impact(item) * persistence * maturity * (0.45 + 0.55 * decay)
|
||||
|
||||
# Lane 1: fresh momentum (3-month window).
|
||||
top_items = _select_lane("3_months", 6, set(), _fresh_score)
|
||||
# Lane 2: sustained momentum (6-month window), de-duplicated against lane 1.
|
||||
rising_items = _select_lane("6_months", 4, {it.get("url") for it in top_items}, _sustained_score)
|
||||
|
||||
try:
|
||||
from datetime import datetime as _dt
|
||||
# Prefer _meta.last_updated (tracks actual Gemini analysis date)
|
||||
@@ -1035,18 +1220,12 @@ class V2VisionEngine:
|
||||
digest_updated = ""
|
||||
updated_badge = f'<span class="trending-section__updated">Updated {digest_updated}</span>' if digest_updated else ""
|
||||
cards_html = f'<div class="trending-section">\n<div class="trending-section__title">🔥 Trending Now — Cloud Native Intelligence {updated_badge}</div>\n<div class="trending-grid">\n'
|
||||
for item in top_items:
|
||||
impact = item.get("impact", "medium")
|
||||
cards_html += (
|
||||
f'<div class="trending-card">\n'
|
||||
f' <div class="trending-card__impact trending-card__impact--{impact}">{impact_icons.get(impact, "🔵")} {impact.upper()}</div>\n'
|
||||
f' <div class="trending-card__category">{item.get("digest_category", "")}</div>\n'
|
||||
f' <div class="trending-card__title"><a href="{item.get("url", "#")}">{nuclear_strip(item.get("title", "Unknown"))}</a></div>\n'
|
||||
f' <div class="trending-card__meta">{item.get("date", "")} · {"🌟" * item.get("stars") or 0}</div>\n'
|
||||
f' <div class="trending-card__why">{item.get("why", "")}</div>\n'
|
||||
f'</div>\n'
|
||||
)
|
||||
cards_html += _render_cards(top_items)
|
||||
cards_html += '</div>\n'
|
||||
if rising_items:
|
||||
cards_html += '<div class="trending-section__title trending-section__title--secondary">📈 Rising this Quarter — Sustained Momentum</div>\n<div class="trending-grid">\n'
|
||||
cards_html += _render_cards(rising_items, show_new=False)
|
||||
cards_html += '</div>\n'
|
||||
cards_html += '<div class="digest-links">\n'
|
||||
cards_html += ' <a href="./tech-digest/" class="digest-link-card">📊 Full Tech & Cloud Digest →</a>\n'
|
||||
cards_html += ' <a href="./industry-digest/" class="digest-link-card">🌍 Industry & Geo Digest →</a>\n'
|
||||
@@ -1083,6 +1262,18 @@ class V2VisionEngine:
|
||||
" - **Status**: The system is incrementally processing pending resources to complete the knowledge graph.\n"
|
||||
)
|
||||
|
||||
# Label Heatmap for the index: identical tag aggregation to the Tags page
|
||||
# (deterministic slugs), but each label deep-links across to /tags/#slug.
|
||||
heat_sorted, heat_meta, _ = self._aggregate_tags(data)
|
||||
index_heatmap = self._render_tag_heatmap(
|
||||
heat_sorted, heat_meta, href_base="/tags/",
|
||||
intro=(
|
||||
"Every technical label across Nubenetes, sized by how many "
|
||||
"resources carry it. Click any label to open it on the "
|
||||
"[Technical Tags](/tags/) page."
|
||||
),
|
||||
)
|
||||
|
||||
index_md = (
|
||||
"# Nubenetes Elite Portal (V2) | Awesome Kubernetes & Cloud [](https://github.com/sindresorhus/awesome)\n\n"
|
||||
"!!! tip \"Nubenetes V2 Elite Portal: AI-Curated & High-Density\"\n"
|
||||
@@ -1106,7 +1297,8 @@ class V2VisionEngine:
|
||||
" </div>\n"
|
||||
" </a>\n"
|
||||
"</div>\n\n"
|
||||
"<div style=\"display: flex; justify-content: center; gap: 24px; margin: 16px 0; flex-wrap: wrap;\">\n"
|
||||
"## Explore the Ecosystem\n\n"
|
||||
"<div class=\"hero-badge-row\">\n"
|
||||
" <a href=\"./kubernetes/\" style=\"text-decoration: none; color: inherit; display: block;\">\n"
|
||||
" <div class=\"hero-badge-card hero-badge-card--cyan\">\n"
|
||||
" <img src=\"/images/kubernetes_logo.png\" alt=\"Kubernetes\"/>\n"
|
||||
@@ -1135,6 +1327,13 @@ class V2VisionEngine:
|
||||
" <div class=\"hero-badge-subtitle\">Architect Video Library</div>\n"
|
||||
" </div>\n"
|
||||
" </a>\n"
|
||||
" <a href=\"./topic-map/\" style=\"text-decoration: none; color: inherit; display: block;\">\n"
|
||||
" <div class=\"hero-badge-card hero-badge-card--indigo\">\n"
|
||||
" <div class=\"hero-badge-icon\">🗺️</div>\n"
|
||||
" <div class=\"hero-badge-title\">Topic Map</div>\n"
|
||||
" <div class=\"hero-badge-subtitle\">All Categories · Directory</div>\n"
|
||||
" </div>\n"
|
||||
" </a>\n"
|
||||
" <a href=\"./introduction/\" style=\"text-decoration: none; color: inherit; display: block;\">\n"
|
||||
" <div class=\"hero-badge-card hero-badge-card--teal\">\n"
|
||||
" <img src=\"/images/hero-car.png\" alt=\"Nubenetes Car\"/>\n"
|
||||
@@ -1147,26 +1346,129 @@ class V2VisionEngine:
|
||||
" The V2 Edition is a curated, high-density version of the Nubenetes archive. Using **Agentic AI Orchestration**, "
|
||||
"the system selects only the most relevant, stable, and impactful resources for the modern Cloud Native ecosystem (2026 and beyond).\n\n"
|
||||
f"{coverage_info}\n\n"
|
||||
f"<center markdown=\"1\">\n{mosaic_html}\n</center>\n\n"
|
||||
# Altitude fix: surface the fresh, dynamic Trending/Digest BEFORE the
|
||||
# signature YouTube mosaic (which now closes the page as a brand showcase).
|
||||
"## Trending Now\n\n"
|
||||
f"{pulse_md}\n\n"
|
||||
"## Strategic Dimensions\n"
|
||||
"- **[🎥 Agentic Video Hub (Architectural Summary)](./videos/index.md)**\n\n"
|
||||
"## The Cloud Native Universe We Track\n\n"
|
||||
f"<center markdown=\"1\">\n{mosaic_html}\n</center>\n\n"
|
||||
# Label Heatmap: full tag cloud sized by resource count, deep-linking
|
||||
# to the matching section on the Technical Tags page (cross-page).
|
||||
f"{index_heatmap}"
|
||||
"---\n\n"
|
||||
"**Reference:** [🗺️ Full Topic Map](./topic-map/) · "
|
||||
"[📐 Methodology & Maturity Taxonomy](./methodology/) · "
|
||||
"[🎥 Agentic Video Hub](./videos/index.md)\n"
|
||||
)
|
||||
|
||||
# Group by dimension for index
|
||||
|
||||
# Group by dimension (shared by the Topic Map directory page below).
|
||||
dim_groups = {}
|
||||
for f_name, info in data.items():
|
||||
dim_groups.setdefault(info["dim"], []).append(f_name)
|
||||
|
||||
# Mandate: Use the order defined in self.dimensions for architectural flow
|
||||
|
||||
with open(os.path.join(V2_DIR, "index.md"), "w") as f:
|
||||
f.write(index_md)
|
||||
|
||||
# --- Topic Map: full category directory in a multi-column grid -----------
|
||||
def _count_links(node):
|
||||
total = len(node.get("__links__", []))
|
||||
for k, v in node.items():
|
||||
if k != "__links__" and isinstance(v, dict):
|
||||
total += _count_links(v)
|
||||
return total
|
||||
|
||||
# Resource-density heatmap: a true colour matrix (distinct from the
|
||||
# size-based Label cloud on the index/Tags pages). One tile per category,
|
||||
# grouped by the same strategic dimensions as the directory below, with
|
||||
# tile warmth encoding how many AI-curated resources it holds. Counts span
|
||||
# ~1..160, so a LOG scale is used to avoid collapsing everything into the
|
||||
# lowest bucket. Six levels map onto .th-1..6.
|
||||
cat_counts = {f_name: _count_links(info["content"]) for f_name, info in data.items()}
|
||||
_all_counts = [c for c in cat_counts.values() if c > 0] or [1]
|
||||
_hmin, _hmax = math.log(min(_all_counts)), math.log(max(_all_counts))
|
||||
|
||||
def _topic_heat(count):
|
||||
if count <= 0:
|
||||
return 1
|
||||
if _hmax == _hmin:
|
||||
return 3
|
||||
return 1 + round((math.log(count) - _hmin) / (_hmax - _hmin) * 5) # 1..6
|
||||
|
||||
heatmap_md = (
|
||||
"## Resource Density Heatmap\n\n"
|
||||
"Each tile is a category; the warmer the colour, the more AI-curated "
|
||||
"resources it holds. A fast read of where the Cloud Native ecosystem's "
|
||||
"depth concentrates — click any tile to open its page.\n\n"
|
||||
"<div class=\"topic-heatmap\">\n"
|
||||
"<div class=\"topic-heatmap__legend\">"
|
||||
"<span class=\"topic-heatmap__cap\">Fewer</span>"
|
||||
"<span class=\"topic-heatcell th-1\"></span>"
|
||||
"<span class=\"topic-heatcell th-2\"></span>"
|
||||
"<span class=\"topic-heatcell th-3\"></span>"
|
||||
"<span class=\"topic-heatcell th-4\"></span>"
|
||||
"<span class=\"topic-heatcell th-5\"></span>"
|
||||
"<span class=\"topic-heatcell th-6\"></span>"
|
||||
"<span class=\"topic-heatmap__cap\">More</span>"
|
||||
"</div>\n"
|
||||
)
|
||||
for dim in self.dimensions.keys():
|
||||
if dim not in dim_groups:
|
||||
continue
|
||||
heatmap_md += "<div class=\"topic-heatmap__row\">\n"
|
||||
heatmap_md += f"<div class=\"topic-heatmap__dim\">{dim}</div>\n"
|
||||
heatmap_md += "<div class=\"topic-heatmap__cells\">\n"
|
||||
for f in sorted(dim_groups[dim], key=lambda x: cat_counts[x], reverse=True):
|
||||
count = cat_counts[f]
|
||||
lvl = _topic_heat(count)
|
||||
slug = f[:-3] if f.endswith(".md") else f
|
||||
heatmap_md += (
|
||||
f"<a class=\"topic-heatcell th-{lvl}\" href=\"./{slug}/\" "
|
||||
f"title=\"{data[f]['title']} — {count} resources\">"
|
||||
f"<span class=\"topic-heatcell__name\">{data[f]['title']}</span>"
|
||||
f"<span class=\"topic-heatcell__n\">{count}</span></a>\n"
|
||||
)
|
||||
heatmap_md += "</div>\n</div>\n"
|
||||
heatmap_md += "</div>\n\n"
|
||||
|
||||
topic_md = (
|
||||
"---\n"
|
||||
"description: \"The complete Nubenetes V2 directory: every curated Kubernetes, "
|
||||
"Cloud Native and DevOps category by strategic dimension, with resource counts.\"\n"
|
||||
"---\n"
|
||||
"# Topic Map\n\n"
|
||||
"!!! tip \"The complete Nubenetes V2 directory\"\n"
|
||||
" Every curated category across all strategic dimensions, with the number of "
|
||||
"AI-selected resources in each. Looking for the landing page? Back to the "
|
||||
"[**2026 Vision**](/).\n\n"
|
||||
+ heatmap_md +
|
||||
"## Full Category Directory\n\n"
|
||||
"<div class=\"topic-map-grid\" markdown=\"1\">\n\n"
|
||||
)
|
||||
for dim in self.dimensions.keys():
|
||||
if dim in dim_groups:
|
||||
index_md += f"### {dim}\n"
|
||||
topic_md += "<section class=\"topic-map-dim\" markdown=\"1\">\n\n"
|
||||
# h2 (not h3): the page H1 is "Topic Map", so dimensions must
|
||||
# increment by one level (markdownlint MD001). Also gives the
|
||||
# right-hand TOC a clean per-dimension index.
|
||||
topic_md += f"## {dim}\n\n"
|
||||
for f in sorted(dim_groups[dim]):
|
||||
index_md += f"- **[{data[f]['title']}](./{f})**\n"
|
||||
|
||||
index_md += (
|
||||
"\n---\n\n"
|
||||
count = _count_links(data[f]["content"])
|
||||
topic_md += f"- **[{data[f]['title']}](./{f})** <span class=\"topic-count\">{count}</span>\n"
|
||||
topic_md += "\n</section>\n\n"
|
||||
topic_md += "</div>\n"
|
||||
with open(os.path.join(V2_DIR, "topic-map.md"), "w") as f:
|
||||
f.write(topic_md)
|
||||
|
||||
# --- Methodology: maturity taxonomy + technical impact reference ---------
|
||||
methodology_md = (
|
||||
"---\n"
|
||||
"description: \"How Nubenetes V2 classifies and ranks resources: the maturity "
|
||||
"taxonomy and technical impact (star) scoring used across the Elite portal.\"\n"
|
||||
"---\n"
|
||||
"# Methodology\n\n"
|
||||
"!!! abstract \"How Nubenetes V2 classifies and ranks resources\"\n"
|
||||
" The reference legends below explain the maturity tags and the technical "
|
||||
"impact (star) scores applied to every resource in the portal.\n\n"
|
||||
"## The Maturity Taxonomy\n\n"
|
||||
"To ensure industrial-grade precision, every resource in V2 is classified using our proprietary 5-tier maturity system:\n\n"
|
||||
"| Tag | Description | Engineering Context |\n"
|
||||
@@ -1190,7 +1492,7 @@ class V2VisionEngine:
|
||||
"| 🌟 | **Reference Only** | Basic documentation or historical reference without major current impact. | Standard Link |\n"
|
||||
)
|
||||
|
||||
with open(os.path.join(V2_DIR, "index.md"), "w") as f: f.write(index_md)
|
||||
with open(os.path.join(V2_DIR, "methodology.md"), "w") as f: f.write(methodology_md)
|
||||
|
||||
async def render_node(node, depth, base_slug, used_headers, is_intro=False):
|
||||
md = ""
|
||||
@@ -1235,47 +1537,83 @@ class V2VisionEngine:
|
||||
used_headers = {info['long_title']} # Mandate 30: MD024 - Pre-populate with H1 to avoid duplicates
|
||||
# Formulate V1 counterpart link dynamically
|
||||
v1_link = f"/v1/{f_name.replace('.md', '/')}"
|
||||
# Unique per-page SEO meta description (front-matter) so each page no
|
||||
# longer falls back to the identical global site_description. Material
|
||||
# emits it as <meta name="description"> + og:description. Enrich it with
|
||||
# the page's top resource names (long-tail keywords), filtering out
|
||||
# URL/path-like titles for readability; fall back to a clean template.
|
||||
def _collect_links(node, acc):
|
||||
if "__links__" in node:
|
||||
acc.extend(node["__links__"])
|
||||
for _k, _v in node.items():
|
||||
if _k != "__links__" and isinstance(_v, dict):
|
||||
_collect_links(_v, acc)
|
||||
return acc
|
||||
_page_links = _collect_links(info["content"], [])
|
||||
_page_links.sort(key=lambda x: (-(x.get("stars") or 0), -(int(x["year"]) if str(x.get("year", "")).isdigit() else 0)))
|
||||
_names, _seen_names = [], set()
|
||||
for _l in _page_links:
|
||||
_nm = nuclear_strip(str(_l.get("title", "")))
|
||||
# Drop emojis/stars and edge punctuation that leak into titles.
|
||||
_nm = re.sub(r'[\U0001F000-\U0001FAFF☀-➿⭐⭕️]', '', _nm)
|
||||
_nm = re.sub(r'\s+', ' ', _nm).strip(" -–—·:|")
|
||||
_low = _nm.lower()
|
||||
if not (3 <= len(_nm) <= 26):
|
||||
continue
|
||||
if "/" in _nm or "http" in _low or any(d in _low for d in (".com", ".io", ".org", ".net", ".dev", ".sh", ".ai", ".xyz")):
|
||||
continue
|
||||
if _low in _seen_names:
|
||||
continue
|
||||
_seen_names.add(_low)
|
||||
_names.append(_nm)
|
||||
if len(_names) >= 2:
|
||||
break
|
||||
_seo_title = str(info.get('title') or info['long_title'])[:60].strip()
|
||||
if len(_names) >= 2:
|
||||
_seo_desc = (
|
||||
f"Top {_seo_title} resources for 2026, AI-ranked: {', '.join(_names)} and more "
|
||||
f"— curated Cloud Native tools, guides and references."
|
||||
)
|
||||
else:
|
||||
_seo_desc = (
|
||||
f"Curated, AI-ranked {_seo_title} resources for the 2026 Cloud Native "
|
||||
f"architect: top-tier tools, guides and references ({info['dim']})."
|
||||
)
|
||||
_seo_desc = _seo_desc.replace("\\", " ").replace('"', "'").replace("\n", " ").strip()
|
||||
if len(_seo_desc) > 165:
|
||||
_seo_desc = _seo_desc[:162].rsplit(" ", 1)[0].rstrip(" ,;:—-") + "."
|
||||
md = (
|
||||
f"---\n"
|
||||
f"description: \"{_seo_desc}\"\n"
|
||||
f"---\n"
|
||||
f"# {info['long_title']}\n\n"
|
||||
f"!!! tip \"Nubenetes V2 Elite Portal\"\n"
|
||||
f" You are browsing the AI-Curated V2 Elite Edition. Looking for the exhaustive list of references? Check out the [**V1 Historical Archive**]({v1_link}).\n\n"
|
||||
f"!!! info \"Architectural Context\"\n"
|
||||
f" Detailed reference for {info['long_title']} in the context of {info['dim']}.\n\n"
|
||||
)
|
||||
|
||||
# Generate Table of Contents (TOC)
|
||||
exempt_files = self.link_rules.get("hierarchy_rules", {}).get("toc_exempt_files", [])
|
||||
if f_name not in exempt_files:
|
||||
toc_lines = []
|
||||
toc_used_headers = {info['long_title']}
|
||||
def build_toc(node, depth=1):
|
||||
for name, subnode in sorted(node.items()):
|
||||
if name == "__links__": continue
|
||||
clean_name = clean_toc_text(name)
|
||||
|
||||
h_name = clean_name
|
||||
counter = 1
|
||||
while h_name in toc_used_headers:
|
||||
h_name = f"{clean_name} ({counter})"
|
||||
counter += 1
|
||||
toc_used_headers.add(h_name)
|
||||
|
||||
slug = h_name.lower().replace(' ', '-')
|
||||
slug = re.sub(r'[^a-z0-9-]', '', slug)
|
||||
slug = re.sub(r'-+', '-', slug).strip('-')
|
||||
|
||||
indent = " " * (depth - 1)
|
||||
if depth == 1:
|
||||
toc_lines.append(f"1. [{clean_name}](#{slug})")
|
||||
else:
|
||||
toc_lines.append(f"{indent}- [{clean_name}](#{slug})")
|
||||
build_toc(subnode, depth + 1)
|
||||
build_toc(info["content"], 1)
|
||||
if toc_lines:
|
||||
md += "## Table of Contents\n\n"
|
||||
md += "\n".join(toc_lines) + "\n\n"
|
||||
|
||||
|
||||
# Provider hub: surface the substantial sub-pages that remain after
|
||||
# consolidation so the landing page is a navigable index, not a stub.
|
||||
_hub_slug = f_name.replace(".md", "")
|
||||
if _hub_slug in self.subpage_hubs:
|
||||
_children = [
|
||||
(c, lbl) for (c, lbl) in self.subpage_hubs[_hub_slug]
|
||||
if (f"{c}.md" in data) or os.path.exists(os.path.join(V2_DIR, f"{c}.md"))
|
||||
]
|
||||
if _children:
|
||||
_child_links = " · ".join(f"[{lbl}](./{c}/)" for (c, lbl) in _children)
|
||||
md += (
|
||||
f"!!! abstract \"Deep-Dive Topic Pages\"\n"
|
||||
f" {_child_links}\n\n"
|
||||
)
|
||||
|
||||
# In-page Markdown Table of Contents intentionally omitted.
|
||||
# The MkDocs Material theme renders a native, sticky "On this page" TOC
|
||||
# (right sidebar) from the headings below, so a duplicated Markdown TOC
|
||||
# only added redundant scroll — extreme on large pages (e.g. 250+ links).
|
||||
# See v2-mkdocs.yml (toc.integrate removed) and static/v2_filter.js (?v=2.9.12).
|
||||
|
||||
if f_name == "introduction.md":
|
||||
md += "## Vision 2026\n\n!!! quote \"The Evolution of Autonomy\"\n From manual curation to agentic intelligence.\n\n### Ecosystem Map\n\n\n```mermaid\ngraph TD\n A[Foundations] --> B[AI & Intelligence]\n A --> C[Hardened Infra]\n B --> D[Agentic Curation]\n C --> E[Enterprise Stability]\n D --> F[Nubenetes Portal]\n E --> F\n```\n\n\n"
|
||||
|
||||
@@ -1284,9 +1622,9 @@ class V2VisionEngine:
|
||||
"## The Nubenetes Engineering Manifest\n\n"
|
||||
"!!! quote \"The Positive Sum Game\"\n"
|
||||
" ==*\"Open Source is most successful when is played as a positive sum game\" (Sarah Novotny)*==\n\n"
|
||||
"<div style=\"display: flex; justify-content: center; gap: 16px; flex-wrap: wrap; margin: 24px 0;\">\n"
|
||||
" <iframe width=\"480\" height=\"270\" src=\"https://www.youtube.com/embed/GZl7N8sXyEo\" title=\"Cowboy Bebop - Tank!\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe>\n"
|
||||
" <iframe width=\"480\" height=\"270\" src=\"https://www.youtube.com/embed/t_hdOVsdRSE\" title=\"Jimmy Sax - Time\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe>\n"
|
||||
"<div class=\"video-embed-grid\">\n"
|
||||
" <div class=\"video-embed\"><iframe src=\"https://www.youtube-nocookie.com/embed/GZl7N8sXyEo\" title=\"Cowboy Bebop - Tank!\" loading=\"lazy\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe></div>\n"
|
||||
" <div class=\"video-embed\"><iframe src=\"https://www.youtube-nocookie.com/embed/t_hdOVsdRSE\" title=\"Jimmy Sax - Time\" loading=\"lazy\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe></div>\n"
|
||||
"</div>\n\n"
|
||||
"### 1. The Genesis: Munich 2018\n"
|
||||
"Nubenetes was forged in the internals of a massive Cloud Native transformation for a **major multinational car manufacturer** in Munich. Coordinating hundreds of microservices, thousands of developers, and millions of end-users taught us a fundamental truth: **Standardization, Automation, and GitOps are not \"best practices\"—they are survival requirements.**\n\n"
|
||||
@@ -1387,7 +1725,16 @@ class V2VisionEngine:
|
||||
if md != existing_content:
|
||||
with open(target_path, "w") as f: f.write(md)
|
||||
|
||||
async def _generate_global_tag_index(self, v2_structure: Dict[str, Dict]):
|
||||
def _aggregate_tags(self, v2_structure: Dict[str, Dict]):
|
||||
"""Collect every active resource's tags into deterministic, slug-stable
|
||||
metadata shared by the Technical Tags page and the index Label Heatmap.
|
||||
|
||||
Returns (sorted_tags, tag_meta, by_tag) where tag_meta[tag] holds
|
||||
``display``, ``slug``, ``count`` and ``kind`` (maturity | language |
|
||||
domain). The slug logic is identical to (and deterministic with) what the
|
||||
Tags page renders, so the heatmap on the index can deep-link to the right
|
||||
``/tags/#slug`` section even though it is generated in a separate pass.
|
||||
"""
|
||||
active_links = {}
|
||||
def collect_links(node):
|
||||
if "__links__" in node:
|
||||
@@ -1406,9 +1753,15 @@ class V2VisionEngine:
|
||||
tags_to_process = list(l.get("tags", []))
|
||||
# Include language indexing for non-English resources (Mandate 10)
|
||||
lang = l.get("language", "English")
|
||||
# Skip non-language values the AI sometimes emits, so the tag index
|
||||
# is not polluted with meaningless "X Content" buckets.
|
||||
_lang_junk = {
|
||||
"english", "en", "n/a", "na", "none", "null", "unknown", "",
|
||||
"not applicable", "multiple", "multi-language", "polyglot", "various",
|
||||
}
|
||||
if lang.lower() in ["spanish", "es", "english/spanish"]:
|
||||
tags_to_process.append("[SPANISH CONTENT]")
|
||||
elif lang.lower() != "english" and lang.lower() != "n/a" and lang.lower() != "none":
|
||||
elif lang.lower() not in _lang_junk:
|
||||
tags_to_process.append(f"[{lang.upper()} CONTENT]")
|
||||
|
||||
for t in tags_to_process:
|
||||
@@ -1425,14 +1778,91 @@ class V2VisionEngine:
|
||||
"[LEGACY]",
|
||||
"[SPANISH CONTENT]"
|
||||
]
|
||||
|
||||
sorted_tags = []
|
||||
for st in standard_order:
|
||||
if st in by_tag:
|
||||
sorted_tags.append(st)
|
||||
|
||||
custom_tags = sorted([t for t in by_tag.keys() if t not in standard_order])
|
||||
sorted_tags.extend(custom_tags)
|
||||
|
||||
sorted_tags = [st for st in standard_order if st in by_tag]
|
||||
sorted_tags.extend(sorted(t for t in by_tag.keys() if t not in standard_order))
|
||||
|
||||
# Precompute display name + UNIQUE slug for every tag, shared by both the
|
||||
# grouped TOC and the section headers so anchors always match. This fixes
|
||||
# collisions where C / C# / C++ all slugged to "c-content" (broken links).
|
||||
def _tag_display(tag):
|
||||
d = tag.replace("[", "").replace("]", "").replace("&", "and").title()
|
||||
if d.upper() in ["EBPF", "WASM", "GITOPS", "IAC", "SRE", "AI", "MCP", "DB", "MLOPS"]:
|
||||
d = d.upper()
|
||||
return d
|
||||
|
||||
_seen_slugs = set()
|
||||
def _tag_slug(tag):
|
||||
s = tag.replace("[", "").replace("]", "").lower()
|
||||
s = s.replace("#", "-sharp").replace("++", "-plus-plus").replace("&", "-and-").replace("/", "-")
|
||||
s = re.sub(r'[^a-z0-9-]', '-', s)
|
||||
s = re.sub(r'-+', '-', s).strip('-')
|
||||
base, n = s, 1
|
||||
while s in _seen_slugs:
|
||||
n += 1
|
||||
s = f"{base}-{n}"
|
||||
_seen_slugs.add(s)
|
||||
return s
|
||||
|
||||
def _tag_kind(tag):
|
||||
if tag in standard_order:
|
||||
return "maturity"
|
||||
if tag.endswith("CONTENT]"):
|
||||
return "language"
|
||||
return "domain"
|
||||
|
||||
tag_meta = {
|
||||
tag: {
|
||||
"display": _tag_display(tag),
|
||||
"slug": _tag_slug(tag),
|
||||
"count": len(by_tag[tag]),
|
||||
"kind": _tag_kind(tag),
|
||||
}
|
||||
for tag in sorted_tags
|
||||
}
|
||||
return sorted_tags, tag_meta, by_tag
|
||||
|
||||
def _render_tag_heatmap(self, sorted_tags, tag_meta, href_base: str = "", intro: str = None) -> str:
|
||||
"""Confluence-style "popular labels" Label Heatmap: every label is listed
|
||||
alphabetically and sized/coloured by how many resources carry it, so the
|
||||
most-used tags read biggest/warmest. Sizing uses a LOG scale because counts
|
||||
span ~1..2800; a linear scale would collapse everything except the few giant
|
||||
maturity tags into the smallest bucket. Six levels map onto .v2-heat-1..6.
|
||||
|
||||
``href_base`` is prefixed before each ``#slug`` so the same cloud can live on
|
||||
the Tags page (same-page anchors, "") or the index (cross-page, "/tags/").
|
||||
"""
|
||||
counts = [tag_meta[t]["count"] for t in sorted_tags]
|
||||
if not counts:
|
||||
return ""
|
||||
lmin, lmax = math.log(min(counts)), math.log(max(counts))
|
||||
|
||||
def _heat_level(count):
|
||||
if lmax == lmin:
|
||||
return 3
|
||||
return 1 + round((math.log(count) - lmin) / (lmax - lmin) * 5) # 1..6
|
||||
|
||||
if intro is None:
|
||||
intro = (
|
||||
"Bigger, warmer labels cover more resources. "
|
||||
"Click any label to jump to its section below."
|
||||
)
|
||||
md = f"## Label Heatmap\n\n{intro}\n\n"
|
||||
md += '<div class="v2-tag-heatmap">\n'
|
||||
for t in sorted(sorted_tags, key=lambda x: tag_meta[x]["display"].lower()):
|
||||
m = tag_meta[t]
|
||||
disp = m["display"].replace(" Content", "")
|
||||
lvl = _heat_level(m["count"])
|
||||
md += (
|
||||
f'<a class="v2-heat-tag v2-heat-{lvl}" href="{href_base}#{m["slug"]}" '
|
||||
f'title="{m["count"]} resources">{disp}'
|
||||
f'<span class="v2-heat-n">{m["count"]}</span></a>\n'
|
||||
)
|
||||
md += "</div>\n\n"
|
||||
return md
|
||||
|
||||
async def _generate_global_tag_index(self, v2_structure: Dict[str, Dict]):
|
||||
sorted_tags, tag_meta, by_tag = self._aggregate_tags(v2_structure)
|
||||
|
||||
md = (
|
||||
"# Technical Tags Index\n\n"
|
||||
@@ -1441,28 +1871,55 @@ class V2VisionEngine:
|
||||
"!!! info \"Universal Tag Index\"\n"
|
||||
" Browse all V2 resources grouped by maturity levels and technical domains.\n\n"
|
||||
)
|
||||
|
||||
# Build TOC
|
||||
toc_lines = []
|
||||
for tag in sorted_tags:
|
||||
tag_display = tag.replace("[", "").replace("]", "").replace("&", "and").title()
|
||||
if tag_display.upper() in ["EBPF", "WASM", "GITOPS", "IAC", "SRE", "AI", "MCP", "DB", "MLOPS"]:
|
||||
tag_display = tag_display.upper()
|
||||
slug = tag_display.lower().replace(" ", "-")
|
||||
slug = re.sub(r'[^a-z0-9-]', '', slug)
|
||||
slug = re.sub(r'-+', '-', slug).strip('-')
|
||||
toc_lines.append(f"1. [{tag_display}](#{slug}) ({len(by_tag[tag])} resources)")
|
||||
|
||||
md += "## Table of Contents\n\n" + "\n".join(toc_lines) + "\n\n"
|
||||
|
||||
def _count_label(n):
|
||||
return f"{n} resource" + ("" if n == 1 else "s")
|
||||
|
||||
# Partition custom tags: language/format ("X CONTENT") vs technical domains,
|
||||
# so the long, low-signal language tail does not bury the maturity tags.
|
||||
maturity_tags = [t for t in sorted_tags if tag_meta[t]["kind"] == "maturity"]
|
||||
lang_tags = sorted(
|
||||
[t for t in sorted_tags if tag_meta[t]["kind"] == "language"],
|
||||
key=lambda t: -tag_meta[t]["count"],
|
||||
)
|
||||
other_tags = sorted(
|
||||
[t for t in sorted_tags if tag_meta[t]["kind"] == "domain"],
|
||||
key=lambda t: -tag_meta[t]["count"],
|
||||
)
|
||||
|
||||
# Label Heatmap at the top of the Tags page (same-page anchors).
|
||||
md += self._render_tag_heatmap(sorted_tags, tag_meta, href_base="")
|
||||
|
||||
# Build a grouped TOC: maturity as a clean numbered list; domains and the
|
||||
# language/format tail as compact, count-sorted inline pill rows.
|
||||
md += "## Table of Contents\n\n"
|
||||
if maturity_tags:
|
||||
md += "### Maturity and Quality\n\n"
|
||||
for t in maturity_tags:
|
||||
m = tag_meta[t]
|
||||
md += f"1. [{m['display']}](#{m['slug']}) ({_count_label(m['count'])})\n"
|
||||
md += "\n"
|
||||
if other_tags:
|
||||
md += "### Technical Domains\n\n"
|
||||
md += " · ".join(
|
||||
f"[{tag_meta[t]['display']}](#{tag_meta[t]['slug']}) ({tag_meta[t]['count']})"
|
||||
for t in other_tags
|
||||
) + "\n\n"
|
||||
if lang_tags:
|
||||
md += "### Language and Format\n\n"
|
||||
md += "Resources indexed by their primary source language or document format.\n\n"
|
||||
md += " · ".join(
|
||||
f"[{tag_meta[t]['display'].replace(' Content', '')}](#{tag_meta[t]['slug']}) ({tag_meta[t]['count']})"
|
||||
for t in lang_tags
|
||||
) + "\n\n"
|
||||
|
||||
for tag in sorted_tags:
|
||||
tag_display = tag.replace("[", "").replace("]", "").replace("&", "and").title()
|
||||
if tag_display.upper() in ["EBPF", "WASM", "GITOPS", "IAC", "SRE", "AI", "MCP", "DB", "MLOPS"]:
|
||||
tag_display = tag_display.upper()
|
||||
|
||||
# Wrap section inside a .v2-tag-section div and details block for performance
|
||||
m = tag_meta[tag]
|
||||
tag_display = m["display"]
|
||||
# Wrap section inside a .v2-tag-section div and details block for performance.
|
||||
# Explicit {#slug} keeps the heading anchor unique and TOC-matching.
|
||||
md += f"<div class=\"v2-tag-section\" markdown=\"1\">\n\n"
|
||||
md += f"## {tag_display}\n\n"
|
||||
md += f"## {tag_display} {{#{m['slug']}}}\n\n"
|
||||
total_count = len(by_tag[tag])
|
||||
if total_count > 100:
|
||||
summary_text = f"Click to view top 100 of {total_count} resources under {tag_display}"
|
||||
@@ -1502,26 +1959,43 @@ class V2VisionEngine:
|
||||
"nav:",
|
||||
" - \"🔙 Back to V1 (Exhaustive)\": https://nubenetes.com/v1/",
|
||||
" - \"The 2026 Vision\": index.md",
|
||||
" - \"Technical Tags\": tags.md",
|
||||
# Portal Guide: collapsible hub for the site-orientation / meta
|
||||
# pages — the topic directory, how the portal is curated, the tag
|
||||
# index and the project About. about.md is pulled out of its
|
||||
# Architectural Foundations dimension here (see _FIXED_PAGES below).
|
||||
" - \"Portal Guide\":",
|
||||
" - \"Topic Map\": topic-map.md",
|
||||
" - \"Methodology\": methodology.md",
|
||||
" - \"Technical Tags\": tags.md",
|
||||
" - \"About\": about.md",
|
||||
# Videos: prominent top-level dropdown, kept high in the nav with
|
||||
# its category subpages as children.
|
||||
" - \"Agentic Video Hub\":",
|
||||
" - videos/index.md",
|
||||
" - \"AI Agents and MCP\": videos/ai-agents.md",
|
||||
" - \"DevOps, IaC, and SRE\": videos/devops-iac.md",
|
||||
" - \"Cloud Native Core\": videos/cloud-native.md",
|
||||
" - \"Fundamentals\": videos/fundamentals.md",
|
||||
" - \"Intelligence Digest\":",
|
||||
" - \"Tech & Cloud Digest\": tech-digest.md",
|
||||
" - \"Industry & Geo Digest\": industry-digest.md",
|
||||
" - \"Agentic Video Hub\":",
|
||||
" - videos/index.md",
|
||||
" - \"AI Agents and MCP\": videos/ai-agents.md",
|
||||
" - \"DevOps, IaC, and SRE\": videos/devops-iac.md",
|
||||
" - \"Cloud Native Core\": videos/cloud-native.md",
|
||||
" - \"Fundamentals\": videos/fundamentals.md"
|
||||
" - \"Industry & Geo Digest\": industry-digest.md"
|
||||
]
|
||||
|
||||
# Topic pages promoted into a fixed header group above; skip them in
|
||||
# the dimension loop so they are not also listed under their dimension.
|
||||
_FIXED_PAGES = {"about.md"}
|
||||
|
||||
dim_groups = {}
|
||||
for f_name, info in data.items():
|
||||
dim_groups.setdefault(info["dim"], []).append(f_name)
|
||||
|
||||
for dim in self.dimensions.keys():
|
||||
if dim in dim_groups:
|
||||
dim_files = [f for f in sorted(dim_groups[dim]) if f not in _FIXED_PAGES]
|
||||
if not dim_files:
|
||||
continue
|
||||
dim_nav = [f" - \"{dim}\":"]
|
||||
for f in sorted(dim_groups[dim]):
|
||||
for f in dim_files:
|
||||
dim_nav.append(f" - \"{data[f]['title']}\": {f}")
|
||||
nav.extend(dim_nav)
|
||||
|
||||
|
||||
+4
-10
@@ -181,25 +181,19 @@ def generate_v2_videos():
|
||||
" You are browsing the AI-Curated V2 Elite Edition. Looking for the exhaustive list of references? Check out the [**V1 Historical Archive**](/v1/).",
|
||||
"",
|
||||
f"Welcome to the **{theme_title}** section of the V2 Video Hub. Explore curated high-density videos with architectural summaries.",
|
||||
"",
|
||||
"## Table of Contents",
|
||||
""
|
||||
]
|
||||
|
||||
# Group by Technology for TOC
|
||||
# In-page Markdown Table of Contents intentionally omitted: it duplicates
|
||||
# Material's native right-column "On this page" TOC (toc.follow). We still
|
||||
# build the ordered technology list below because it drives the rendering
|
||||
# order of the grouped video sections.
|
||||
techs = []
|
||||
for v in videos:
|
||||
tech = v.get("technology", "Cloud Native")
|
||||
if tech not in techs:
|
||||
techs.append(tech)
|
||||
|
||||
for idx, tech in enumerate(techs, 1):
|
||||
clean_tech = clean_header(tech)
|
||||
slug = get_slug(tech)
|
||||
content.append(f"{idx}. [{clean_tech}](#{slug})")
|
||||
|
||||
content.append("")
|
||||
|
||||
# Render Grouped Videos
|
||||
grouped_by_tech = {}
|
||||
for v in videos:
|
||||
|
||||
@@ -6,14 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Chrome and Firefox DevTools. HTTP Protocols and WebSockets in the context of Developer Ecosystem.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Developer Workspace](#developer-workspace)
|
||||
- [Command-Line Tooling](#command-line-tooling)
|
||||
- [JSON and YAML Manipulators](#json-and-yaml-manipulators)
|
||||
- [Diagnostics and Debugging](#diagnostics-and-debugging)
|
||||
- [Browser Developer Tools](#browser-developer-tools)
|
||||
|
||||
## Developer Workspace
|
||||
|
||||
### Command-Line Tooling
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Googlecloudplatform resources for 2026, AI-ranked: Google Cloud Buildpacks, Google Agents CLI and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Google Cloud Platform
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,70 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Google Cloud Platform in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [AI and Orchestration](#ai-and-orchestration)
|
||||
- [Agentic Workflows](#agentic-workflows)
|
||||
- [Command-Line Tools](#command-line-tools)
|
||||
1. [Application Development](#application-development)
|
||||
- [API Management](#api-management)
|
||||
- [Apigee Integration](#apigee-integration)
|
||||
- [Workflows](#workflows)
|
||||
- [Orchestration](#orchestration)
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [Compute](#compute)
|
||||
- [Architectural Decision](#architectural-decision)
|
||||
- [Containers](#containers)
|
||||
- [Google Kubernetes Engine](#google-kubernetes-engine)
|
||||
- [Databases](#databases)
|
||||
- [Cloud Spanner](#cloud-spanner)
|
||||
- [GCP Ecosystem](#gcp-ecosystem)
|
||||
- [CICD Pipelines](#cicd-pipelines)
|
||||
- [DevOps Frameworks](#devops-frameworks)
|
||||
- [Developer Tools](#developer-tools)
|
||||
- [IDE Integrations](#ide-integrations)
|
||||
- [High Availability](#high-availability)
|
||||
- [Architecture](#architecture)
|
||||
- [Microservices](#microservices)
|
||||
- [Google Cloud](#google-cloud)
|
||||
- [Networking](#networking)
|
||||
- [Private Service Connect](#private-service-connect)
|
||||
- [Public Cloud](#public-cloud)
|
||||
- [Google Cloud](#google-cloud-1)
|
||||
- [Security](#security)
|
||||
- [IAM](#iam)
|
||||
- [PKI](#pki)
|
||||
- [Secrets Management](#secrets-management)
|
||||
- [Serverless](#serverless)
|
||||
- [Cloud Run](#cloud-run)
|
||||
- [VPC Networking](#vpc-networking)
|
||||
1. [DevOps and Delivery](#devops-and-delivery)
|
||||
- [CICD](#cicd)
|
||||
- [Containerization](#containerization)
|
||||
- [Lifecycle Management](#lifecycle-management)
|
||||
- [Continuous Delivery](#continuous-delivery)
|
||||
- [GKE](#gke)
|
||||
- [GKE GA](#gke-ga)
|
||||
- [Industry Assessment](#industry-assessment)
|
||||
1. [DevSecOps](#devsecops)
|
||||
- [CICD Pipelines](#cicd-pipelines-1)
|
||||
- [Hybrid Cloud Architecture](#hybrid-cloud-architecture)
|
||||
1. [DevSecOps and IDEs](#devsecops-and-ides)
|
||||
- [Google Cloud Code](#google-cloud-code)
|
||||
- [Developer Experience](#developer-experience)
|
||||
1. [Hybrid and Multi-Cloud](#hybrid-and-multi-cloud)
|
||||
- [Anthos](#anthos)
|
||||
- [Ingress](#ingress)
|
||||
- [Strategic Guide](#strategic-guide)
|
||||
- [Windows Containers](#windows-containers)
|
||||
1. [Networking and Security](#networking-and-security)
|
||||
- [Service Discovery](#service-discovery)
|
||||
- [Registry](#registry)
|
||||
- [Service Mesh](#service-mesh)
|
||||
- [Traffic Management](#traffic-management)
|
||||
- [Traffic Management](#traffic-management-1)
|
||||
- [Load Balancing](#load-balancing)
|
||||
|
||||
## AI and Orchestration
|
||||
|
||||
### Agentic Workflows
|
||||
@@ -227,7 +166,7 @@
|
||||
- **(2021)** [cloud.google.com: What is Cloud Load Balancing?](https://cloud.google.com/blog/topics/developers-practitioners/what-cloud-load-balancing) <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Explains the design of GCP's global, distributed Anycast Cloud Load Balancing system. Illustrates how Layer 4 and Layer 7 load balancers distribute traffic dynamically across regions with minimal latency, auto-scaling up to millions of requests per second.
|
||||
|
||||
---
|
||||
💡 **Explore Related:** [Edge Computing](./edge-computing.md) | [Oraclecloud](./oraclecloud.md) | [AWS Architecture](./aws-architecture.md)
|
||||
💡 **Explore Related:** [Edge Computing](./edge-computing.md) | [Oraclecloud](./oraclecloud.md) | [AWS](./aws.md)
|
||||
|
||||
🔗 **See Also:** [About](./about.md) | [Postman](./postman.md)
|
||||
|
||||
|
||||
+6
-14
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top About resources for 2026, AI-ranked: Postman, AWX and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# About Nubenetes
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,25 +9,14 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for About Nubenetes in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Automation and Orchestration](#automation-and-orchestration)
|
||||
- [API Orchestration](#api-orchestration)
|
||||
- [Postman](#postman)
|
||||
- [Configuration Management](#configuration-management)
|
||||
- [Ansible AWX](#ansible-awx)
|
||||
- [Ansible Kubernetes Module](#ansible-kubernetes-module)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Terraform Boilerplates](#terraform-boilerplates)
|
||||
|
||||
## The Nubenetes Engineering Manifest
|
||||
|
||||
!!! quote "The Positive Sum Game"
|
||||
==*"Open Source is most successful when is played as a positive sum game" (Sarah Novotny)*==
|
||||
|
||||
<div style="display: flex; justify-content: center; gap: 16px; flex-wrap: wrap; margin: 24px 0;">
|
||||
<iframe width="480" height="270" src="https://www.youtube.com/embed/GZl7N8sXyEo" title="Cowboy Bebop - Tank!" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
<iframe width="480" height="270" src="https://www.youtube.com/embed/t_hdOVsdRSE" title="Jimmy Sax - Time" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
<div class="video-embed-grid">
|
||||
<div class="video-embed"><iframe src="https://www.youtube-nocookie.com/embed/GZl7N8sXyEo" title="Cowboy Bebop - Tank!" loading="lazy" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div>
|
||||
<div class="video-embed"><iframe src="https://www.youtube-nocookie.com/embed/t_hdOVsdRSE" title="Jimmy Sax - Time" loading="lazy" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div>
|
||||
</div>
|
||||
|
||||
### 1. The Genesis: Munich 2018
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top AI Agents MCP resources for 2026, AI-ranked: vLLM on Kubernetes, LocalAI and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# AI Agents and Model Context Protocol (MCP) for Kubernetes
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,18 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AI Agents and Model Context Protocol (MCP) for Kubernetes in the context of AI.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [AI Infrastructure](#ai-infrastructure)
|
||||
- [Distributed Computing](#distributed-computing)
|
||||
- [Kube-Ray](#kube-ray)
|
||||
- [LLM Serving](#llm-serving)
|
||||
- [LocalAI](#localai)
|
||||
- [vLLM](#vllm)
|
||||
1. [Cloud Native Operations](#cloud-native-operations)
|
||||
- [AI AIOps](#ai-aiops)
|
||||
- [Kubernetes Troubleshooting](#kubernetes-troubleshooting)
|
||||
|
||||
## AI Infrastructure
|
||||
|
||||
### Distributed Computing
|
||||
|
||||
+3
-30
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top AI resources for 2026, AI-ranked: Claude Code Templates, Skills for Real Engineers and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Artificial Intelligence
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,36 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Artificial Intelligence in the context of AI.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [AI and Orchestration](#ai-and-orchestration)
|
||||
- [Agentic Workflows](#agentic-workflows)
|
||||
- [Command-Line Tools](#command-line-tools)
|
||||
1. [Artificial Intelligence](#artificial-intelligence-1)
|
||||
- [Generative AI Engineering](#generative-ai-engineering)
|
||||
- [API Integration Patterns](#api-integration-patterns)
|
||||
- [Architecture Patterns](#architecture-patterns)
|
||||
1. [Cloud Native Operations](#cloud-native-operations)
|
||||
- [AI AIOps](#ai-aiops)
|
||||
- [Kubernetes Troubleshooting](#kubernetes-troubleshooting)
|
||||
- [AI-Powered Operations AIOps](#ai-powered-operations-aiops)
|
||||
- [Kubernetes Troubleshooting](#kubernetes-troubleshooting-1)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [AI-Assisted IaC](#ai-assisted-iac)
|
||||
- [Kubernetes Orchestration](#kubernetes-orchestration)
|
||||
- [AI Workloads on K8s](#ai-workloads-on-k8s)
|
||||
1. [Container Orchestration](#container-orchestration)
|
||||
- [Azure Kubernetes Service](#azure-kubernetes-service)
|
||||
- [AKS Fleet Manager](#aks-fleet-manager)
|
||||
1. [Developer Tooling](#developer-tooling)
|
||||
- [AI Code Assistants](#ai-code-assistants)
|
||||
- [Prompt Templates](#prompt-templates)
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [AI-Assisted Development](#ai-assisted-development)
|
||||
- [Multi-Repository Architecture](#multi-repository-architecture)
|
||||
- [Professional Development](#professional-development)
|
||||
- [Core Architectures](#core-architectures)
|
||||
|
||||
## AI and Orchestration
|
||||
|
||||
### Agentic Workflows
|
||||
|
||||
+3
-6
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Angular resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Developer Ecosystem)."
|
||||
---
|
||||
# Angular framework
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,12 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Angular framework in the context of Developer Ecosystem.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [App Development](#app-development)
|
||||
- [Frontend](#frontend)
|
||||
- [Continuous Delivery](#continuous-delivery)
|
||||
|
||||
## App Development
|
||||
|
||||
### Frontend
|
||||
|
||||
+3
-25
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Ansible resources for 2026, AI-ranked: AWX, AWX Operator and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Configuration Management. Ansible
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,31 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Configuration Management. Ansible in the context of Hardened Infrastructure.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Automation](#automation)
|
||||
- [API Integration](#api-integration)
|
||||
- [Ansible HTTP](#ansible-http)
|
||||
1. [Automation and Orchestration](#automation-and-orchestration)
|
||||
- [Configuration Management](#configuration-management)
|
||||
- [Ansible AWX](#ansible-awx)
|
||||
1. [Container Orchestration](#container-orchestration)
|
||||
- [Kubernetes](#kubernetes)
|
||||
- [Ansible Integration](#ansible-integration)
|
||||
- [Deployments](#deployments)
|
||||
- [Helm](#helm)
|
||||
- [Helm Integration](#helm-integration)
|
||||
- [Object Management](#object-management)
|
||||
- [Operators](#operators)
|
||||
1. [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Ansible](#ansible)
|
||||
- [Application Servers](#application-servers)
|
||||
- [Comparison](#comparison)
|
||||
- [Containers](#containers)
|
||||
- [NGINX Automation](#nginx-automation)
|
||||
- [Deployment Tools](#deployment-tools)
|
||||
- [Application Deployment](#application-deployment)
|
||||
|
||||
## Automation
|
||||
|
||||
### API Integration
|
||||
|
||||
+3
-78
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top API resources for 2026, AI-ranked: gRPC, GraphQL and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# APIs with SOAP, REST and gRPC
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,84 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for APIs with SOAP, REST and gRPC in the context of Developer Ecosystem.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [API Architectures](#api-architectures)
|
||||
- [GraphQL](#graphql)
|
||||
- [Adoption](#adoption)
|
||||
- [Federation](#federation)
|
||||
- [Hasura](#hasura)
|
||||
- [Specification](#specification)
|
||||
- [Patterns](#patterns)
|
||||
- [Comparison](#comparison)
|
||||
- [REST](#rest)
|
||||
- [Design Principles](#design-principles)
|
||||
- [Implementation](#implementation)
|
||||
- [Introduction](#introduction)
|
||||
- [RPC](#rpc)
|
||||
- [Open-RPC](#open-rpc)
|
||||
- [gRPC](#grpc)
|
||||
- [gRPC-Web](#grpc-web)
|
||||
- [Real-Time](#real-time)
|
||||
- [Socket.IO](#socketio)
|
||||
- [WebSockets](#websockets)
|
||||
1. [API Management](#api-management)
|
||||
- [Platform Engineering](#platform-engineering)
|
||||
- [API Strategy](#api-strategy)
|
||||
1. [API Security](#api-security)
|
||||
- [Design](#design)
|
||||
- [Best Practices](#best-practices)
|
||||
- [Enterprise](#enterprise)
|
||||
- [Implementation](#implementation-1)
|
||||
- [Protection](#protection)
|
||||
- [Tools](#tools)
|
||||
- [Threat-Modeling](#threat-modeling)
|
||||
- [Risks](#risks)
|
||||
1. [API Testing](#api-testing)
|
||||
- [Performance](#performance)
|
||||
- [Continuous Integration](#continuous-integration)
|
||||
1. [API Tooling](#api-tooling)
|
||||
- [Codegen](#codegen)
|
||||
- [OpenAPI](#openapi)
|
||||
1. [Application Integration](#application-integration)
|
||||
- [API Design](#api-design)
|
||||
- [API Lifecycle](#api-lifecycle)
|
||||
- [Architecture Comparisons](#architecture-comparisons)
|
||||
- [Hands-on Deployment](#hands-on-deployment)
|
||||
- [Protocols and Formats](#protocols-and-formats)
|
||||
- [Strategic Governance](#strategic-governance)
|
||||
- [API Gateways](#api-gateways)
|
||||
- [Architecture Comparisons](#architecture-comparisons-1)
|
||||
- [Best Practices](#best-practices-1)
|
||||
1. [Architecture](#architecture)
|
||||
- [API Management](#api-management-1)
|
||||
- [SaaS Platforms](#saas-platforms)
|
||||
1. [Cloud Providers](#cloud-providers)
|
||||
- [AWS](#aws)
|
||||
- [Serverless APIs](#serverless-apis)
|
||||
1. [Enterprise Architecture](#enterprise-architecture)
|
||||
- [Case Studies](#case-studies)
|
||||
- [Financial Sector](#financial-sector)
|
||||
1. [Event-Driven](#event-driven)
|
||||
- [AsyncAPI](#asyncapi)
|
||||
- [Simulation](#simulation)
|
||||
- [Specification](#specification-1)
|
||||
- [Trends](#trends)
|
||||
1. [Microservices](#microservices)
|
||||
- [Design Patterns](#design-patterns)
|
||||
- [Process Automation](#process-automation)
|
||||
1. [Observability](#observability)
|
||||
- [Data Ingestion](#data-ingestion)
|
||||
- [WebSockets IoT](#websockets-iot)
|
||||
1. [Quality Assurance](#quality-assurance)
|
||||
- [API Design](#api-design-1)
|
||||
- [Network Debugging](#network-debugging)
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [API Design](#api-design-2)
|
||||
- [Industry Surveys](#industry-surveys)
|
||||
- [Protocol Selection](#protocol-selection)
|
||||
- [SOAP vs REST](#soap-vs-rest)
|
||||
|
||||
## API Architectures
|
||||
|
||||
### GraphQL
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Appointment Scheduling resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Career & Industry)."
|
||||
---
|
||||
# Appointment Scheduling Software
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,12 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Appointment Scheduling Software in the context of Career & Industry.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Collaborative Operations](#collaborative-operations)
|
||||
- [Workspace Scheduling](#workspace-scheduling)
|
||||
- [Open Source Tools](#open-source-tools)
|
||||
|
||||
## Collaborative Operations
|
||||
|
||||
### Workspace Scheduling
|
||||
|
||||
+3
-34
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Argo resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Engineering Pipeline)."
|
||||
---
|
||||
# Argo Declarative GitOps for Kubernetes
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,40 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Argo Declarative GitOps for Kubernetes in the context of Engineering Pipeline.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [GitOps and CD](#gitops-and-cd)
|
||||
- [Argo Rollouts](#argo-rollouts)
|
||||
- [Blue-Green Deployment](#blue-green-deployment)
|
||||
- [Canary Deployment](#canary-deployment)
|
||||
- [Configuration Management](#configuration-management)
|
||||
- [Progressive Delivery](#progressive-delivery)
|
||||
- [ArgoCD](#argocd)
|
||||
- [Patterns](#patterns)
|
||||
- [App-of-Apps](#app-of-apps)
|
||||
- [Workload Management](#workload-management)
|
||||
- [Demos](#demos)
|
||||
- [CICD Integration](#cicd-integration)
|
||||
1. [Kubernetes GitOps and Packaging](#kubernetes-gitops-and-packaging)
|
||||
- [Argo Project Ecosystem](#argo-project-ecosystem)
|
||||
- [Event-Driven Automation](#event-driven-automation)
|
||||
1. [Platform Engineering](#platform-engineering)
|
||||
- [ArgoCD](#argocd-1)
|
||||
- [Internal Developer Platforms](#internal-developer-platforms)
|
||||
- [CICD Migration](#cicd-migration)
|
||||
- [Argo Workflows](#argo-workflows)
|
||||
- [Jenkins](#jenkins)
|
||||
- [GitOps](#gitops)
|
||||
- [AWS EKS](#aws-eks)
|
||||
- [Tekton](#tekton)
|
||||
- [GitHub Actions](#github-actions)
|
||||
- [AWS EKS](#aws-eks-1)
|
||||
- [Terraform Integration](#terraform-integration)
|
||||
- [Data Infrastructure](#data-infrastructure)
|
||||
- [Progressive Delivery](#progressive-delivery-1)
|
||||
- [DNS Routing](#dns-routing)
|
||||
- [Blue-Green Deployment](#blue-green-deployment-1)
|
||||
|
||||
## GitOps and CD
|
||||
|
||||
### Argo Rollouts
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Architecture resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Architecture and Best Practices
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,15 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Architecture and Best Practices in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Architecture](#cloud-architecture)
|
||||
- [Case Studies](#case-studies)
|
||||
- [Enterprise Scale](#enterprise-scale)
|
||||
1. [Kubernetes and Platform Engineering](#kubernetes-and-platform-engineering)
|
||||
- [Modernization Tools](#modernization-tools)
|
||||
- [Microservice Migration](#microservice-migration)
|
||||
|
||||
## Cloud Architecture
|
||||
|
||||
### Case Studies
|
||||
|
||||
@@ -6,45 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Backup and Migrations. Design for failure. Disaster Recovery in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architectural Foundations](#architectural-foundations)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [General Reference](#general-reference)
|
||||
1. [Cloud Architecture](#cloud-architecture)
|
||||
- [AWS Solutions](#aws-solutions)
|
||||
- [Disaster Recovery](#disaster-recovery)
|
||||
1. [Cloud Migration](#cloud-migration)
|
||||
- [AWS Competency](#aws-competency)
|
||||
- [Enterprise Migration](#enterprise-migration)
|
||||
- [AWS MGN](#aws-mgn)
|
||||
- [Multi-Region](#multi-region)
|
||||
- [Multi-Account Strategy](#multi-account-strategy)
|
||||
- [AWS Resources](#aws-resources)
|
||||
- [VM ImportExport](#vm-importexport)
|
||||
- [On-Premises](#on-premises)
|
||||
1. [Data and Analytics](#data-and-analytics)
|
||||
- [Data Protection](#data-protection)
|
||||
- [AWS Backup](#aws-backup)
|
||||
1. [Infrastructure](#infrastructure)
|
||||
- [Disaster Recovery](#disaster-recovery-1)
|
||||
- [AWS Architectures](#aws-architectures)
|
||||
- [Single Region](#single-region)
|
||||
- [AWS Compute](#aws-compute)
|
||||
- [EC2](#ec2)
|
||||
- [AWS Services](#aws-services)
|
||||
- [AWS Backup](#aws-backup-1)
|
||||
- [Multi-Region](#multi-region-1)
|
||||
- [S3 Protection](#s3-protection)
|
||||
- [AWS Storage](#aws-storage)
|
||||
- [Automation](#automation)
|
||||
- [EBS Snapshots](#ebs-snapshots)
|
||||
- [Veeam Integration](#veeam-integration)
|
||||
- [Chaos Engineering](#chaos-engineering)
|
||||
- [Cloud Integrations](#cloud-integrations)
|
||||
- [DNS Routing](#dns-routing)
|
||||
- [Resilience Design](#resilience-design)
|
||||
|
||||
## Architectural Foundations
|
||||
|
||||
### Kubernetes Tools
|
||||
|
||||
@@ -1,40 +1,24 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Containers resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
|
||||
---
|
||||
# AWS Containers
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
You are browsing the AI-Curated V2 Elite Edition. Looking for the exhaustive list of references? Check out the [**V1 Historical Archive**](/v1/aws-containers/).
|
||||
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Containers in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [AWS](#aws)
|
||||
- [Container Compute](#container-compute)
|
||||
- [Container Registries](#container-registries)
|
||||
- [Continuous Deployment](#continuous-deployment)
|
||||
- [Security Practices](#security-practices)
|
||||
Detailed reference for AWS Containers in the context of Architectural Foundations.
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
### AWS
|
||||
|
||||
#### Container Compute
|
||||
|
||||
- **(2024)** [Amazon ECS-optimized AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Reference manual for the AWS-engineered Amazon Machine Image (AMI) preconfigured with the ECS agent, Docker runtime, and optimal container configurations. Utilizing this specialized OS image ensures maximum orchestration performance, reliable telemetry, and security compliance out of the box.
|
||||
#### Container Registries
|
||||
|
||||
- **(2024)** [Amazon EC2 Container Registry Documentation](https://aws.amazon.com/es/documentation/ecr) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Official engineering reference for Amazon ECR, a fully managed OCI-compliant container registry. It covers critical security integrations, image scanning capabilities, cross-region replication configurations, and direct integration with Amazon ECS/EKS to facilitate safe, high-speed container pull actions.
|
||||
#### Continuous Deployment
|
||||
|
||||
- **(2021)** [Automate rollbacks for Amazon ECS rolling deployments with CloudWatch alarms](https://aws.amazon.com/blogs/containers/automate-rollbacks-for-amazon-ecs-rolling-deployments-with-cloudwatch-alarms) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — An architectural guide outlining automated deployment rollback capabilities within ECS rolling deployments. It illustrates how CloudWatch alarms can monitor application health (e.g., HTTP 5xx rates) during active deployments and automatically trigger rollbacks to a previously stable revision to maintain high availability.
|
||||
#### Security Practices
|
||||
|
||||
- **(2025)** [**awslabs/amazon-ecr-credential-helper: Amazon ECR Docker Credential Helper**](https://github.com/awslabs/amazon-ecr-credential-helper) <span class='md-tag md-tag--info'>⭐ 2703</span> <svg class="v2-sparkline" width="50" height="15" viewBox="0 0 50 15" style="vertical-align: middle; display: inline-block; margin-left: 6px;" title="Activity Trend"><defs><linearGradient id="spark-grad-8a9b764e" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="rgba(34, 211, 238, 0.2)" /><stop offset="100%" stop-color="var(--md-accent-fg-color)" /></linearGradient></defs><path class="v2-sparkline-path" d="M 0 4 L 10 10 L 20 2 L 30 7 L 40 12 L 50 5" fill="none" stroke="url(#spark-grad-8a9b764e)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /><circle cx="50" cy="5" r="2" fill="var(--md-accent-fg-color)" /></svg> <span class='md-tag md-tag--warning'>[GO CONTENT]</span> 🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[ENTERPRISE-STABLE]</span> — A Docker credential helper that handles seamless, transparent IAM-based authentication for Amazon ECR. By removing the need to run periodic 'aws ecr get-login-password' cron jobs, it enhances runtime security by integrating directly with standard IAM Instance Profiles and local AWS config files.
|
||||
- **(2022)** [dev.to: Sharing secrets to ECS in an AWS multi-account architecture](https://dev.to/aws-builders/sharing-secrets-to-ecs-in-an-aws-multi-account-architecture-5h1i) <span class='md-tag md-tag--warning'>[TERRAFORM CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — A technical blueprint for cross-account secret management for Amazon ECS using AWS Secrets Manager and Systems Manager (SSM) Parameter Store. It provides security engineers with an architectural approach to maintain strict separation of concerns, principal-of-least-privilege IAM policies, and cross-account IAM role assumption.
|
||||
|
||||
---
|
||||
💡 **Explore Related:** [Googlecloudplatform](./GoogleCloudPlatform.md) | [Edge Computing](./edge-computing.md) | [Oraclecloud](./oraclecloud.md)
|
||||
💡 **Explore Related:** [About](./about.md) | [Demos](./demos.md) | [Kubernetes](./kubernetes.md)
|
||||
|
||||
🔗 **See Also:** [About](./about.md) | [Postman](./postman.md)
|
||||
🔗 **See Also:** [Angular](./angular.md) | [Googlecloudplatform](./GoogleCloudPlatform.md)
|
||||
|
||||
|
||||
+3
-8
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Data resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Big Data
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,14 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Big Data in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [AWS](#aws)
|
||||
- [Event Streaming](#event-streaming)
|
||||
- [Event Streaming](#event-streaming-1)
|
||||
- [Comparison](#comparison)
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
### AWS
|
||||
|
||||
@@ -1,23 +1,13 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Databases resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
|
||||
---
|
||||
# AWS RDS Databases
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
You are browsing the AI-Curated V2 Elite Edition. Looking for the exhaustive list of references? Check out the [**V1 Historical Archive**](/v1/aws-databases/).
|
||||
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS RDS Databases in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [AWS Databases](#aws-databases)
|
||||
- [Amazon Aurora](#amazon-aurora)
|
||||
- [Amazon RDS](#amazon-rds)
|
||||
- [Databases](#databases)
|
||||
- [NoSQL](#nosql)
|
||||
- [Serverless Architecture](#serverless-architecture)
|
||||
1. [Cloud Native](#cloud-native)
|
||||
- [Kubernetes Operators](#kubernetes-operators)
|
||||
- [Managed Databases](#managed-databases)
|
||||
Detailed reference for AWS RDS Databases in the context of Architectural Foundations.
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
@@ -30,7 +20,6 @@
|
||||
|
||||
- **(2026)** [==Working with PostgreSQL, MySQL, and MariaDB Read Replicas - Amazon==](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ReadRepl.html) <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> 🌟🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[DE FACTO STANDARD]</span> — Exhaustive official guide detailing the design, limits, and monitoring of read-replicas for open-source engines in AWS RDS. Covers cross-region replication strategies and promoting a replica to master during failovers.
|
||||
- **(2026)** [==Working with an Amazon RDS DB Instance in a VPC==](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html) <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> 🌟🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[DE FACTO STANDARD]</span> — The foundational AWS RDS VPC networking architecture reference. Analyzes subnet group designations, public versus private access configurations, and network isolation topologies for secure DB hosting.
|
||||
- **(2026)** [**AWS Tutorials: Create and Connect to a MySQL Database with Amazon RDS**](https://docs.aws.amazon.com/hands-on/latest/create-mysql-db/create-mysql-db.html) <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> 🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[ENTERPRISE-STABLE]</span> — A beginner-to-intermediate hands-on tutorial for launching a MySQL DB instance inside AWS RDS. Walks through security group access policies, DB engine parameters, and application tier connectivity patterns.
|
||||
### Databases
|
||||
|
||||
#### NoSQL
|
||||
@@ -48,7 +37,7 @@
|
||||
- [itnext.io: Manage Redis on AWS from Kubernetes](https://itnext.io/manage-redis-on-aws-from-kubernetes-eeadba7eb889) <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Curator Insight describes how to manage AWS ElastiCache for Redis directly from Kubernetes. Live Grounding highlights using AWS Controllers for Kubernetes (ACK) or Crossplane to define managed Redis instances as custom resources (CRDs). This unifies stateful cloud infrastructure management within standard GitOps workflows.
|
||||
|
||||
---
|
||||
💡 **Explore Related:** [Googlecloudplatform](./GoogleCloudPlatform.md) | [Edge Computing](./edge-computing.md) | [Oraclecloud](./oraclecloud.md)
|
||||
💡 **Explore Related:** [About](./about.md) | [Demos](./demos.md) | [Kubernetes](./kubernetes.md)
|
||||
|
||||
🔗 **See Also:** [About](./about.md) | [Postman](./postman.md)
|
||||
🔗 **See Also:** [Postman](./postman.md) | [Angular](./angular.md)
|
||||
|
||||
|
||||
+3
-11
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS DevOps resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS DevOps. AWS CodePipeline
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,17 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS DevOps. AWS CodePipeline in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud-Native Provisioning](#cloud-native-provisioning)
|
||||
- [CICD Integration](#cicd-integration)
|
||||
- [AWS CodePipeline](#aws-codepipeline)
|
||||
- [AWS DevOps](#aws-devops)
|
||||
1. [Multi-Cluster and Edge](#multi-cluster-and-edge)
|
||||
- [Cluster Federation](#cluster-federation)
|
||||
- [Admiralty](#admiralty)
|
||||
- [Serverless Integration](#serverless-integration)
|
||||
|
||||
## Cloud-Native Provisioning
|
||||
|
||||
### CICD Integration
|
||||
|
||||
@@ -6,31 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS IaC in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architectural Foundations](#architectural-foundations)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [General Reference](#general-reference)
|
||||
1. [Cloud Computing](#cloud-computing)
|
||||
- [AWS](#aws)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
1. [Infrastructure as Code](#infrastructure-as-code-1)
|
||||
- [Automated Generation](#automated-generation)
|
||||
- [AWS Resource Importers](#aws-resource-importers)
|
||||
- [Compute Orchestration](#compute-orchestration)
|
||||
- [Recording Tools](#recording-tools)
|
||||
- [CloudFormation](#cloudformation)
|
||||
- [Automated Generation](#automated-generation-1)
|
||||
- [Compliance and Policy](#compliance-and-policy)
|
||||
- [Criticism and Analysis](#criticism-and-analysis)
|
||||
- [GitOps Integrations](#gitops-integrations)
|
||||
- [Identity and Access Management](#identity-and-access-management)
|
||||
- [Messaging Configuration](#messaging-configuration)
|
||||
- [Pre-commit Hooks](#pre-commit-hooks)
|
||||
- [Registries](#registries)
|
||||
- [Starter Templates](#starter-templates)
|
||||
- [Storage Configuration](#storage-configuration)
|
||||
|
||||
## Architectural Foundations
|
||||
|
||||
### Kubernetes Tools
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Messaging resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Messaging Services
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,13 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Messaging Services in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [AWS](#aws)
|
||||
- [Event-Driven Architecture](#event-driven-architecture)
|
||||
- [Messaging Services](#messaging-services)
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
### AWS
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Miscellaneous resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Miscellaneous
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,37 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Miscellaneous in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Application Development](#application-development)
|
||||
- [Container Orchestration](#container-orchestration)
|
||||
- [App Runner](#app-runner)
|
||||
- [Microservices](#microservices)
|
||||
- [E-commerce Reference](#e-commerce-reference)
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [AWS](#aws)
|
||||
- [Load Balancing](#load-balancing)
|
||||
- [PaaS Platform](#paas-platform)
|
||||
- [Web Servers](#web-servers)
|
||||
1. [Cloud Native Infrastructure](#cloud-native-infrastructure)
|
||||
- [Service Mesh](#service-mesh)
|
||||
- [AWS](#aws-1)
|
||||
1. [Edge and IoT](#edge-and-iot)
|
||||
- [AWS](#aws-2)
|
||||
- [IoT Platforms](#iot-platforms)
|
||||
1. [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [AWS CDK](#aws-cdk)
|
||||
- [Serverless Applications](#serverless-applications)
|
||||
1. [Networking and Security](#networking-and-security)
|
||||
- [Service Mesh](#service-mesh-1)
|
||||
- [Multi-Account](#multi-account)
|
||||
1. [Serverless](#serverless)
|
||||
- [Voice User Interfaces](#voice-user-interfaces)
|
||||
- [Alexa Skills](#alexa-skills)
|
||||
1. [Testing and Chaos](#testing-and-chaos)
|
||||
- [Debugging](#debugging)
|
||||
- [AWS Troubleshooting](#aws-troubleshooting)
|
||||
|
||||
## Application Development
|
||||
|
||||
### Container Orchestration
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Monitoring resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Monitoring and Logging
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,18 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Monitoring and Logging in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Native Platforms](#cloud-native-platforms)
|
||||
- [AWS](#aws)
|
||||
- [Managed Observability](#managed-observability)
|
||||
1. [Observability and Monitoring](#observability-and-monitoring)
|
||||
- [CloudWatch](#cloudwatch)
|
||||
- [Prometheus Integration](#prometheus-integration)
|
||||
1. [Service Discovery](#service-discovery)
|
||||
- [AWS Cloud Map](#aws-cloud-map)
|
||||
- [Health Checks](#health-checks)
|
||||
|
||||
## Cloud Native Platforms
|
||||
|
||||
### AWS
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Networking resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Networking
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,32 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Networking in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [AWS](#aws)
|
||||
- [API Gateway](#api-gateway)
|
||||
- [Architecture](#architecture)
|
||||
- [Cross-Account Patterns](#cross-account-patterns)
|
||||
- [CDN](#cdn)
|
||||
- [CloudFront](#cloudfront)
|
||||
- [Edge Security](#edge-security)
|
||||
- [Kubernetes Networking](#kubernetes-networking)
|
||||
- [Controllers](#controllers)
|
||||
- [Load Balancing](#load-balancing)
|
||||
- [Announcements](#announcements)
|
||||
- [Application Load Balancer](#application-load-balancer)
|
||||
- [Configuration Updates](#configuration-updates)
|
||||
- [Serverless Integration](#serverless-integration)
|
||||
- [Reverse Proxy](#reverse-proxy)
|
||||
- [NGINX Plus](#nginx-plus)
|
||||
- [Security](#security)
|
||||
- [WAF](#waf)
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [Deployment Patterns](#deployment-patterns)
|
||||
- [Blue-Green](#blue-green)
|
||||
- [ALB](#alb)
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
### AWS
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Newfeatures resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS New Features
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,49 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS New Features in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Application Integration](#application-integration)
|
||||
- [Serverless Orchestration](#serverless-orchestration)
|
||||
- [Step Functions](#step-functions)
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [AWS](#aws)
|
||||
- [Container Orchestration](#container-orchestration)
|
||||
- [Serverless](#serverless)
|
||||
- [Container Orchestration](#container-orchestration-1)
|
||||
- [ECS Deployments](#ecs-deployments)
|
||||
- [EKS Windows](#eks-windows)
|
||||
- [Storage Integration](#storage-integration)
|
||||
- [Messaging](#messaging)
|
||||
- [Event-Driven](#event-driven)
|
||||
- [Networking](#networking)
|
||||
- [Load Balancing](#load-balancing)
|
||||
- [Security and Service Mesh](#security-and-service-mesh)
|
||||
- [HashiCorp HCP](#hashicorp-hcp)
|
||||
- [Serverless](#serverless-1)
|
||||
- [Compute](#compute)
|
||||
- [Developer Tooling](#developer-tooling)
|
||||
1. [Containers](#containers)
|
||||
- [Kubernetes](#kubernetes)
|
||||
- [EKS Console](#eks-console)
|
||||
- [EKS Networking](#eks-networking)
|
||||
- [EKS Security](#eks-security)
|
||||
- [Market Analysis](#market-analysis)
|
||||
- [ReInvent Announcements](#reinvent-announcements)
|
||||
1. [Data and Analytics](#data-and-analytics)
|
||||
- [Data Streaming](#data-streaming)
|
||||
- [Kinesis](#kinesis)
|
||||
1. [Database](#database)
|
||||
- [RDS Proxy](#rds-proxy)
|
||||
- [Networking](#networking-1)
|
||||
1. [Observability](#observability)
|
||||
- [Grafana](#grafana)
|
||||
- [Managed Visualization](#managed-visualization)
|
||||
- [OpenTelemetry](#opentelemetry)
|
||||
- [Distributed Tracing](#distributed-tracing)
|
||||
- [Prometheus](#prometheus)
|
||||
- [Managed Container Monitoring](#managed-container-monitoring)
|
||||
|
||||
## Application Integration
|
||||
|
||||
### Serverless Orchestration
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Pricing resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
|
||||
---
|
||||
# AWS Pricing and Cost Optimization
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
You are browsing the AI-Curated V2 Elite Edition. Looking for the exhaustive list of references? Check out the [**V1 Historical Archive**](/v1/aws-pricing/).
|
||||
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Pricing and Cost Optimization in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [AWS Cost Management](#aws-cost-management)
|
||||
- [Kubernetes FinOps](#kubernetes-finops)
|
||||
Detailed reference for AWS Pricing and Cost Optimization in the context of Architectural Foundations.
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
@@ -21,7 +18,7 @@
|
||||
- **(2021)** [==cast.ai: Keep your AWS Kubernetes costs in check with intelligent allocation' (EKS)==](https://cast.ai/blog/keep-your-aws-kubernetes-costs-in-check-with-intelligent-allocation) <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> 🌟🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[DE FACTO STANDARD]</span> — Explores Kubernetes resource provisioning on EKS using automated container allocations. Offers strategies to prevent container-level over-provisioning and dynamically handle node scaling tasks to curb cluster waste.
|
||||
|
||||
---
|
||||
💡 **Explore Related:** [Googlecloudplatform](./GoogleCloudPlatform.md) | [Edge Computing](./edge-computing.md) | [Oraclecloud](./oraclecloud.md)
|
||||
💡 **Explore Related:** [About](./about.md) | [Demos](./demos.md) | [Kubernetes](./kubernetes.md)
|
||||
|
||||
🔗 **See Also:** [About](./about.md) | [Postman](./postman.md)
|
||||
🔗 **See Also:** [Postman](./postman.md) | [Googlecloudplatform](./GoogleCloudPlatform.md)
|
||||
|
||||
|
||||
+3
-17
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Security resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Security
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,23 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Security in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Architecture](#cloud-architecture)
|
||||
- [AWS](#aws)
|
||||
- [Cryptography](#cryptography)
|
||||
- [Identity and Access Management](#identity-and-access-management)
|
||||
- [SaaS Architecture](#saas-architecture)
|
||||
- [Secrets Management](#secrets-management)
|
||||
- [Security Auditing](#security-auditing)
|
||||
- [Security and Compliance](#security-and-compliance)
|
||||
1. [DevSecOps](#devsecops)
|
||||
- [Policy as Code](#policy-as-code)
|
||||
- [Open Policy Agent](#open-policy-agent)
|
||||
1. [Security and Identity](#security-and-identity)
|
||||
- [Secrets Management](#secrets-management-1)
|
||||
- [Kubernetes Integration](#kubernetes-integration)
|
||||
|
||||
## Cloud Architecture
|
||||
|
||||
### AWS
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Serverless resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Serverless
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,64 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Serverless in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [API Management](#api-management)
|
||||
- [GraphQL and AppSync](#graphql-and-appsync)
|
||||
- [Security](#security)
|
||||
1. [Cloud Platforms](#cloud-platforms)
|
||||
- [Serverless Architecture](#serverless-architecture)
|
||||
- [AWS Lambda](#aws-lambda)
|
||||
- [Concepts](#concepts)
|
||||
- [Resources](#resources)
|
||||
1. [Container Orchestration](#container-orchestration)
|
||||
- [AWS ECS and Fargate](#aws-ecs-and-fargate)
|
||||
- [Machine Learning Ops](#machine-learning-ops)
|
||||
- [Performance Optimization](#performance-optimization)
|
||||
- [Storage Architecture](#storage-architecture)
|
||||
- [Kubernetes and EKS](#kubernetes-and-eks)
|
||||
- [Serverless Containers](#serverless-containers)
|
||||
1. [DevOps and CICD](#devops-and-cicd)
|
||||
- [Serverless Deployment](#serverless-deployment)
|
||||
- [AWS SAM](#aws-sam)
|
||||
- [AWS SAM Pipelines](#aws-sam-pipelines)
|
||||
1. [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [AWS CDK](#aws-cdk)
|
||||
- [Serverless IaC](#serverless-iac)
|
||||
- [AWS SAM](#aws-sam-1)
|
||||
- [Fundamentals](#fundamentals)
|
||||
- [Terraform](#terraform)
|
||||
- [Serverless Provisioning](#serverless-provisioning)
|
||||
1. [Modernization](#modernization)
|
||||
- [Monolith Migration](#monolith-migration)
|
||||
- [.NET Core](#net-core)
|
||||
1. [Observability and Monitoring](#observability-and-monitoring)
|
||||
- [CloudWatch](#cloudwatch)
|
||||
- [Alerting Systems](#alerting-systems)
|
||||
1. [Security and Governance](#security-and-governance)
|
||||
- [Secret Management](#secret-management)
|
||||
- [Go Runtime](#go-runtime)
|
||||
1. [Serverless Architecture](#serverless-architecture-1)
|
||||
- [API Gateway](#api-gateway)
|
||||
- [REST APIs](#rest-apis)
|
||||
- [AWS Lambda](#aws-lambda-1)
|
||||
- [Antipatterns](#antipatterns)
|
||||
- [Cold Starts](#cold-starts)
|
||||
- [Concurrency and Scaling](#concurrency-and-scaling)
|
||||
- [Configuration Management](#configuration-management)
|
||||
- [Fundamentals](#fundamentals-1)
|
||||
- [Hardware Platforms](#hardware-platforms)
|
||||
- [Java Runtimes](#java-runtimes)
|
||||
- [Performance Optimization](#performance-optimization-1)
|
||||
- [Caching](#caching)
|
||||
- [Data Management](#data-management)
|
||||
- [Event-Driven](#event-driven)
|
||||
- [Design Patterns](#design-patterns)
|
||||
- [Messaging and Integration](#messaging-and-integration)
|
||||
- [Webhooks](#webhooks)
|
||||
- [Orchestration](#orchestration)
|
||||
- [AWS Step Functions](#aws-step-functions)
|
||||
|
||||
## API Management
|
||||
|
||||
### GraphQL and AppSync
|
||||
|
||||
@@ -6,14 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Spain in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Platforms](#cloud-platforms)
|
||||
- [AWS Education](#aws-education)
|
||||
- [Resources](#resources)
|
||||
- [AWS Regional Infrastructure](#aws-regional-infrastructure)
|
||||
- [Spain](#spain-1)
|
||||
|
||||
## Cloud Platforms
|
||||
|
||||
### AWS Education
|
||||
|
||||
@@ -6,45 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Storage. S3 and EBS. AWS Storage Gateway in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architectural Foundations](#architectural-foundations)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [General Reference](#general-reference)
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [Compute](#compute)
|
||||
- [AWS EC2](#aws-ec2)
|
||||
- [Storage Provisioning](#storage-provisioning)
|
||||
- [Data Integration](#data-integration)
|
||||
- [AWS Transfer Family](#aws-transfer-family)
|
||||
- [Reliability Engineering](#reliability-engineering)
|
||||
- [Multi-Region Architectures](#multi-region-architectures)
|
||||
- [Storage](#storage)
|
||||
- [AWS EFS](#aws-efs)
|
||||
- [Performance Tuning](#performance-tuning)
|
||||
- [AWS S3](#aws-s3)
|
||||
- [Analytics](#analytics)
|
||||
1. [Cloud Infrastructure and Orchestration](#cloud-infrastructure-and-orchestration)
|
||||
- [Storage and Databases](#storage-and-databases)
|
||||
- [Distributed Block Storage](#distributed-block-storage)
|
||||
1. [Cloud Native Storage](#cloud-native-storage)
|
||||
- [AWS EBS](#aws-ebs)
|
||||
- [Snapshot Automation](#snapshot-automation)
|
||||
- [Sparse Snapshots](#sparse-snapshots)
|
||||
- [Storage Performance](#storage-performance)
|
||||
- [AWS S3](#aws-s3-1)
|
||||
- [FAQ Reference](#faq-reference)
|
||||
- [Private Connectivity](#private-connectivity)
|
||||
- [S3 Architecture](#s3-architecture)
|
||||
- [S3 Namespace](#s3-namespace)
|
||||
- [S3 Synchronization](#s3-synchronization)
|
||||
- [Storage Lifecycle](#storage-lifecycle)
|
||||
- [S3 API Compatibility](#s3-api-compatibility)
|
||||
- [S3 Security](#s3-security)
|
||||
1. [Cloud Platform](#cloud-platform)
|
||||
- [AWS Infrastructure](#aws-infrastructure)
|
||||
- [Storage Management](#storage-management)
|
||||
|
||||
## Architectural Foundations
|
||||
|
||||
### Kubernetes Tools
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Tools Scripts resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
|
||||
---
|
||||
# AWS Tools and Scripts
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
You are browsing the AI-Curated V2 Elite Edition. Looking for the exhaustive list of references? Check out the [**V1 Historical Archive**](/v1/aws-tools-scripts/).
|
||||
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Tools and Scripts in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Containers](#containers)
|
||||
- [Developer Tooling](#developer-tooling)
|
||||
- [Cloud Emulation](#cloud-emulation)
|
||||
1. [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Boilerplates](#boilerplates)
|
||||
- [AWS Templates](#aws-templates)
|
||||
Detailed reference for AWS Tools and Scripts in the context of Architectural Foundations.
|
||||
|
||||
## Containers
|
||||
|
||||
@@ -22,16 +16,9 @@
|
||||
#### Cloud Emulation
|
||||
|
||||
- **(2024)** [==Floci - An AWS Local Emulator Alternative==](https://github.com/floci-io/floci) <span class='md-tag md-tag--info'>⭐ 14064</span> <svg class="v2-sparkline" width="50" height="15" viewBox="0 0 50 15" style="vertical-align: middle; display: inline-block; margin-left: 6px;" title="Activity Trend"><defs><linearGradient id="spark-grad-eeaf9b0a" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="rgba(34, 211, 238, 0.2)" /><stop offset="100%" stop-color="var(--md-accent-fg-color)" /></linearGradient></defs><path class="v2-sparkline-path" d="M 0 12 L 10 3 L 20 4 L 30 11 L 40 10 L 50 5" fill="none" stroke="url(#spark-grad-eeaf9b0a)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /><circle cx="50" cy="5" r="2" fill="var(--md-accent-fg-color)" /></svg> <span class='md-tag md-tag--warning'>[GO CONTENT]</span> 🌟🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[DE FACTO STANDARD]</span> — An active and highly performant local alternative to localstack. Emulates AWS cloud service behavior locally using specialized lightweight container footprints.
|
||||
## Infrastructure as Code
|
||||
|
||||
### Boilerplates
|
||||
|
||||
#### AWS Templates
|
||||
|
||||
- **(2024)** [AWS Samples (Boilerplates)](https://nubenetes.com/demos/#aws-samples-boilerplates) <span class='md-tag md-tag--warning'>[MULTI-LANGUAGE CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — A consolidated hub of official and community AWS deployment samples. Houses structured patterns and CloudFormation/Terraform codebases to fast-track prototype development in compliance with AWS architecture standards.
|
||||
|
||||
---
|
||||
💡 **Explore Related:** [Googlecloudplatform](./GoogleCloudPlatform.md) | [Edge Computing](./edge-computing.md) | [Oraclecloud](./oraclecloud.md)
|
||||
💡 **Explore Related:** [About](./about.md) | [Demos](./demos.md) | [Kubernetes](./kubernetes.md)
|
||||
|
||||
🔗 **See Also:** [About](./about.md) | [Postman](./postman.md)
|
||||
🔗 **See Also:** [Postman](./postman.md) | [Googlecloudplatform](./GoogleCloudPlatform.md)
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked AWS Training resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# AWS Training and Certification
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,12 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for AWS Training and Certification in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Computing](#cloud-computing)
|
||||
- [AWS](#aws)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
|
||||
## Cloud Computing
|
||||
|
||||
### AWS
|
||||
|
||||
+169
-9
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top AWS resources for 2026, AI-ranked: AWS App Runner, Amazon ECS-optimized AMI and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Public Cloud Provider. Amazon Web Services
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,16 +9,30 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Public Cloud Provider. Amazon Web Services in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
!!! abstract "Deep-Dive Topic Pages"
|
||||
[Serverless](./aws-serverless/) · [Storage](./aws-storage/) · [Networking](./aws-networking/) · [Security](./aws-security/) · [IaC](./aws-iac/) · [Backup](./aws-backup/) · [New Features](./aws-newfeatures/)
|
||||
|
||||
1. [Cloud Computing](#cloud-computing)
|
||||
- [AWS](#aws)
|
||||
- [Architecture and Guides](#architecture-and-guides)
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [Application Integration](#application-integration)
|
||||
- [API Management](#api-management)
|
||||
- [Serverless Services](#serverless-services)
|
||||
## Application Development
|
||||
|
||||
### Container Orchestration
|
||||
|
||||
#### App Runner
|
||||
|
||||
- **(2026)** [AWS App Runner 🌟](https://aws.amazon.com/apprunner) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Curator Insight outlines AWS App Runner as a fully managed container service for rapid web application and API deployment. Live Grounding confirms its position in 2026 as a premier choice for developers wanting to bypass Kubernetes complexity, offering automated load balancing, scaling, and TLS termination directly from source code or ECR.
|
||||
- **(2022)** [Architecting for resiliency on AWS App Runner](https://aws.amazon.com/blogs/containers/architecting-for-resiliency-on-aws-app-runner) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Curator Insight focuses on engineering multi-region, high-availability, and fault-tolerant topologies with App Runner. Live Grounding shows that resilient patterns rely on Route 53 routing, pilot light databases, and robust custom health checks to sustain production-grade service availability.
|
||||
- **(2021)** [dev.to: AWS App Runner : How to deploy containerized applications using App Runner](https://dev.to/aws-builders/aws-app-runner-how-to-deploy-containerized-applications-using-app-runner-1f7c) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Curator Insight details the operational steps for configuring and running Dockerized workloads on AWS App Runner. Live Grounding verifies this as a classic, high-value guide for transitioning traditional VMs to serverless containers without having to manage raw ECS or EKS orchestration.
|
||||
### Microservices
|
||||
|
||||
#### E-commerce Reference
|
||||
|
||||
- **(2021)** [Architecting a Highly Available Serverless, Microservices-Based Ecommerce Site](https://aws.amazon.com/blogs/architecture/architecting-a-highly-available-serverless-microservices-based-ecommerce-site) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Curator Insight details the design of a highly available, multi-region e-commerce platform using EventBridge, Cognito, Lambda, and DynamoDB. Live Grounding shows this architecture represents the gold standard for serverless distributed microservices, emphasizing event-driven decoupling and global data consistency.
|
||||
## Cloud Architecture
|
||||
|
||||
### Case Studies
|
||||
|
||||
#### Enterprise Scale
|
||||
|
||||
- **(2019)** [aws.amazon.com: Trainline Case Study](https://aws.amazon.com/solutions/case-studies) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--secondary'>[CASE STUDY]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Architectural case study mapping Trainline's migrations onto AWS using ECS containerized deployments and RDS clusters. Demonstrates successful reduction in database locking periods and outlines zero-downtime blue/green microservice delivery strategies.
|
||||
## Cloud Computing
|
||||
|
||||
### AWS
|
||||
@@ -23,8 +40,49 @@
|
||||
#### Architecture and Guides
|
||||
|
||||
- **(2026)** [Implementing Microservices on AWS 🌟](https://docs.aws.amazon.com/whitepapers/latest/microservices-on-aws/microservices-on-aws.html) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — The premier AWS whitepaper defining the patterns, architectures, and execution strategies for deploying microservices. It covers decomposition patterns, decentralized data management, domain-driven boundaries, service discovery, and inter-service messaging schemes.
|
||||
#### Infrastructure as Code
|
||||
|
||||
- **(2021)** [New digital course and lab: AWS Cloud Development Kit (CDK) Primer](https://aws.amazon.com/about-aws/whats-new/2021/01/new-digital-course-and-lab-aws-cloud-development-kit-cdk-primer) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Introduction to the AWS Cloud Development Kit (CDK) framework. Teaches developers how to define cloud infrastructure using familiar programming languages (TypeScript, Python) rather than declarative JSON or YAML, maximizing code reusability and CI/CD integration.
|
||||
## Cloud Infrastructure
|
||||
|
||||
### AWS (1)
|
||||
|
||||
#### Container Compute
|
||||
|
||||
- **(2024)** [Amazon ECS-optimized AMI](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Reference manual for the AWS-engineered Amazon Machine Image (AMI) preconfigured with the ECS agent, Docker runtime, and optimal container configurations. Utilizing this specialized OS image ensures maximum orchestration performance, reliable telemetry, and security compliance out of the box.
|
||||
#### Container Registries
|
||||
|
||||
- **(2024)** [Amazon EC2 Container Registry Documentation](https://aws.amazon.com/es/documentation/ecr) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Official engineering reference for Amazon ECR, a fully managed OCI-compliant container registry. It covers critical security integrations, image scanning capabilities, cross-region replication configurations, and direct integration with Amazon ECS/EKS to facilitate safe, high-speed container pull actions.
|
||||
#### Continuous Deployment
|
||||
|
||||
- **(2021)** [Automate rollbacks for Amazon ECS rolling deployments with CloudWatch alarms](https://aws.amazon.com/blogs/containers/automate-rollbacks-for-amazon-ecs-rolling-deployments-with-cloudwatch-alarms) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — An architectural guide outlining automated deployment rollback capabilities within ECS rolling deployments. It illustrates how CloudWatch alarms can monitor application health (e.g., HTTP 5xx rates) during active deployments and automatically trigger rollbacks to a previously stable revision to maintain high availability.
|
||||
#### Event Streaming
|
||||
|
||||
- **(2016)** [**Querying Amazon Kinesis Streams Directly with SQL and Spark Streaming**](https://aws.amazon.com/blogs/big-data/querying-amazon-kinesis-streams-directly-with-sql-and-spark-streaming) <span class='md-tag md-tag--warning'>[SCALA CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> 🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[ENTERPRISE-STABLE]</span> — Technical blueprint detailing Spark Streaming integration with Amazon Kinesis streams. Discusses record-processing window optimizations, checkpoint configurations, and SQL querying on live event pipelines.
|
||||
#### Event-Driven Architecture
|
||||
|
||||
- **(2020)** [Building an event-driven application with Amazon EventBridge](https://aws.amazon.com/blogs/compute/building-an-event-driven-application-with-amazon-eventbridge) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — This AWS architecture blog details how to design and build serverless event-driven applications using Amazon EventBridge. It highlights the platform's ability to act as a centralized serverless event bus that simplifies decoupled communication across distributed microservices by routing events using declarative rules. The pattern eliminates custom routing code, improving structural robustness.
|
||||
#### Load Balancing
|
||||
|
||||
- **(2016)** [AWS Elastic Beanstalk Supports Application Load Balancer](https://aws.amazon.com/about-aws/whats-new/2016/08/aws-elastic-beanstalk-supports-application-load-balancer) <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Product release documentation outlining integration of Application Load Balancers (ALBs) with Elastic Beanstalk. Unlocks path-based routing, target group pooling, and secure WebSocket connections.
|
||||
- **(2016)** [Configuring an Application Load Balancer](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-cfg-applicationloadbalancer.html) <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Operational guide detailing how to declare, scale, and tune target parameters and routing policies on Application Load Balancers inside active Elastic Beanstalk projects.
|
||||
#### Messaging Services
|
||||
|
||||
- **(2022)** [dev.to: When to SNS or SQS](https://dev.to/aws-builders/when-to-sns-or-sqs-2aji) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — A technical comparison of Amazon Simple Notification Service (SNS) and Simple Queue Service (SQS) within event-driven architectures. It details SNS's pub-sub push mechanism versus SQS's pull-based queueing model, analyzing throughput characteristics and decoupling strategies. This guide clarifies architectural patterns for integrating microservices via point-to-point and fan-out message routing.
|
||||
#### PaaS Platform
|
||||
|
||||
- **(2011)** [AWS Elastic Beanstalk Documentation](https://aws.amazon.com/documentation/elastic-beanstalk) <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Official reference architecture and deployment guide for AWS Elastic Beanstalk. Simplifies cloud application lifecycle management by handling capacity provisioning, balancing, scaling, and platform patching.
|
||||
#### Security Practices
|
||||
|
||||
- **(2022)** [dev.to: Sharing secrets to ECS in an AWS multi-account architecture](https://dev.to/aws-builders/sharing-secrets-to-ecs-in-an-aws-multi-account-architecture-5h1i) <span class='md-tag md-tag--warning'>[TERRAFORM CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — A technical blueprint for cross-account secret management for Amazon ECS using AWS Secrets Manager and Systems Manager (SSM) Parameter Store. It provides security engineers with an architectural approach to maintain strict separation of concerns, principal-of-least-privilege IAM policies, and cross-account IAM role assumption.
|
||||
#### Web Servers
|
||||
|
||||
- **(2016)** [AWS Elastic Beanstalk Supports Nginx Proxy Server with Tomcat](https://aws.amazon.com/about-aws/whats-new/2016/08/aws-elastic-beanstalk-supports-nginx-proxy-server-with-tomcat) <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Feature documentation announcing native Nginx reverse proxy configurations sitting in front of Apache Tomcat platforms in Beanstalk. Optimizes delivery of static assets and client routing.
|
||||
### AWS Databases
|
||||
|
||||
#### Amazon RDS
|
||||
|
||||
- **(2026)** [**AWS Tutorials: Create and Connect to a MySQL Database with Amazon RDS**](https://docs.aws.amazon.com/hands-on/latest/create-mysql-db/create-mysql-db.html) <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> 🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[ENTERPRISE-STABLE]</span> — A beginner-to-intermediate hands-on tutorial for launching a MySQL DB instance inside AWS RDS. Walks through security group access policies, DB engine parameters, and application tier connectivity patterns.
|
||||
### Application Integration
|
||||
|
||||
#### API Management
|
||||
@@ -33,9 +91,111 @@
|
||||
#### Serverless Services
|
||||
|
||||
- **(2026)** [k21academy.com: AWS Application Services: Lambda, SES, SNS, SQS, SWF](https://k21academy.com/aws-cloud/aws-application-services) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Technical review of AWS's modular application integration portfolio. Contrasts serverless compute (Lambda) with asynchronous message queues (SQS), publish-subscribe event routing (SNS), programmatically orchestrated state workflows (SWF/Step Functions), and secure outbound transaction messaging (SES).
|
||||
### Event Streaming (1)
|
||||
|
||||
#### Comparison
|
||||
|
||||
- **(2021)** [**whizlabs.com: AWS Kinesis vs Kafka Apache**](https://www.whizlabs.com/blog/kinesis-vs-kafka) <span class='md-tag md-tag--warning'>[NONE CONTENT]</span> 🌟🌟🌟🌟 <span class='md-tag md-tag--success'>[ENTERPRISE-STABLE]</span> — Comparative architectural review between AWS Kinesis and Apache Kafka. Analyzes data retention policies, throughput capabilities, scaling overheads, and total cost of ownership (TCO) profiles.
|
||||
## Cloud Native Infrastructure
|
||||
|
||||
### Service Mesh
|
||||
|
||||
#### AWS (2)
|
||||
|
||||
- **(2022)** [aws.amazon.com/app-mesh](https://aws.amazon.com/app-mesh) <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--critical'>[LEGACY]</span> — Live Grounding Synthesis: Built on Envoy as AWS's managed service mesh, AWS App Mesh was deprecated in late 2024 and fully sunsetted. Platform teams are urged to transition to Amazon ECS Service Connect or Amazon VPC Lattice.
|
||||
## Cloud Native Platforms
|
||||
|
||||
### AWS (3)
|
||||
|
||||
#### Managed Observability
|
||||
|
||||
- **(2026)** [Amazon Managed Service for Prometheus](https://aws.amazon.com/prometheus) <span class='md-tag md-tag--warning'>[NONE CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — AWS fully-managed metric service designed around open-source Cortex core architecture. Automatically scales telemetry storage, ingestion, and query resources in secure enterprise environments.
|
||||
## Cloud-Native Provisioning
|
||||
|
||||
### CICD Integration
|
||||
|
||||
#### AWS CodePipeline
|
||||
|
||||
- **(2022)** [aws.amazon.com: AWS CodePipeline adds support for Branch-based development and Monorepos](https://aws.amazon.com/blogs/devops/aws-codepipeline-adds-support-for-branch-based-development-and-monorepos) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Release analysis highlighting newly added monorepo and branch-specific triggers within AWS CodePipeline, optimizing continuous delivery workflows and reducing build execution times.
|
||||
#### AWS DevOps
|
||||
|
||||
- **(2026)** [Continuous Deployment with AWS](https://aws.amazon.com/blogs/devops/tag/continuous-deployment) <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Curated collection of continuous deployment strategies optimized for AWS runtimes. Explains canary releases, blue/green cluster migrations, and automated rollbacks on ECS and EKS.
|
||||
## Edge and IoT
|
||||
|
||||
### AWS (4)
|
||||
|
||||
#### IoT Platforms
|
||||
|
||||
- **(2015)** [aws.amazon.com/en/iot](https://aws.amazon.com/iot) <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Technical documentation for AWS IoT Core, a high-throughput managed broker designed to securely route and map billions of device telemetry streams into cloud databases and analysis applications.
|
||||
## Infrastructure as Code (1)
|
||||
|
||||
### AWS CDK
|
||||
|
||||
#### Serverless Applications
|
||||
|
||||
- **(2023)** [freecodecamp.org: AWS CDK v2 Tutorial – How to Create a Three-Tier Serverless Application](https://www.freecodecamp.org/news/aws-cdk-v2-three-tier-serverless-application) <span class='md-tag md-tag--warning'>[TYPESCRIPT CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Curator Insight is a comprehensive, hands-on tutorial for constructing API Gateway, Lambda, and DynamoDB stacks via CDK v2. Live Grounding proves this three-tier serverless pattern remains the gold standard blueprint for robust, scalable web services in AWS.
|
||||
### Boilerplates
|
||||
|
||||
#### AWS Templates
|
||||
|
||||
- **(2024)** [AWS Samples (Boilerplates)](https://nubenetes.com/demos/#aws-samples-boilerplates) <span class='md-tag md-tag--warning'>[MULTI-LANGUAGE CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — A consolidated hub of official and community AWS deployment samples. Houses structured patterns and CloudFormation/Terraform codebases to fast-track prototype development in compliance with AWS architecture standards.
|
||||
## Kubernetes and Platform Engineering
|
||||
|
||||
### Modernization Tools
|
||||
|
||||
#### Microservice Migration
|
||||
|
||||
- **(2023)** [AWS App2Container: Migrate your Applications to Containers at Scale](https://aws.amazon.com/blogs/architecture/migrate-your-applications-to-containers-at-scale) <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--critical'>[LEGACY]</span> — Introduces AWS App2Container, a tool that automates the migration of legacy .NET and Java web applications into containerized structures ready for deployment on Amazon ECS or EKS.
|
||||
- **(2023)** [Let’s Architect! Architecting microservices with containers](https://aws.amazon.com/blogs/architecture/lets-architect-architecting-microservices-with-containers) <span class='md-tag md-tag--critical'>[LEGACY]</span> — A foundational guide for decoupling large legacy applications. Explores container hosting options on ECS and EKS, microservice discovery patterns, and inter-service security standards.
|
||||
## Multi-Cluster and Edge
|
||||
|
||||
### Cluster Federation
|
||||
|
||||
#### Admiralty
|
||||
|
||||
- **(2026)** [admiralty.io](https://admiralty.io) <span class='md-tag md-tag--warning'>[GO CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Official platform of Admiralty, an advanced multi-cluster proxy scheduler designed to programmatically dispatch workloads across physical, virtual, or serverless Kubernetes namespaces.
|
||||
#### Serverless Integration
|
||||
|
||||
- **(2021)** [thenewstack.io: Making Kubernetes Serverless and Global with AWS Fargate on EKS and Admiralty](https://thenewstack.io/making-kubernetes-serverless-and-global-with-aws-fargate-on-eks-and-admiralty) <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Investigative analysis showcasing how Admiralty can coordinate with AWS Fargate serverless containers in an EKS environment to deploy globally distributed applications with low operational overhead.
|
||||
- **(2021)** [admiralty.io: Multi-Region AWS Fargate on EKS](https://admiralty.io/docs/tutorials/fargate) <span class='md-tag md-tag--warning'>[GO CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> — Granular implementation tutorial for deploying Admiralty proxy schedulers to configure cross-cluster communication channels that target serverless AWS Fargate environments in multi-region setups.
|
||||
## Networking and Security
|
||||
|
||||
### Service Mesh (1)
|
||||
|
||||
#### Multi-Account
|
||||
|
||||
- **(2021)** [amazon.com: Leveraging App Mesh with Amazon EKS in a Multi-Account environment](https://aws.amazon.com/blogs/containers/leveraging-app-mesh-with-amazon-eks-in-a-multi-account-environment) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Curator Insight presents patterns for orchestrating cross-account microservice communication using AWS App Mesh and Amazon EKS. Live Grounding highlights that while the multi-account networking concepts remain structurally valid, the reliance on App Mesh is obsolete; modern architectures deploy VPC Lattice or cross-cluster Istio meshes.
|
||||
## Observability and Monitoring
|
||||
|
||||
### CloudWatch
|
||||
|
||||
#### Prometheus Integration
|
||||
|
||||
- **(2020)** [Amazon CloudWatch now monitors Prometheus metrics from Container environments](https://aws.amazon.com/about-aws/whats-new/2020/09/amazon-cloudwatch-monitors-prometheus-metrics-container-environments) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Documents Amazon CloudWatch Container Insights' ability to ingest, index, and visualize standard Prometheus application metrics directly from Elastic Kubernetes Service (EKS) cluster deployments.
|
||||
## Serverless
|
||||
|
||||
### Voice User Interfaces
|
||||
|
||||
#### Alexa Skills
|
||||
|
||||
- **(2017)** [New Alexa Skills Kit Template: Build a Trivia Skill in under an Hour](https://developer.amazon.com) <span class='md-tag md-tag--warning'>[JAVASCRIPT CONTENT]</span> <span class='md-tag md-tag--secondary'>[GUIDE]</span> <span class='md-tag md-tag--critical'>[LEGACY]</span> — Step-by-step developer tutorial detailing integration patterns between the Alexa Skills Kit and AWS Lambda serverless functions. Marked legacy as current conversational AI models have largely replaced basic programmatic trivia setups in production.
|
||||
## Service Discovery
|
||||
|
||||
### AWS Cloud Map
|
||||
|
||||
#### Health Checks
|
||||
|
||||
- **(2022)** [Custom Health Check: HealthCheckCustomConfig](https://docs.aws.amazon.com/cloud-map/latest/api/API_HealthCheckCustomConfig.html) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--primary'>[DOCUMENTATION]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Official reference guide for Cloud Map API's custom health checks. Explains dynamic service discovery patterns for serverless workloads where traditional load balancer health checks are inapplicable.
|
||||
## Testing and Chaos
|
||||
|
||||
### Debugging
|
||||
|
||||
#### AWS Troubleshooting
|
||||
|
||||
- **(2021)** [thenewstack.io: Remote Debugging in AWS: The Missing Link in Your Debugging Toolset](https://thenewstack.io/remote-debugging-in-aws-the-missing-link-in-your-debugging-toolset) <span class='md-tag md-tag--warning'>[N/A CONTENT]</span> <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — Curator Insight exposes methodologies for live-debugging cloud-hosted microservices without causing disruption. Live Grounding tracks the evolution of these techniques into sophisticated cloud-native debugging proxies and observability integrations (like OpenTelemetry and Telepresence), bridging local IDEs with remote VPC resources.
|
||||
|
||||
---
|
||||
💡 **Explore Related:** [Googlecloudplatform](./GoogleCloudPlatform.md) | [Edge Computing](./edge-computing.md) | [Oraclecloud](./oraclecloud.md)
|
||||
|
||||
🔗 **See Also:** [Postman](./postman.md) | [Angular](./angular.md)
|
||||
🔗 **See Also:** [About](./about.md) | [Postman](./postman.md)
|
||||
|
||||
|
||||
+3
-140
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Azure resources for 2026, AI-ranked: Bicep, Microsoft - DICOM Service and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Microsoft Azure
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,146 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Microsoft Azure in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [API Design](#api-design)
|
||||
- [Standards](#standards)
|
||||
- [REST API](#rest-api)
|
||||
1. [Architecture](#architecture)
|
||||
- [Container Orchestration](#container-orchestration)
|
||||
- [AKS Mission Critical](#aks-mission-critical)
|
||||
- [Well-Architected Framework](#well-architected-framework)
|
||||
- [Mission-Critical Workloads](#mission-critical-workloads)
|
||||
1. [Architecture and Microservices](#architecture-and-microservices)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [API Management](#api-management)
|
||||
- [Application Delivery](#application-delivery)
|
||||
- [Migration Guides](#migration-guides)
|
||||
- [Java Ecosystem](#java-ecosystem)
|
||||
- [Observability](#observability)
|
||||
- [Application Insights](#application-insights)
|
||||
- [Spring Cloud](#spring-cloud)
|
||||
- [Design Patterns](#design-patterns)
|
||||
1. [CICD Pipelines](#cicd-pipelines)
|
||||
- [DevOps Platforms](#devops-platforms)
|
||||
- [DevTest Labs](#devtest-labs)
|
||||
1. [Cloud Application Platforms](#cloud-application-platforms)
|
||||
- [Azure App Service](#azure-app-service)
|
||||
- [App Service Configuration](#app-service-configuration)
|
||||
- [App Service Diagnostics](#app-service-diagnostics)
|
||||
- [Custom Containers](#custom-containers)
|
||||
- [Java Runtime Configurations](#java-runtime-configurations)
|
||||
- [Serverless Computing](#serverless-computing)
|
||||
- [Azure Functions Core](#azure-functions-core)
|
||||
1. [Cloud Architecture](#cloud-architecture)
|
||||
- [PaaS](#paas)
|
||||
- [App Service](#app-service)
|
||||
1. [Cloud DevOps](#cloud-devops)
|
||||
- [CI-CD Pipelines](#ci-cd-pipelines)
|
||||
- [YAML Templating and Reusability](#yaml-templating-and-reusability)
|
||||
- [Container Orchestration](#container-orchestration-1)
|
||||
- [GitOps](#gitops)
|
||||
- [ArgoCD and Secrets](#argocd-and-secrets)
|
||||
- [Kubernetes CD](#kubernetes-cd)
|
||||
- [AKS Deployment](#aks-deployment)
|
||||
- [Infrastructure as Code](#infrastructure-as-code-1)
|
||||
- [End-to-End Lab Guides](#end-to-end-lab-guides)
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [Azure Networking](#azure-networking)
|
||||
- [Private Access](#private-access)
|
||||
- [Security](#security)
|
||||
- [Container Orchestration](#container-orchestration-2)
|
||||
- [AKS Fleet Manager](#aks-fleet-manager)
|
||||
- [Container Storage](#container-storage)
|
||||
- [Cloud Native Storage](#cloud-native-storage)
|
||||
- [Monitoring and Observability](#monitoring-and-observability)
|
||||
- [Multi-Tenant Observability](#multi-tenant-observability)
|
||||
- [Networking and Edge Routing](#networking-and-edge-routing)
|
||||
- [App Service Networking](#app-service-networking)
|
||||
- [Application Gateway V2](#application-gateway-v2)
|
||||
- [Load Balancing Options](#load-balancing-options)
|
||||
- [Serverless Containers](#serverless-containers)
|
||||
- [Azure Container Apps](#azure-container-apps)
|
||||
- [Container Governance](#container-governance)
|
||||
1. [Cloud Native and Kubernetes](#cloud-native-and-kubernetes)
|
||||
- [GitOps and Continuous Delivery](#gitops-and-continuous-delivery)
|
||||
- [ArgoCD integration](#argocd-integration)
|
||||
- [DevOps Standardization](#devops-standardization)
|
||||
- [Hybrid and Multicloud Solutions](#hybrid-and-multicloud-solutions)
|
||||
- [App Services on Arc](#app-services-on-arc)
|
||||
- [Azure Arc Architecture](#azure-arc-architecture)
|
||||
- [Azure Arc Jumpstart](#azure-arc-jumpstart)
|
||||
- [Monitoring and Observability](#monitoring-and-observability-1)
|
||||
- [Managed Prometheus](#managed-prometheus)
|
||||
- [Network Observability](#network-observability)
|
||||
- [Networking and Edge Routing](#networking-and-edge-routing-1)
|
||||
- [Gateway API](#gateway-api)
|
||||
1. [Cloud Native Platforms](#cloud-native-platforms)
|
||||
- [Azure](#azure)
|
||||
- [High Availability Architectures](#high-availability-architectures)
|
||||
1. [Cloud Platform](#cloud-platform)
|
||||
- [Architecture Patterns](#architecture-patterns)
|
||||
- [Cloud-Native](#cloud-native)
|
||||
- [Microsoft Azure](#microsoft-azure-1)
|
||||
- [Sample Architecture](#sample-architecture)
|
||||
1. [Community](#community)
|
||||
- [Blogs](#blogs)
|
||||
- [.NET Development](#net-development)
|
||||
- [Cloud-Native Architecture](#cloud-native-architecture)
|
||||
1. [Compute and Containers](#compute-and-containers)
|
||||
- [Kubernetes](#kubernetes)
|
||||
- [AKS Engine](#aks-engine)
|
||||
1. [Container Orchestration](#container-orchestration-3)
|
||||
- [Operating Systems](#operating-systems)
|
||||
- [Azure Linux](#azure-linux)
|
||||
1. [DevOps](#devops)
|
||||
- [CI-CD Pipelines](#ci-cd-pipelines-1)
|
||||
- [Build Templates](#build-templates)
|
||||
1. [Developer Experience](#developer-experience)
|
||||
- [CI-CD Runners](#ci-cd-runners)
|
||||
- [Ephemeral Containers](#ephemeral-containers)
|
||||
1. [Governance and Management](#governance-and-management)
|
||||
- [Enterprise Governance](#enterprise-governance)
|
||||
- [Kubernetes Compliance](#kubernetes-compliance)
|
||||
1. [Healthcare IT](#healthcare-it)
|
||||
- [Medical Imaging](#medical-imaging)
|
||||
- [Azure Healthcare APIs](#azure-healthcare-apis)
|
||||
1. [Identity and Access](#identity-and-access)
|
||||
- [Cloud Security](#cloud-security)
|
||||
- [Workload Identity](#workload-identity)
|
||||
- [Managed Identities](#managed-identities)
|
||||
1. [Identity and Access](#identity-and-access-1)
|
||||
- [Managed Identities](#managed-identities-1)
|
||||
- [Secretless Architectures](#secretless-architectures)
|
||||
- [Graph API](#graph-api)
|
||||
1. [Infrastructure Automation](#infrastructure-automation)
|
||||
- [Infrastructure as Code](#infrastructure-as-code-2)
|
||||
- [Azure Bicep](#azure-bicep)
|
||||
- [Declarative Deployments](#declarative-deployments)
|
||||
- [Shell Customization](#shell-customization)
|
||||
- [Oh-My-Posh](#oh-my-posh)
|
||||
- [Kubernetes Integration](#kubernetes-integration)
|
||||
1. [Microservices](#microservices)
|
||||
- [.NET Microservices](#net-microservices)
|
||||
- [Project Tye](#project-tye)
|
||||
1. [Network and Delivery](#network-and-delivery)
|
||||
- [API Management](#api-management-1)
|
||||
- [Monetization Models](#monetization-models)
|
||||
- [Workspace Migration](#workspace-migration)
|
||||
- [Global Routing](#global-routing)
|
||||
- [DNS Traffic Management](#dns-traffic-management)
|
||||
1. [Operating Systems](#operating-systems-1)
|
||||
- [Azure Linux](#azure-linux-1)
|
||||
- [Kernel Curation](#kernel-curation)
|
||||
1. [Quality Assurance](#quality-assurance)
|
||||
- [Performance Testing](#performance-testing)
|
||||
- [Azure Load Testing](#azure-load-testing)
|
||||
1. [Security and Identity](#security-and-identity)
|
||||
- [API Security](#api-security)
|
||||
- [Runtime Threat Protection](#runtime-threat-protection)
|
||||
- [Vulnerability Research](#vulnerability-research)
|
||||
- [Container Escape](#container-escape)
|
||||
|
||||
## API Design
|
||||
|
||||
### Standards
|
||||
|
||||
+3
-12
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Caching resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Networking & Service Mesh)."
|
||||
---
|
||||
# Caching Solutions
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,18 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Caching Solutions in the context of Networking & Service Mesh.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Edge and Serverless](#edge-and-serverless)
|
||||
- [WebAssembly Platforms](#webassembly-platforms)
|
||||
- [Tau Edge](#tau-edge)
|
||||
1. [Infrastructure and Caching](#infrastructure-and-caching)
|
||||
- [Database and Storage](#database-and-storage)
|
||||
- [Tarantool and Nginx](#tarantool-and-nginx)
|
||||
1. [Performance](#performance)
|
||||
- [Caching](#caching)
|
||||
- [Varnish on RHEL](#varnish-on-rhel)
|
||||
|
||||
## Edge and Serverless
|
||||
|
||||
### WebAssembly Platforms
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Chaos Engineering resources for 2026, AI-ranked: chaosblade, Chaos Mesh and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Chaos Engineering
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,20 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Chaos Engineering in the context of Platform & Site Reliability.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Resilience](#resilience)
|
||||
- [Chaos Engineering](#chaos-engineering-1)
|
||||
- [Cloud Architecture](#cloud-architecture)
|
||||
- [Continuous Integration](#continuous-integration)
|
||||
- [Curated Resources](#curated-resources)
|
||||
- [Enterprise Platforms](#enterprise-platforms)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [Operations Strategy](#operations-strategy)
|
||||
- [Serverless Systems](#serverless-systems)
|
||||
- [Stateful Systems](#stateful-systems)
|
||||
- [Telemetry Systems](#telemetry-systems)
|
||||
|
||||
## Resilience
|
||||
|
||||
### Chaos Engineering (1)
|
||||
|
||||
+3
-9
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked ChatGPT resources for the 2026 Cloud Native architect: top-tier tools, guides and references (AI)."
|
||||
---
|
||||
# ChatGPT
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,15 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for ChatGPT in the context of AI.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Native Infrastructure](#cloud-native-infrastructure)
|
||||
- [Kubernetes Operations](#kubernetes-operations)
|
||||
- [AIOps Diagnostics](#aiops-diagnostics)
|
||||
1. [Data Architecture](#data-architecture)
|
||||
- [Retrieval-Augmented Generation](#retrieval-augmented-generation)
|
||||
- [Enterprise AI](#enterprise-ai)
|
||||
|
||||
## Cloud Native Infrastructure
|
||||
|
||||
### Kubernetes Operations
|
||||
|
||||
+3
-33
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Cheatsheets resources for 2026, AI-ranked: github: K8s in 30 mins, Quarkus Cheat-Sheet and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Cheat Sheets
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,39 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Cheat Sheets in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architecture](#architecture)
|
||||
- [Application Frameworks](#application-frameworks)
|
||||
- [Quarkus](#quarkus)
|
||||
- [Application Security](#application-security)
|
||||
- [Token Security](#token-security)
|
||||
- [Data Pipelines](#data-pipelines)
|
||||
- [Apache Kafka](#apache-kafka)
|
||||
- [Change Data Capture](#change-data-capture)
|
||||
1. [Infrastructure](#infrastructure)
|
||||
- [Cloud Computing](#cloud-computing)
|
||||
- [AWS](#aws)
|
||||
- [Messaging Systems](#messaging-systems)
|
||||
- [Kubernetes Operators](#kubernetes-operators)
|
||||
1. [Orchestration](#orchestration)
|
||||
- [Kubernetes](#kubernetes)
|
||||
- [Training and Concepts](#training-and-concepts)
|
||||
1. [Research](#research)
|
||||
- [Architecture Analysis](#architecture-analysis)
|
||||
- [Infrastructure Design](#infrastructure-design)
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [APIs](#apis)
|
||||
- [Automation and Scripting](#automation-and-scripting)
|
||||
- [Testing and Lifecycle](#testing-and-lifecycle)
|
||||
- [Microservices](#microservices)
|
||||
- [REST Clients](#rest-clients)
|
||||
- [Web Development](#web-development)
|
||||
- [NodeJS](#nodejs)
|
||||
1. [Virtualization and Containers](#virtualization-and-containers)
|
||||
- [Docker](#docker)
|
||||
- [CLI Reference](#cli-reference)
|
||||
|
||||
## Architecture
|
||||
|
||||
### Application Frameworks
|
||||
|
||||
@@ -6,13 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Chef in the context of Hardened Infrastructure.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Configuration Management](#configuration-management)
|
||||
- [Enterprise Tooling](#enterprise-tooling)
|
||||
- [Training](#training)
|
||||
|
||||
## Infrastructure as Code
|
||||
|
||||
### Configuration Management
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked CI/CD Kubernetes Plugins resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Engineering Pipeline)."
|
||||
---
|
||||
# CI/CD Kubernetes Plugins
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,12 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for CI/CD Kubernetes Plugins in the context of Engineering Pipeline.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [Collaborative Platforms](#collaborative-platforms)
|
||||
- [Kubernetes Integration](#kubernetes-integration)
|
||||
|
||||
## Software Engineering
|
||||
|
||||
### Collaborative Platforms
|
||||
|
||||
+3
-51
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked CI/CD resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Engineering Pipeline)."
|
||||
---
|
||||
# Software Delivery Pipeline. CI/CD
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,57 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Software Delivery Pipeline. CI/CD in the context of Engineering Pipeline.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Engineering](#cloud-engineering)
|
||||
- [AWS](#aws)
|
||||
- [Automated Deployment](#automated-deployment)
|
||||
- [CI-CD Pipelines](#ci-cd-pipelines)
|
||||
- [Architecture](#architecture)
|
||||
- [Cloud Native](#cloud-native)
|
||||
- [CI-CD Pipelines](#ci-cd-pipelines-1)
|
||||
- [Hybrid Cloud](#hybrid-cloud)
|
||||
- [Case Studies](#case-studies)
|
||||
- [Kubernetes](#kubernetes)
|
||||
- [Best Practices](#best-practices)
|
||||
- [CI-CD Pipelines](#ci-cd-pipelines-2)
|
||||
- [Cloud Native](#cloud-native-1)
|
||||
1. [Continuous Delivery](#continuous-delivery)
|
||||
- [CICD and Testing](#cicd-and-testing)
|
||||
- [Pipeline as Code](#pipeline-as-code)
|
||||
- [CICD Best Practices](#cicd-best-practices)
|
||||
- [Overview](#overview)
|
||||
- [Deployment Strategies](#deployment-strategies)
|
||||
- [Blue-Green and Canary](#blue-green-and-canary)
|
||||
1. [Deployment and Delivery](#deployment-and-delivery)
|
||||
- [CICD and Delivery](#cicd-and-delivery)
|
||||
- [AWS Architecture](#aws-architecture)
|
||||
- [Kubernetes Native](#kubernetes-native)
|
||||
- [Pipeline Architecture](#pipeline-architecture)
|
||||
- [Resource Portals](#resource-portals)
|
||||
- [Deployment Strategies](#deployment-strategies-1)
|
||||
- [Blue-Green and Canary](#blue-green-and-canary-1)
|
||||
- [Education](#education)
|
||||
- [GitOps](#gitops)
|
||||
- [Red Hat OpenShift](#red-hat-openshift)
|
||||
- [Platform Engineering](#platform-engineering)
|
||||
- [Kubernetes Management](#kubernetes-management)
|
||||
- [Progressive Delivery](#progressive-delivery)
|
||||
- [Feature Flags](#feature-flags)
|
||||
1. [DevOps](#devops)
|
||||
- [CI-CD Pipelines](#ci-cd-pipelines-3)
|
||||
- [Best Practices](#best-practices-1)
|
||||
- [Case Studies](#case-studies-1)
|
||||
- [Continuous Delivery](#continuous-delivery-1)
|
||||
- [Patterns](#patterns)
|
||||
- [Financial Services](#financial-services)
|
||||
- [Best Practices](#best-practices-2)
|
||||
1. [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [CICD and Delivery](#cicd-and-delivery-1)
|
||||
- [Security and Compliance](#security-and-compliance)
|
||||
- [GitOps](#gitops-1)
|
||||
- [Configuration Management](#configuration-management)
|
||||
|
||||
## Cloud Engineering
|
||||
|
||||
### AWS
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Cloud Arch Diagrams resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
|
||||
---
|
||||
# Cloud Architecture Diagram Tools
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,12 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Cloud Architecture Diagram Tools in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [Azure Networking](#azure-networking)
|
||||
- [Network Topology](#network-topology)
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
### Azure Networking
|
||||
|
||||
@@ -6,22 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Cloud Asset Inventory in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure and Orchestration](#cloud-infrastructure-and-orchestration)
|
||||
- [Asset Management and Governance](#asset-management-and-governance)
|
||||
- [Cloud Analytics](#cloud-analytics)
|
||||
- [Public Cloud Administration](#public-cloud-administration)
|
||||
- [AWS Fundamentals](#aws-fundamentals)
|
||||
- [Azure Architecture](#azure-architecture)
|
||||
- [Serverless Architecture](#serverless-architecture)
|
||||
- [Case Studies](#case-studies)
|
||||
- [Storage and Databases](#storage-and-databases)
|
||||
- [Distributed Block Storage](#distributed-block-storage)
|
||||
1. [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Architecture](#architecture)
|
||||
- [Diagrams](#diagrams)
|
||||
|
||||
## Cloud Infrastructure and Orchestration
|
||||
|
||||
### Asset Management and Governance
|
||||
|
||||
+3
-10
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Cloudflare resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Networking & Service Mesh)."
|
||||
---
|
||||
# Cloudflare Public Cloud
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,16 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Cloudflare Public Cloud in the context of Networking & Service Mesh.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [Kubernetes Security](#kubernetes-security)
|
||||
- [Zero Trust](#zero-trust)
|
||||
- [Networking](#networking)
|
||||
- [Zero Trust](#zero-trust-1)
|
||||
- [Serverless](#serverless)
|
||||
- [Edge Computing](#edge-computing)
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
### Kubernetes Security
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Container Managers resources for the 2026 Cloud Native architect: top-tier tools, guides and references (The Container Stack)."
|
||||
---
|
||||
# Container Runtimes/Managers, Base Images and Container Tools. Podman, Buildah and Skopeo
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,43 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Container Runtimes/Managers, Base Images and Container Tools. Podman, Buildah and Skopeo in the context of The Container Stack.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Application Development](#application-development)
|
||||
- [PHP](#php)
|
||||
- [Kubernetes Integration](#kubernetes-integration)
|
||||
1. [Container Infrastructure](#container-infrastructure)
|
||||
- [Container Engines](#container-engines)
|
||||
- [Secret Management](#secret-management)
|
||||
- [Container Tooling](#container-tooling)
|
||||
- [Compose Comparison](#compose-comparison)
|
||||
- [Docker Compose Compatibility](#docker-compose-compatibility)
|
||||
- [Podman Compose](#podman-compose)
|
||||
- [Edge Orchestration](#edge-orchestration)
|
||||
- [Auto-Updates and Rollbacks](#auto-updates-and-rollbacks)
|
||||
- [Image Distribution](#image-distribution)
|
||||
- [Ecosystem Registries](#ecosystem-registries)
|
||||
- [Image Optimization](#image-optimization)
|
||||
- [Base Images](#base-images)
|
||||
- [Red Hat UBI](#red-hat-ubi)
|
||||
- [Image Synthesis](#image-synthesis)
|
||||
- [Builder Comparison](#builder-comparison)
|
||||
- [Language-Specific Builders](#language-specific-builders)
|
||||
- [Kubernetes Integration](#kubernetes-integration-1)
|
||||
- [Declarative Pods](#declarative-pods)
|
||||
- [Manifest Translation](#manifest-translation)
|
||||
- [Service Orchestration](#service-orchestration)
|
||||
- [Quadlet Integration](#quadlet-integration)
|
||||
1. [Containerization](#containerization)
|
||||
- [Container Engines](#container-engines-1)
|
||||
- [Strategy and Standards](#strategy-and-standards)
|
||||
- [Runtimes](#runtimes)
|
||||
- [High-Level Engines](#high-level-engines)
|
||||
- [Kubernetes Integration](#kubernetes-integration-2)
|
||||
1. [Microservices](#microservices)
|
||||
- [Mocking and Testing](#mocking-and-testing)
|
||||
- [Podman Compose Integration](#podman-compose-integration)
|
||||
|
||||
## Application Development
|
||||
|
||||
### PHP
|
||||
|
||||
@@ -6,30 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Crossplane. A Universal Control Plane API for Cloud Computing. Crossplane Workloads Definitions in the context of Hardened Infrastructure.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architectural Foundations](#architectural-foundations)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [General Reference](#general-reference)
|
||||
1. [GitOps and CICD](#gitops-and-cicd)
|
||||
- [GitOps](#gitops)
|
||||
- [FluxCD](#fluxcd)
|
||||
- [Crossplane](#crossplane)
|
||||
- [Methodologies](#methodologies)
|
||||
1. [Platform Engineering](#platform-engineering)
|
||||
- [Control Planes](#control-planes)
|
||||
- [Crossplane](#crossplane-1)
|
||||
- [Code Samples](#code-samples)
|
||||
- [History](#history)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Introduction](#introduction)
|
||||
- [Platform-as-a-Service](#platform-as-a-service)
|
||||
- [Presentations](#presentations)
|
||||
- [RedHat OpenShift](#redhat-openshift)
|
||||
- [Reference Architectures](#reference-architectures)
|
||||
- [Developer Experience](#developer-experience)
|
||||
- [Kubernetes Usability](#kubernetes-usability)
|
||||
|
||||
## Architectural Foundations
|
||||
|
||||
### Kubernetes Tools
|
||||
|
||||
+3
-16
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Crunchydata resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Data & Advanced Analytics)."
|
||||
---
|
||||
# Crunchy Data PostgreSQL Operator
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,22 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Crunchy Data PostgreSQL Operator in the context of Data & Advanced Analytics.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Data Infrastructure](#data-infrastructure)
|
||||
- [Database Operators](#database-operators)
|
||||
- [PostgreSQL](#postgresql)
|
||||
- [Connection Pooling](#connection-pooling)
|
||||
- [Developer Experience](#developer-experience)
|
||||
- [GitOps Implementation](#gitops-implementation)
|
||||
- [High Availability](#high-availability)
|
||||
- [Multi-Cluster](#multi-cluster)
|
||||
- [Packaging and CD](#packaging-and-cd)
|
||||
- [Performance Tuning](#performance-tuning)
|
||||
- [Platform Integration](#platform-integration)
|
||||
- [Scheduling and Affinity](#scheduling-and-affinity)
|
||||
- [Security](#security)
|
||||
|
||||
## Data Infrastructure
|
||||
|
||||
### Database Operators
|
||||
|
||||
+3
-17
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Customer resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
|
||||
---
|
||||
# Customer Success Stories. Cloud Native Projects
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,23 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Customer Success Stories. Cloud Native Projects in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Platform](#cloud-platform)
|
||||
- [Bioinformatics](#bioinformatics)
|
||||
- [High-Performance Computing](#high-performance-computing)
|
||||
- [Healthcare Tech](#healthcare-tech)
|
||||
- [Medical Imaging Platforms](#medical-imaging-platforms)
|
||||
1. [Infrastructure Orchestration](#infrastructure-orchestration)
|
||||
- [Cloud Security](#cloud-security)
|
||||
- [Runtime Security](#runtime-security)
|
||||
1. [Organizational Culture](#organizational-culture)
|
||||
- [Migration Journeys](#migration-journeys)
|
||||
- [BMW Group](#bmw-group)
|
||||
1. [System Architecture](#system-architecture)
|
||||
- [Messaging Systems](#messaging-systems)
|
||||
- [Event-Driven Microservices](#event-driven-microservices)
|
||||
|
||||
## Cloud Platform
|
||||
|
||||
### Bioinformatics
|
||||
|
||||
+3
-82
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Databases resources for 2026, AI-ranked: Zalando Postgres Operator, Patroni and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Databases on Kubernetes. Database DevOps
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,88 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Databases on Kubernetes. Database DevOps in the context of Data & Advanced Analytics.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Infrastructure](#cloud-infrastructure)
|
||||
- [FinOps](#finops)
|
||||
- [Cost Optimization](#cost-optimization)
|
||||
1. [Cloud-Native Design](#cloud-native-design)
|
||||
- [Architecture Patterns](#architecture-patterns)
|
||||
1. [Data Analytics](#data-analytics)
|
||||
- [Real-time Analytics](#real-time-analytics)
|
||||
- [Edge Computing](#edge-computing)
|
||||
1. [Data Operations](#data-operations)
|
||||
- [Database CICD](#database-cicd)
|
||||
1. [Data on Kubernetes](#data-on-kubernetes)
|
||||
- [DBaaS](#dbaas)
|
||||
- [Enterprise RedHat](#enterprise-redhat)
|
||||
- [Internal Mechanics](#internal-mechanics)
|
||||
- [Disaster Recovery](#disaster-recovery)
|
||||
- [Enterprise RedHat](#enterprise-redhat-1)
|
||||
- [Distributed Systems](#distributed-systems)
|
||||
- [ShardingSphere](#shardingsphere)
|
||||
- [Performance Tuning](#performance-tuning)
|
||||
- [Autoscaling](#autoscaling)
|
||||
- [Relational Databases](#relational-databases)
|
||||
- [Operations](#operations)
|
||||
- [PostgreSQL](#postgresql)
|
||||
- [Stateful Architecture](#stateful-architecture)
|
||||
- [Operational Guide](#operational-guide)
|
||||
1. [Database Architecture](#database-architecture)
|
||||
- [DBaaS](#dbaas-1)
|
||||
- [Market Trends](#market-trends)
|
||||
- [Database Interfaces](#database-interfaces)
|
||||
- [API Design](#api-design)
|
||||
- [Microservices Patterns](#microservices-patterns)
|
||||
- [Transactions](#transactions)
|
||||
- [Multi-tenancy](#multi-tenancy)
|
||||
- [Schema Design](#schema-design)
|
||||
- [Traffic Management](#traffic-management)
|
||||
- [Load Balancing](#load-balancing)
|
||||
1. [Distributed SQL](#distributed-sql)
|
||||
- [APIs](#apis)
|
||||
- [CockroachDB](#cockroachdb)
|
||||
1. [Infrastructure](#infrastructure)
|
||||
- [Container Orchestration](#container-orchestration)
|
||||
- [Data on Kubernetes](#data-on-kubernetes-1)
|
||||
- [GitOps](#gitops)
|
||||
- [Kubernetes Operators](#kubernetes-operators)
|
||||
- [MySQL Operators](#mysql-operators)
|
||||
- [PostgreSQL HA](#postgresql-ha)
|
||||
- [PostgreSQL Operators](#postgresql-operators)
|
||||
- [State Management](#state-management)
|
||||
- [Enterprise Kubernetes](#enterprise-kubernetes)
|
||||
- [OpenShift Databases](#openshift-databases)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Terraform Database Ops](#terraform-database-ops)
|
||||
- [PostgreSQL HA](#postgresql-ha-1)
|
||||
- [Kubernetes Operations](#kubernetes-operations)
|
||||
- [Orchestration](#orchestration)
|
||||
- [Zalando Stack](#zalando-stack)
|
||||
1. [Kubernetes Workloads](#kubernetes-workloads)
|
||||
- [CICD Pipelines](#cicd-pipelines)
|
||||
- [Database Migrations](#database-migrations)
|
||||
1. [Observability](#observability)
|
||||
- [Distributed Storage](#distributed-storage)
|
||||
- [VictoriaMetrics](#victoriametrics)
|
||||
1. [PostgreSQL](#postgresql-1)
|
||||
- [Alternative Paradigms](#alternative-paradigms)
|
||||
- [Application Architecture](#application-architecture)
|
||||
- [Application Performance](#application-performance)
|
||||
- [Database Architecture](#database-architecture-1)
|
||||
1. [Relational Databases](#relational-databases-1)
|
||||
- [Database Drivers](#database-drivers)
|
||||
1. [SQL](#sql)
|
||||
- [ORM and Query Builders](#orm-and-query-builders)
|
||||
- [Java Ecosystem](#java-ecosystem)
|
||||
1. [SQL Server](#sql-server)
|
||||
- [DevOps](#devops)
|
||||
1. [Serverless Databases](#serverless-databases)
|
||||
- [Resource Management](#resource-management)
|
||||
1. [Storage and Data](#storage-and-data)
|
||||
- [Database Operators](#database-operators)
|
||||
- [Crunchy PostgreSQL](#crunchy-postgresql)
|
||||
|
||||
## Cloud Infrastructure
|
||||
|
||||
### FinOps
|
||||
|
||||
+3
-230
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Demos resources for 2026, AI-ranked: OpenShift AI Examples, knative-tutorial and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# DevOps Demos. Boilerplates/Samples, Tutorials and Screencasts
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,236 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for DevOps Demos. Boilerplates/Samples, Tutorials and Screencasts in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Application Architecture](#application-architecture)
|
||||
- [Event-Driven](#event-driven)
|
||||
- [GraphQL](#graphql)
|
||||
1. [Application Delivery](#application-delivery)
|
||||
- [Asynchronous Messaging](#asynchronous-messaging)
|
||||
- [Red Hat Fuse](#red-hat-fuse)
|
||||
- [CICD Pipelines](#cicd-pipelines)
|
||||
- [Tekton Pipelines](#tekton-pipelines)
|
||||
- [Database Schema Management](#database-schema-management)
|
||||
- [Liquibase Integration](#liquibase-integration)
|
||||
- [Deployment Strategies](#deployment-strategies)
|
||||
- [Canary Deployments](#canary-deployments)
|
||||
- [Developer Platforms](#developer-platforms)
|
||||
- [App Deployment](#app-deployment)
|
||||
- [Local Development](#local-development)
|
||||
- [Enterprise Modernization](#enterprise-modernization)
|
||||
- [Multi-Cluster Strategy](#multi-cluster-strategy)
|
||||
- [GitOps](#gitops)
|
||||
- [Microservices Showcase](#microservices-showcase)
|
||||
- [Java on Kubernetes](#java-on-kubernetes)
|
||||
- [Eclipse JKube Tools](#eclipse-jkube-tools)
|
||||
- [Load Balancing](#load-balancing)
|
||||
- [High Availability](#high-availability)
|
||||
1. [Application Development](#application-development)
|
||||
- [Cloud-Native Java](#cloud-native-java)
|
||||
- [Advanced Microservices](#advanced-microservices)
|
||||
- [Spring Boot Microservices](#spring-boot-microservices)
|
||||
- [Containerization](#containerization)
|
||||
- [Java Spring Boot](#java-spring-boot)
|
||||
- [Java](#java)
|
||||
- [Build Automation](#build-automation)
|
||||
- [Local Development](#local-development-1)
|
||||
- [Microservices Demo](#microservices-demo)
|
||||
- [Project Bootstrapping](#project-bootstrapping)
|
||||
- [Microservices Showcase](#microservices-showcase-1)
|
||||
- [Spring Boot](#spring-boot)
|
||||
- [NodeJS](#nodejs)
|
||||
- [Deployment Tooling](#deployment-tooling)
|
||||
- [Process Automation](#process-automation)
|
||||
- [RHPAM](#rhpam)
|
||||
- [Reference Templates](#reference-templates)
|
||||
- [OpenShift 4.8](#openshift-48)
|
||||
- [Serverless Java](#serverless-java)
|
||||
- [Quarkus Integration](#quarkus-integration)
|
||||
- [gRPC Communication](#grpc-communication)
|
||||
- [Tutorials](#tutorials)
|
||||
- [Developer Demos](#developer-demos)
|
||||
1. [Application Modernization](#application-modernization)
|
||||
- [Integration Frameworks](#integration-frameworks)
|
||||
- [OpenShift and Camel](#openshift-and-camel)
|
||||
- [Spring to Quarkus](#spring-to-quarkus)
|
||||
- [Framework Migration](#framework-migration)
|
||||
1. [Architecture](#architecture)
|
||||
- [Microservices](#microservices)
|
||||
- [Demo Systems](#demo-systems)
|
||||
1. [CI-CD](#ci-cd)
|
||||
- [Azure AKS](#azure-aks)
|
||||
- [GitHub Actions](#github-actions)
|
||||
- [Java](#java-1)
|
||||
- [Automated Workflows](#automated-workflows)
|
||||
1. [CICD](#cicd)
|
||||
- [GitOps](#gitops-1)
|
||||
- [GitLab Agent](#gitlab-agent)
|
||||
1. [CICD Infrastructure](#cicd-infrastructure)
|
||||
- [Build and Packaging](#build-and-packaging)
|
||||
- [Custom Packager](#custom-packager)
|
||||
1. [CICD Pipelines](#cicd-pipelines-1)
|
||||
- [Automated Cloud Deployments](#automated-cloud-deployments)
|
||||
- [AWS ECS Deployments](#aws-ecs-deployments)
|
||||
1. [Cloud Native Architecture](#cloud-native-architecture)
|
||||
- [Microservices Migration](#microservices-migration)
|
||||
- [Case Study](#case-study)
|
||||
1. [Cloud Native Infrastructure](#cloud-native-infrastructure)
|
||||
- [Enterprise Messaging](#enterprise-messaging)
|
||||
- [Kafka on Kubernetes](#kafka-on-kubernetes)
|
||||
- [APIs and Gateways](#apis-and-gateways)
|
||||
- [Observability and Testing](#observability-and-testing)
|
||||
- [Pod Mocking](#pod-mocking)
|
||||
1. [Cloud Native Platforms](#cloud-native-platforms)
|
||||
- [Red Hat OpenShift](#red-hat-openshift)
|
||||
- [Local Development](#local-development-2)
|
||||
- [CodeReady Containers](#codeready-containers)
|
||||
1. [Cloud Platform](#cloud-platform)
|
||||
- [Microsoft Azure](#microsoft-azure)
|
||||
- [Sample Architecture](#sample-architecture)
|
||||
1. [Cloud Providers](#cloud-providers)
|
||||
- [Google GKE](#google-gke)
|
||||
- [Application Dev](#application-dev)
|
||||
1. [Cloud-Native Application Development](#cloud-native-application-development)
|
||||
- [Go Development](#go-development)
|
||||
- [Microservices](#microservices-1)
|
||||
- [Open Source Software](#open-source-software)
|
||||
- [Reference Implementations](#reference-implementations)
|
||||
1. [Cloud-Native Applications](#cloud-native-applications)
|
||||
- [Java Microservices](#java-microservices)
|
||||
- [Azure Container Apps](#azure-container-apps)
|
||||
- [Container Images](#container-images)
|
||||
- [Kubernetes Deployment](#kubernetes-deployment)
|
||||
- [Spring Cloud](#spring-cloud)
|
||||
1. [Cloud-Native Infrastructure](#cloud-native-infrastructure)
|
||||
- [Kubernetes Core](#kubernetes-core)
|
||||
- [Declarative Templates](#declarative-templates)
|
||||
- [Learning Resources](#learning-resources)
|
||||
- [Kubernetes Courses](#kubernetes-courses)
|
||||
1. [DevOps](#devops)
|
||||
- [CICD Platforms](#cicd-platforms)
|
||||
- [Jenkins](#jenkins)
|
||||
- [Docker Containerization](#docker-containerization)
|
||||
- [Modular Pipeline Library](#modular-pipeline-library)
|
||||
- [Spring Petclinic Pipeline](#spring-petclinic-pipeline)
|
||||
- [Cloud Native CICD](#cloud-native-cicd)
|
||||
- [Jenkins X](#jenkins-x)
|
||||
- [AWS EKS Integration](#aws-eks-integration)
|
||||
- [Continuous Delivery](#continuous-delivery)
|
||||
- [Infrastructure Provisioning](#infrastructure-provisioning)
|
||||
- [Crossplane Spinnaker Integration](#crossplane-spinnaker-integration)
|
||||
- [Spinnaker Setup](#spinnaker-setup)
|
||||
- [Kubernetes Native Deployment](#kubernetes-native-deployment)
|
||||
- [Kubernetes Integration](#kubernetes-integration)
|
||||
- [AWS EKS](#aws-eks)
|
||||
- [Jenkins Pipelines](#jenkins-pipelines)
|
||||
1. [DevOps and Platform Engineering](#devops-and-platform-engineering)
|
||||
- [Interview Preparation](#interview-preparation)
|
||||
- [Reference Guides](#reference-guides)
|
||||
1. [DevSecOps and Automation](#devsecops-and-automation)
|
||||
- [End-to-End Pipelines](#end-to-end-pipelines)
|
||||
- [Multi-Version Deployments](#multi-version-deployments)
|
||||
- [Jenkins-based CI-CD](#jenkins-based-ci-cd)
|
||||
- [AWS and Jenkins](#aws-and-jenkins)
|
||||
- [Jenkins Architecture](#jenkins-architecture)
|
||||
1. [DevSecOps and IDEs](#devsecops-and-ides)
|
||||
- [Google Cloud Code](#google-cloud-code)
|
||||
- [Developer Experience](#developer-experience)
|
||||
- [Quality Assurance](#quality-assurance)
|
||||
- [Azure Cloud Testing](#azure-cloud-testing)
|
||||
1. [Developer Experience](#developer-experience-1)
|
||||
- [Inner Loop Development](#inner-loop-development)
|
||||
- [Local Tooling](#local-tooling)
|
||||
1. [Enterprise Architecture](#enterprise-architecture)
|
||||
- [Business Process Management](#business-process-management)
|
||||
- [RHPAM](#rhpam-1)
|
||||
1. [Event-Driven Architectures](#event-driven-architectures)
|
||||
- [Cloud-Native Java](#cloud-native-java-1)
|
||||
- [Kafka with Spring Boot](#kafka-with-spring-boot)
|
||||
- [Go and CQRS](#go-and-cqrs)
|
||||
- [gRPC Microservices](#grpc-microservices)
|
||||
- [Observability and Diagnostics](#observability-and-diagnostics)
|
||||
- [Kafka at Scale](#kafka-at-scale)
|
||||
- [Realtime Streams](#realtime-streams)
|
||||
- [FastAPI and Ably](#fastapi-and-ably)
|
||||
- [Serverless Java](#serverless-java-1)
|
||||
- [Quarkus with Kafka](#quarkus-with-kafka)
|
||||
1. [GitOps](#gitops-2)
|
||||
- [Continuous Deployment](#continuous-deployment)
|
||||
- [Flux v2](#flux-v2)
|
||||
1. [GitOps and Declarative Git](#gitops-and-declarative-git)
|
||||
- [Developer Platforms](#developer-platforms-1)
|
||||
- [GitHub Actions](#github-actions-1)
|
||||
- [GitOps Tools](#gitops-tools)
|
||||
- [Flux and Helm](#flux-and-helm)
|
||||
1. [Infrastructure and Operations](#infrastructure-and-operations)
|
||||
- [Observability and Service Mesh](#observability-and-service-mesh)
|
||||
- [OpenShift ServiceMesh](#openshift-servicemesh)
|
||||
1. [Infrastructure and Platform](#infrastructure-and-platform)
|
||||
- [Autoscaling](#autoscaling)
|
||||
- [Event-Driven Scaling](#event-driven-scaling)
|
||||
1. [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Serverless Deployment](#serverless-deployment)
|
||||
- [Terraform and AWS Lambda](#terraform-and-aws-lambda)
|
||||
1. [Infrastructure as Code and CI-CD](#infrastructure-as-code-and-ci-cd)
|
||||
- [Developer Platforms](#developer-platforms-2)
|
||||
- [CI-CD Pipelines](#ci-cd-pipelines)
|
||||
1. [Java Cloud Native](#java-cloud-native)
|
||||
- [Spring Cloud](#spring-cloud-1)
|
||||
- [Kubernetes Integration](#kubernetes-integration-1)
|
||||
1. [Local Development](#local-development-3)
|
||||
- [Red Hat OpenShift Local](#red-hat-openshift-local)
|
||||
- [Process Automation](#process-automation-1)
|
||||
1. [Networking](#networking)
|
||||
- [Security](#security)
|
||||
- [Recipes](#recipes)
|
||||
1. [Observability](#observability)
|
||||
- [Microservices Telemetry](#microservices-telemetry)
|
||||
- [Grafana Stack](#grafana-stack)
|
||||
- [OpenTelemetry](#opentelemetry)
|
||||
- [Reliability Engineering](#reliability-engineering)
|
||||
1. [Orchestration](#orchestration)
|
||||
- [AKS](#aks)
|
||||
- [Masterclass](#masterclass)
|
||||
- [Kubernetes](#kubernetes)
|
||||
- [EKS Training](#eks-training)
|
||||
1. [Platform Engineering](#platform-engineering)
|
||||
- [GitOps and CI-CD](#gitops-and-ci-cd)
|
||||
- [AWS and Argo CD](#aws-and-argo-cd)
|
||||
- [Argo CD and OpenShift Pipelines](#argo-cd-and-openshift-pipelines)
|
||||
- [Multi-Cluster GitOps](#multi-cluster-gitops)
|
||||
- [Serverless Workflows](#serverless-workflows)
|
||||
- [GitOps and Deployment](#gitops-and-deployment)
|
||||
- [Flux Ecosystem](#flux-ecosystem)
|
||||
- [Machine Learning Operations](#machine-learning-operations)
|
||||
- [OpenShift AI](#openshift-ai)
|
||||
1. [Quality Assurance](#quality-assurance-1)
|
||||
- [API Testing Automation](#api-testing-automation)
|
||||
- [Newman Integration](#newman-integration)
|
||||
- [Jenkins Pipelines](#jenkins-pipelines-1)
|
||||
1. [Reference Architectures](#reference-architectures)
|
||||
- [Industry Verticals](#industry-verticals)
|
||||
- [Healthcare](#healthcare)
|
||||
1. [Security](#security-1)
|
||||
- [Vulnerabilities](#vulnerabilities)
|
||||
- [Hacking Labs](#hacking-labs)
|
||||
1. [Serverless and Knative](#serverless-and-knative)
|
||||
- [Serverless Frameworks](#serverless-frameworks)
|
||||
- [Knative Serving](#knative-serving)
|
||||
- [Knative Tutorial](#knative-tutorial)
|
||||
- [Serverless Java](#serverless-java-2)
|
||||
- [Knative Service](#knative-service)
|
||||
1. [Service Mesh](#service-mesh)
|
||||
- [Consul](#consul)
|
||||
- [Local Development](#local-development-4)
|
||||
- [GitOps](#gitops-3)
|
||||
- [Progressive Delivery](#progressive-delivery)
|
||||
1. [Software Development](#software-development)
|
||||
- [Microservices](#microservices-2)
|
||||
- [Reference Architecture](#reference-architecture)
|
||||
- [Spring Petclinic](#spring-petclinic)
|
||||
- [Spring Petclinic Red Hat](#spring-petclinic-red-hat)
|
||||
|
||||
## Application Architecture
|
||||
|
||||
### Event-Driven
|
||||
|
||||
+3
-11
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Devel Sites resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Developer Ecosystem)."
|
||||
---
|
||||
# Development and Frameworks. Websites for web developers
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,17 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Development and Frameworks. Websites for web developers in the context of Developer Ecosystem.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Backend-as-a-Service](#backend-as-a-service)
|
||||
- [Google Cloud](#google-cloud)
|
||||
- [BaaS Platform](#baas-platform)
|
||||
- [PostgreSQL](#postgresql)
|
||||
- [BaaS Platform](#baas-platform-1)
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [Languages](#languages)
|
||||
- [Cloud-Native Programming](#cloud-native-programming)
|
||||
|
||||
## Backend-as-a-Service
|
||||
|
||||
### Google Cloud
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Developerportals resources for 2026, AI-ranked: Backstage Developer Portal, apisix and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# API Marketplaces. API Management with API Gateways and Developer Portals
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,43 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for API Marketplaces. API Management with API Gateways and Developer Portals in the context of Platform & Site Reliability.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architecture](#architecture)
|
||||
- [API Management](#api-management)
|
||||
- [API Economy](#api-economy)
|
||||
- [API Governance](#api-governance)
|
||||
- [Case Studies](#case-studies)
|
||||
- [Cloud Services](#cloud-services)
|
||||
- [Gateway Engines](#gateway-engines)
|
||||
- [Infrastructure Patterns](#infrastructure-patterns)
|
||||
- [Kubernetes Orchestration](#kubernetes-orchestration)
|
||||
- [Observability Platforms](#observability-platforms)
|
||||
- [Operations and Deployment](#operations-and-deployment)
|
||||
- [Persistent Connections](#persistent-connections)
|
||||
- [Red Hat Ecosystem](#red-hat-ecosystem)
|
||||
- [Security and Protocols](#security-and-protocols)
|
||||
- [Video Walkthroughs](#video-walkthroughs)
|
||||
- [Design Patterns](#design-patterns)
|
||||
- [Microservices Patterns](#microservices-patterns)
|
||||
- [Microservices](#microservices)
|
||||
- [API Gateways](#api-gateways)
|
||||
1. [Domain APIs](#domain-apis)
|
||||
- [IoT](#iot)
|
||||
- [Smart Cities](#smart-cities)
|
||||
1. [Infrastructure](#infrastructure)
|
||||
- [API Gateway](#api-gateway)
|
||||
- [Cloud Native](#cloud-native)
|
||||
- [Go Engines](#go-engines)
|
||||
- [Industry News](#industry-news)
|
||||
- [Java Spring Ecosystem](#java-spring-ecosystem)
|
||||
- [Open Source Governance](#open-source-governance)
|
||||
1. [Platform Engineering](#platform-engineering)
|
||||
- [Developer Portal](#developer-portal)
|
||||
- [Internal Developer Platforms](#internal-developer-platforms)
|
||||
- [Kubernetes Deployment](#kubernetes-deployment)
|
||||
- [Tutorials](#tutorials)
|
||||
|
||||
## Architecture
|
||||
|
||||
### API Management
|
||||
|
||||
+3
-26
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top DevOps Tools resources for 2026, AI-ranked: Claude Code Templates, Devtron and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# DevOps Tools aka Toolchain
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,32 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for DevOps Tools aka Toolchain in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Providers](#cloud-providers)
|
||||
- [AWS](#aws)
|
||||
- [CICD and Security](#cicd-and-security)
|
||||
1. [Deployment and Delivery](#deployment-and-delivery)
|
||||
- [Platform Engineering](#platform-engineering)
|
||||
- [Kubernetes Management](#kubernetes-management)
|
||||
1. [DevOps and Platform Engineering](#devops-and-platform-engineering)
|
||||
- [Architecture and Orchestration](#architecture-and-orchestration)
|
||||
- [Foundational Primer](#foundational-primer)
|
||||
1. [Developer Tooling](#developer-tooling)
|
||||
- [AI Code Assistants](#ai-code-assistants)
|
||||
- [Prompt Templates](#prompt-templates)
|
||||
- [Developer Knowledge](#developer-knowledge)
|
||||
- [Curation Repositories](#curation-repositories)
|
||||
1. [Kubernetes and Container Orchestration](#kubernetes-and-container-orchestration)
|
||||
- [Platform Engineering](#platform-engineering-1)
|
||||
- [AppOps and GitOps](#appops-and-gitops)
|
||||
1. [Local Developer Environment](#local-developer-environment)
|
||||
- [Container Runtime Setup](#container-runtime-setup)
|
||||
- [Docker Compose](#docker-compose)
|
||||
1. [Orchestration and Packaging](#orchestration-and-packaging)
|
||||
- [Cloud-Native Delivery](#cloud-native-delivery)
|
||||
- [Keptn](#keptn)
|
||||
|
||||
## Cloud Providers
|
||||
|
||||
### AWS
|
||||
|
||||
+3
-93
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top DevOps resources for 2026, AI-ranked: Skills for Real Engineers, NoOps and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# DevOps
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,99 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for DevOps in the context of Platform & Site Reliability.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architecture](#architecture)
|
||||
- [Patterns](#patterns)
|
||||
- [Twelve-Factor App](#twelve-factor-app)
|
||||
1. [Automation](#automation)
|
||||
- [Agentic Systems](#agentic-systems)
|
||||
- [MCP Server](#mcp-server)
|
||||
- [NoOps Evolution](#noops-evolution)
|
||||
1. [Cloud Architecture](#cloud-architecture)
|
||||
- [Multicloud Solutions](#multicloud-solutions)
|
||||
- [Ops Dynamics](#ops-dynamics)
|
||||
- [NoOps and Serverless](#noops-and-serverless)
|
||||
- [Overview](#overview)
|
||||
- [Serverless Systems](#serverless-systems)
|
||||
- [DevOps Pipelines](#devops-pipelines)
|
||||
1. [Cloud Native](#cloud-native)
|
||||
- [Kubernetes Orchestration](#kubernetes-orchestration)
|
||||
- [DevOps-as-a-Service](#devops-as-a-service)
|
||||
1. [Containerization](#containerization)
|
||||
- [DevOps](#devops-1)
|
||||
- [Evolution](#evolution)
|
||||
- [Docker](#docker)
|
||||
- [Fundamentals](#fundamentals)
|
||||
- [Kubernetes](#kubernetes)
|
||||
- [Configuration Management](#configuration-management)
|
||||
- [Culture](#culture)
|
||||
1. [Continuous Delivery](#continuous-delivery)
|
||||
- [CICD Pipeline Design](#cicd-pipeline-design)
|
||||
- [Database Delivery](#database-delivery)
|
||||
- [Release Strategies](#release-strategies)
|
||||
- [Security Policy](#security-policy)
|
||||
1. [DevOps and SRE](#devops-and-sre)
|
||||
- [CICD Pipelines](#cicd-pipelines)
|
||||
- [Architecture](#architecture-1)
|
||||
- [Tool Integrations](#tool-integrations)
|
||||
- [Culture and Organizations](#culture-and-organizations)
|
||||
- [Netflix Engineering](#netflix-engineering)
|
||||
- [Industry Evolution](#industry-evolution)
|
||||
- [Trends](#trends)
|
||||
- [Infrastructure](#infrastructure)
|
||||
- [On-Premises Architecture](#on-premises-architecture)
|
||||
- [Windows Ecosystems](#windows-ecosystems)
|
||||
- [Roadmaps and Career](#roadmaps-and-career)
|
||||
- [Skill Sets](#skill-sets)
|
||||
- [Tooling Landscapes](#tooling-landscapes)
|
||||
- [Visual Architecture](#visual-architecture)
|
||||
1. [DevOps Culture](#devops-culture)
|
||||
- [Platform Engineering](#platform-engineering)
|
||||
- [PlatformOps](#platformops)
|
||||
1. [DevOps Methodology](#devops-methodology)
|
||||
- [Application Delivery](#application-delivery)
|
||||
- [Performance Optimization](#performance-optimization)
|
||||
- [Foundational Principles](#foundational-principles)
|
||||
- [Culture and Process](#culture-and-process)
|
||||
- [Software Lifecycle Models](#software-lifecycle-models)
|
||||
- [Strategic Architecture](#strategic-architecture)
|
||||
- [Tooling Ecosystem](#tooling-ecosystem)
|
||||
- [Platform Evaluation](#platform-evaluation)
|
||||
1. [DevSecOps and IDEs](#devsecops-and-ides)
|
||||
- [Google Cloud Code](#google-cloud-code)
|
||||
- [Developer Experience](#developer-experience)
|
||||
1. [Education](#education)
|
||||
- [Training Courses](#training-courses)
|
||||
1. [Industry Metrics](#industry-metrics)
|
||||
- [DORA Reports](#dora-reports)
|
||||
1. [Microservices](#microservices)
|
||||
- [API Management](#api-management)
|
||||
- [DevOps Delivery](#devops-delivery)
|
||||
- [DevOps Synergy](#devops-synergy)
|
||||
- [Architecture Alignment](#architecture-alignment)
|
||||
- [DevSecOps](#devsecops)
|
||||
- [Cloud Native Security](#cloud-native-security)
|
||||
- [Event-Driven](#event-driven)
|
||||
- [Application Delivery](#application-delivery-1)
|
||||
1. [Orchestration and Containers](#orchestration-and-containers)
|
||||
- [Containerization](#containerization-1)
|
||||
- [CICD Integration](#cicd-integration)
|
||||
- [Kubernetes](#kubernetes-1)
|
||||
- [DevOps Integration](#devops-integration)
|
||||
1. [Platform Engineering](#platform-engineering-1)
|
||||
- [AI Platform](#ai-platform)
|
||||
- [GPU Orchestration](#gpu-orchestration)
|
||||
- [Declarative Configuration](#declarative-configuration)
|
||||
- [KusionStack](#kusionstack)
|
||||
- [Developer Self-Service](#developer-self-service)
|
||||
- [SRE Patterns](#sre-patterns)
|
||||
- [IDP Tooling](#idp-tooling)
|
||||
- [Developer Portals](#developer-portals)
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [Professional Development](#professional-development)
|
||||
- [Core Architectures](#core-architectures)
|
||||
|
||||
## Architecture
|
||||
|
||||
### Patterns
|
||||
|
||||
+3
-168
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Devsecops resources for 2026, AI-ranked: Clair, trivy and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# DevSecOps and Security. Container
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,174 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for DevSecOps and Security. Container in the context of Hardened Infrastructure.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Application Development](#application-development)
|
||||
- [Cloud-Native Java](#cloud-native-java)
|
||||
- [Tanzu Framework](#tanzu-framework)
|
||||
1. [Container Infrastructure](#container-infrastructure)
|
||||
- [CI-CD Pipelines](#ci-cd-pipelines)
|
||||
- [Pipeline Security](#pipeline-security)
|
||||
1. [DevOps](#devops)
|
||||
- [CICD Pipeline Security](#cicd-pipeline-security)
|
||||
- [Harness CD Integration](#harness-cd-integration)
|
||||
- [Jenkins Integrations](#jenkins-integrations)
|
||||
- [Observability](#observability)
|
||||
- [Dashboards](#dashboards)
|
||||
- [Static Analysis](#static-analysis)
|
||||
- [Kubernetes Linting](#kubernetes-linting)
|
||||
- [Kubernetes Validation](#kubernetes-validation)
|
||||
1. [Infrastructure](#infrastructure)
|
||||
- [Network Security](#network-security)
|
||||
- [Ingress Control](#ingress-control)
|
||||
- [Service Mesh](#service-mesh)
|
||||
- [Ingress Control](#ingress-control-1)
|
||||
1. [Kubernetes Security](#kubernetes-security)
|
||||
- [Cloud Native Security Frameworks](#cloud-native-security-frameworks)
|
||||
- [Official Standards](#official-standards)
|
||||
- [Compliance and Governance](#compliance-and-governance)
|
||||
- [Security Frameworks](#security-frameworks)
|
||||
- [Security Toolkits and Scanning](#security-toolkits-and-scanning)
|
||||
- [Open Source Curation](#open-source-curation)
|
||||
1. [Observability](#observability-1)
|
||||
- [Logging](#logging)
|
||||
- [Fluent Bit Engine](#fluent-bit-engine)
|
||||
1. [Security](#security)
|
||||
- [API Security](#api-security)
|
||||
- [Microservices Architecture](#microservices-architecture)
|
||||
- [Access Control](#access-control)
|
||||
- [Zero Trust Network Access](#zero-trust-network-access)
|
||||
- [Access Management](#access-management)
|
||||
- [Passwordless Authentication](#passwordless-authentication)
|
||||
- [Application Security](#application-security)
|
||||
- [Pentesting](#pentesting)
|
||||
- [Spring Boot Integrations](#spring-boot-integrations)
|
||||
- [WAF and API Security](#waf-and-api-security)
|
||||
- [Architecture Patterns](#architecture-patterns)
|
||||
- [Microservice Security](#microservice-security)
|
||||
- [CI-CD](#ci-cd)
|
||||
- [Kubernetes Hardening](#kubernetes-hardening)
|
||||
- [Cloud Security](#cloud-security)
|
||||
- [CWPP Frameworks](#cwpp-frameworks)
|
||||
- [Enterprise Security Platforms](#enterprise-security-platforms)
|
||||
- [Telemetry and Observability](#telemetry-and-observability)
|
||||
- [Cloud-Native](#cloud-native)
|
||||
- [Architecture Fundamentals](#architecture-fundamentals)
|
||||
- [Zero Trust Architectures](#zero-trust-architectures)
|
||||
- [Container Security](#container-security)
|
||||
- [Aqua Security Integration](#aqua-security-integration)
|
||||
- [DevSecOps](#devsecops)
|
||||
- [Cryptography](#cryptography)
|
||||
- [PKI Automation](#pki-automation)
|
||||
- [DevSecOps](#devsecops-1)
|
||||
- [Enterprise Infrastructure](#enterprise-infrastructure)
|
||||
- [Education and Training](#education-and-training)
|
||||
- [Vulnerable Labs](#vulnerable-labs)
|
||||
- [GitOps](#gitops)
|
||||
- [Policy as Code](#policy-as-code)
|
||||
- [Identity and Access Management](#identity-and-access-management)
|
||||
- [Authentication Proxy](#authentication-proxy)
|
||||
- [Core Fundamentals](#core-fundamentals)
|
||||
- [High Availability](#high-availability)
|
||||
- [Ingress Integration](#ingress-integration)
|
||||
- [Microservices Authorization](#microservices-authorization)
|
||||
- [OIDC Provider](#oidc-provider)
|
||||
- [Proxy Gateways](#proxy-gateways)
|
||||
- [SSO Solution](#sso-solution)
|
||||
- [State Management](#state-management)
|
||||
- [Tokens](#tokens)
|
||||
- [Zero Trust Proxy](#zero-trust-proxy)
|
||||
- [Image Signing](#image-signing)
|
||||
- [Cryptographic Trust](#cryptographic-trust)
|
||||
- [Incident Response](#incident-response)
|
||||
- [Container Forensics](#container-forensics)
|
||||
- [Kubernetes Security](#kubernetes-security-1)
|
||||
- [Image Encryption](#image-encryption)
|
||||
- [Policy as Code](#policy-as-code-1)
|
||||
- [Self-Hosted Orchestration](#self-hosted-orchestration)
|
||||
- [Signature Verification](#signature-verification)
|
||||
- [Microservices Security](#microservices-security)
|
||||
- [Architecture Patterns](#architecture-patterns-1)
|
||||
- [Behavior Monitoring](#behavior-monitoring)
|
||||
- [Mitigation Standards](#mitigation-standards)
|
||||
- [API Security](#api-security-1)
|
||||
- [Cloud Native Hardening](#cloud-native-hardening)
|
||||
- [Kubernetes Hardening](#kubernetes-hardening-1)
|
||||
- [OWASP Top 10](#owasp-top-10)
|
||||
- [Network Security](#network-security-1)
|
||||
- [CNI Data Plane](#cni-data-plane)
|
||||
- [Web Application Firewall](#web-application-firewall)
|
||||
- [Runtime Security](#runtime-security)
|
||||
- [KubeArmor Orchestration](#kubearmor-orchestration)
|
||||
- [LSM Enforcement](#lsm-enforcement)
|
||||
- [Threat Detection](#threat-detection)
|
||||
- [Secret Management](#secret-management)
|
||||
- [Helm Automation](#helm-automation)
|
||||
- [Helm Security](#helm-security)
|
||||
- [Secrets Management](#secrets-management)
|
||||
- [AWS Secrets Manager](#aws-secrets-manager)
|
||||
- [CICD Pipelines](#cicd-pipelines)
|
||||
- [CSI Driver](#csi-driver)
|
||||
- [CSI Driver Providers](#csi-driver-providers)
|
||||
- [Centralized Vaults](#centralized-vaults)
|
||||
- [Cloud Managed Services](#cloud-managed-services)
|
||||
- [CyberArk Conjur](#cyberark-conjur)
|
||||
- [GCP Secret Manager](#gcp-secret-manager)
|
||||
- [GCP Security](#gcp-security)
|
||||
- [GitOps Encrypted Secrets](#gitops-encrypted-secrets)
|
||||
- [Kafka Integration](#kafka-integration)
|
||||
- [Kubernetes Admission Controllers](#kubernetes-admission-controllers)
|
||||
- [Kubernetes Integration](#kubernetes-integration)
|
||||
- [Kubernetes Security](#kubernetes-security-2)
|
||||
- [Kubernetes Sidecar Injection](#kubernetes-sidecar-injection)
|
||||
- [Risk Mitigation](#risk-mitigation)
|
||||
- [Serverless Integration](#serverless-integration)
|
||||
- [Serverless](#serverless)
|
||||
- [FaaS Hardening](#faas-hardening)
|
||||
- [Serverless Security](#serverless-security)
|
||||
- [Knative Security Guard](#knative-security-guard)
|
||||
- [Software Engineering](#software-engineering)
|
||||
- [Secure Design Principles](#secure-design-principles)
|
||||
- [Static Analysis](#static-analysis-1)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Supply Chain Security](#supply-chain-security)
|
||||
- [AWS Integration](#aws-integration)
|
||||
- [Container Signing](#container-signing)
|
||||
- [Cryptographic Signatures](#cryptographic-signatures)
|
||||
- [Keyless Signing](#keyless-signing)
|
||||
- [Threat Detection](#threat-detection-1)
|
||||
- [Audit Logs Parsing](#audit-logs-parsing)
|
||||
- [Container Monitoring Tools](#container-monitoring-tools)
|
||||
- [Malware Scanning](#malware-scanning)
|
||||
- [Threat Intelligence](#threat-intelligence)
|
||||
- [Container Runtime Security](#container-runtime-security)
|
||||
- [Kubernetes Exploits](#kubernetes-exploits)
|
||||
- [Kubernetes Exposures](#kubernetes-exposures)
|
||||
- [Vulnerabilities](#vulnerabilities)
|
||||
- [CRI-O and Podman Security](#cri-o-and-podman-security)
|
||||
- [Log4Shell Mitigations](#log4shell-mitigations)
|
||||
- [Log4j Detection Agent](#log4j-detection-agent)
|
||||
- [Observability Mitigations](#observability-mitigations)
|
||||
- [Vulnerability Management](#vulnerability-management)
|
||||
- [Base Images](#base-images)
|
||||
- [CICD Pipeline Security](#cicd-pipeline-security-1)
|
||||
- [CNAPP Platform](#cnapp-platform)
|
||||
- [Container Scanning](#container-scanning)
|
||||
- [Kubernetes Hardening](#kubernetes-hardening-2)
|
||||
1. [Security and Compliance](#security-and-compliance)
|
||||
- [Container Security](#container-security-1)
|
||||
- [Runtime Observability](#runtime-observability)
|
||||
- [Secrets Management](#secrets-management-1)
|
||||
- [HashiCorp Vault](#hashicorp-vault)
|
||||
- [Vulnerability Scanning](#vulnerability-scanning)
|
||||
- [Grype and GitLab](#grype-and-gitlab)
|
||||
1. [Security and Governance](#security-and-governance)
|
||||
- [DevSecOps](#devsecops-2)
|
||||
- [AWS Implementations](#aws-implementations)
|
||||
- [Automated Pipelines](#automated-pipelines)
|
||||
- [Commercial CD](#commercial-cd)
|
||||
- [Enterprise Compliance](#enterprise-compliance)
|
||||
|
||||
## Application Development
|
||||
|
||||
### Cloud-Native Java
|
||||
|
||||
@@ -6,15 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Digital Money in the context of Career & Industry.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architectural Foundations](#architectural-foundations)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [General Reference](#general-reference)
|
||||
1. [Fintech](#fintech)
|
||||
- [Cryptocurrency](#cryptocurrency)
|
||||
- [Stablecoins](#stablecoins)
|
||||
|
||||
## Architectural Foundations
|
||||
|
||||
### Kubernetes Tools
|
||||
|
||||
+3
-11
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Digitalocean resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# Digital Ocean
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,17 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Digital Ocean in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Cloud Native](#cloud-native)
|
||||
- [Managed Kubernetes](#managed-kubernetes)
|
||||
- [Scaleway Kapsule](#scaleway-kapsule)
|
||||
1. [Cloud Providers](#cloud-providers)
|
||||
- [Alternative Clouds](#alternative-clouds)
|
||||
- [Visual Deployment](#visual-deployment)
|
||||
- [PaaS](#paas)
|
||||
- [DigitalOcean App Platform](#digitalocean-app-platform)
|
||||
|
||||
## Cloud Native
|
||||
|
||||
### Managed Kubernetes
|
||||
|
||||
+3
-58
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Docker resources for 2026, AI-ranked: Awesome Compose, jib and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Docker
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,64 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Docker in the context of The Container Stack.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [App Development](#app-development)
|
||||
- [CICD](#cicd)
|
||||
- [GitHub Actions](#github-actions)
|
||||
1. [Application Architecture](#application-architecture)
|
||||
- [Microservices](#microservices)
|
||||
- [Java Ecosystem](#java-ecosystem)
|
||||
1. [Application Development](#application-development)
|
||||
- [Java](#java)
|
||||
- [Image Building](#image-building)
|
||||
- [Node.js](#nodejs)
|
||||
- [Image Building](#image-building-1)
|
||||
- [Python](#python)
|
||||
- [Local Environments](#local-environments)
|
||||
1. [CI-CD](#ci-cd)
|
||||
- [DevOps Pipelines](#devops-pipelines)
|
||||
- [Container Delivery](#container-delivery)
|
||||
1. [Cloud Orchestration](#cloud-orchestration)
|
||||
- [Multi-Cloud Deployments](#multi-cloud-deployments)
|
||||
- [Application Architecture](#application-architecture-1)
|
||||
1. [Containers](#containers)
|
||||
- [Architectural Patterns](#architectural-patterns)
|
||||
- [Anti-patterns](#anti-patterns)
|
||||
- [Build Optimization](#build-optimization)
|
||||
- [Java](#java-1)
|
||||
- [Kubernetes Deployment](#kubernetes-deployment)
|
||||
- [Node.js](#nodejs-1)
|
||||
- [Python](#python-1)
|
||||
- [Reference Implementation](#reference-implementation)
|
||||
- [Rust](#rust)
|
||||
- [Security and Hardening](#security-and-hardening)
|
||||
- [Developer Tooling](#developer-tooling)
|
||||
- [Cloud Emulation](#cloud-emulation)
|
||||
- [Diagnostics](#diagnostics)
|
||||
- [Debugging Runtimes](#debugging-runtimes)
|
||||
- [Docker Basics](#docker-basics)
|
||||
- [Workshops](#workshops)
|
||||
- [Production Operations](#production-operations)
|
||||
- [Infrastructure](#infrastructure)
|
||||
- [Security and Hardening](#security-and-hardening-1)
|
||||
- [Node.js](#nodejs-2)
|
||||
- [Vulnerability Management](#vulnerability-management)
|
||||
1. [Infrastructure](#infrastructure-1)
|
||||
- [Docker Compose](#docker-compose)
|
||||
- [Reference Architectures](#reference-architectures)
|
||||
- [Kubernetes](#kubernetes)
|
||||
- [Container Management](#container-management)
|
||||
- [Local Environments](#local-environments-1)
|
||||
- [Docker Compose](#docker-compose-1)
|
||||
1. [Local Developer Environment](#local-developer-environment)
|
||||
- [Container Runtime Setup](#container-runtime-setup)
|
||||
- [Docker Compose](#docker-compose-2)
|
||||
1. [Security](#security)
|
||||
- [Container Security](#container-security)
|
||||
- [Dockerfile optimization](#dockerfile-optimization)
|
||||
- [RunAsUser](#runasuser)
|
||||
|
||||
## App Development
|
||||
|
||||
### CICD
|
||||
|
||||
@@ -6,15 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Document Object Model (DOM) in the context of Developer Ecosystem.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architectural Foundations](#architectural-foundations)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [General Reference](#general-reference)
|
||||
1. [Web Development](#web-development)
|
||||
- [DOM](#dom)
|
||||
- [JavaScript](#javascript)
|
||||
|
||||
## Architectural Foundations
|
||||
|
||||
### Kubernetes Tools
|
||||
|
||||
+3
-20
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Dotnet resources for 2026, AI-ranked: Lamar, Paradigm framework and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Microsoft .NET
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,26 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Microsoft .NET in the context of Developer Ecosystem.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Application Development](#application-development)
|
||||
- [.NET Framework](#net-framework)
|
||||
- [Architectural Guides](#architectural-guides)
|
||||
- [Event-Driven Microservices](#event-driven-microservices)
|
||||
- [Microservices Design](#microservices-design)
|
||||
- [gRPC Communication](#grpc-communication)
|
||||
1. [Cloud Infrastructure and Orchestration](#cloud-infrastructure-and-orchestration)
|
||||
- [Container Orchestration](#container-orchestration)
|
||||
- [Kubernetes](#kubernetes)
|
||||
1. [Software Architecture and .NET Development](#software-architecture-and-net-development)
|
||||
- [Application Diagnostics](#application-diagnostics)
|
||||
- [Environment Validation](#environment-validation)
|
||||
- [IoC Containers](#ioc-containers)
|
||||
- [Microservices](#microservices)
|
||||
- [Resilience Patterns](#resilience-patterns)
|
||||
- [Web Frameworks](#web-frameworks)
|
||||
- [Microservices](#microservices-1)
|
||||
|
||||
## Application Development
|
||||
|
||||
### .NET Framework
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Edge Computing resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Cloud Providers (Hyperscalers))."
|
||||
---
|
||||
# Edge Computing
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,14 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Edge Computing in the context of Cloud Providers (Hyperscalers).
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architecture](#architecture)
|
||||
- [Edge Computing](#edge-computing-1)
|
||||
- [Distributed Systems](#distributed-systems)
|
||||
1. [Kubernetes Edge](#kubernetes-edge)
|
||||
- [MicroShift](#microshift)
|
||||
|
||||
## Architecture
|
||||
|
||||
### Edge Computing (1)
|
||||
@@ -28,7 +23,7 @@
|
||||
- **(2021)** [developers.redhat.com: Bring your Kubernetes workloads to the edge](https://developers.redhat.com/articles/2021/11/22/bring-your-kubernetes-workloads-edge) <span class='md-tag md-tag--critical'>[ADVANCED LEVEL]</span> <span class='md-tag md-tag--info'>[COMMUNITY-TOOL]</span> — A guide on scaling down and adapting standard containerized workloads to small, resource-constrained edge computing environments. It outlines storage optimizations and minimized memory footprint topologies.
|
||||
|
||||
---
|
||||
💡 **Explore Related:** [Googlecloudplatform](./GoogleCloudPlatform.md) | [Oraclecloud](./oraclecloud.md) | [AWS Architecture](./aws-architecture.md)
|
||||
💡 **Explore Related:** [Googlecloudplatform](./GoogleCloudPlatform.md) | [Oraclecloud](./oraclecloud.md) | [AWS](./aws.md)
|
||||
|
||||
🔗 **See Also:** [Postman](./postman.md) | [Cloudflare](./cloudflare.md)
|
||||
|
||||
|
||||
+3
-12
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Elearning resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Career & Industry)."
|
||||
---
|
||||
# E-learning
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,18 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for E-learning in the context of Career & Industry.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Orchestration](#orchestration)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Real-World Architecture](#real-world-architecture)
|
||||
1. [Professional Development](#professional-development)
|
||||
- [Higher Education](#higher-education)
|
||||
- [Software Engineering](#software-engineering)
|
||||
1. [Software Development](#software-development)
|
||||
- [Software Architecture](#software-architecture)
|
||||
- [DDD and Testing](#ddd-and-testing)
|
||||
|
||||
## Orchestration
|
||||
|
||||
### Infrastructure as Code
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Embedded Servlet Containers resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Developer Ecosystem)."
|
||||
---
|
||||
# Embedded Servlet Containers in SpringBoot: Jetty, Tomcat, Undertow and more
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,12 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Embedded Servlet Containers in SpringBoot: Jetty, Tomcat, Undertow and more in the context of Developer Ecosystem.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Platform Engineering](#platform-engineering)
|
||||
- [Application Servers](#application-servers)
|
||||
- [Web Servers](#web-servers)
|
||||
|
||||
## Platform Engineering
|
||||
|
||||
### Application Servers
|
||||
|
||||
+3
-22
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Faq resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Architectural Foundations)."
|
||||
---
|
||||
# Microservices FAQ
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,28 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Microservices FAQ in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architecture](#architecture)
|
||||
- [Microservices](#microservices)
|
||||
- [Caching](#caching)
|
||||
- [Decision Frameworks](#decision-frameworks)
|
||||
- [History](#history)
|
||||
- [Resiliency Patterns](#resiliency-patterns)
|
||||
1. [Microservices Architecture](#microservices-architecture)
|
||||
- [Dependency Management](#dependency-management)
|
||||
- [Patterns](#patterns)
|
||||
- [Fundamentals](#fundamentals)
|
||||
- [Best Practices](#best-practices)
|
||||
- [Comparisons](#comparisons)
|
||||
- [Roadmap](#roadmap)
|
||||
- [UI and Frontend](#ui-and-frontend)
|
||||
- [Patterns](#patterns-1)
|
||||
- [Service Discovery](#service-discovery)
|
||||
1. [Migration](#migration)
|
||||
- [Containerization](#containerization)
|
||||
- [Case Study](#case-study)
|
||||
|
||||
## Architecture
|
||||
|
||||
### Microservices
|
||||
|
||||
+56
-56
@@ -5,15 +5,15 @@
|
||||
<link>https://nubenetes.com/</link>
|
||||
<description>AI-curated top picks from the Cloud Native & Kubernetes ecosystem</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Fri, 19 Jun 2026 11:58:33 -0000</lastBuildDate>
|
||||
<lastBuildDate>Thu, 18 Jun 2026 00:00:00 -0000</lastBuildDate>
|
||||
<atom:link href="https://nubenetes.com/feed.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<title>docs.anthropic.com: Claude Code CLI</title>
|
||||
<link>https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview</link>
|
||||
<guid isPermaLink="true">https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview</guid>
|
||||
<title>Kubecost 🌟</title>
|
||||
<link>https://www.apptio.com/products/kubecost/?src=kc-com</link>
|
||||
<guid isPermaLink="true">https://www.apptio.com/products/kubecost/?src=kc-com</guid>
|
||||
<pubDate>Thu, 18 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>AI & Agents</category>
|
||||
<description>[CRITICAL] Anthropic's official agentic CLI redefines developer workflows by allowing autonomous agents to execute terminal commands, run tests, and manage Git directly.</description>
|
||||
<category>Kubernetes & Orchestration</category>
|
||||
<description>[CRITICAL] It is the industry-standard tool for real-time cost allocation, critical for FinOps practices in multi-cluster environments.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>antigravity.google: Google Antigravity Agentic Platform</title>
|
||||
@@ -21,15 +21,23 @@
|
||||
<guid isPermaLink="true">https://antigravity.google</guid>
|
||||
<pubDate>Thu, 18 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>AI & Agents</category>
|
||||
<description>[CRITICAL] Bridges the gap between local agent prototypes and production-grade deployments on secure Google Kubernetes Engine (GKE) clusters.</description>
|
||||
<description>[CRITICAL] It directly bridges the gap between local agent prototypes and production-grade Google Kubernetes Engine (GKE) deployments for stateful AI agents.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>cursor.com: Cursor AI Code Editor</title>
|
||||
<link>https://cursor.com</link>
|
||||
<guid isPermaLink="true">https://cursor.com</guid>
|
||||
<title>docs.anthropic.com: Claude Code CLI</title>
|
||||
<link>https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview</link>
|
||||
<guid isPermaLink="true">https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview</guid>
|
||||
<pubDate>Thu, 18 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>AI & Agents</category>
|
||||
<description>[CRITICAL] As the leading AI-first IDE, it has shifted the industry paradigm of daily software engineering through multi-file agentic code generation.</description>
|
||||
<description>[CRITICAL] Anthropic's official tool fundamentally shifts developer workflows by bringing autonomous agentic coding and execution directly into the terminal.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Project Calico 🌟</title>
|
||||
<link>https://www.tigera.io/project-calico</link>
|
||||
<guid isPermaLink="true">https://www.tigera.io/project-calico</guid>
|
||||
<pubDate>Thu, 18 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Security & Compliance</category>
|
||||
<description>[CRITICAL] Calico is an industry-standard networking and security engine enabling high-performance eBPF container network interface enforcement.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Crossplane</title>
|
||||
@@ -37,7 +45,15 @@
|
||||
<guid isPermaLink="true">https://nubenetes.com/crossplane</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Kubernetes & Orchestration</category>
|
||||
<description>[CRITICAL] It represents a major paradigm shift, transforming Kubernetes from a container orchestrator into a universal control plane for all cloud infrastructure.</description>
|
||||
<description>[CRITICAL] Crossplane spearheads a major paradigm shift by turning Kubernetes into a universal control plane to declaratively manage any cloud infrastructure.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>==Azure/azure-workload-identity==</title>
|
||||
<link>https://github.com/Azure/azure-workload-identity</link>
|
||||
<guid isPermaLink="true">https://github.com/Azure/azure-workload-identity</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Kubernetes & Orchestration</category>
|
||||
<description>[CRITICAL] This is the enterprise standard for secure, zero-trust OIDC identity federation between Kubernetes and Microsoft Entra ID.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>NVIDIA/k8s-device-plugin: NVIDIA device plugin for Kubernetes</title>
|
||||
@@ -45,7 +61,7 @@
|
||||
<guid isPermaLink="true">https://github.com/NVIDIA/k8s-device-plugin</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Kubernetes & Orchestration</category>
|
||||
<description>[CRITICAL] It is the essential hardware-enablement layer allowing Kubernetes to dynamically schedule and manage physical GPUs for demanding AI and ML workloads.</description>
|
||||
<description>[CRITICAL] It acts as the indispensable hardware integration layer required to orchestrate GPU-accelerated AI and ML workloads on Kubernetes.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>vLLM on Kubernetes</title>
|
||||
@@ -53,7 +69,7 @@
|
||||
<guid isPermaLink="true">https://github.com/vllm-project/vllm</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>AI & Agents</category>
|
||||
<description>[CRITICAL] Standardizes memory-efficient LLM serving via PagedAttention and provides concrete deployment templates for production Kubernetes clusters.</description>
|
||||
<description>[CRITICAL] It provides the definitive standard for hosting highly optimized, memory-efficient LLM serving engines using PagedAttention on Kubernetes.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Tetragon (Cilium)</title>
|
||||
@@ -61,7 +77,15 @@
|
||||
<guid isPermaLink="true">https://github.com/cilium/tetragon</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Security & Compliance</category>
|
||||
<description>[CRITICAL] Provides kernel-level, eBPF-powered security observability and real-time threat enforcement directly within Kubernetes clusters.</description>
|
||||
<description>[CRITICAL] eBPF-powered security observability at the kernel level represents a paradigm shift for Kubernetes runtime enforcement.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>==dagger/dagger: Dagger is a portable devkit for CICD==</title>
|
||||
<link>https://github.com/dagger/dagger</link>
|
||||
<guid isPermaLink="true">https://github.com/dagger/dagger</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>CI/CD & GitOps</category>
|
||||
<description>[CRITICAL] Dagger represents a major paradigm shift in CI/CD by replacing brittle YAML pipelines with portable, code-driven workflows executed on BuildKit.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>kube-state-metrics 🌟</title>
|
||||
@@ -69,15 +93,7 @@
|
||||
<guid isPermaLink="true">https://github.com/kubernetes/kube-state-metrics</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Observability, SRE & Testing</category>
|
||||
<description>[CRITICAL] This indispensable agent translates raw Kubernetes API server states into actionable Prometheus metrics for cluster-wide health tracking.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>buildkit</title>
|
||||
<link>https://docs.docker.com/build</link>
|
||||
<guid isPermaLink="true">https://docs.docker.com/build</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Containers & Runtime</category>
|
||||
<description>[CRITICAL] Docker's next-generation build engine radically accelerates container image creation through concurrent stage execution and advanced caching.</description>
|
||||
<description>[CRITICAL] Essential cluster service that translates internal Kubernetes API resources into Prometheus metrics for accurate, real-time infrastructure state analysis.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>github.com: Istio</title>
|
||||
@@ -85,7 +101,15 @@
|
||||
<guid isPermaLink="true">https://github.com/istio/istio</guid>
|
||||
<pubDate>Sun, 14 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Networking & Service Mesh</category>
|
||||
<description>[CRITICAL] As the dominant enterprise service mesh, Istio defines the standard for secure, high-performance microservices traffic management and observability.</description>
|
||||
<description>[CRITICAL] The leading enterprise-grade service mesh that defines how modern cloud-native architectures secure, control, and observe traffic.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Teleport 🌟</title>
|
||||
<link>https://github.com/gravitational/teleport</link>
|
||||
<guid isPermaLink="true">https://github.com/gravitational/teleport</guid>
|
||||
<pubDate>Sat, 13 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Kubernetes & Orchestration</category>
|
||||
<description>[CRITICAL] Teleport is a leading zero-trust access gateway that consolidates and audits multi-protocol, multi-cluster infrastructure access.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>github: Flux Version 2</title>
|
||||
@@ -93,7 +117,7 @@
|
||||
<guid isPermaLink="true">https://github.com/fluxcd/flux2</guid>
|
||||
<pubDate>Sat, 13 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>CI/CD & GitOps</category>
|
||||
<description>[CRITICAL] A foundational GitOps controller toolkit that provides highly parallel, decoupled resource reconciliation directly inside Kubernetes.</description>
|
||||
<description>[CRITICAL] Flux v2 is a foundational CNCF graduated project that implements a highly parallelized, modular GitOps controller architecture for enterprise-grade reconciliation.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>github.com/prometheus/prometheus</title>
|
||||
@@ -101,7 +125,7 @@
|
||||
<guid isPermaLink="true">https://github.com/prometheus/prometheus</guid>
|
||||
<pubDate>Sat, 13 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Observability, SRE & Testing</category>
|
||||
<description>[CRITICAL] Prometheus remains the absolute cornerstone of cloud-native telemetry and the primary backend for modern SRE observability.</description>
|
||||
<description>[CRITICAL] Serves as the foundational, de-facto standard metrics database and query engine powering the entire cloud-native observability ecosystem.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>containerd - An open and reliable container runtime</title>
|
||||
@@ -109,7 +133,7 @@
|
||||
<guid isPermaLink="true">https://github.com/containerd/containerd</guid>
|
||||
<pubDate>Sat, 13 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Containers & Runtime</category>
|
||||
<description>[CRITICAL] Following Docker's runtime deprecation, containerd has become the industry-standard, CNCF-graduated core runtime powering Kubernetes clusters globally.</description>
|
||||
<description>[CRITICAL] As the industry-standard container runtime for Kubernetes, containerd is foundational for modern cloud-native container execution.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>runc</title>
|
||||
@@ -117,7 +141,7 @@
|
||||
<guid isPermaLink="true">https://github.com/opencontainers/runc</guid>
|
||||
<pubDate>Sat, 13 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Containers & Runtime</category>
|
||||
<description>[CRITICAL] As the canonical, OCI-compliant low-level runtime engine, runc is the fundamental foundation upon which most modern container ecosystems are built.</description>
|
||||
<description>[CRITICAL] It is the canonical, low-level OCI-compliant container runtime that directly spawns and runs container processes across the industry.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>hashicorp/vault</title>
|
||||
@@ -125,7 +149,7 @@
|
||||
<guid isPermaLink="true">https://github.com/hashicorp/vault</guid>
|
||||
<pubDate>Fri, 12 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Security & Compliance</category>
|
||||
<description>[CRITICAL] Acts as the industry-standard engine for dynamic secrets management, data protection, and enterprise Zero Trust identity broker.</description>
|
||||
<description>[CRITICAL] It remains the absolute backbone of enterprise Zero Trust architectures and dynamic secrets management across multi-cloud environments.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>OpenTelemetry Collector</title>
|
||||
@@ -133,15 +157,7 @@
|
||||
<guid isPermaLink="true">https://github.com/open-telemetry/opentelemetry-collector</guid>
|
||||
<pubDate>Fri, 12 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Observability, SRE & Testing</category>
|
||||
<description>[CRITICAL] The OpenTelemetry Collector is the industry-standard pipeline for vendor-agnostic telemetry collection, processing, and routing.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>kube-prometheus</title>
|
||||
<link>https://github.com/prometheus-operator/kube-prometheus</link>
|
||||
<guid isPermaLink="true">https://github.com/prometheus-operator/kube-prometheus</guid>
|
||||
<pubDate>Fri, 12 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Observability, SRE & Testing</category>
|
||||
<description>[CRITICAL] It serves as the de facto reference architecture and deployment pattern for comprehensive Kubernetes cluster monitoring.</description>
|
||||
<description>[CRITICAL] Acts as the industry-standard, vendor-agnostic pipeline for receiving, processing, and routing metrics, logs, and traces across diverse cloud-native environments.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Kubernetes Gateway API</title>
|
||||
@@ -149,23 +165,7 @@
|
||||
<guid isPermaLink="true">https://github.com/kubernetes-sigs/gateway-api</guid>
|
||||
<pubDate>Fri, 12 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Networking & Service Mesh</category>
|
||||
<description>[CRITICAL] As the official next-generation routing standard in Kubernetes, it provides highly expressive, role-oriented alternatives to the legacy Ingress API.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>github.com/vmware-tanzu/velero</title>
|
||||
<link>https://github.com/velero-io/velero</link>
|
||||
<guid isPermaLink="true">https://github.com/velero-io/velero</guid>
|
||||
<pubDate>Fri, 12 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>Data, Messaging & Storage</category>
|
||||
<description>[CRITICAL] Velero is the industry-standard tool for backing up, restoring, and migrating Kubernetes cluster resources and persistent volumes.</description>
|
||||
</item>
|
||||
<item>
|
||||
<title>Announcing Claude Managed Agents on Cloudflare</title>
|
||||
<link>https://blog.cloudflare.com/claude-managed-agents</link>
|
||||
<guid isPermaLink="true">https://blog.cloudflare.com/claude-managed-agents</guid>
|
||||
<pubDate>Tue, 02 Jun 2026 00:00:00 -0000</pubDate>
|
||||
<category>AI & Agents</category>
|
||||
<description>[CRITICAL] Establishes a secure, sandboxed serverless runtime on Cloudflare Workers for orchestrating complex, autonomous AI agent workflows at the edge.</description>
|
||||
<description>[CRITICAL] Establishes the next-generation standard for expressive, role-oriented, and extensible routing and ingress configurations in Kubernetes.</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
|
||||
@@ -6,58 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Cloud FinOps. Collaborative, Real-Time Cloud Financial Management (CFM) in the context of Career & Industry.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architectural Foundations](#architectural-foundations)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [General Reference](#general-reference)
|
||||
1. [FinOps and Cloud Cost](#finops-and-cloud-cost)
|
||||
- [AWS Optimization](#aws-optimization)
|
||||
- [Data Transfer](#data-transfer)
|
||||
- [EKS Cost Reduction](#eks-cost-reduction)
|
||||
- [EKS Log Optimization](#eks-log-optimization)
|
||||
- [Policy Engines](#policy-engines)
|
||||
- [SMB Frameworks](#smb-frameworks)
|
||||
- [Azure Optimization](#azure-optimization)
|
||||
- [CLI Tools](#cli-tools)
|
||||
- [Cost Estimation](#cost-estimation)
|
||||
- [Dashboards](#dashboards)
|
||||
- [Governance](#governance)
|
||||
- [Pricing Frameworks](#pricing-frameworks)
|
||||
- [Reference Guides](#reference-guides)
|
||||
- [Savings Potential](#savings-potential)
|
||||
- [IaC FinOps](#iac-finops)
|
||||
- [AI Optimization](#ai-optimization)
|
||||
- [AWS CDK Bots](#aws-cdk-bots)
|
||||
- [Kubernetes FinOps](#kubernetes-finops)
|
||||
- [AKS Cost Allocation](#aks-cost-allocation)
|
||||
- [Actionable Frameworks](#actionable-frameworks)
|
||||
- [Automated Optimization](#automated-optimization)
|
||||
- [Cost Management](#cost-management)
|
||||
- [Cost Platforms](#cost-platforms)
|
||||
- [Foundational Concepts](#foundational-concepts)
|
||||
- [Observability Integrations](#observability-integrations)
|
||||
- [ROI Analysis](#roi-analysis)
|
||||
- [Tooling](#tooling)
|
||||
- [Market Trends](#market-trends)
|
||||
- [Macroeconomics](#macroeconomics)
|
||||
- [SaaS FinOps](#saas-finops)
|
||||
- [License Management](#license-management)
|
||||
- [Strategy and Governance](#strategy-and-governance)
|
||||
- [FinOps Pitfalls](#finops-pitfalls)
|
||||
- [FinOps vs Cost Management](#finops-vs-cost-management)
|
||||
1. [Financial Operations](#financial-operations)
|
||||
- [FinOps](#finops)
|
||||
- [Best Practices](#best-practices)
|
||||
- [Case Studies](#case-studies)
|
||||
- [Frameworks](#frameworks)
|
||||
- [Kubernetes Costs](#kubernetes-costs)
|
||||
- [Market Landscapes](#market-landscapes)
|
||||
- [Methodologies](#methodologies)
|
||||
- [Metrics](#metrics)
|
||||
- [Roles and Responsibilities](#roles-and-responsibilities)
|
||||
- [Standards](#standards)
|
||||
|
||||
## Architectural Foundations
|
||||
|
||||
### Kubernetes Tools
|
||||
|
||||
+3
-12
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Flux resources for 2026, AI-ranked: github: Flux Version 2, github: Flux and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Flux. The GitOps operator for Kubernetes
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,18 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Flux. The GitOps operator for Kubernetes in the context of Engineering Pipeline.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Networking and Security](#networking-and-security)
|
||||
- [Service Mesh and Gateway](#service-mesh-and-gateway)
|
||||
- [Envoy](#envoy)
|
||||
1. [Platform Engineering](#platform-engineering)
|
||||
- [GitOps and Deployment](#gitops-and-deployment)
|
||||
- [Flux Ecosystem](#flux-ecosystem)
|
||||
1. [Storage and Databases](#storage-and-databases)
|
||||
- [Cloud-Native Storage](#cloud-native-storage)
|
||||
- [Stateful GitOps](#stateful-gitops)
|
||||
|
||||
## Networking and Security
|
||||
|
||||
### Service Mesh and Gateway
|
||||
|
||||
@@ -6,48 +6,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Freelancing in the context of Career & Industry.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architectural Foundations](#architectural-foundations)
|
||||
- [Kubernetes Tools](#kubernetes-tools)
|
||||
- [General Reference](#general-reference)
|
||||
1. [Business and Careers](#business-and-careers)
|
||||
- [Freelance Platforms](#freelance-platforms)
|
||||
- [Sourcing](#sourcing)
|
||||
1. [Careers](#careers)
|
||||
- [Freelancing](#freelancing-1)
|
||||
- [Career Paths](#career-paths)
|
||||
- [Cooperatives](#cooperatives)
|
||||
- [Europe Market](#europe-market)
|
||||
- [Financial Calculators](#financial-calculators)
|
||||
- [Financial Strategy](#financial-strategy)
|
||||
- [Market Overview](#market-overview)
|
||||
- [On-Demand Mentoring](#on-demand-mentoring)
|
||||
- [Remote Contracting](#remote-contracting)
|
||||
- [Spanish Market](#spanish-market)
|
||||
- [Spanish Regulations](#spanish-regulations)
|
||||
- [Talent Marketplaces](#talent-marketplaces)
|
||||
1. [Remote Work and Career](#remote-work-and-career)
|
||||
- [Contractor Operations](#contractor-operations)
|
||||
- [SaaS Administration](#saas-administration)
|
||||
- [Legal Compliance](#legal-compliance)
|
||||
- [Spanish Contracting](#spanish-contracting)
|
||||
- [Spanish Freelancing](#spanish-freelancing)
|
||||
- [Spanish Taxation](#spanish-taxation)
|
||||
- [UK Contracting](#uk-contracting)
|
||||
- [Talent Platforms](#talent-platforms)
|
||||
- [AI-Backed Sourcing](#ai-backed-sourcing)
|
||||
- [Bespoke Engineering Teams](#bespoke-engineering-teams)
|
||||
- [Contractor Compliance](#contractor-compliance)
|
||||
- [E-commerce Freelancing](#e-commerce-freelancing)
|
||||
- [Freelance Consulting](#freelance-consulting)
|
||||
- [Global Sourcing](#global-sourcing)
|
||||
- [Mentorship Networks](#mentorship-networks)
|
||||
- [Nearshore Outsourcing](#nearshore-outsourcing)
|
||||
- [On-Demand Delivery](#on-demand-delivery)
|
||||
- [Staff Augmentation](#staff-augmentation)
|
||||
- [Web Development Networks](#web-development-networks)
|
||||
|
||||
## Architectural Foundations
|
||||
|
||||
### Kubernetes Tools
|
||||
|
||||
+3
-31
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Git resources for 2026, AI-ranked: Jenkins-X UpdateBOT, github-merge-bot and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Git and Patterns for Managing Source Code Branches. Merge BOTs
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,37 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Git and Patterns for Managing Source Code Branches. Merge BOTs in the context of Architectural Foundations.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [CICD Pipeline](#cicd-pipeline)
|
||||
- [Kubernetes and Containers](#kubernetes-and-containers)
|
||||
- [Continuous Deployment](#continuous-deployment)
|
||||
- [Self-Hosted Infrastructure](#self-hosted-infrastructure)
|
||||
- [Testing Infrastructure](#testing-infrastructure)
|
||||
- [Cloud Native Automation](#cloud-native-automation)
|
||||
1. [Cloud Native](#cloud-native)
|
||||
- [GitOps](#gitops)
|
||||
- [GitLab Kubernetes Agent](#gitlab-kubernetes-agent)
|
||||
- [GitLab Operator](#gitlab-operator)
|
||||
1. [DevOps](#devops)
|
||||
- [Continuous Delivery](#continuous-delivery)
|
||||
- [GitOps](#gitops-1)
|
||||
- [Version Control](#version-control)
|
||||
- [Kubernetes Deployments](#kubernetes-deployments)
|
||||
1. [Security and Compliance](#security-and-compliance)
|
||||
- [Supply Chain Security](#supply-chain-security)
|
||||
- [Container Security](#container-security)
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [CICD Platforms](#cicd-platforms)
|
||||
- [GitLab CI Optimization](#gitlab-ci-optimization)
|
||||
- [Collaborative Platforms](#collaborative-platforms)
|
||||
- [Kubernetes Integration](#kubernetes-integration)
|
||||
- [Software Delivery](#software-delivery)
|
||||
- [Code Review Protocols](#code-review-protocols)
|
||||
- [Version Control](#version-control-1)
|
||||
- [Automation Bots](#automation-bots)
|
||||
- [GitLab Automation](#gitlab-automation)
|
||||
|
||||
## CICD Pipeline
|
||||
|
||||
### Kubernetes and Containers
|
||||
|
||||
+3
-46
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Curated, AI-ranked Gitops resources for the 2026 Cloud Native architect: top-tier tools, guides and references (Engineering Pipeline)."
|
||||
---
|
||||
# GitOps
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,52 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for GitOps in the context of Engineering Pipeline.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [API Management](#api-management)
|
||||
- [GitOps](#gitops-1)
|
||||
- [Declarative APIs](#declarative-apis)
|
||||
1. [Application Delivery](#application-delivery)
|
||||
- [Continuous Deployment](#continuous-deployment)
|
||||
- [GitOps](#gitops-2)
|
||||
- [Business Value](#business-value)
|
||||
- [DevOps Culture](#devops-culture)
|
||||
- [Ecosystem](#ecosystem)
|
||||
- [Foundations](#foundations)
|
||||
- [Implementation](#implementation)
|
||||
- [Source Code](#source-code)
|
||||
- [Standards](#standards)
|
||||
- [Infrastructure as Code](#infrastructure-as-code)
|
||||
- [Patterns](#patterns)
|
||||
1. [CICD](#cicd)
|
||||
- [GitOps](#gitops-3)
|
||||
- [Deployment Strategies](#deployment-strategies)
|
||||
- [FluxCD](#fluxcd)
|
||||
- [Kustomize Manifests](#kustomize-manifests)
|
||||
1. [Continuous Delivery](#continuous-delivery)
|
||||
- [GitOps](#gitops-4)
|
||||
- [Kubernetes Native](#kubernetes-native)
|
||||
- [Telco and Edge](#telco-and-edge)
|
||||
- [Testing Environments](#testing-environments)
|
||||
- [Progressive Delivery](#progressive-delivery)
|
||||
- [GitOps Integration](#gitops-integration)
|
||||
1. [GitOps](#gitops-5)
|
||||
- [Methodology](#methodology)
|
||||
- [Developer Platforms](#developer-platforms)
|
||||
1. [Networking](#networking)
|
||||
- [Ingress and Gateway](#ingress-and-gateway)
|
||||
- [Automation](#automation)
|
||||
- [Service Mesh](#service-mesh)
|
||||
- [eBPF vs Proxy](#ebpf-vs-proxy)
|
||||
1. [Platform Architecture](#platform-architecture)
|
||||
- [GitOps](#gitops-6)
|
||||
- [Modern Pipelines](#modern-pipelines)
|
||||
1. [Platform Engineering](#platform-engineering)
|
||||
- [GitOps and Deployment](#gitops-and-deployment)
|
||||
- [Flux Ecosystem](#flux-ecosystem)
|
||||
- [Multi-Cluster Routing](#multi-cluster-routing)
|
||||
- [Fleet Orchestration](#fleet-orchestration)
|
||||
|
||||
## API Management
|
||||
|
||||
### GitOps (1)
|
||||
|
||||
+3
-34
@@ -1,3 +1,6 @@
|
||||
---
|
||||
description: "Top Golang resources for 2026, AI-ranked: Awesome Go, Dapr and more — curated Cloud Native tools, guides and references."
|
||||
---
|
||||
# Golang - Go
|
||||
|
||||
!!! tip "Nubenetes V2 Elite Portal"
|
||||
@@ -6,40 +9,6 @@
|
||||
!!! info "Architectural Context"
|
||||
Detailed reference for Golang - Go in the context of Developer Ecosystem.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
1. [Architecture](#architecture)
|
||||
- [Microservices](#microservices)
|
||||
- [Design Patterns](#design-patterns)
|
||||
- [Go Frameworks](#go-frameworks)
|
||||
1. [Business Applications](#business-applications)
|
||||
- [Go Web Apps](#go-web-apps)
|
||||
- [Email Analytics](#email-analytics)
|
||||
1. [Cloud Native](#cloud-native)
|
||||
- [Containers](#containers)
|
||||
- [Dockerizing Go](#dockerizing-go)
|
||||
- [Microservice Runtimes](#microservice-runtimes)
|
||||
- [Dapr](#dapr)
|
||||
- [Web Frameworks](#web-frameworks)
|
||||
- [Request Binding](#request-binding)
|
||||
1. [Cloud Native Languages](#cloud-native-languages)
|
||||
- [Go](#go)
|
||||
- [API Design](#api-design)
|
||||
- [Kubernetes Integration](#kubernetes-integration)
|
||||
- [Microservices Frameworks](#microservices-frameworks)
|
||||
- [Performance Tuning](#performance-tuning)
|
||||
- [Storage Integration](#storage-integration)
|
||||
1. [Programming Languages](#programming-languages)
|
||||
- [Go](#go-1)
|
||||
- [Project Scaffolding](#project-scaffolding)
|
||||
- [Resources](#resources)
|
||||
1. [Public Cloud](#public-cloud)
|
||||
- [Google Cloud](#google-cloud)
|
||||
- [Go Samples](#go-samples)
|
||||
1. [Software Engineering](#software-engineering)
|
||||
- [Web Development](#web-development)
|
||||
- [NodeJS](#nodejs)
|
||||
|
||||
## Architecture
|
||||
|
||||
### Microservices
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user