docs: overhaul all the docs

This moves our docs to a hugo-based doc setup with docsy theme.

Signed-off-by: Spencer Smith <spencer.smith@talos-systems.com>
This commit is contained in:
Spencer Smith 2022-03-18 08:45:03 -04:00
parent f477507262
commit e3fda049fe
No known key found for this signature in database
GPG Key ID: 036C4E711644C223
8197 changed files with 390415 additions and 38818 deletions

4
.gitignore vendored
View File

@ -31,3 +31,7 @@ sha512sum.txt
# Local Netlify folder
.netlify
*.lock
package-lock.json
node_modules

View File

@ -687,7 +687,8 @@ RUN markdownlint \
--ignore '**/CODE_OF_CONDUCT.md' \
--ignore '**/node_modules/**' \
--ignore '**/hack/chglog/**' \
--ignore 'website/content/docs/*/Reference/*' \
--ignore 'website/content/*/reference/*' \
--ignore 'website/themes/**' \
.
RUN find . \
-name '*.md' \
@ -696,7 +697,8 @@ RUN find . \
-not -path './CODE_OF_CONDUCT.md' \
-not -path '*/node_modules/*' \
-not -path './hack/chglog/**' \
-not -path './website/content/docs/*/Reference/*' \
-not -path './website/content/*/reference/*' \
-not -path './website/themes/**' \
-print0 \
| xargs -0 textlint
@ -732,9 +734,9 @@ RUN protoc \
/protos/time/*.proto
FROM scratch AS docs
COPY --from=docs-build /tmp/configuration.md /website/content/docs/v1.0/Reference/
COPY --from=docs-build /tmp/cli.md /website/content/docs/v1.0/Reference/
COPY --from=proto-docs-build /tmp/api.md /website/content/docs/v1.0/Reference/
COPY --from=docs-build /tmp/configuration.md /website/content/v1.0/reference/
COPY --from=docs-build /tmp/cli.md /website/content/v1.0/reference/
COPY --from=proto-docs-build /tmp/api.md /website/content/v1.0/reference/
# The talosctl-cni-bundle builds the CNI bundle for talosctl.

View File

@ -1,14 +1,7 @@
[build]
base = "website"
publish = "dist"
command = "gridsome build"
command = "cd website && hugo --gc --minify"
publish = "website/public"
[context.deploy-preview]
base = "website"
publish = "dist"
command = "gridsome build"
[context.branch-deploy]
base = "website"
publish = "dist"
command = "gridsome build"
[build.environment]
HUGO_VERSION = "0.93.2"
NODE_VERSION = "12.21.0"

24
package.json Normal file
View File

@ -0,0 +1,24 @@
{
"name": "tech-doc-hugo",
"version": "0.0.1",
"description": "Hugo theme for technical documentation.",
"main": "none.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/google/docsy-example.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://github.com/google/docsy-example/issues"
},
"homepage": "https://github.com/google/docsy-example#readme",
"devDependencies": {
"autoprefixer": "^10.4.0",
"postcss": "^8.3.7",
"postcss-cli": "^9.0.2"
}
}

1
website/.gitignore vendored
View File

@ -4,6 +4,7 @@
src/.temp
node_modules
dist
public
!.env.example
.env
.env.*

0
website/.hugo_build.lock Normal file
View File

3
website/Dockerfile Normal file
View File

@ -0,0 +1,3 @@
FROM klakegg/hugo:ext-alpine
RUN apk add git

201
website/LICENSE Normal file
View File

@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 203.74 226.05"><defs><style>.cls-1{fill:url(#linear-gradient);}.cls-2{fill:url(#linear-gradient-2);}.cls-3{fill:url(#linear-gradient-3);}.cls-4{fill:url(#linear-gradient-4);}.cls-5{fill:url(#linear-gradient-5);}</style><linearGradient id="linear-gradient" x1="101.85" y1="-12.91" x2="101.85" y2="224.04" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffd200"/><stop offset="0.08" stop-color="#ffb500"/><stop offset="0.2" stop-color="#ff8c00"/><stop offset="0.3" stop-color="#ff7300"/><stop offset="0.36" stop-color="#ff6a00"/><stop offset="0.48" stop-color="#fc4f0e"/><stop offset="0.65" stop-color="#f92f1e"/><stop offset="0.79" stop-color="#f81b27"/><stop offset="0.89" stop-color="#f7142b"/><stop offset="1" stop-color="#df162e"/></linearGradient><linearGradient id="linear-gradient-2" x1="24.84" y1="-12.91" x2="24.84" y2="224.04" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-3" x1="178.9" y1="-12.91" x2="178.9" y2="224.04" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-4" x1="145.06" y1="-12.91" x2="145.06" y2="224.04" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-5" x1="58.64" y1="-12.91" x2="58.64" y2="224.04" xlink:href="#linear-gradient"/></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M101.89,226.05c2.85,0,5.67-.15,8.46-.35V.35c-2.8-.21-5.62-.35-8.48-.35s-5.7.14-8.52.35V225.69c2.81.21,5.64.35,8.5.36Z"/><path class="cls-2" d="M11.56,50.9,9.12,48.47A112.82,112.82,0,0,0,.2,63.61c29.42,29.89,32.52,44.31,32.48,49.14C32.57,125,17.58,144.21,0,162a113.69,113.69,0,0,0,8.84,15.15c1-1,1.95-1.92,2.92-2.9,25.37-25.54,37.77-45.61,37.92-61.38S37.36,77,11.56,50.9Z"/><path class="cls-3" d="M192,174.29l2.92,2.9A113.69,113.69,0,0,0,203.74,162c-17.57-17.83-32.56-37.09-32.68-49.29-.11-11.9,14.79-31.15,32.46-49.18a112.88,112.88,0,0,0-8.9-15.1l-2.44,2.43c-25.8,26.05-38.27,46.34-38.12,62S166.61,148.75,192,174.29Z"/><path class="cls-4" d="M140.68,112.83c0-22,9.81-58.58,24.92-93.15A113,113,0,0,0,150.45,11c-16.54,37.27-26.78,76.91-26.78,101.87,0,24.15,11.09,64.23,27.93,101.7a113,113,0,0,0,14.84-8.77C150.85,170.73,140.68,134.07,140.68,112.83Z"/><path class="cls-5" d="M80,112.83C80,87.74,69.35,47.88,53,11.07a112.76,112.76,0,0,0-14.93,8.64C53.21,54.26,63,90.85,63,112.83c0,21.23-10.17,57.88-25.76,92.91a113.66,113.66,0,0,0,14.84,8.77C68.94,177.05,80,137,80,112.83Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,62 @@
//
// Right side toc
//
.td-sidebar-toc {
border-left: 1px solid $border-color;
@supports (position: sticky) {
position: sticky;
top: 4rem;
height: calc(100vh - 10rem);
overflow-y: auto;
}
order: 2;
padding-top: 0.75rem;
padding-bottom: 1.5rem;
vertical-align: top;
}
.td-page-meta {
a {
display: block;
font-weight: $font-weight-medium;
}
}
.td-toc {
a {
display: block;
font-weight: $font-weight-light;
padding-bottom: .25rem;
}
li {
list-style: none;
display: block;
}
li li {
margin-left: 0.5rem;
}
#TableOfContents {
// Hugo's ToC is a mouthful, this can be used to style the top level h2 entries.
> ul > li > ul > li > a {}
a {
color: $gray-600;
&:hover {
color: $secondary;
text-decoration: none;
}
}
}
ul {
padding-left: 0;
}
}

View File

@ -0,0 +1,162 @@
//
// Left side navigation
//
.td-sidebar-nav {
padding-right: 0.5rem;
margin-right: -15px;
margin-left: -15px;
@include media-breakpoint-up(md) {
@supports (position: sticky) {
max-height: calc(100vh - 10rem);
overflow-y: auto;
}
}
@include media-breakpoint-up(md) {
display: block !important;
}
&__section {
li {
list-style: none;
}
ul {
padding: 0;
margin: 0;
}
@include media-breakpoint-up(md) {
& .ul-1 ul {
padding-left: 1.5em;
}
}
padding-left: 0;
}
&__section-title {
display: block;
font-weight: $font-weight-medium;
.active {
font-weight: $font-weight-bold;
}
a {
color: $gray-900;
}
}
.td-sidebar-link {
display: block;
padding-bottom: 0.375rem;
&__page {
color: $gray-700;
font-weight: $font-weight-light;
}
}
a {
&:hover {
color: $secondary;
text-decoration: none;
}
&.active {
font-weight: $font-weight-bold;
}
}
.dropdown {
a {
color: $gray-700;
}
.nav-link {
padding: 0 0 1rem;
}
}
& > .td-sidebar-nav__section {
padding-top: .5rem;
padding-left: 1.5rem;
}
li i { // Layout of icons
padding-right: 0.5em;
&:before{
display: inline-block;
text-align: center;
min-width: 1em;
}
}
.td-sidebar-link.tree-root{
font-weight: $font-weight-bold;
color: $td-sidebar-tree-root-color;
border-bottom: 1px $td-sidebar-tree-root-color solid;
margin-bottom: 1rem;
}
}
.td-sidebar {
@include media-breakpoint-up(md) {
padding-top: 4rem;
background-color: $td-sidebar-bg-color;
padding-right: 1rem;
border-right: 1px solid $td-sidebar-border-color;
}
padding-bottom: 1rem;
&__toggle {
line-height: 1;
color: $gray-900;
margin: 1rem;
}
&__search {
padding: 1rem 15px;
margin-right: -15px;
margin-left: -15px;
}
&__inner {
order: 0;
@include media-breakpoint-up(md) {
@supports (position: sticky) {
position: sticky;
top: 4rem;
z-index: 10;
height: calc(100vh - 6rem);
}
}
@include media-breakpoint-up(xl) {
flex: 0 1 320px;
}
.td-search-box {
width: 100%;
}
}
#content-desktop {display: block;}
#content-mobile {display: none;}
@include media-breakpoint-down(md) {
#content-desktop {display: none;}
#content-mobile {display: block;}
}
}

View File

@ -0,0 +1,14 @@
/*
Add styles or override variables from the theme here.
*/
$google_font_name: "Fira Sans" !default;
$google_font_family: "Fira+Sans:300,300i,400,400i,700,700i" !default;
$primary: #281D49;
$secondary: #F92A20;
$link-color: $secondary;

