From c52f9f8d08adb8bf1fec440fa150f9ec13ad69ea Mon Sep 17 00:00:00 2001 From: Dalton Hubble Date: Wed, 20 May 2020 22:53:51 -0700 Subject: [PATCH] Upgrade docs packages and refresh content * Promote DigitalOcean from alpha to beta for Fedora CoreOS and Flatcar Linux * Upgrade mkdocs-material and PyPI packages for docs * Replace docs mentions of Container Linux with Flatcar Linux and move docs/cl to docs/flatcar-linux * Deprecate CoreOS Container Linux support. Its still usable for some time, but start removing docs --- CHANGES.md | 18 +- README.md | 20 +- docs/advanced/worker-pools.md | 6 +- docs/architecture/operating-systems.md | 2 +- docs/{cl => flatcar-linux}/aws.md | 0 docs/{cl => flatcar-linux}/azure.md | 0 docs/{cl => flatcar-linux}/bare-metal.md | 0 .../digitalocean.md} | 0 docs/{cl => flatcar-linux}/google-cloud.md | 0 docs/index.md | 29 +-- docs/topics/faq.md | 9 - docs/topics/maintenance.md | 240 +----------------- mkdocs.yml | 44 ++-- requirements.txt | 6 +- 14 files changed, 73 insertions(+), 301 deletions(-) rename docs/{cl => flatcar-linux}/aws.md (100%) rename docs/{cl => flatcar-linux}/azure.md (100%) rename docs/{cl => flatcar-linux}/bare-metal.md (100%) rename docs/{cl/digital-ocean.md => flatcar-linux/digitalocean.md} (100%) rename docs/{cl => flatcar-linux}/google-cloud.md (100%) diff --git a/CHANGES.md b/CHANGES.md index 5b7d9b87..d5a8a084 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,12 +2,16 @@ Notable changes between versions. -## Latest +## v1.18.3 * Use Kubelet [TLS bootstrap](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/) with bootstrap token authentication ([#713](https://github.com/poseidon/typhoon/pull/713)) * Enable Node [Authorization](https://kubernetes.io/docs/reference/access-authn-authz/node/) and [NodeRestriction](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#noderestriction) to reduce authorization scope * Renew Kubelet certificates every 72 hours +* Add CoreDNS node affinity preference for controller nodes ([#188](https://github.com/poseidon/terraform-render-bootstrap/pull/188)) * Update Calico from v3.13.1 to [v3.14.0](https://docs.projectcalico.org/v3.14/release-notes/) +* Deprecate CoreOS Container Linux support (no OS [updates](https://coreos.com/os/eol/) after May 2020) + * Use a `fedora-coreos` module for Fedora CoreOS + * Use a `container-linux` module for Flatcar Linux ### AWS @@ -20,6 +24,10 @@ Notable changes between versions. * Fix warning that `address_prefix` is deprecated * Require `terraform-provider-azurerm` v2.8.0+ (action required) +### DigitalOcean + +* Promote DigitalOcean to beta on both Fedora CoreOS and Flatcar Linux + ### Fedora CoreOS * Fix Calico `install-cni` crashloop on Pod restarts ([#724](https://github.com/poseidon/typhoon/pull/724)) @@ -28,13 +36,13 @@ Notable changes between versions. #### AWS -* Support Fedora CoreOS official [image streams](https://docs.fedoraproject.org/en-US/fedora-coreos/update-streams/) ([#727](https://github.com/poseidon/typhoon/pull/727)) +* Support Fedora CoreOS [image streams](https://docs.fedoraproject.org/en-US/fedora-coreos/update-streams/) ([#727](https://github.com/poseidon/typhoon/pull/727)) * Add `os_stream` variable to set the stream to `stable` (default), `testing`, or `next` * Remove unused `os_image` variable #### Google -* Support Fedora CoreOS official [image streams](https://docs.fedoraproject.org/en-US/fedora-coreos/update-streams/) ([#723](https://github.com/poseidon/typhoon/pull/722)) +* Support Fedora CoreOS [image streams](https://docs.fedoraproject.org/en-US/fedora-coreos/update-streams/) ([#723](https://github.com/poseidon/typhoon/pull/722)) * Add `os_stream` variable to set the stream to `stable` (default), `testing`, or `next` * Deprecate `os_image` variable. Manual image uploads are no longer needed @@ -46,6 +54,10 @@ Notable changes between versions. * Restore [#664](https://github.com/poseidon/typhoon/pull/664) (reverted in [#707](https://github.com/poseidon/typhoon/pull/707)) but use Flatcar Linux new free offer (not byol) * Change `os_image` to use a `flatcar-stable` default +#### Google + +* Promote Flatcar Linux to beta + ### Addons * Update nginx-ingress from v0.30.0 to [v0.32.0](https://github.com/kubernetes/ingress-nginx/releases/tag/nginx-0.32.0) diff --git a/README.md b/README.md index 5d5557e1..bd592f4b 100644 --- a/README.md +++ b/README.md @@ -28,35 +28,25 @@ Typhoon is available for [Fedora CoreOS](https://getfedora.org/coreos/). | AWS | Fedora CoreOS | [aws/fedora-coreos/kubernetes](aws/fedora-coreos/kubernetes) | stable | | Azure | Fedora CoreOS | [azure/fedora-coreos/kubernetes](azure/fedora-coreos/kubernetes) | alpha | | Bare-Metal | Fedora CoreOS | [bare-metal/fedora-coreos/kubernetes](bare-metal/fedora-coreos/kubernetes) | beta | -| DigitalOcean | Fedora CoreOS | [digital-ocean/fedora-coreos/kubernetes](digital-ocean/fedora-coreos/kubernetes) | alpha | +| DigitalOcean | Fedora CoreOS | [digital-ocean/fedora-coreos/kubernetes](digital-ocean/fedora-coreos/kubernetes) | beta | | Google Cloud | Fedora CoreOS | [google-cloud/fedora-coreos/kubernetes](google-cloud/fedora-coreos/kubernetes) | beta | -Typhoon is available for [Flatcar Container Linux](https://www.flatcar-linux.org/releases/). +Typhoon is available for [Flatcar Linux](https://www.flatcar-linux.org/releases/). | Platform | Operating System | Terraform Module | Status | |---------------|------------------|------------------|--------| | AWS | Flatcar Linux | [aws/container-linux/kubernetes](aws/container-linux/kubernetes) | stable | | Azure | Flatcar Linux | [azure/container-linux/kubernetes](azure/container-linux/kubernetes) | alpha | | Bare-Metal | Flatcar Linux | [bare-metal/container-linux/kubernetes](bare-metal/container-linux/kubernetes) | stable | -| DigitalOcean | Flatcar Linux | [digital-ocean/container-linux/kubernetes](digital-ocean/container-linux/kubernetes) | alpha | -| Google Cloud | Flatcar Linux | [google-cloud/container-linux/kubernetes](google-cloud/container-linux/kubernetes) | alpha | - -Typhoon is available for CoreOS Container Linux ([no updates](https://coreos.com/os/eol/) after May 2020). - -| Platform | Operating System | Terraform Module | Status | -|---------------|------------------|------------------|--------| -| AWS | Container Linux | [aws/container-linux/kubernetes](aws/container-linux/kubernetes) | stable | -| Azure | Container Linux | [azure/container-linux/kubernetes](azure/container-linux/kubernetes) | alpha | -| Bare-Metal | Container Linux | [bare-metal/container-linux/kubernetes](bare-metal/container-linux/kubernetes) | stable | -| Digital Ocean | Container Linux | [digital-ocean/container-linux/kubernetes](digital-ocean/container-linux/kubernetes) | beta | -| Google Cloud | Container Linux | [google-cloud/container-linux/kubernetes](google-cloud/container-linux/kubernetes) | stable | +| DigitalOcean | Flatcar Linux | [digital-ocean/container-linux/kubernetes](digital-ocean/container-linux/kubernetes) | beta | +| Google Cloud | Flatcar Linux | [google-cloud/container-linux/kubernetes](google-cloud/container-linux/kubernetes) | beta | ## Documentation * [Docs](https://typhoon.psdn.io) * Architecture [concepts](https://typhoon.psdn.io/architecture/concepts/) and [operating systems](https://typhoon.psdn.io/architecture/operating-systems/) * Fedora CoreOS tutorials for [AWS](docs/fedora-coreos/aws.md), [Azure](docs/fedora-coreos/azure.md), [Bare-Metal](docs/fedora-coreos/bare-metal.md), [DigitalOcean](docs/fedora-coreos/digitalocean.md), and [Google Cloud](docs/fedora-coreos/google-cloud.md) -* Flatcar Linux tutorials for [AWS](docs/cl/aws.md), [Azure](docs/cl/azure.md), [Bare-Metal](docs/cl/bare-metal.md), [DigitalOcean](docs/cl/digital-ocean.md), and [Google Cloud](docs/cl/google-cloud.md) +* Flatcar Linux tutorials for [AWS](docs/flatcar-linux/aws.md), [Azure](docs/flatcar-linux/azure.md), [Bare-Metal](docs/flatcar-linux/bare-metal.md), [DigitalOcean](docs/flatcar-linux/digitalocean.md), and [Google Cloud](docs/flatcar-linux/google-cloud.md) ## Usage diff --git a/docs/advanced/worker-pools.md b/docs/advanced/worker-pools.md index 77d351f5..bd0046c2 100644 --- a/docs/advanced/worker-pools.md +++ b/docs/advanced/worker-pools.md @@ -13,7 +13,7 @@ Internal Terraform Modules: ## AWS -Create a cluster following the AWS [tutorial](../cl/aws.md#cluster). Define a worker pool using the AWS internal `workers` module. +Create a cluster following the AWS [tutorial](../flatcar-linux/aws.md#cluster). Define a worker pool using the AWS internal `workers` module. ```tf module "tempest-worker-pool" { @@ -78,7 +78,7 @@ Check the list of valid [instance types](https://aws.amazon.com/ec2/instance-typ ## Azure -Create a cluster following the Azure [tutorial](../cl/azure.md#cluster). Define a worker pool using the Azure internal `workers` module. +Create a cluster following the Azure [tutorial](../flatcar-linux/azure.md#cluster). Define a worker pool using the Azure internal `workers` module. ```tf module "ramius-worker-pool" { @@ -144,7 +144,7 @@ Check the list of valid [machine types](https://azure.microsoft.com/en-us/pricin ## Google Cloud -Create a cluster following the Google Cloud [tutorial](../cl/google-cloud.md#cluster). Define a worker pool using the Google Cloud internal `workers` module. +Create a cluster following the Google Cloud [tutorial](../flatcar-linux/google-cloud.md#cluster). Define a worker pool using the Google Cloud internal `workers` module. ```tf module "yavin-worker-pool" { diff --git a/docs/architecture/operating-systems.md b/docs/architecture/operating-systems.md index 276aff1c..3ebdbd05 100644 --- a/docs/architecture/operating-systems.md +++ b/docs/architecture/operating-systems.md @@ -1,6 +1,6 @@ # Operating Systems -Typhoon supports [Fedora CoreOS](https://getfedora.org/coreos/), [Flatcar Linux](https://www.flatcar-linux.org/) and Container Linux (EOL in May 2020). These operating systems were chosen because they offer: +Typhoon supports [Fedora CoreOS](https://getfedora.org/coreos/) and [Flatcar Linux](https://www.flatcar-linux.org/). These operating systems were chosen because they offer: * Minimalism and focus on clustered operation * Automated and atomic operating system upgrades diff --git a/docs/cl/aws.md b/docs/flatcar-linux/aws.md similarity index 100% rename from docs/cl/aws.md rename to docs/flatcar-linux/aws.md diff --git a/docs/cl/azure.md b/docs/flatcar-linux/azure.md similarity index 100% rename from docs/cl/azure.md rename to docs/flatcar-linux/azure.md diff --git a/docs/cl/bare-metal.md b/docs/flatcar-linux/bare-metal.md similarity index 100% rename from docs/cl/bare-metal.md rename to docs/flatcar-linux/bare-metal.md diff --git a/docs/cl/digital-ocean.md b/docs/flatcar-linux/digitalocean.md similarity index 100% rename from docs/cl/digital-ocean.md rename to docs/flatcar-linux/digitalocean.md diff --git a/docs/cl/google-cloud.md b/docs/flatcar-linux/google-cloud.md similarity index 100% rename from docs/cl/google-cloud.md rename to docs/flatcar-linux/google-cloud.md diff --git a/docs/index.md b/docs/index.md index d8f35ef7..7bd25fd5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -14,7 +14,7 @@ Typhoon distributes upstream Kubernetes, architectural conventions, and cluster * Kubernetes v1.18.3 (upstream) * Single or multi-master, [Calico](https://www.projectcalico.org/) or [flannel](https://github.com/coreos/flannel) networking * On-cluster etcd with TLS, [RBAC](https://kubernetes.io/docs/admin/authorization/rbac/)-enabled, [network policy](https://kubernetes.io/docs/concepts/services-networking/network-policies/), SELinux enforcing -* Advanced features like [worker pools](advanced/worker-pools/), [preemptible](cl/google-cloud/#preemption) workers, and [snippets](advanced/customization/#container-linux) customization +* Advanced features like [worker pools](advanced/worker-pools/), [preemptible](fedora-coreos/google-cloud/#preemption) workers, and [snippets](advanced/customization/#container-linux) customization * Ready for Ingress, Prometheus, Grafana, CSI, or other [addons](addons/overview/) ## Modules @@ -28,35 +28,24 @@ Typhoon is available for [Fedora CoreOS](https://getfedora.org/coreos/). | AWS | Fedora CoreOS | [aws/fedora-coreos/kubernetes](fedora-coreos/aws.md) | stable | | Azure | Fedora CoreOS | [azure/fedora-coreos/kubernetes](fedora-coreos/azure.md) | alpha | | Bare-Metal | Fedora CoreOS | [bare-metal/fedora-coreos/kubernetes](fedora-coreos/bare-metal.md) | beta | -| DigitalOcean | Fedora CoreOS | [digital-ocean/fedora-coreos/kubernetes](fedora-coreos/digitalocean.md) | alpha | +| DigitalOcean | Fedora CoreOS | [digital-ocean/fedora-coreos/kubernetes](fedora-coreos/digitalocean.md) | beta | | Google Cloud | Fedora CoreOS | [google-cloud/fedora-coreos/kubernetes](google-cloud/fedora-coreos/kubernetes) | beta | -Typhoon is available for [Flatcar Container Linux](https://www.flatcar-linux.org/releases/). +Typhoon is available for [Flatcar Linux](https://www.flatcar-linux.org/releases/). | Platform | Operating System | Terraform Module | Status | |---------------|------------------|------------------|--------| -| AWS | Flatcar Linux | [aws/container-linux/kubernetes](cl/aws.md) | stable | -| Azure | Flatcar Linux | [azure/container-linux/kubernetes](cl/azure.md) | alpha | -| Bare-Metal | Flatcar Linux | [bare-metal/container-linux/kubernetes](cl/bare-metal.md) | stable | -| DigitalOcean | Flatcar Linux | [digital-ocean/container-linux/kubernetes](cl/digital-ocean.md) | alpha | -| Google Cloud | Flatcar Linux | [google-cloud/container-linux/kubernetes](cl/google-cloud.md) | alpha | - -Typhoon is available for CoreOS Container Linux ([no updates](https://coreos.com/os/eol/) after May 2020). - -| Platform | Operating System | Terraform Module | Status | -|---------------|------------------|------------------|--------| -| AWS | Container Linux | [aws/container-linux/kubernetes](cl/aws.md) | stable | -| Azure | Container Linux | [azure/container-linux/kubernetes](cl/azure.md) | alpha | -| Bare-Metal | Container Linux | [bare-metal/container-linux/kubernetes](cl/bare-metal.md) | stable | -| Digital Ocean | Container Linux | [digital-ocean/container-linux/kubernetes](cl/digital-ocean.md) | beta | -| Google Cloud | Container Linux | [google-cloud/container-linux/kubernetes](cl/google-cloud.md) | stable | - +| AWS | Flatcar Linux | [aws/container-linux/kubernetes](flatcar-linux/aws.md) | stable | +| Azure | Flatcar Linux | [azure/container-linux/kubernetes](flatcar-linux/azure.md) | alpha | +| Bare-Metal | Flatcar Linux | [bare-metal/container-linux/kubernetes](flatcar-linux/bare-metal.md) | stable | +| DigitalOcean | Flatcar Linux | [digital-ocean/container-linux/kubernetes](flatcar-linux/digitalocean.md) | beta | +| Google Cloud | Flatcar Linux | [google-cloud/container-linux/kubernetes](flatcar-linux/google-cloud.md) | beta | ## Documentation * Architecture [concepts](architecture/concepts.md) and [operating-systems](architecture/operating-systems.md) * Fedora CoreOS tutorials for [AWS](fedora-coreos/aws.md), [Azure](fedora-coreos/azure.md), [Bare-Metal](fedora-coreos/bare-metal.md), [DigitalOcean](fedora-coreos/digitalocean.md), and [Google Cloud](fedora-coreos/google-cloud.md) -* Flatcar Linux tutorials for [AWS](cl/aws.md), [Azure](cl/azure.md), [Bare-Metal](cl/bare-metal.md), [DigitalOcean](cl/digital-ocean.md), and [Google Cloud](cl/google-cloud.md) +* Flatcar Linux tutorials for [AWS](flatcar-linux/aws.md), [Azure](flatcar-linux/azure.md), [Bare-Metal](flatcar-linux/bare-metal.md), [DigitalOcean](flatcar-linux/digitalocean.md), and [Google Cloud](flatcar-linux/google-cloud.md) ## Example diff --git a/docs/topics/faq.md b/docs/topics/faq.md index 1a8eef26..d661e7aa 100644 --- a/docs/topics/faq.md +++ b/docs/topics/faq.md @@ -6,15 +6,6 @@ Typhoon provides a Terraform Module for each supported operating system and plat Formats rise and evolve. Typhoon may choose to adapt the format over time (with lots of forewarning). However, the authors' have built several Kubernetes "distros" before and learned from mistakes - Terraform modules are the right format for now. -## Operating Systems - -Typhoon supports Container Linux and the Flatcar Linux derivative. These operating systems were chosen because they offer: - -* Minimalism and focus on clustered operation -* Automated and atomic operating system upgrades -* Declarative and immutable configuration -* Optimization for containerized applications - ## Get Help Ask questions on the IRC #typhoon channel on [freenode.net](http://freenode.net/). diff --git a/docs/topics/maintenance.md b/docs/topics/maintenance.md index f020a293..b583b641 100644 --- a/docs/topics/maintenance.md +++ b/docs/topics/maintenance.md @@ -13,7 +13,7 @@ Typhoon provides tagged releases to allow clusters to be versioned using ordinar ``` module "yavin" { - source = "git::https://github.com/poseidon/typhoon//google-cloud/container-linux/kubernetes?ref=v1.8.6" + source = "git::https://github.com/poseidon/typhoon//google-cloud/fedora-coreos/kubernetes?ref=v1.18.3" ... } @@ -74,11 +74,11 @@ Delete or comment the Terraform config for the cluster. Apply to delete old provisioning configs from Matchbox. ``` -$ terraform apply +$ terraform apply Apply complete! Resources: 0 added, 0 changed, 55 destroyed. ``` -Re-provision a new cluster by following the bare-metal [tutorial](../cl/bare-metal.md#cluster). +Re-provision a new cluster by following the bare-metal [tutorial](../fedora-coreos/bare-metal.md#cluster). ### Cloud @@ -102,7 +102,7 @@ Once you're confident in the new cluster, delete the Terraform config for the ol Apply to delete the cluster. ``` -$ terraform apply +$ terraform apply Apply complete! Resources: 0 added, 0 changed, 55 destroyed. ``` @@ -125,86 +125,18 @@ In certain scenarios, in-place edits can be useful for quickly rolling out secur Typhoon supports multi-controller clusters, so it is possible to upgrade a cluster by deleting and replacing nodes one by one. !!! warning - Typhoon does not support or document node replacement as an upgrade strategy. It limits Typhoon's ability to make infrastructure and architectural changes between tagged releases. - -### Terraform Plugins Directory - -Use the Terraform 3rd-party [plugin directory](https://www.terraform.io/docs/configuration/providers.html#third-party-plugins) `~/.terraform.d/plugins` to keep versioned copies of the `terraform-provider-ct` and `terraform-provider-matchbox` plugins. The plugin directory replaces the `~/.terraformrc` file to allow 3rd party plugins to be defined and versioned independently (rather than globally). - -``` -# ~/.terraformrc (DEPRECATED) -providers { - ct = "/usr/local/bin/terraform-provider-ct" - matchbox = "/usr/local/bin/terraform-provider-matchbox" -} -``` - -Migrate to using the Terraform plugin directory. Move `~/.terraformrc` to a backup location. - -``` -mv ~/.terraformrc ~/.terraform-backup -``` - -Add the [terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) plugin binary for your system to `~/.terraform.d/plugins/`. Download the **same version** of `terraform-provider-ct` you were using with `~/.terraformrc`, updating only be done as a followup and is **only** safe for v1.12.2+ clusters! - -```sh -wget https://github.com/poseidon/terraform-provider-ct/releases/download/v0.2.1/terraform-provider-ct-v0.2.1-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.2.1-linux-amd64.tar.gz -mv terraform-provider-ct-v0.2.1-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.2.1 -``` - -If you use bare-metal, add the [terraform-provider-matchbox](https://github.com/poseidon/terraform-provider-matchbox) plugin binary for your system to `~/.terraform.d/plugins/`, noting the versioned name. - -```sh -wget https://github.com/poseidon/terraform-provider-matchbox/releases/download/v0.2.3/terraform-provider-matchbox-v0.2.3-linux-amd64.tar.gz -tar xzf terraform-provider-matchbox-v0.2.3-linux-amd64.tar.gz -mv terraform-provider-matchbox-v0.2.3-linux-amd64/terraform-provider-matchbox ~/.terraform.d/plugins/terraform-provider-matchbox_v0.2.3 -``` - -Binary names are versioned. This enables the ability to upgrade different plugins and have clusters pin different versions. - -``` -$ tree ~/.terraform.d/ -/home/user/.terraform.d/ -└── plugins - ├── terraform-provider-ct_v0.2.1 - └── terraform-provider-matchbox_v0.2.3 -``` - -In each Terraform working directory, set the version of each provider. - -``` -# providers.tf - -provider "matchbox" { - version = "0.2.3" - ... -} - -provider "ct" { - version = "0.2.1" -} -``` - -Run `terraform init` to ensure plugin version requirements are met. Verify `terraform plan` does not produce a diff, since the plugin versions should be the same as previously. - -``` -$ terraform init -$ terraform plan -``` + Typhoon does not support or document node replacement as an upgrade strategy. It limits Typhoon's ability to make infrastructure and architectural changes between tagged releases. ### Upgrade terraform-provider-ct -The [terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) plugin parses, validates, and converts Container Linux Configs into Ignition user-data for provisioning instances. Previously, updating the plugin re-provisioned controller nodes and was destructive to clusters. With Typhoon v1.12.2+, the plugin can be updated in-place and on apply, only workers will be replaced. - -First, [migrate](#terraform-plugins-directory) to the Terraform 3rd-party plugin directory to allow 3rd-party plugins to be defined and versioned independently (rather than globally). +The [terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) plugin parses, validates, and converts Container Linux Configs into Ignition user-data for provisioning instances. Since Typhoon v1.12.2+, the plugin can be updated in-place so that on apply, only workers will be replaced. Add the [terraform-provider-ct](https://github.com/poseidon/terraform-provider-ct) plugin binary for your system to `~/.terraform.d/plugins/`, noting the final name. ```sh -wget https://github.com/poseidon/terraform-provider-ct/releases/download/v0.3.1/terraform-provider-ct-v0.3.1-linux-amd64.tar.gz -tar xzf terraform-provider-ct-v0.3.1-linux-amd64.tar.gz -mv terraform-provider-ct-v0.3.1-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.3.1 +wget https://github.com/poseidon/terraform-provider-ct/releases/download/v0.5.0/terraform-provider-ct-v0.5.0-linux-amd64.tar.gz +tar xzf terraform-provider-ct-v0.5.0-linux-amd64.tar.gz +mv terraform-provider-ct-v0.5.0-linux-amd64/terraform-provider-ct ~/.terraform.d/plugins/terraform-provider-ct_v0.5.0 ``` Binary names are versioned. This enables the ability to upgrade different plugins and have clusters pin different versions. @@ -215,8 +147,8 @@ $ tree ~/.terraform.d/ └── plugins ├── terraform-provider-ct_v0.2.1 ├── terraform-provider-ct_v0.3.0 - ├── terraform-provider-ct_v0.3.1 - └── terraform-provider-matchbox_v0.2.3 + ├── terraform-provider-ct_v0.5.0 + └── terraform-provider-matchbox_v0.3.0 ``` @@ -225,7 +157,7 @@ Update the version of the `ct` plugin in each Terraform working directory. Typho ``` # providers.tf provider "ct" { - version = "0.3.0" + version = "0.5.0" } ``` @@ -279,153 +211,9 @@ Typhoon modules have been adapted for Terraform v0.12. Provider plugins requirem | Typhoon Release | Terraform version | |-------------------|---------------------| -| v1.18.3 - ? | v0.12.x | -| v1.10.3 - v1.18.3 | v0.11.x | +| v1.15.0 - ? | v0.12.x | +| v1.10.3 - v1.15.0 | v0.11.x | | v1.9.2 - v1.10.2 | v0.10.4+ or v0.11.x | | v1.7.3 - v1.9.1 | v0.10.x | | v1.6.4 - v1.7.2 | v0.9.x | -### New users - -New users can start with Terraform v0.12.x and follow the docs for Typhoon v1.18.3+ without issue. - -### Existing users - -Migrate from Terraform v0.11 to v0.12 either **in-place** (easier, riskier) or by **moving resources** (safer, tedious). - -Install [Terraform](https://www.terraform.io/downloads.html) v0.12.x on your system alongside Terraform v0.11.x. - -```shell -sudo ln -sf ~/Downloads/terraform-0.12.0/terraform /usr/local/bin/terraform12 -``` - -!!! note - For example, `terraform` may refer Terraform v0.11.14, while `terraform12` is symlinked to Terraform v0.12.1. Once migration is complete, Terraform v0.11.x can be deleted and `terraform12` renamed. - -#### In-place - -For existing Typhoon v1.14.2 or v1.14.3 clusters, edit the Typhoon `ref` to first SHA that introduced Terraform v0.12 support (`3276bf587850218b8f967978a4bf2b05d5f440a2`). The aim is to minimize the diff and convert to using Terraform v0.12.x. For example: - -```tf - module "mercury" { -- source = "git::https://github.com/poseidon/typhoon//bare-metal/container-linux/kubernetes?ref=v1.14.3" -+ source = "git::https://github.com/poseidon/typhoon//bare-metal/container-linux/kubernetes?ref=3276bf587850218b8f967978a4bf2b05d5f440a2" - ... -``` - -With Terraform v0.12, Typhoon clusters no longer require the `providers` block (unless you actually need to pass an [aliased provider](https://www.terraform.io/docs/configuration/providers.html#alias-multiple-provider-instances)). A regression in Terraform v0.11 made it neccessary to explicitly pass aliased providers in order for Typhoon to continue to enforce constraints (see [terraform#16824](https://github.com/hashicorp/terraform/issues/16824)). Terraform v0.12 resolves this issue. - -```tf - module "mercury" { - source = "git::https://github.com/poseidon/typhoon//bare-metal/container-linux/kubernetes?ref=3276bf587850218b8f967978a4bf2b05d5f440a2" - -- providers = { -- local = "local.default" -- null = "null.default" -- template = "template.default" -- tls = "tls.default" -- } -``` - -Provider constrains ensure suitable plugin versions are used. Install new versions of `terraform-provider-ct` (v0.3.2+) and `terraform-provider-matchbox` (bare-metal only, v0.3.0+) according to the [changelog](https://github.com/poseidon/typhoon/blob/master/CHANGES.md#v1144) or tutorial docs. The `local`, `null`, `template`, and `tls` blocks in `providers.tf` are no longer needed. - -```tf - provider "matchbox" { -- version = "0.2.3" -+ version = "0.3.0" - endpoint = "matchbox.example.com:8081" - client_cert = "${file("~/.config/matchbox/client.crt")}" - client_key = "${file("~/.config/matchbox/client.key")}" - } - - provider "ct" { -- version = "0.3.2" -+ version = "0.3.3" - } -- --provider "local" { -- version = "~> 1.0" -- alias = "default" --} -- --provider "null" { -- version = "~> 1.0" -- alias = "default" --} -- --provider "template" { -- version = "~> 1.0" -- alias = "default" --} -- --provider "tls" { -- version = "~> 1.0" -- alias = "default" --} -``` - -Within the Terraform config directory (i.e. working directory), initialize to fetch suitable provider plugins. - -```shell -terraform12 init # using Terraform v0.12 binary, not v0.11 -``` - -Use the Terraform v0.12 upgrade subcommand to convert v0.11 syntax to v0.12. This _will_ edit resource definitions in `*.tf` files in the working directory. Start from a clean version control state. Inspect the changes. Resolve any "TODO" items. - -```shell -terraform12 0.12upgrade -git diff -``` - -Finally, plan. - -```shell -terraform12 plan -``` - -Verify no changes are proposed and commit changes to version control. You've migrated to Terraform v0.12! Repeat for other config directories. Use the Terraform v0.12 binary going forward. - -!!! note - It is known that plan may propose re-creating `template_dir` resources. This is harmless. - -!!! error - If plan produced errors, seek to address them (they may be in non-Typhoon resources). If plan proposed a diff, you'll need to evaluate whether that's expected and safe to apply. In-place edits between Typhoon releases aren't supported (favoring blue/green replacement). The larger the version skew, the greater the risk. Use good judgement. If in doubt, abandon the generated changes, delete `.terraform` as [suggested](https://www.terraform.io/upgrade-guides/0-12.html#upgrading-to-terraform-0-12), and try the move resources approach. - -#### Moving Resources - -Alternately, continue maintaining existing clusters using Terraform v0.11.x and existing Terraform configuration directory(ies). Create new Terraform directory(ies) and move resources there to be managed with Terraform v0.12. This approach allows resources to be migrated incrementally and ensures existing resources can always be managed (e.g. emergency patches). - -Create a new Terraform [config directory](/architecture/concepts/#organize) for *new* resources. - -```shell -mkdir infra2 -tree . -├── infraA <- existing Terraform v0.11.x configs -└── infraB <- new Terraform v0.12.x configs -``` - -Define Typhoon clusters in the new config directory using Terraform v0.12 syntax. Follow the Typhoon v1.15.0+ docs (e.g. use `terraform12` in the `infraB` dir). See [AWS](/cl/aws), [Azure](/cl/azure), [Bare-Metal](/cl/bare-metal), [Digital Ocean](/cl/digital-ocean), or [Google-Cloud](/cl/google-cloud)) to create new clusters. Follow the usual [upgrade](/topics/maintenance/#upgrades) process to apply workloads and shift traffic. Later, switch back to the old config directory and deprovision clusters with Terraform v0.11. - -```shell -terraform12 init -terraform12 plan -terraform12 apply -``` - -Your Terraform configuration directory likely defines resources other than just Typhoon modules (e.g. application DNS records, firewall rules, etc.). While such migrations are outside Typhoon's scope, you'll probably want to move existing resource definitions into your new Terraform configuration directory. Use Terraform v0.12 to import the resource into the state associated with the new config directory (to avoid trying to recreate a resource that exists). Then with Terraform v0.11 in the old directory, remove the resource from the state (to avoid trying to delete the resource). Verify neither `plan` produces a diff. - -```sh -# move google_dns_record_set.some-app from infraA to infraB -cd infraA -terraform state list -terraform state show google_dns_record_set.some-app - -cd ../infraB -terraform12 import google_dns_record_set.some-app SOMEID -terraform12 plan - -cd ../infraA -terraform state rm google_dns_record_set.some-app -terraform plan -``` - diff --git a/mkdocs.yml b/mkdocs.yml index 49d470db..d975b56c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,26 +1,28 @@ -site_name: 'Typhoon' -site_description: 'A minimal and free Kubernetes distribution' -site_author: 'Dalton Hubble' -repo_name: 'poseidon/typhoon' -repo_url: 'https://github.com/poseidon/typhoon' +site_name: Typhoon +site_description: A minimal and free Kubernetes distribution +site_author: Dalton Hubble +repo_name: poseidon/typhoon +repo_url: https://github.com/poseidon/typhoon theme: - name: 'material' - feature: - tabs: 'true' - palette: - primary: 'blue' - accent: 'pink' + name: material + features: + - tabs logo: 'img/spin.png' favicon: 'img/favicon.ico' + icon: + repo: fontawesome/brands/github-alt + palette: + primary: blue + accent: pink font: text: 'Roboto Slab' code: 'Roboto Mono' extra: social: - - type: 'github' - link: 'https://github.com/poseidon' - - type: 'twitter' - link: 'https://twitter.com/typhoon8s' + - icon: fontawesome/brands/github-alt + link: https://github.com/poseidon + - icon: fontawesome/brands/twitter + link: https://twitter.com/typhoon8s markdown_extensions: - admonition - codehilite @@ -59,12 +61,12 @@ nav: - 'Bare-Metal': 'fedora-coreos/bare-metal.md' - 'Digital Ocean': 'fedora-coreos/digitalocean.md' - 'Google Cloud': 'fedora-coreos/google-cloud.md' - - 'Container Linux': - - 'AWS': 'cl/aws.md' - - 'Azure': 'cl/azure.md' - - 'Bare-Metal': 'cl/bare-metal.md' - - 'Digital Ocean': 'cl/digital-ocean.md' - - 'Google Cloud': 'cl/google-cloud.md' + - 'Flatcar Linux': + - 'AWS': 'flatcar-linux/aws.md' + - 'Azure': 'flatcar-linux/azure.md' + - 'Bare-Metal': 'flatcar-linux/bare-metal.md' + - 'Digital Ocean': 'flatcar-linux/digitalocean.md' + - 'Google Cloud': 'flatcar-linux/google-cloud.md' - 'Topics': - 'Maintenance': 'topics/maintenance.md' - 'Hardware': 'topics/hardware.md' diff --git a/requirements.txt b/requirements.txt index e8189b35..ba487e10 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -mkdocs==1.0.4 -mkdocs-material==4.6.3 +mkdocs==1.1.2 +mkdocs-material==5.2.0 pygments==2.5.2 -pymdown-extensions==6.3.0 +pymdown-extensions==7.1.0