v3.0.0
🚀 Geodesic version 3 (#945)
Breaking Changes
Geodesic Version 3 is not about adding new features, it is about slimming down and removing support for outdated tools and workflows. Many have complained that the Geodesic Docker image is too big. Geodesic v3 is roughly half the size of the Geodesic v2.10.0. 🥳
As such, there are many breaking changes, but for most people, there should be little or no impact.
Major Changes
Alpine Discontinued
Geodesic was first released based on Alpine. With Version 2, we added a Debian-based version, and deprecated the Alpine version. Now, with Version 3, we are only publishing the Debian-based version.
Terraform replaced with OpenTofu
Previously, Geodesic shipped with the latest version of Terraform installed. Now Geodesic ships with OpenTofu installed instead. Using the Debian alternatives system, it is also installed as an alternative to Terraform, so it can be run as either tofu
or terraform
.
Unneeded Packages Removed
Recently we removed AWS CLI v1 and Google SDK from the base version of Geodesic. With Geodesic version 3, we are removing additional Debian packages that were not worth the space in the Docker image. For the most part, any of these tools can be added back using apt-get install
in your Dockerfile if you want them.
Removed Packages
- direnv
- fuse3
- goofys
- groff (note that
groff-base
is installed instead, so thegroff
command itself remains) - musl-dev
- pandoc
- python3 (see note below)
- terragrunt
- variant
- variant2
Note on Python3
The python3
Debian package installs a segregated Python in /usr/bin/python3
for use only by system packages. Significantly, this installation of Python uses dist-packages
instead of site-packages
to reference installed packages. Read more about this in Debian Python: Deviations from Upstream. We have not found it useful in Geodesic, so we no longer install it.
Geodesic continues to ship with a very recent version of Python installed for users in /usr/local/bin/python3
and using site-packages
, sourced from the official Python source distribution.
Removed Support for Obsolete Workflows and Tools
Geodesic is the tool Cloud Posse uses to support its customers in their workflows. As Cloud Posse's reference architecture and standard workflows have changed, a lot of the custom scripts and other support for the old workflows is no longer in use and has not been maintained. In version 3, the support is fully removed. Here is a representative list of support that has been removed, though it may not be fully complete.
- Many years ago, configurations were managed by a combination of Makefiles and
direnv
+envrc
(and our similartfenv
tool). All of that support has been removed, including customizations and addons tomake
and Makefiles in general. We no longer usemake
from within Geodesic. - Around the same time, we built Kubernetes clusters using
kops
and had extensive support for that. That has all been removed in favor of using AWS EKS to manage Kubernetes, and other solutions (such as AWS ECS) for managing workloads without using Kubernetes. - As part of this ancient system, we had customized enhancements in support of helmfile. That support has been removed. We now use our own tool, Atmos to do all that
helmfile
could do and so much more. - We have also removed support for using
make
to generate your own Makefile to build your own version of Geodesic. That mechanism was too customized forkops
and custom tooling we no longer support. We recommend instead that you useMakefile.custom
file as a template and fill in the blanks manually. - Related scripts like
build-kops-manifest
,deps
,kopsctl
, andhelmctl
have been removed. - All custom support for Atlantis has been removed. You may be able to use Atlantis under Geodesic v3, but Cloud Posse stopped using Atlantis several years ago and so we are no longer providing official support for it.
- Customized, built-in support for AWS authentication via Okta, aws-vault, and saml2aws has been dropped. We recommend managing authentication either via
aws sso
or Leapp, which provides support for integration with SAML IdP, AWS SSO, and other authentication mechanisms. (Note: Although Noovolari has announced the end of commercial support for Leapp Pro, Leapp started out as open source and we expect the open source version of Leapp to remain supported and one of the best cloud credential management tools available for the foreseeable future.) - Previously, we configured
XDG_CONFIG_HOME
(see the XDG Base Directory Specification for more details) to point to a directory in the Geodesic Docker image, so that we could store configuration supporting the above in that directory. With this initial release of Geodesic v3, we are starting to migrateXDG_*
to the Docker host's file system. If you setXDG_CONFIG_HOME
on your host, Geodesic will import that value for use from within Geodesic. (Moving Geodesic's own configuration toXDG_CONFIG_HOME
is planned to come at a later date, most likely in Geodesic v4.) Geodesic no longer pre-populates anything inXDG_CONFIG_HOME
. - Previously, Geodesic had support for mounting an AWS S3 bucket as a local file system. This was never terrifically robust, and was only used to support
kops
operations, so it has been entirely removed.
what
- Drop Alpine version of Geodesic
- Replace Terraform with OpenTofu
- Remove obsolete and underutilized packages, tools, scripts, and related support
why
- Alpine's incompatibilities with Linux are a continuing maintenance issue and not worth the relatively modest reduction in Docker image size given the volume of additional tools and support Geodesic adds.
- Hashicorp has changed Terraform's License and it is no longer compatible with Cloud Posse's mission. OpenTofu is intended to be a drop-in replacement for Terraform and is in much better alignment with Cloud Posse's values.
- Dramatically reduce the size of the Geodesic Docker image
- Reduce the maintenance issues that result from having complex features that neither Cloud Posse nor its customers use anymore.