220
website/config.toml Normal file
View File

@ -0,0 +1,220 @@
baseURL = "/"
title = "Talos Linux"
enableRobotsTXT = true
# Hugo allows theme composition (and inheritance). The precedence is from left to right.
theme = ["docsy"]
# Will give values to .Lastmod etc.
enableGitInfo = true
# Comment out to enable taxonomies in Docsy
# disableKinds = ["taxonomy", "taxonomyTerm"]
# You can add your own taxonomies
[taxonomies]
category = "categories"
tag = "tags"
[params.taxonomy]
# set taxonomyCloud = [] to hide taxonomy clouds
taxonomyCloud = ["tags", "categories"]
# If used, must have same lang as taxonomyCloud
taxonomyCloudTitle = ["Tag Cloud", "Categories"]
# set taxonomyPageHeader = [] to hide taxonomies on the page headers
taxonomyPageHeader = ["tags", "categories"]
# Highlighting config
pygmentsCodeFences = true
pygmentsUseClasses = false
# Use the new Chroma Go highlighter in Hugo.
pygmentsUseClassic = false
#pygmentsOptions = "linenos=table"
# See https://help.farbox.com/pygments.html
pygmentsStyle = "solarized-dark"
# Configure how URLs look like per section.
[permalinks]
blog = "/:section/:year/:month/:day/:slug/"
## Configuration for BlackFriday markdown parser: https://github.com/russross/blackfriday
[blackfriday]
angledQuotes = false
hrefTargetBlank = true
latexDashes = true
plainIDAnchors = true
# Image processing configuration.
[imaging]
anchor = "smart"
quality = 75
resampleFilter = "CatmullRom"
[services]
[services.googleAnalytics]
# Comment out the next line to disable GA tracking. Also disables the feature described in [params.ui.feedback].
id = "UA-00000000-0"
[markup]
[markup.goldmark]
[markup.goldmark.renderer]
unsafe = true
[markup.highlight]
# See a complete list of available styles at https://xyproto.github.io/splash/all.html
style = "solarized-dark"
# Uncomment if you want your chosen highlight style used for code blocks without a specified language
# guessSyntax = "true"
# Everything below this are Site Params
# Comment out if you don't want the "print entire section" link enabled.
[outputs]
section = ["HTML", "print", "RSS"]
[params]
copyright = "Sidero Labs, Inc."
# privacy_policy = "https://policies.google.com/privacy"
# First one is picked as the Twitter card image if not set on page.
# images = ["images/project-illustration.png"]
# Menu title if your navbar has a versions selector to access old versions of your site.
# This menu appears only if you have at least one [params.versions] set.
version_menu = "Releases"
# Flag used in the "version-banner" partial to decide whether to display a
# banner on every page indicating that this is an archived version of the docs.
# Set this flag to "true" if you want to display the banner.
# archived_version = false
# The version number for the version of the docs represented in this doc set.
# Used in the "version-banner" partial to display a version number for the
# current doc set.
# version = "0.6"
# A link to latest version of the docs. Used in the "version-banner" partial to
# point people to the main doc site.
url_latest_version = "/v0.14"
# Repository configuration (URLs for in-page links to opening issues and suggesting changes)
# github_repo = "https://github.com/googley-example"
# An optional link to a related project repo. For example, the sibling repository where your product code lives.
# github_project_repo = "https://github.com/googley"
# Specify a value here if your content directory is not in your repo's root directory
# github_subdir = ""
# Uncomment this if you have a newer GitHub repo with "main" as the default branch,
# or specify a new value if you want to reference another branch in your GitHub links
# github_branch= "main"
# Google Custom Search Engine ID. Remove or comment out to disable search.
# gcs_engine_id = "d72aa9b2712488cc3"
# Enable Algolia DocSearch
algolia_docsearch = false
# Enable Lunr.js offline search
offlineSearch = false
# Enable syntax highlighting and copy buttons on code blocks with Prism
prism_syntax_highlighting = false
[[params.versions]]
url = "/v1.0"
version = "v1.0 (pre-release)"
[[params.versions]]
url = "/v0.14"
version = "v0.14 (latest)"
[[params.versions]]
url = "/v0.13"
version = "v0.13"
[[params.versions]]
url = "/v0.12"
version = "v0.12"
[[params.versions]]
url = "/v0.11"
version = "v0.11"
[[params.versions]]
url = "/v0.10"
version = "v0.10"
[[params.versions]]
url = "/v0.9"
version = "v0.9"
[[params.versions]]
url = "/v0.8"
version = "v0.8"
[[params.versions]]
url = "/v0.7"
version = "v0.7"
[[params.versions]]
url = "/v0.6"
version = "v0.6"
# User interface configuration
[params.ui]
# Set to true to disable breadcrumb navigation.
breadcrumb_disable = false
# Set to true to disable the About link in the site footer
footer_about_disable = false
# Set to false if you don't want to display a logo (/assets/icons/logo.svg) in the top navbar
navbar_logo = true
# Set to true if you don't want the top navbar to be translucent when over a `block/cover`, like on the homepage.
navbar_translucent_over_cover_disable = false
# Enable to show the side bar menu in its compact state.
sidebar_menu_compact = true
# Set to true to hide the sidebar search box (the top nav search box will still be displayed if search is enabled)
sidebar_search_disable = true
# Adds a H2 section titled "Feedback" to the bottom of each doc. The responses are sent to Google Analytics as events.
# This feature depends on [services.googleAnalytics] and will be disabled if "services.googleAnalytics.id" is not set.
# If you want this feature, but occasionally need to remove the "Feedback" section from a single page,
# add "hide_feedback: true" to the page's front matter.
[params.ui.feedback]
enable = false
# The responses that the user sees after clicking "yes" (the page was helpful) or "no" (the page was not helpful).
no = 'Sorry to hear that. Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
yes = 'Glad to hear it! Please <a href="https://github.com/USERNAME/REPOSITORY/issues/new">tell us how we can improve</a>.'
# Adds a reading time to the top of each doc.
# If you want this feature, but occasionally need to remove the Reading time from a single page,
# add "hide_readingtime: true" to the page's front matter
[params.ui.readingtime]
enable = false
[params.links]
# End user relevant links. These will show up on left side of footer and in the community page if you have one.
[[params.links.developer]]
desc = "Follow us on Twitter to get the latest news!"
icon = "fab fa-twitter"
name = "Twitter"
url = "https://twitter.com/SideroLabs"
# Developer relevant links. These will show up on right side of footer and in the community page if you have one.
[[params.links.developer]]
desc = "Development takes place here!"
icon = "fab fa-github"
name = "GitHub"
url = "https://github.com/talos-systems/talos"
[[menu.main]]
name = "GitHub"
url = "https://github.com/talos-systems/talos"
weight = 99
[[menu.main]]
name = "Sidero Metal"
url = "https://sidero.dev"
weight = 98

