Almost** instant k8s secret update for your application

Almost** instant k8s secret update for your application

Thinh Nguyen có chia sẻ 1 bài khá tổng quan về secret trên k8s. Mình thấy gãi đúng chỗ ngứa vấn đề của mấy năm trước nên gõ nhanh bài này chia sẻ cùng mọi người. The problem Có 1 vấn đề từ những ngày đầu của k8s (những năm 2014-2016) là khi configmap/secret đc update thì làm sao để application nhận được các thay đổi đó. Giải pháp thời ấy đơn giản nhất là tự đi mà rolling update pods.

Assume role without instance profile

Is it even possible? AWS Systems Manager có 1 tính năng là Default Host Management Configuration (DHMC). Cái này có gì hay ho? DHMC giúp bạn manage EC2 instances. Benefits bao gồm nhưng ko giới hạn những việc như: Connect to your instances securely using Session Manager. Perform automated patch scans using Patch Manager. View detailed information about your instances using Systems Manager Inventory. Track and manage instances using Fleet Manager.

CS:GO launch failure fix

The symptom: CS:GO launched to a black screen and just crash right after. The OS I’m using is Pop!_OS 21.10. The fix here is sudo apt install libtcmalloc-minimal4 cd <YOUR_STEAM_HOME_DIR>/steamapps/common/Counter-Strike\ Global\ Offensive/bin/linux64 # backup the old file mv mv ln -s /usr/lib/x86_64-linux-gnu/ ln -s /usr/lib/x86_64-linux-gnu/ The game should be able to launch after this. However, if you do “verify integrity of game files”, you will need to do this fix again.

Public ECR and private subnets

Hôm trước mình hơi băn khoăn chút việc nếu sử dụng public ECR ( với sử dụng 1 k8s cluster trong private subnets, thì bandwidth từ việc pull images về trong private subnets sẽ đc tính thế nào. Tính vào cho NAT gateway? Hay tính vào cho S3 Gateway Endpoint? Vì public ECR sử dụng S3 làm storage nên trong trường hợp ngon nghẻ nhất là bandwidth đc tính vào Gateway endpoint thì ngon :)

Shure MV7 working on Linux

I read many posts regarding Shure MV7 doesn’t work at all on Linux: here, here and here. It got me nervous as I already bought this on Amazon and return is not an option since I live in Vietnam. However, when I receive the mic today, it just works, right out of the box, on Pop!_OS (v 21.04). The only thing different with the vanilla Pop!_OS distro is I switch to pirewire for audio instead of pulseaudio.

Using k8s kind "rootlessly" without Docker

So you probably already heard the news Docker Desktop is no longer free. While this mostly affect macOS and Windows users and I use Pop!_OS, I still would like to see if we can get by without Docker at all. I’ve been using nerdctl for quite awhile now and while nerdctl mostly fill my needs for docker CLI, I “kinda” need kind CLI to create test cluster for testing purpose. However kind still needs docker.

Làm quen với Pod Security Admission (PSA)

K8s 1.22 giới thiệu Pod Security Admission (sau này gọi tắt là PSA) phiên bản alpha, để thay thế cho Pod Security Policy (PSP). Bài viết này sẽ hướng dẫn qua cách bạn setup PSA và sử dụng PSA 1 cách cơ bản nhất. Enable PSA Để cho mục đích lab đơn giản, mình sẽ sử dụng kind để tạo 1 cluster local. Mình sẽ tạo 1 cluster và enable PSA lên với config như sau

My blogging setup these days

Previous setup I used a small VPS instance on RamNode to host my blog previously. No particular reason. I just happened to have lots of unused credits there. I have a local git repo on my Macbook. Setup a git hook to trigger jekyll build on the VPS. Nothing fancy. No CI/CD whatsoever. The new setup I recently migrated my blog from self-hosted on RamNode to Cloudflare Pages. There are still some quirks but it’s alright for personal use.

How to write Node modules with Rust

TLDR: there’s a sample repo here if you’re lazy to read this post. The sample repo include GitHub Actions sample for CI as well. The Rust bit It’s very simple. You write your function in Rust #[js_function(3)] fn say_hello(ctx: CallContext) -> Result<JsString> { let name = ctx.get::<JsString>(0)?.into_utf8()?; let name = name.as_str()?; let s = ctx.env.create_string_from_std(format!("Hello, {}!", name))?; Ok(s) } And then you expose it to Node.js runtime with #[module_exports] fn init(mut exports: JsObject) -> Result<()> { exports.

What the fuck is even GitOps

Nguồn gốc 2017, term GitOps đc WeaveWorks promote lên với bài viết “Operations by Pull Request”, đại để là k8s system state đc lưu ở 1 git repo changes made thông qua pull request rồi chạy CI/CD pipeline có công cụ hỗ trợ detect configuration drift và reconciler. Nhìn qua thì cũng chẳng có gì đặc biệt vì từ 2016, khi bên mình triển khai Kubernetes, mình cũng đã CI/CD và store system state ở git repo rồi.