Skip to content

Commit

Permalink
Disable default k8s services for AMI (#70)
Browse files Browse the repository at this point in the history
  • Loading branch information
bschimke95 authored Oct 15, 2024
1 parent e55ca45 commit 08084e8
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 12 deletions.
1 change: 1 addition & 0 deletions pkg/cloudinit/controlplane_init.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ func NewInitControlPlane(input InitControlPlaneInput) (CloudConfig, error) {
config.RunCommands = append(config.RunCommands, "/capi/scripts/install.sh")
}
config.RunCommands = append(config.RunCommands,
"/capi/scripts/disable-host-services.sh",
"/capi/scripts/bootstrap.sh",
"/capi/scripts/load-images.sh",
"/capi/scripts/wait-apiserver-ready.sh",
Expand Down
2 changes: 2 additions & 0 deletions pkg/cloudinit/controlplane_init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ func TestNewInitControlPlane(t *testing.T) {
"prerun1",
"prerun2",
"/capi/scripts/install.sh",
"/capi/scripts/disable-host-services.sh",
"/capi/scripts/bootstrap.sh",
"/capi/scripts/load-images.sh",
"/capi/scripts/wait-apiserver-ready.sh",
Expand All @@ -76,6 +77,7 @@ func TestNewInitControlPlane(t *testing.T) {

// NOTE (mateoflorido): Keep this test in sync with the expected paths in the controlplane_init.go file.
g.Expect(config.WriteFiles).To(ConsistOf(
HaveField("Path", "/capi/scripts/disable-host-services.sh"),
HaveField("Path", "/capi/scripts/install.sh"),
HaveField("Path", "/capi/scripts/bootstrap.sh"),
HaveField("Path", "/capi/scripts/load-images.sh"),
Expand Down
1 change: 1 addition & 0 deletions pkg/cloudinit/controlplane_join.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ func NewJoinControlPlane(input JoinControlPlaneInput) (CloudConfig, error) {
config.RunCommands = append(config.RunCommands, "/capi/scripts/install.sh")
}
config.RunCommands = append(config.RunCommands,
"/capi/scripts/disable-host-services.sh",
"/capi/scripts/load-images.sh",
"/capi/scripts/join-cluster.sh",
"/capi/scripts/wait-apiserver-ready.sh",
Expand Down
2 changes: 2 additions & 0 deletions pkg/cloudinit/controlplane_join_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ func TestNewJoinControlPlane(t *testing.T) {
"prerun1",
"prerun2",
"/capi/scripts/install.sh",
"/capi/scripts/disable-host-services.sh",
"/capi/scripts/load-images.sh",
"/capi/scripts/join-cluster.sh",
"/capi/scripts/wait-apiserver-ready.sh",
Expand All @@ -58,6 +59,7 @@ func TestNewJoinControlPlane(t *testing.T) {
// NOTE (mateoflorido): Keep this test in sync with the expected paths in the controlplane_join.go file.
g.Expect(config.WriteFiles).To(ConsistOf(
HaveField("Path", "/capi/scripts/install.sh"),
HaveField("Path", "/capi/scripts/disable-host-services.sh"),
HaveField("Path", "/capi/scripts/bootstrap.sh"),
HaveField("Path", "/capi/scripts/load-images.sh"),
HaveField("Path", "/capi/scripts/join-cluster.sh"),
Expand Down
2 changes: 2 additions & 0 deletions pkg/cloudinit/embed.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ type script string
// you need to add it to the scripts map below.
var (
scriptInstall script = "install.sh"
scriptDisableHostServices script = "disable-host-services.sh"
scriptBootstrap script = "bootstrap.sh"
scriptLoadImages script = "load-images.sh"
scriptConfigureAuthToken script = "configure-auth-token.sh" // #nosec G101
Expand All @@ -39,6 +40,7 @@ var (
// scripts is a map of all embedded bash scripts used in the cloud-init.
scripts = map[script]string{
scriptInstall: mustEmbed(scriptInstall),
scriptDisableHostServices: mustEmbed(scriptDisableHostServices),
scriptBootstrap: mustEmbed(scriptBootstrap),
scriptLoadImages: mustEmbed(scriptLoadImages),
scriptConfigureAuthToken: mustEmbed(scriptConfigureAuthToken),
Expand Down
12 changes: 12 additions & 0 deletions pkg/cloudinit/scripts/disable-host-services.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash -xe

# Usage:
# $0
#
# Assumptions:
# - systemctl is available

for svc in kubelet containerd; do
systemctl stop "${svc}" || true
systemctl disable "${svc}" || true
done
1 change: 1 addition & 0 deletions pkg/cloudinit/worker_join.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ func NewJoinWorker(input JoinWorkerInput) (CloudConfig, error) {
config.RunCommands = append(config.RunCommands, "/capi/scripts/install.sh")
}
config.RunCommands = append(config.RunCommands,
"/capi/scripts/disable-host-services.sh",
"/capi/scripts/load-images.sh",
"/capi/scripts/join-cluster.sh",
"/capi/scripts/configure-node-token.sh",
Expand Down
2 changes: 2 additions & 0 deletions pkg/cloudinit/worker_join_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ func TestNewJoinWorker(t *testing.T) {
"prerun1",
"prerun2",
"/capi/scripts/install.sh",
"/capi/scripts/disable-host-services.sh",
"/capi/scripts/load-images.sh",
"/capi/scripts/join-cluster.sh",
"/capi/scripts/configure-node-token.sh",
Expand All @@ -58,6 +59,7 @@ func TestNewJoinWorker(t *testing.T) {
// NOTE (mateoflorido): Keep this test in sync with the expected paths in the worker_join.go file.
g.Expect(config.WriteFiles).To(ConsistOf(
HaveField("Path", "/capi/scripts/install.sh"),
HaveField("Path", "/capi/scripts/disable-host-services.sh"),
HaveField("Path", "/capi/scripts/bootstrap.sh"),
HaveField("Path", "/capi/scripts/load-images.sh"),
HaveField("Path", "/capi/scripts/join-cluster.sh"),
Expand Down
25 changes: 13 additions & 12 deletions templates/aws/template-variables.rc
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
# Kubernetes cluster configuration
export KUBERNETES_VERSION=v1.30.0
export CONTROL_PLANE_MACHINE_COUNT= # e.g. 1
export WORKER_MACHINE_COUNT=
export KUBERNETES_VERSION=v1.31.0
export CONTROL_PLANE_MACHINE_COUNT=3
export WORKER_MACHINE_COUNT=3

# AWS region
export AWS_REGION="" # e.g. "us-east-2"
export AWS_REGION="eu-central-1"

# AWS machine configuration
export AWS_CREATE_BASTION= # e.g. "true"
export AWS_PUBLIC_IP= # e.g. "true"
export AWS_CONTROL_PLANE_INSTANCE_TYPE= # e.g. "t3.large"
export AWS_NODE_INSTANCE_TYPE= # e.g. "t3.large"
export AWS_CONTROL_PLANE_ROOT_VOLUME_SIZE= # in Gigabyte, e.g. 16
export AWS_NODE_ROOT_VOLUME_SIZE= # in Gigabyte, e.g. 16
export AWS_SSH_KEY_NAME= # e.g. "default"
export AWS_AMI_ID= # e.g. "ami-0ad50e72a79228704"
export AWS_CREATE_BASTION="true"
export AWS_PUBLIC_IP="true"
export AWS_CONTROL_PLANE_INSTANCE_TYPE="t3.large"
export AWS_NODE_INSTANCE_TYPE="t3.large"
export AWS_CONTROL_PLANE_ROOT_VOLUME_SIZE=16
export AWS_NODE_ROOT_VOLUME_SIZE=16
export AWS_SSH_KEY_NAME="default"
# List upstream AMIs with clusterawsadm ami list --owner-id 819546954734
export AWS_AMI_ID="ami-027b534ab5d0b4886"

export AWS_CCM_IMAGE=registry.k8s.io/provider-aws/cloud-controller-manager:v1.28.3

0 comments on commit 08084e8

Please sign in to comment.