251
website/content/_index.html Normal file
View File

@ -0,0 +1,251 @@
+++
title = "Talos Linux?"
+++
<section class="">
<div class="container">
<div class="row align-items-center">
<div class="col-12 col-lg-6">
<h1 class="display-1 text-center mb-5">What is Talos Linux?</h1>
<p class="">
Talos Linux is Linux designed for Kubernetes secure, immutable, and minimal.
</p>
<ul class="">
<li class="">
Supports cloud platforms, bare metal, and virtualization platforms
</li>
<li class="">
All system management is done via an API. No SSH, shell or console
</li>
<li class="">
Production ready: supports some of the largest Kubernetes clusters in the world
</li>
<li class="">
Open source project from the team at Sidero Labs
</li>
</ul>
<div class="row align-items-center">
<div class="col-8">
<p class="my-5 h5">
It only takes 3 minutes to launch a Talos cluster on your laptop inside Docker.
</p>
</div>
<div class="col-4 text-center">
<a class="btn btn-primary btn-lg my-5" href="https://www.talos.dev/docs/latest/introduction/quickstart/">
Try it now
</a>
</div>
</div>
</div>
<div class="col-12 col-lg-6">
<img class="img-fluid rounded" src="/images/talos-arch.svg" alt="Featured Image">
</div>
</div>
</div>
</section>
<section class="">
<div class="container">
<h2 class="display-2 text-center mb-5">Why Talos Linux?</h2>
<div class="row mb-5">
<div class="col-12 col-lg-4">
<h3 class="display-4 text-center mb-3">Security</h3>
<p class="">
Talos reduces your attack surface. It's minimal, hardened and
immutable. All API access is secured with mutual TLS (mTLS)
authentication.
</p>
</div>
<div class="col-12 col-lg-4">
<h3 class="display-4 text-center mb-3">Predictability</h3>
<p class="">
Talos eliminates configuration drift, reduces unknown factors by
employing immutable infrastructure ideology, and delivers atomic
updates.
</p>
</div>
<div class="col-12 col-lg-4">
<h3 class="display-4 text-center mb-3">Evolvability</h3>
<p class="">
Talos simplifies your architecture, increases your agility, and makes
always delivers current stable Kubernetes and Linux versions.
</p>
</div>
</div>
<div class="row justify-content-center">
<div class="col-12 col-lg-8">
<h3 class="display-4 text-center mb-4">API Driven</h3>
<div class="text-center">
<div class="tab-content mb-3" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-cluster" role="tabpanel" aria-labelledby="pills-cluster-tab">
<asciinema-player autoplay loop rows="29" preload src="/asciinema/cluster-create.cast"></asciinema-player>
</div>
<div class="tab-pane fade" id="pills-services" role="tabpanel" aria-labelledby="pills-services-tab">
<asciinema-player autoplay loop rows="29" preload src="/asciinema/talosctl-services.cast"></asciinema-player>
</div>
<div class="tab-pane fade" id="pills-routes" role="tabpanel" aria-labelledby="pills-routes-tab">
<asciinema-player autoplay loop rows="29" preload src="/asciinema/talosctl-routes.cast"></asciinema-player>
</div>
<div class="tab-pane fade" id="pills-interfaces" role="tabpanel" aria-labelledby="pills-interfaces-tab">
<asciinema-player autoplay loop rows="29" preload src="/asciinema/talosctl-interfaces.cast"></asciinema-player>
</div>
<div class="tab-pane fade" id="pills-containers" role="tabpanel" aria-labelledby="pills-containers-tab">
<asciinema-player autoplay loop rows="29" preload src="/asciinema/talosctl-containers.cast"></asciinema-player>
</div>
<div class="tab-pane fade" id="pills-processes" role="tabpanel" aria-labelledby="pills-processes-tab">
<asciinema-player autoplay loop rows="29" preload src="/asciinema/talosctl-processes.cast"></asciinema-player>
</div>
<div class="tab-pane fade" id="pills-mounts" role="tabpanel" aria-labelledby="pills-mounts-tab">
<asciinema-player autoplay loop rows="29" preload src="/asciinema/talosctl-mounts.cast"></asciinema-player>
</div>
</div>
<script src="/asciinema/asciinema-player.js"></script>
<ul class="nav nav-pills justify-content-center" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<a class="btn btn-primary font-weight-bold mx-1 active" id="pills-cluester-tab" data-toggle="pill" href="#pills-cluster" role="tab" aria-controls="pills-cluster" aria-selected="true">
Cluster
</a>
</li>
<li class="nav-item" role="presentation">
<a class="btn btn-primary font-weight-bold mx-1" id="pills-services-tab" data-toggle="pill" href="#pills-services" role="tab" aria-controls="pills-services" aria-selected="false">
Services
</a>
</li>
<li class="nav-item" role="presentation">
<a class="btn btn-primary font-weight-bold mx-1" id="pills-routes-tab" data-toggle="pill" href="#pills-routes" role="tab" aria-controls="pills-routes" aria-selected="false">
Routes
</a>
</li>
<li class="nav-item" role="presentation">
<a class="btn btn-primary font-weight-bold mx-1" id="pills-interfaces-tab" data-toggle="pill" href="#pills-interfaces" role="tab" aria-controls="pills-interfaces" aria-selected="false">
Interfaces
</a>
</li>
<li class="nav-item" role="presentation">
<a class="btn btn-primary font-weight-bold mx-1" id="pills-containers-tab" data-toggle="pill" href="#pills-containers" role="tab" aria-controls="pills-containers" aria-selected="false">
Containers
</a>
</li>
<li class="nav-item" role="presentation">
<a class="btn btn-primary font-weight-bold mx-1" id="pills-processes-tab" data-toggle="pill" href="#pills-processes" role="tab" aria-controls="pills-processes" aria-selected="false">
Processes
</a>
</li>
<li class="nav-item" role="presentation">
<a class="btn btn-primary font-weight-bold mx-1" id="pills-mounts-tab" data-toggle="pill" href="#pills-mounts" role="tab" aria-controls="pills-mounts" aria-selected="false">
Mounts
</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</section>
<section class="">
<div class="container">
<h2 class="display-2 text-center mb-5">Built with Modern Technology</h2>
<div class="row justify-content-center align-items-center mb-5">
<div class="col-7 col-sm-3 col-md-3 col-lg-2 mb-2">
<a class="d-flex justify-content-center" href="https://www.musl-libc.org/">
<img class="img-fluid" src="/images/musl-logo.png" alt="Musl Logo">
</a>
</div>
<div class="col-7 col-sm-3 col-md-3 col-lg-2 mb-2">
<a class="d-flex justify-content-center" href="https://golang.org/">
<img class="img-fluid" src="/images/go-logo.png" alt="Go Logo">
</a>
</div>
<div class="col-7 col-sm-3 col-md-3 col-lg-2 mb-2">
<a class="d-flex justify-content-center" href="https://grpc.io/">
<img class="img-fluid" src="/images/grpc-logo.png" alt="GRPC Logo">
</a>
</div>
<div class="col-7 col-sm-3 col-md-3 col-lg-2 mb-2">
<a class="d-flex justify-content-center" href="https://containerd.io/">
<img class="img-fluid" src="/images/containerd-logo.png" alt="Containerd Logo">
</a>
</div>
</div>
</div>
</section>
<section class="">
<div class="container">
<h2 class="display-2 text-center mb-5">Features</h2>
<div class="row justify-content-center mb-5">
<div class="col-12 col-lg-4 mb-3">
<h3 class="display-4 text-center mb-3">Minimal</h3>
<p class="text-center">
Talos consists of only a handful of binaries and shared libraries:
just enough to run containerd and a small set of system services.
</p>
<p class="text-center">
This aligns with NIST's recommendation in the Application Container
Security Guide.
</p>
</div>
<div class="col-12 col-lg-4 mb-3">
<h3 class="display-4 text-center mb-3">Hardened</h3>
<p class="text-center">
Hardened by design:
</p>
<ul class="pl-4">
<li>
Built with the Kernel Self Protection Project configuration
recommendations.
</li>
<li>
All access to the API is secured with Mutual TLS.
</li>
<li>
Settings and configuration described in the CIS guidelines are
applied by default.
</li>
</ul>
</div>
<div class="col-12 col-lg-4 mb-3">
<h3 class="display-4 text-center mb-3">Immutable</h3>
<p class="text-center">
Talos improves security further by mounting the root filesystem as
read-only and removing any host-level such as a shell and SSH.
</p>
</div>
<div class="col-12 col-lg-4 mb-3">
<h3 class="display-4 text-center mb-3">Ephemeral</h3>
<p class="text-center">
Talos runs in memory from a SquashFS, and persists nothing, leaving
the primary disk entirely to Kubernetes.
</p>
</div>
<div class="col-12 col-lg-4 mb-3">
<h3 class="display-4 text-center mb-3">Current</h3>
<p class="text-center">
Delivers the latest stable versions of Kubernetes and Linux.
</p>
</div>
</div>
</div>
</section>
<section class="">
<div class="container">
<div class="row mb-5">
<div class="col-12 text-center">
<img width="142" class="" src="/images/certified-kubernetes-color.png" alt="Certified Kubernetes">
</div>
</div>
<div class="row">
<div class="col-12 text-center">
<img width="250" class="" src="/images/cncf-color.png" alt="Certified Kubernetes">
<p class="my-3"> We are a <a class="" href="https://cncf.io/"> Cloud Native Computing Foundation </a> member. </p>
</div>
</div>
</div>
</section>

