Yamcs Mission Control
Yamcs is an open-source software framework for command and control of spacecrafts, satellites, payloads, ground stations and ground equipment. Telemetry…
August 13, 2024 at 09:55AM
via Instapaper
Yamcs Mission Control
Yamcs is an open-source software framework for command and control of spacecrafts, satellites, payloads, ground stations and ground equipment. Telemetry…
August 13, 2024 at 09:55AM
via Instapaper
postgres.new: In-browser Postgres with an AI interface
Introducing postgres.new, the in-browser Postgres sandbox with AI assistance. With postgres.new, you can instantly spin up an unlimited number of Postgres…
August 13, 2024 at 09:09AM
via Instapaper
Master Your New Laptop Setup: Tools, Configs (dot Files), and Secrets!
I just got a new machine and need to set it up. In this video, I'll show you how to quickly configure your terminal and install essential tools using scripts and Devbox. We'll cover cloning a Git repo, running installation scripts, and syncing dot files with Stow for a seamless setup across multiple devices. Learn how to keep your configurations consistent and avoid leaking secrets. Perfect for developers who want a streamlined setup process. Watch as I transform a fresh machine into a fully configured development environment in no time!
▬▬▬▬▬▬ 🔗 Additional Info 🔗 ▬▬▬▬▬▬ ➡ Transcript and commands: https://devopstoolkit.live/terminal/master-your-new-laptop-setup-tools-configs-and-secrets 🔗 stow: https://gnu.org/software/stow 🎬 Nix for Everyone: Unleash Devbox for Simplified Development: https://youtu.be/WiFLtcBvGMU 🎬 Secrets Made My Life Miserable - Consume Secrets Easily With Teller: https://youtu.be/Vcjz-YM3uLQ
▬▬▬▬▬▬ 💰 Sponsorships 💰 ▬▬▬▬▬▬ If you are interested in sponsoring this channel, please use https://calendar.app.google/Q9eaDUHN8ibWBaA7A to book a timeslot that suits you, and we'll go over the details. Or feel free to contact me over Twitter or LinkedIn (see below).
▬▬▬▬▬▬ 👋 Contact me 👋 ▬▬▬▬▬▬ ➡ Twitter: https://twitter.com/vfarcic ➡ LinkedIn: https://www.linkedin.com/in/viktorfarcic/
▬▬▬▬▬▬ 🚀 Other Channels 🚀 ▬▬▬▬▬▬ 🎤 Podcast: https://www.devopsparadox.com/ 💬 Live streams: https://www.youtube.com/c/DevOpsParadox
▬▬▬▬▬▬ ⏱ Timecodes ⏱ ▬▬▬▬▬▬ 00:00 Introduction to dot Files 04:10 How to Manage dot Files?
via YouTube https://www.youtube.com/watch?v=FH083GOJoIM
Introducing Feature Gates to Client-Go: Enhancing Flexibility and Control
https://kubernetes.io/blog/2024/08/12/feature-gates-in-client-go/
Kubernetes components use on-off switches called feature gates to manage the risk of adding a new feature. The feature gate mechanism is what enables incremental graduation of a feature through the stages Alpha, Beta, and GA.
Kubernetes components, such as kube-controller-manager and kube-scheduler, use the client-go library to interact with the API. The same library is used across the Kubernetes ecosystem to build controllers, tools, webhooks, and more. client-go now includes its own feature gating mechanism, giving developers and cluster administrators more control over how they adopt client features.
To learn more about feature gates in Kubernetes, visit Feature Gates.
Motivation
In the absence of client-go feature gates, each new feature separated feature availability from enablement in its own way, if at all. Some features were enabled by updating to a newer version of client-go. Others needed to be actively configured in each program that used them. A few were configurable at runtime using environment variables. Consuming a feature-gated functionality exposed by the kube-apiserver sometimes required a client-side fallback mechanism to remain compatible with servers that don’t support the functionality due to their age or configuration. In cases where issues were discovered in these fallback mechanisms, mitigation required updating to a fixed version of client-go or rolling back.
None of these approaches offer good support for enabling a feature by default in some, but not all, programs that consume client-go. Instead of enabling a new feature at first only for a single component, a change in the default setting immediately affects the default for all Kubernetes components, which broadens the blast radius significantly.
Feature gates in client-go
To address these challenges, substantial client-go features will be phased in using the new feature gate mechanism. It will allow developers and users to enable or disable features in a way that will be familiar to anyone who has experience with feature gates in the Kubernetes components.
Out of the box, simply by using a recent version of client-go, this offers several benefits.
For people who use software built with client-go:
Early adopters can enable a default-off client-go feature on a per-process basis.
Misbehaving features can be disabled without building a new binary.
The state of all known client-go feature gates is logged, allowing users to inspect it.
For people who develop software built with client-go:
By default, client-go feature gate overrides are read from environment variables. If a bug is found in a client-go feature, users will be able to disable it without waiting for a new release.
Developers can replace the default environment-variable-based overrides in a program to change defaults, read overrides from another source, or disable runtime overrides completely. The Kubernetes components use this customizability to integrate client-go feature gates with the existing --feature-gates command-line flag, feature enablement metrics, and logging.
Overriding client-go feature gates
Note: This describes the default method for overriding client-go feature gates at runtime. It can be disabled or customized by the developer of a particular program. In Kubernetes components, client-go feature gate overrides are controlled by the --feature-gates flag.
Features of client-go can be enabled or disabled by setting environment variables prefixed with KUBE_FEATURE. For example, to enable a feature named MyFeature, set the environment variable as follows:
KUBE_FEATURE_MyFeature=true
To disable the feature, set the environment variable to false:
KUBE_FEATURE_MyFeature=false
Note: Environment variables are case-sensitive on some operating systems. Therefore, KUBE_FEATURE_MyFeature and KUBE_FEATURE_MYFEATURE would be considered two different variables.
Customizing client-go feature gates
The default environment-variable based mechanism for feature gate overrides can be sufficient for many programs in the Kubernetes ecosystem, and requires no special integration. Programs that require different behavior can replace it with their own custom feature gate provider. This allows a program to do things like force-disable a feature that is known to work poorly, read feature gates directly from a remote configuration service, or accept feature gate overrides through command-line options.
The Kubernetes components replace client-go’s default feature gate provider with a shim to the existing Kubernetes feature gate provider. For all practical purposes, client-go feature gates are treated the same as other Kubernetes feature gates: they are wired to the --feature-gates command-line flag, included in feature enablement metrics, and logged on startup.
To replace the default feature gate provider, implement the Gates interface and call ReplaceFeatureGates at package initialization time, as in this simple example:
import ( “k8s.io/client-go/features” )
type AlwaysEnabledGates struct{}
func (AlwaysEnabledGates) Enabled(features.Feature) bool { return true }
func init() { features.ReplaceFeatureGates(AlwaysEnabledGates{}) }
Implementations that need the complete list of defined client-go features can get it by implementing the Registry interface and calling AddFeaturesToExistingFeatureGates. For a complete example, refer to the usage within Kubernetes.
Summary
With the introduction of feature gates in client-go v1.30, rolling out a new client-go feature has become safer and easier. Users and developers can control the pace of their own adoption of client-go features. The work of Kubernetes contributors is streamlined by having a common mechanism for graduating features that span both sides of the Kubernetes API boundary.
Special shoutout to @sttts and @deads2k for their help in shaping this feature.
via Kubernetes Blog https://kubernetes.io/
August 11, 2024 at 08:00PM
@barkbox never ceases to amaze me #barkbox
August 10, 2024 at 11:05AM
via Instagram https://instagr.am/p/C-fmoJFpMgh/
How AWS tracks the cloud’s biggest security threats and helps shut them down | Amazon Web Services
August 9, 2024 at 11:17AM
via Instapaper
Anaconda puts the squeeze on data scientists
August 9, 2024 at 11:10AM
via Instapaper
How Postgres stores data on disk – this one's a page turner | drew's dev blog
August 9, 2024 at 09:42AM
via Instapaper
ICANN approves use of .internal domain for your network
August 9, 2024 at 09:39AM
via Instapaper
Raspberry Pi Pico 2, our new $5 microcontroller board, on sale now - Raspberry Pi
August 9, 2024 at 09:39AM
via Instapaper
The complexity of BUSL transformation [LWN.net]
The Business Source License (BUSL) is a source-available license that "converts" to an open-source license after a period of time. In theory, this means that a…
August 9, 2024 at 08:52AM
via Instapaper