Go

Caching Unstructured Objects using controller-runtime

This is a short blog to let you know that objects represented in unstructured.Unstructured will not be cached by the client returned from manager.Manager by default. UPDATED on Jan. 9th, 2023 The trick described in this article is no longe…

Use go-grpc-middleware with kubebuilder

Kubernetes and gRPC are technologies to build distributed microservices. Writing gRPC servers in Go is fun and easy. With go-grpc-middleware, you can add various features to gRPC servers including access logs and Prometheus metrics. Kubebu…

An example of using dynamic client of k8s.io/client-go

In this article, I describe how to write a Kubernetes client in Go using the dynamic client in k8s.io/client-go package. During the course, you can learn the following things: The difference between typed clients and the dynamic client. Re…

Writing and testing Kubernetes webhooks using Kubebuilder v2

Recently, I am leading a project to re-design our on-premise data centers using Kubernetes. Inevitably there are opportunities to develop Kubernetes native applications. The architecture of Kubernetes is like "hub-and-spoke"; the center of…

Making well-behaved programs in Go with cybozu-go/cmd

We at kintone.com are using Go for variety of tasks. In early days when we started using Go, there were only few in-house rules to create commands. As a result, we faced several difficulties: Some servers did not record access logs. Some p…

How to hack Go's http.Server correctly

Go

One of my recent work was a design and implementation of a framework for Go programs. It is open-sourced at GitHub https://github.com/cybozu-go/cmd . During the work, I have tackled how to enhance Go's http.Server by adding access logging …

Introducing go-apt-cacher and go-apt-mirror

go-apt-cacher is a caching reverse-proxy designed specially for Debian/Ubuntu repositories. As it is written in Go, go-apt-cacher tolerates thousands of concurrent client connections and is very fast. go-apt-mirror is a mirroring tool for …

Transparent SOCKS proxy in Go to replace NAT

I am working behind a cloud service kintone.com as an infrastructure engineer. My recent work was the replacement of NAT inside our data center with a transparent SOCKS proxy. In this post, I will describe our motivation for the replacemen…