View File

@ -1,300 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<mxfile host="app.diagrams.net" modified="2020-05-25T14:12:17.308Z" agent="5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" etag="4B96V3HgWXW47_1BOvdN" version="13.1.3" type="google">
<diagram id="6a731a19-8d31-9384-78a2-239565b7b9f0" name="Page-1">
<mxGraphModel dx="1466" dy="1034" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="#ffffff" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-47" value="" style="rounded=1;whiteSpace=wrap;html=1;opacity=15;glass=0;comic=0;shadow=0;fillColor=#7EA6E0;strokeColor=none;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="220" y="470" width="790" height="150" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-46" value="" style="rounded=1;whiteSpace=wrap;html=1;opacity=15;glass=0;comic=0;shadow=0;fillColor=#7EA6E0;strokeColor=none;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="220" y="280" width="790" height="160" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-44" value="" style="rounded=1;whiteSpace=wrap;html=1;opacity=15;glass=0;comic=0;shadow=0;fillColor=#7EA6E0;strokeColor=none;fontColor=#333333;" parent="1" vertex="1">
<mxGeometry x="220" y="55" width="790" height="190" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2264" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2261" target="llW36Z6Rt84rUSSrsS7a-2263" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2269" value="&lt;font style=&quot;font-size: 14px&quot;&gt;/kernel&lt;br&gt;/initrd&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="llW36Z6Rt84rUSSrsS7a-2264" vertex="1" connectable="0">
<mxGeometry x="-0.1964" y="-1" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0;entryY=0;entryDx=0;entryDy=20;entryPerimeter=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2261" target="bVEIqQj0H8-dYpoVZ-Ug-22" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="140" y="170" />
<mxPoint x="140" y="345" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2261" value="&lt;font style=&quot;font-size: 14px&quot;&gt;PXE&lt;/font&gt;" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="80" y="130" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2266" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2263" target="llW36Z6Rt84rUSSrsS7a-2265" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2275" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2263" target="llW36Z6Rt84rUSSrsS7a-2272" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2263" value="1" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="240" y="130" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2293" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0;entryDx=50;entryDy=40;entryPerimeter=0;endArrow=none;endFill=0;startArrow=classic;startFill=1;exitX=0;exitY=0;exitDx=0;exitDy=20;exitPerimeter=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2291" target="llW36Z6Rt84rUSSrsS7a-2261" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="120" y="535" />
<mxPoint x="120" y="170" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2295" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2291" target="llW36Z6Rt84rUSSrsS7a-2294" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2297" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=open;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2291" target="llW36Z6Rt84rUSSrsS7a-2296" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2291" value="1" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="240" y="520" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2299" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=open;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2296" target="llW36Z6Rt84rUSSrsS7a-2298" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2308" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=20;exitDy=40;exitPerimeter=0;entryX=0;entryY=0;entryDx=0;entryDy=10;entryPerimeter=0;startArrow=open;startFill=0;endArrow=none;endFill=0;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2296" target="llW36Z6Rt84rUSSrsS7a-2262" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="370" y="555" />
<mxPoint x="370" y="640" />
<mxPoint x="50" y="640" />
<mxPoint x="50" y="80" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2309" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Get join.yaml&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;spacingBottom=15;" parent="llW36Z6Rt84rUSSrsS7a-2308" vertex="1" connectable="0">
<mxGeometry x="-0.2436" y="1" relative="1" as="geometry">
<mxPoint x="52" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2310" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2296" target="llW36Z6Rt84rUSSrsS7a-2300" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2296" value="2" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="400" y="520" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2304" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=open;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2298" target="llW36Z6Rt84rUSSrsS7a-2303" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2311" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2298" target="llW36Z6Rt84rUSSrsS7a-2301" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2298" value="3" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="560" y="520" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2306" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=open;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2303" target="llW36Z6Rt84rUSSrsS7a-2305" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2312" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2303" target="llW36Z6Rt84rUSSrsS7a-2302" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2303" value="4" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="720" y="520" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2313" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2305" target="llW36Z6Rt84rUSSrsS7a-2307" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2305" value="5" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="880" y="520" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2268" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2265" target="llW36Z6Rt84rUSSrsS7a-2267" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2270" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0;entryDx=80;entryDy=20;entryPerimeter=0;startArrow=open;startFill=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2265" target="llW36Z6Rt84rUSSrsS7a-2262" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="440" y="110" />
<mxPoint x="275" y="110" />
<mxPoint x="275" y="90" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2276" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Get init.yaml&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;spacingBottom=15;" parent="llW36Z6Rt84rUSSrsS7a-2270" vertex="1" connectable="0">
<mxGeometry x="-0.0929" relative="1" as="geometry">
<mxPoint x="20" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2278" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2265" target="llW36Z6Rt84rUSSrsS7a-2277" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2265" value="2" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="400" y="130" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2280" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2267" target="llW36Z6Rt84rUSSrsS7a-2279" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2282" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2267" target="llW36Z6Rt84rUSSrsS7a-2281" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2267" value="3" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="560" y="130" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2286" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2281" target="llW36Z6Rt84rUSSrsS7a-2285" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-60" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=80;exitDy=20;exitPerimeter=0;entryX=0;entryY=0;entryDx=0;entryDy=20;entryPerimeter=0;startArrow=none;startFill=0;strokeWidth=1;fontSize=16;endArrow=open;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2281" target="llW36Z6Rt84rUSSrsS7a-2283" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2281" value="4" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="720" y="130" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2288" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2283" target="llW36Z6Rt84rUSSrsS7a-2287" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2283" value="5" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="880" y="130" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="YOrMSVGsVeQHUvAbK1ju-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=10;exitDy=30;exitPerimeter=0;startArrow=none;startFill=0;endArrow=open;endFill=0;entryX=0.544;entryY=0.06;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="llW36Z6Rt84rUSSrsS7a-2262" target="bVEIqQj0H8-dYpoVZ-Ug-25" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="60" y="100" />
<mxPoint x="60" y="270" />
<mxPoint x="444" y="270" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="YOrMSVGsVeQHUvAbK1ju-2" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Get controlplane.yaml&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="YOrMSVGsVeQHUvAbK1ju-1" vertex="1" connectable="0">
<mxGeometry x="0.5392" y="2" relative="1" as="geometry">
<mxPoint y="-8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2262" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Webserver&lt;/font&gt;" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
<mxGeometry x="70" y="70" width="90" height="40" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2272" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Live boot Talos&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="250" y="200" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2277" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Get config from webserver&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="400" y="200" width="100" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2279" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Install Talos&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="560" y="200" width="96" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2285" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Reboot to Talos&amp;nbsp;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="720" y="200" width="96" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2287" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Init cluster&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="880" y="200" width="96" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2294" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Live boot Talos&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="250" y="590" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2300" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Get config from webserver&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="400" y="590" width="100" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2301" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Install Talos&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="560" y="590" width="96" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2302" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Reboot to Talos&amp;nbsp;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="720" y="590" width="96" height="20" as="geometry" />
</mxCell>
<mxCell id="llW36Z6Rt84rUSSrsS7a-2307" value="&lt;span style=&quot;font-size: 14px&quot;&gt;Join cluster&lt;/span&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="880" y="590" width="110" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-1" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Loadbalancer&lt;/font&gt;" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;fillColor=#dae8fc;strokeColor=#6c8ebf;perimeterSpacing=0;" parent="1" vertex="1">
<mxGeometry x="1170" y="140" width="120" height="40" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-22" target="bVEIqQj0H8-dYpoVZ-Ug-34" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-21" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=open;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-22" target="bVEIqQj0H8-dYpoVZ-Ug-25" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-22" value="1" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="240" y="330" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-23" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=open;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-25" target="bVEIqQj0H8-dYpoVZ-Ug-28" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-25" target="bVEIqQj0H8-dYpoVZ-Ug-35" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-25" value="2" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="400" y="330" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-26" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=open;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-28" target="bVEIqQj0H8-dYpoVZ-Ug-31" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-27" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-28" target="bVEIqQj0H8-dYpoVZ-Ug-36" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-28" value="3" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="560" y="330" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-29" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=none;startFill=0;endArrow=open;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-31" target="bVEIqQj0H8-dYpoVZ-Ug-33" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-30" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-31" target="bVEIqQj0H8-dYpoVZ-Ug-37" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-31" value="4" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="1" vertex="1">
<mxGeometry x="720" y="330" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0;exitDx=50;exitDy=40;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-33" target="bVEIqQj0H8-dYpoVZ-Ug-38" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-33" value="5" style="shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;perimeterSpacing=5;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
<mxGeometry x="880" y="330" width="80" height="40" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-34" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Live boot Talos&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="250" y="400" width="70" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-35" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Get config from webserver&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="400" y="400" width="100" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-36" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Install Talos&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="560" y="400" width="96" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-37" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Reboot to Talos&amp;nbsp;&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="720" y="400" width="96" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-38" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Join cluster&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;perimeterSpacing=6;" parent="1" vertex="1">
<mxGeometry x="880" y="400" width="110" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-48" value="&lt;font style=&quot;font-size: 18px&quot;&gt;Controlplane&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=0;glass=0;comic=0;labelBackgroundColor=none;opacity=15;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="580" y="282" width="40" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-49" value="&lt;font style=&quot;font-size: 18px&quot;&gt;Init Node&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=0;glass=0;comic=0;labelBackgroundColor=none;opacity=15;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="533" y="59" width="120" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-50" value="&lt;font style=&quot;font-size: 18px&quot;&gt;Worker node&lt;/font&gt;" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;shadow=0;glass=0;comic=0;labelBackgroundColor=none;opacity=15;fontStyle=1" parent="1" vertex="1">
<mxGeometry x="549.5" y="475" width="117" height="20" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0;entryDx=0;entryDy=20;entryPerimeter=0;fontSize=20;strokeWidth=1;startArrow=open;startFill=0;endArrow=open;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-51" target="bVEIqQj0H8-dYpoVZ-Ug-1" edge="1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-55" value="&lt;font style=&quot;font-size: 14px&quot;&gt;port: 6443&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=16;" parent="bVEIqQj0H8-dYpoVZ-Ug-52" vertex="1" connectable="0">
<mxGeometry x="-0.1974" y="11" relative="1" as="geometry">
<mxPoint x="11" y="-11" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-51" value="" style="shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;shadow=0;glass=0;comic=0;labelBackgroundColor=none;fillColor=#7EA6E0;strokeWidth=1;rotation=-180;" parent="1" vertex="1">
<mxGeometry x="1020" y="50" width="20" height="400" as="geometry" />
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=open;startFill=0;strokeWidth=1;fontSize=16;entryX=0;entryY=0;entryDx=70;entryDy=40;entryPerimeter=0;endSize=6;endArrow=open;endFill=0;" parent="1" source="bVEIqQj0H8-dYpoVZ-Ug-57" target="bVEIqQj0H8-dYpoVZ-Ug-1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1270" y="300" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-59" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Port: 443&lt;/font&gt;" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=16;" parent="bVEIqQj0H8-dYpoVZ-Ug-58" vertex="1" connectable="0">
<mxGeometry x="0.2254" y="5" relative="1" as="geometry">
<mxPoint as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="bVEIqQj0H8-dYpoVZ-Ug-57" value="&lt;font style=&quot;font-size: 14px&quot;&gt;Kubectl&lt;/font&gt;" style="outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3E;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.user;rounded=1;shadow=0;glass=0;comic=0;labelBackgroundColor=none;" parent="1" vertex="1">
<mxGeometry x="1170" y="360" width="48" height="48" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@ -1,111 +0,0 @@
---
title: Upgrades
weight: 5
---
## Talos
The upgrade process for Talos, like everything else, begins with an API call.
This call tells a node the installer image to use to perform the upgrade.
Each Talos version corresponds to an installer with the same version, such that the
version of the installer is the version of Talos which will be installed.
Because Talos is image based, even at run-time, upgrading Talos is almost
exactly the same set of operations as installing Talos, with the difference that
the system has already been initialized with a configuration.
An upgrade makes use of an A-B image scheme in order to facilitate rollbacks.
This scheme retains the one previous Talos kernel and OS image following each upgrade.
If an upgrade fails to boot, Talos will roll back to the previous version.
Likewise, Talos may be manually rolled back via API (or `talosctl rollback`).
This will simply update the boot reference and reboot.
An upgrade can `preserve` data or not.
If Talos is told to NOT preserve data, it will wipe its ephemeral partition, remove itself from the etcd cluster (if it is a control node), and generally make itself as pristine as is possible.
There are likely to be changes to the default option here over time, so if your setup has a preference to one way or the other, it is better to specify it explicitly, but we try to always be "safe" with this setting.
### Sequence
When a Talos node receives the upgrade command, the first thing it does is cordon
itself in kubernetes, to avoid receiving any new workload.
It then starts to drain away its existing workload.
**NOTE**: If any of your workloads is sensitive to being shut down ungracefully, be sure to use the `lifecycle.preStop` Pod [spec](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks).
Once all of the workload Pods are drained, Talos will start shutting down its
internal processes.
If it is a control node, this will include etcd.
If `preserve` is not enabled, Talos will even leave etcd membership.
(Don't worry about this; we make sure the etcd cluster is healthy and that it will remain healthy after our node departs, before we allow this to occur.)
Once all the processes are stopped and the services are shut down, all of the
filesystems will be unmounted.
This allows Talos to produce a very clean upgrade, as close as possible to a pristine system.
We verify the disk and then perform the actual image upgrade.
Finally, we tell the bootloader to boot _once_ with the new kernel and OS image.
Then we reboot.
After the node comes back up and Talos verifies itself, it will make permanent
the bootloader change, rejoin the cluster, and finally uncordon itself to receive new workloads.
### FAQs
**Q.** What happens if an upgrade fails?
**A.** There are many potential ways an upgrade can fail, but we always try to do
the safe thing.
The most common first failure is an invalid installer image reference.
In this case, Talos will fail to download the upgraded image and will abort the upgrade.
Sometimes, Talos is unable to successfully kill off all of the disk access points, in which case it cannot safely unmount all filesystems to effect the upgrade.
In this case, it will abort the upgrade and reboot.
It is possible (especially with test builds) that the upgraded Talos system will fail to start.
In this case, the node will be rebooted, and the bootloader will automatically use the previous Talos kernel and image, thus effectively aborting the upgrade.
Lastly, it is possible that Talos itself will upgrade successfully, start up, and rejoin the cluster but your workload will fail to run on it, for whatever reason.
This is when you would use the `talosctl rollback` command to revert back to the previous Talos version.
**Q.** Can upgrades be scheduled?
**A.** We provide the [Talos Controller Manager](https://github.com/talos-systems/talos-controller-manager) to coordinate upgrades of a cluster.
Additionally, because the upgrade sequence is API-driven, you can easily tie this in to your own business logic to schedule and coordinate your upgrades.
**Q.** Can the upgrade process be observed?
**A.** The Talos Controller Manager does this internally, watching the logs of
the node being upgraded, using the streaming log API of Talos.
You can do the same thing using the `talosctl logs --follow machined` command.
**Q.** Are worker node upgrades handled differently from control plane node upgrades?
**A.** Short answer: no.
Long answer: Both node types follow the same set procedure.
However, since control plane nodes run additional services, such as etcd, there are some extra steps and checks performed on them.
From the user's standpoint, however, the processes are identical.
There are also additional restrictions on upgrading control plane nodes.
For instance, Talos will refuse to upgrade a control plane node if that upgrade will cause a loss of quorum for etcd.
This can generally be worked around by setting `preserve` to `true`.
**Q.** Will an upgrade try to do the whole cluster at once?
Can I break my cluster by upgrading everything?
**A.** No.
Nothing prevents the user from sending any number of near-simultaneous upgrades to each node of the cluster.
While most people would not attempt to do this, it may be the desired behavior in certain situations.
If, however, multiple control plane nodes are asked to upgrade at the same time, Talos will protect itself by making sure only one control plane node upgrades at any time, through its checking of etcd quorum.
A lease is taken out by the winning control plane node, and no other control plane node is allowed to execute the upgrade until the lease is released and the etcd cluster is healthy and _will_ be healthy when the next node performs its upgrade.
**Q.** Is there an operator or controller which will keep my nodes updated
automatically?
**A.** Yes.
We provide the [Talos Controller Manager](https://github.com/talos-systems/talos-controller-manager) to perform this maintenance in a simple, controllable fashion.

View File

@ -1,46 +0,0 @@
---
title: Welcome
---
## Welcome
Welcome to the Talos documentation.
If you are just getting familiar with Talos, we recommend starting here:
- [What is Talos](introduction/what-is-talos/): a quick description of Talos
- [Quickstart](introduction/quickstart/): the fastest way to get a Talos cluster up and running
- [Getting Started](introduction/getting-started/): a long-form, guided tour of getting a full Talos cluster deployed
## Open Source
### Community
- GitHub: [repo](https://github.com/talos-systems/talos)
- Slack: Join our [slack channel](https://slack.dev.talos-systems.io)
- Matrix: Join our Matrix channels:
- Community: [#talos:matrix.org](https://matrix.to/#/#talos:matrix.org)
- Support: [#talos-support:matrix.org](https://matrix.to/#/#talos-support:matrix.org)
- Support: Questions, bugs, feature requests [GitHub Discussions](https://github.com/talos-systems/talos/discussions)
- Forum: [community](https://groups.google.com/a/siderolabs.com/forum/#!forum/community)
- Twitter: [@SideroLabs](https://twitter.com/talossystems)
- Email: [info@SideroLabs.com](mailto:info@SideroLabs.com)
If you're interested in this project and would like to help in engineering efforts, or have general usage questions, we are happy to have you!
We hold a weekly meeting that all audiences are welcome to attend.
We would appreciate your feedback so that we can make Talos even better!
To do so, you can take our [survey](https://docs.google.com/forms/d/1TUna5YTYGCKot68Y9YN_CLobY6z9JzLVCq1G7DoyNjA/edit).
### Office Hours
- When: Mondays at 16:30 UTC.
- Where: [Google Meet](https://meet.google.com/day-pxhv-zky).
You can subscribe to this meeting by joining the community forum above.
## Enterprise
If you are using Talos in a production setting, and need consulting services to get started or to integrate Talos into your existing environment, we can help.
Sidero Labs, Inc. offers support contracts with SLA (Service Level Agreement)-bound terms for mission-critical environments.
[Learn More](https://www.siderolabs.com/support/)

View File

@ -1,45 +0,0 @@
---
title: "Configuring the Cluster Endpoint"
description: ""
---
In this section, we will step through the configuration of a Talos based Kubernetes cluster.
There are three major components we will configure:
- `apid` and `talosctl`
- the master nodes
- the worker nodes
Talos enforces a high level of security by using mutual TLS for authentication and authorization.
We recommend that the configuration of Talos be performed by a cluster owner.
A cluster owner should be a person of authority within an organization, perhaps a director, manager, or senior member of a team.
They are responsible for storing the root CA, and distributing the PKI for authorized cluster administrators.
### Recommended settings
Talos runs great out of the box, but if you tweak some minor settings it will make your life
a lot easier in the future.
This is not a requirement, but rather a document to explain some key settings.
#### Endpoint
To configure the `talosctl` endpoint, it is recommended you use a resolvable DNS name.
This way, if you decide to upgrade to a multi-controlplane cluster you only have to add the ip address to the hostname configuration.
The configuration can either be done on a Loadbalancer, or simply trough DNS.
For example:
> This is in the config file for the cluster e.g. init.yaml, controlplane.yaml and join.yaml.
> for more details, please see: [v1alpha1 endpoint configuration](https://www.talos.dev/docs/v0.6/en/configuration/v1alpha1#controlplane)
```yaml
.....
cluster:
controlPlane:
endpoint: https://endpoint.example.local:6443
.....
```
If you have a DNS name as the endpoint, you can upgrade your talos cluster with multiple controlplanes in the future (if you don't have a multi-controlplane setup from the start)
Using a DNS name generates the corresponding Certificates (Kubernetes and Talos) for the correct hostname.

View File

@ -1,46 +0,0 @@
---
title: Welcome
---
## Welcome
Welcome to the Talos documentation.
If you are just getting familiar with Talos, we recommend starting here:
- [What is Talos](introduction/what-is-talos/): a quick description of Talos
- [Quickstart](introduction/quickstart/): the fastest way to get a Talos cluster up and running
- [Getting Started](introduction/getting-started/): a long-form, guided tour of getting a full Talos cluster deployed
## Open Source
### Community
- GitHub: [repo](https://github.com/talos-systems/talos)
- Slack: Join our [slack channel](https://slack.dev.talos-systems.io)
- Matrix: Join our Matrix channels:
- Community: [#talos:matrix.org](https://matrix.to/#/#talos:matrix.org)
- Support: [#talos-support:matrix.org](https://matrix.to/#/#talos-support:matrix.org)
- Support: Questions, bugs, feature requests [GitHub Discussions](https://github.com/talos-systems/talos/discussions)
- Forum: [community](https://groups.google.com/a/siderolabs.com/forum/#!forum/community)
- Twitter: [@SideroLabs](https://twitter.com/talossystems)
- Email: [info@SideroLabs.com](mailto:info@SideroLabs.com)
If you're interested in this project and would like to help in engineering efforts, or have general usage questions, we are happy to have you!
We hold a weekly meeting that all audiences are welcome to attend.
We would appreciate your feedback so that we can make Talos even better!
To do so, you can take our [survey](https://docs.google.com/forms/d/1TUna5YTYGCKot68Y9YN_CLobY6z9JzLVCq1G7DoyNjA/edit).
### Office Hours
- When: Mondays at 16:30 UTC.
- Where: [Google Meet](https://meet.google.com/day-pxhv-zky).
You can subscribe to this meeting by joining the community forum above.
## Enterprise
If you are using Talos in a production setting, and need consulting services to get started or to integrate Talos into your existing environment, we can help.
Sidero Labs, Inc. offers support contracts with SLA (Service Level Agreement)-bound terms for mission-critical environments.
[Learn More](https://www.siderolabs.com/support/)

View File

@ -1,46 +0,0 @@
---
title: Welcome
---
## Welcome
Welcome to the Talos documentation.
If you are just getting familiar with Talos, we recommend starting here:
- [What is Talos](introduction/what-is-talos/): a quick description of Talos
- [Quickstart](introduction/quickstart/): the fastest way to get a Talos cluster up and running
- [Getting Started](introduction/getting-started/): a long-form, guided tour of getting a full Talos cluster deployed
## Open Source
### Community
- GitHub: [repo](https://github.com/talos-systems/talos)
- Slack: Join our [slack channel](https://slack.dev.talos-systems.io)
- Matrix: Join our Matrix channels:
- Community: [#talos:matrix.org](https://matrix.to/#/#talos:matrix.org)
- Support: [#talos-support:matrix.org](https://matrix.to/#/#talos-support:matrix.org)
- Support: Questions, bugs, feature requests [GitHub Discussions](https://github.com/talos-systems/talos/discussions)
- Forum: [community](https://groups.google.com/a/siderolabs.com/forum/#!forum/community)
- Twitter: [@SideroLabs](https://twitter.com/talossystems)
- Email: [info@SideroLabs.com](mailto:info@SideroLabs.com)
If you're interested in this project and would like to help in engineering efforts, or have general usage questions, we are happy to have you!
We hold a weekly meeting that all audiences are welcome to attend.
We would appreciate your feedback so that we can make Talos even better!
To do so, you can take our [survey](https://docs.google.com/forms/d/1TUna5YTYGCKot68Y9YN_CLobY6z9JzLVCq1G7DoyNjA/edit).
### Office Hours
- When: Mondays at 16:30 UTC.
- Where: [Google Meet](https://meet.google.com/day-pxhv-zky).
You can subscribe to this meeting by joining the community forum above.
## Enterprise
If you are using Talos in a production setting, and need consulting services to get started or to integrate Talos into your existing environment, we can help.
Sidero Labs, Inc. offers support contracts with SLA (Service Level Agreement)-bound terms for mission-critical environments.
[Learn More](https://www.siderolabs.com/support/)

View File

@ -1,46 +0,0 @@
---
title: Welcome
---
## Welcome
Welcome to the Talos documentation.
If you are just getting familiar with Talos, we recommend starting here:
- [What is Talos](introduction/what-is-talos/): a quick description of Talos
- [Quickstart](introduction/quickstart/): the fastest way to get a Talos cluster up and running
- [Getting Started](introduction/getting-started/): a long-form, guided tour of getting a full Talos cluster deployed
## Open Source
### Community
- GitHub: [repo](https://github.com/talos-systems/talos)
- Slack: Join our [slack channel](https://slack.dev.talos-systems.io)
- Matrix: Join our Matrix channels:
- Community: [#talos:matrix.org](https://matrix.to/#/#talos:matrix.org)
- Support: [#talos-support:matrix.org](https://matrix.to/#/#talos-support:matrix.org)
- Support: Questions, bugs, feature requests [GitHub Discussions](https://github.com/talos-systems/talos/discussions)
- Forum: [community](https://groups.google.com/a/siderolabs.com/forum/#!forum/community)
- Twitter: [@SideroLabs](https://twitter.com/talossystems)
- Email: [info@SideroLabs.com](mailto:info@SideroLabs.com)
If you're interested in this project and would like to help in engineering efforts, or have general usage questions, we are happy to have you!
We hold a weekly meeting that all audiences are welcome to attend.
We would appreciate your feedback so that we can make Talos even better!
To do so, you can take our [survey](https://docs.google.com/forms/d/1TUna5YTYGCKot68Y9YN_CLobY6z9JzLVCq1G7DoyNjA/edit).
### Office Hours
- When: Mondays at 16:30 UTC.
- Where: [Google Meet](https://meet.google.com/day-pxhv-zky).
You can subscribe to this meeting by joining the community forum above.
## Enterprise
If you are using Talos in a production setting, and need consulting services to get started or to integrate Talos into your existing environment, we can help.
Sidero Labs, Inc. offers support contracts with SLA (Service Level Agreement)-bound terms for mission-critical environments.
[Learn More](https://www.siderolabs.com/support/)

View File

@ -1,111 +0,0 @@
---
title: Upgrades
weight: 5
---
## Talos
The upgrade process for Talos, like everything else, begins with an API call.
This call tells a node the installer image to use to perform the upgrade.
Each Talos version corresponds to an installer with the same version, such that the
version of the installer is the version of Talos which will be installed.
Because Talos is image based, even at run-time, upgrading Talos is almost
exactly the same set of operations as installing Talos, with the difference that
the system has already been initialized with a configuration.
An upgrade makes use of an A-B image scheme in order to facilitate rollbacks.
This scheme retains the one previous Talos kernel and OS image following each upgrade.
If an upgrade fails to boot, Talos will roll back to the previous version.
Likewise, Talos may be manually rolled back via API (or `talosctl rollback`).
This will simply update the boot reference and reboot.
An upgrade can `preserve` data or not.
If Talos is told to NOT preserve data, it will wipe its ephemeral partition, remove itself from the etcd cluster (if it is a control node), and generally make itself as pristine as is possible.
There are likely to be changes to the default option here over time, so if your setup has a preference to one way or the other, it is better to specify it explicitly, but we try to always be "safe" with this setting.
### Sequence
When a Talos node receives the upgrade command, the first thing it does is cordon
itself in kubernetes, to avoid receiving any new workload.
It then starts to drain away its existing workload.
**NOTE**: If any of your workloads is sensitive to being shut down ungracefully, be sure to use the `lifecycle.preStop` Pod [spec](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks).
Once all of the workload Pods are drained, Talos will start shutting down its
internal processes.
If it is a control node, this will include etcd.
If `preserve` is not enabled, Talos will even leave etcd membership.
(Don't worry about this; we make sure the etcd cluster is healthy and that it will remain healthy after our node departs, before we allow this to occur.)
Once all the processes are stopped and the services are shut down, all of the
filesystems will be unmounted.
This allows Talos to produce a very clean upgrade, as close as possible to a pristine system.
We verify the disk and then perform the actual image upgrade.
Finally, we tell the bootloader to boot _once_ with the new kernel and OS image.
Then we reboot.
After the node comes back up and Talos verifies itself, it will make permanent
the bootloader change, rejoin the cluster, and finally uncordon itself to receive new workloads.
### FAQs
**Q.** What happens if an upgrade fails?
**A.** There are many potential ways an upgrade can fail, but we always try to do
the safe thing.
The most common first failure is an invalid installer image reference.
In this case, Talos will fail to download the upgraded image and will abort the upgrade.
Sometimes, Talos is unable to successfully kill off all of the disk access points, in which case it cannot safely unmount all filesystems to effect the upgrade.
In this case, it will abort the upgrade and reboot.
It is possible (especially with test builds) that the upgraded Talos system will fail to start.
In this case, the node will be rebooted, and the bootloader will automatically use the previous Talos kernel and image, thus effectively aborting the upgrade.
Lastly, it is possible that Talos itself will upgrade successfully, start up, and rejoin the cluster but your workload will fail to run on it, for whatever reason.
This is when you would use the `talosctl rollback` command to revert back to the previous Talos version.
**Q.** Can upgrades be scheduled?
**A.** We provide the [Talos Controller Manager](https://github.com/talos-systems/talos-controller-manager) to coordinate upgrades of a cluster.
Additionally, because the upgrade sequence is API-driven, you can easily tie this in to your own business logic to schedule and coordinate your upgrades.
**Q.** Can the upgrade process be observed?
**A.** The Talos Controller Manager does this internally, watching the logs of
the node being upgraded, using the streaming log API of Talos.
You can do the same thing using the `talosctl logs --follow machined` command.
**Q.** Are worker node upgrades handled differently from control plane node upgrades?
**A.** Short answer: no.
Long answer: Both node types follow the same set procedure.
However, since control plane nodes run additional services, such as etcd, there are some extra steps and checks performed on them.
From the user's standpoint, however, the processes are identical.
There are also additional restrictions on upgrading control plane nodes.
For instance, Talos will refuse to upgrade a control plane node if that upgrade will cause a loss of quorum for etcd.
This can generally be worked around by setting `preserve` to `true`.
**Q.** Will an upgrade try to do the whole cluster at once?
Can I break my cluster by upgrading everything?
**A.** No.
Nothing prevents the user from sending any number of near-simultaneous upgrades to each node of the cluster.
While most people would not attempt to do this, it may be the desired behavior in certain situations.
If, however, multiple control plane nodes are asked to upgrade at the same time, Talos will protect itself by making sure only one control plane node upgrades at any time, through its checking of etcd quorum.
A lease is taken out by the winning control plane node, and no other control plane node is allowed to execute the upgrade until the lease is released and the etcd cluster is healthy and _will_ be healthy when the next node performs its upgrade.
**Q.** Is there an operator or controller which will keep my nodes updated
automatically?
**A.** Yes.
We provide the [Talos Controller Manager](https://github.com/talos-systems/talos-controller-manager) to perform this maintenance in a simple, controllable fashion.

View File

@ -1,46 +0,0 @@
---
title: Welcome
---
## Welcome
Welcome to the Talos documentation.
If you are just getting familiar with Talos, we recommend starting here:
- [What is Talos](introduction/what-is-talos/): a quick description of Talos
- [Quickstart](introduction/quickstart/): the fastest way to get a Talos cluster up and running
- [Getting Started](introduction/getting-started/): a long-form, guided tour of getting a full Talos cluster deployed
## Open Source
### Community
- GitHub: [repo](https://github.com/talos-systems/talos)
- Slack: Join our [slack channel](https://slack.dev.talos-systems.io)
- Matrix: Join our Matrix channels:
- Community: [#talos:matrix.org](https://matrix.to/#/#talos:matrix.org)
- Support: [#talos-support:matrix.org](https://matrix.to/#/#talos-support:matrix.org)
- Support: Questions, bugs, feature requests [GitHub Discussions](https://github.com/talos-systems/talos/discussions)
- Forum: [community](https://groups.google.com/a/siderolabs.com/forum/#!forum/community)
- Twitter: [@SideroLabs](https://twitter.com/talossystems)
- Email: [info@SideroLabs.com](mailto:info@SideroLabs.com)
If you're interested in this project and would like to help in engineering efforts, or have general usage questions, we are happy to have you!
We hold a weekly meeting that all audiences are welcome to attend.
We would appreciate your feedback so that we can make Talos even better!
To do so, you can take our [survey](https://docs.google.com/forms/d/1TUna5YTYGCKot68Y9YN_CLobY6z9JzLVCq1G7DoyNjA/edit).
### Office Hours
- When: Mondays at 16:30 UTC.
- Where: [Google Meet](https://meet.google.com/day-pxhv-zky).
You can subscribe to this meeting by joining the community forum above.
## Enterprise
If you are using Talos in a production setting, and need consulting services to get started or to integrate Talos into your existing environment, we can help.
Sidero Labs, Inc. offers support contracts with SLA (Service Level Agreement)-bound terms for mission-critical environments.
[Learn More](https://www.siderolabs.com/support/)

View File

@ -1,6 +0,0 @@
---
title: What's New in Talos 0.14
weight: 5
---
TBD

View File

@ -1,46 +0,0 @@
---
title: Welcome
---
## Welcome
Welcome to the Talos documentation.
If you are just getting familiar with Talos, we recommend starting here:
- [What is Talos](introduction/what-is-talos/): a quick description of Talos
- [Quickstart](introduction/quickstart/): the fastest way to get a Talos cluster up and running
- [Getting Started](introduction/getting-started/): a long-form, guided tour of getting a full Talos cluster deployed
## Open Source
### Community
- GitHub: [repo](https://github.com/talos-systems/talos)
- Slack: Join our [slack channel](https://slack.dev.talos-systems.io)
- Matrix: Join our Matrix channels:
- Community: [#talos:matrix.org](https://matrix.to/#/#talos:matrix.org)
- Support: [#talos-support:matrix.org](https://matrix.to/#/#talos-support:matrix.org)
- Support: Questions, bugs, feature requests [GitHub Discussions](https://github.com/talos-systems/talos/discussions)
- Forum: [community](https://groups.google.com/a/siderolabs.com/forum/#!forum/community)
- Twitter: [@SideroLabs](https://twitter.com/talossystems)
- Email: [info@SideroLabs.com](mailto:info@SideroLabs.com)
If you're interested in this project and would like to help in engineering efforts, or have general usage questions, we are happy to have you!
We hold a weekly meeting that all audiences are welcome to attend.
We would appreciate your feedback so that we can make Talos even better!
To do so, you can take our [survey](https://docs.google.com/forms/d/1TUna5YTYGCKot68Y9YN_CLobY6z9JzLVCq1G7DoyNjA/edit).
### Office Hours
- When: Mondays at 16:30 UTC.
- Where: [Google Meet](https://meet.google.com/day-pxhv-zky).
You can subscribe to this meeting by joining the community forum above.
## Enterprise
If you are using Talos in a production setting, and need consulting services to get started or to integrate Talos into your existing environment, we can help.
Sidero Labs, Inc. offers support contracts with SLA (Service Level Agreement)-bound terms for mission-critical environments.
[Learn More](https://www.siderolabs.com/support/)

View File

@ -1,5 +1,9 @@
---
title: Welcome
no_list: true
linkTitle: "Documentation"
cascade:
type: docs
---
## Welcome

View File

@ -0,0 +1,4 @@
---
title: "Bare Metal Platforms"
weight: 20
---

View File

@ -33,7 +33,7 @@ created talosconfig
```
> The loadbalancer is used to distribute the load across multiple controlplane nodes.
> This isn't covered in detail, because we assume some loadbalancing knowledge before hand.
> This isn't covered in detail, because we asume some loadbalancing knowledge before hand.
> If you think this should be added to the docs, please [create a issue](https://github.com/talos-systems/talos/issues).
At this point, you can modify the generated configs to your liking.
@ -148,7 +148,7 @@ Once selected, you need to assign to following:
This will provision the Stage and Bootenv with the talos values.
Once this is done, you can boot the machine.
To understand the boot process, we have a higher level overview located at [metal overview.](/v0.10/en/guides/metal/overview)
To understand the boot process, we have a higher level overview located at [metal overview.](/../../guides/metal/overview)
### Retrieve the `kubeconfig`

View File

@ -42,7 +42,7 @@ join.yaml is valid for metal mode
#### Publishing the Machine Configuration Files
In bare-metal setups it is up to the user to provide the configuration files over HTTP(S).
A special kernel parameter (`talos.config`) must be used to inform Talos about _where_ it should retrieve its' configuration file.
A special kernel parameter (`talos.config`) must be used to inform Talos about _where_ it should retreive its' configuration file.
To keep things simple we will place `init.yaml`, `controlplane.yaml`, and `join.yaml` into Matchbox's `assets` directory.
This directory is automatically served by Matchbox.
@ -174,7 +174,7 @@ Now, create the following groups, and ensure that the `selector`s are accurate f
### Boot the Machines
Now that we have our configuration files in place, boot all the machines.
Now that we have our configuraton files in place, boot all the machines.
Talos will come up on each machine, grab its' configuration file, and bootstrap itself.
### Retrieve the `kubeconfig`

View File

@ -0,0 +1,4 @@
---
title: "Cloud Platforms"
weight: 40
---

View File

@ -0,0 +1,4 @@
---
title: "Guides"
weight: 60
---

View File

@ -25,7 +25,7 @@ This is not a requirement, but rather a document to explain some key settings.
#### Endpoint
To configure the `talosctl` endpoint, it is recommended you use a resolvable DNS name.
This way, if you decide to upgrade to a multi-controlplane cluster you only have to add the ip address to the hostname configuration.
This way, if you decide to upgrade to a multi-controlplane cluster you only have to add the ip adres to the hostname configuration.
The configuration can either be done on a Loadbalancer, or simply trough DNS.
For example:

View File

@ -244,7 +244,7 @@ kube-flannel-jknt9 1/1 Running 0 23
Full error might look like:
```bash
x509: certificate signed by unknown authority (possibly because of crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes"
x509: certificate signed by unknown authority (possiby because of crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes"
```
Commonly, the control plane endpoint points to a different cluster, as the client certificate

View File

@ -0,0 +1,4 @@
---
title: "Introduction"
weight: 1
---

View File

@ -4,7 +4,7 @@ weight: 3
---
This document will walk you through installing a full Talos Cluster.
You may wish to read through the [Quickstart](https://talos.dev/docs/v0.10/introduction/quickstart/) first, to quickly create a local virtual cluster on your workstation.
You may wish to read through the [Quickstart](../../introduction/quickstart/) first, to quickly create a local virtual cluster on your workstation.
Regardless of where you run Talos, you will find that there is a pattern to deploying it.
@ -55,7 +55,7 @@ Thus, it is safe to boot the ISO onto any machine.
If you wish to use a different boot mechanism (such as network boot or a custom ISO), there
are a number of required kernel parameters.
Please see the [kernel](https://talos.dev/docs/v0.10/reference/kernel/) docs for more information.
Please see the [kernel](../../reference/kernel/) docs for more information.
## Decide the Kubernetes Endpoint

View File

@ -0,0 +1,4 @@
---
title: "Learn More"
weight: 80
---

View File

@ -98,7 +98,7 @@ Can I break my cluster by upgrading everything?
**A.** No.
Nothing prevents the user from sending any number of near-simultaneous upgrades to each node of the cluster.
While most people would not attempt to do this, it may be the desired behavior in certain situations.
While most people would not attempt to do this, it may be the desired behaviour in certain situations.
If, however, multiple control plane nodes are asked to upgrade at the same time, Talos will protect itself by making sure only one control plane node upgrades at any time, through its checking of etcd quorum.
A lease is taken out by the winning control plane node, and no other control plane node is allowed to execute the upgrade until the lease is released and the etcd cluster is healthy and _will_ be healthy when the next node performs its upgrade.

View File

@ -0,0 +1,4 @@
---
title: "Local Platforms"
weight: 50
---

View File

@ -0,0 +1,4 @@
---
title: "Reference"
weight: 70
---

View File

@ -585,7 +585,7 @@ The ControllerRuntimeDependency message contains the graph of controller-resourc
### InspectService
The inspect service definition.
InspectService provides auxiliary API to inspect OS internals.
InspectService provides auxilary API to inspect OS internals.
| Method Name | Request Type | Response Type | Description |
| ----------- | ------------ | ------------- | ------------|

View File

@ -0,0 +1,4 @@
---
title: "Single Board Computers"
weight: 55
---

View File

@ -0,0 +1,4 @@
---
title: "Virtualized Platforms"
weight: 30
---

Some files were not shown because too many files have changed in this diff Show More