Skip to content

Commit 60e2661

Browse files
committed
feat(podman): Support podman
Signed-off-by: dark0dave <dark0dave@mykolab.com>
1 parent 8b88484 commit 60e2661

File tree

11 files changed

+93
-74
lines changed

11 files changed

+93
-74
lines changed

.envrc.sample

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
set -a
2+
3+
KUBECONFIG=konfig

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
image.tar
2+
ca.crt
3+
ca.key
4+
ca.srl
5+
server.crt
6+
server.csr
7+
server.key
8+
konfig
9+
10+
# Secret files
11+
.envrc

.mise.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
[tools]
2+
go = "latest"
3+
kind = "latest"
4+
kubectl = "latest"

Dockerfile

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
# syntax=docker/dockerfile:experimental
2-
# ---
3-
FROM golang:1.16 AS build
1+
FROM docker.io/golang:1.16 AS build
42

53
ENV GOOS=linux
64
ENV GOARCH=amd64
@@ -9,11 +7,8 @@ ENV CGO_ENABLED=0
97
WORKDIR /work
108
COPY . /work
119

12-
# Build admission-webhook
13-
RUN --mount=type=cache,target=/root/.cache/go-build,sharing=private \
14-
go build -o bin/admission-webhook .
10+
RUN go build -o bin/admission-webhook .
1511

16-
# ---
1712
FROM scratch AS run
1813

1914
COPY --from=build /work/bin/admission-webhook /usr/local/bin/

Makefile

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,83 @@
11
.PHONY: test
22
test:
3-
@echo "\n🛠️ Running unit tests..."
3+
@echo "🛠️ Running unit tests..."
44
go test ./...
55

66
.PHONY: build
77
build:
8-
@echo "\n🔧 Building Go binaries..."
9-
GOOS=darwin GOARCH=amd64 go build -o bin/admission-webhook-darwin-amd64 .
10-
GOOS=linux GOARCH=amd64 go build -o bin/admission-webhook-linux-amd64 .
8+
@echo "🔧 Building Go binaries..."
9+
go build -o bin/admission-webhook-linux-amd64 .
1110

12-
.PHONY: docker-build
13-
docker-build:
14-
@echo "\n📦 Building simple-kubernetes-webhook Docker image..."
15-
docker build -t simple-kubernetes-webhook:latest .
11+
.PHONY: podman-build
12+
podman-build:
13+
@echo "📦 Building simple-kubernetes-webhook podman image..."
14+
podman build -t simple-kubernetes-webhook:1.0 .
1615

17-
# From this point `kind` is required
1816
.PHONY: cluster
1917
cluster:
20-
@echo "\n🔧 Creating Kubernetes cluster..."
18+
@echo "🔧 Creating Kubernetes cluster..."
2119
kind create cluster --config dev/manifests/kind/kind.cluster.yaml
2220

2321
.PHONY: delete-cluster
2422
delete-cluster:
25-
@echo "\n♻️ Deleting Kubernetes cluster..."
23+
@echo "♻️ Deleting Kubernetes cluster..."
2624
kind delete cluster
2725

2826
.PHONY: push
29-
push: docker-build
30-
@echo "\n📦 Pushing admission-webhook image into Kind's Docker daemon..."
31-
kind load docker-image simple-kubernetes-webhook:latest
27+
push: podman-build
28+
@echo "📦 Pushing admission-webhook image into Kind's podman daemon..."
29+
rm -f image.tardeplo
30+
podman save simple-kubernetes-webhook:1.0 -o image.tar
31+
kind load image-archive image.tar
3232

3333
.PHONY: deploy-config
3434
deploy-config:
35-
@echo "\n⚙️ Applying cluster config..."
35+
@echo "⚙️ Applying cluster config..."
3636
kubectl apply -f dev/manifests/cluster-config/
3737

3838
.PHONY: delete-config
3939
delete-config:
40-
@echo "\n♻️ Deleting Kubernetes cluster config..."
40+
@echo "♻️ Deleting Kubernetes cluster config..."
4141
kubectl delete -f dev/manifests/cluster-config/
4242

4343
.PHONY: deploy
4444
deploy: push delete deploy-config
45-
@echo "\n🚀 Deploying simple-kubernetes-webhook..."
45+
@echo "🚀 Deploying simple-kubernetes-webhook..."
4646
kubectl apply -f dev/manifests/webhook/
4747

4848
.PHONY: delete
4949
delete:
50-
@echo "\n♻️ Deleting simple-kubernetes-webhook deployment if existing..."
50+
@echo "♻️ Deleting simple-kubernetes-webhook deployment if existing..."
5151
kubectl delete -f dev/manifests/webhook/ || true
5252

5353
.PHONY: pod
5454
pod:
55-
@echo "\n🚀 Deploying test pod..."
55+
@echo "🚀 Deploying test pod..."
5656
kubectl apply -f dev/manifests/pods/lifespan-seven.pod.yaml
5757

5858
.PHONY: delete-pod
5959
delete-pod:
60-
@echo "\n♻️ Deleting test pod..."
60+
@echo "♻️ Deleting test pod..."
6161
kubectl delete -f dev/manifests/pods/lifespan-seven.pod.yaml
6262

6363
.PHONY: bad-pod
6464
bad-pod:
65-
@echo "\n🚀 Deploying \"bad\" pod..."
65+
@echo "🚀 Deploying \"bad\" pod..."
6666
kubectl apply -f dev/manifests/pods/bad-name.pod.yaml
6767

6868
.PHONY: delete-bad-pod
6969
delete-bad-pod:
70-
@echo "\n🚀 Deleting \"bad\" pod..."
70+
@echo "🚀 Deleting \"bad\" pod..."
7171
kubectl delete -f dev/manifests/pods/bad-name.pod.yaml
7272

7373
.PHONY: taint
7474
taint:
75-
@echo "\n🎨 Taining Kubernetes node.."
75+
@echo "🎨 Taining Kubernetes node.."
7676
kubectl taint nodes kind-control-plane "acme.com/lifespan-remaining"=4:NoSchedule
7777

7878
.PHONY: logs
7979
logs:
80-
@echo "\n🔍 Streaming simple-kubernetes-webhook logs..."
80+
@echo "🔍 Streaming simple-kubernetes-webhook logs..."
8181
kubectl logs -l app=simple-kubernetes-webhook -f
8282

8383
.PHONY: delete-all

dev/gen-certs.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
openssl genrsa -out ca.key 2048
44

5-
openssl req -new -x509 -days 365 -key ca.key \
5+
openssl req -new -x509 -sha256 -days 365 -key ca.key \
66
-subj "/C=AU/CN=simple-kubernetes-webhook"\
77
-out ca.crt
88

99
openssl req -newkey rsa:2048 -nodes -keyout server.key \
1010
-subj "/C=AU/CN=simple-kubernetes-webhook" \
1111
-out server.csr
1212

13-
openssl x509 -req \
13+
openssl x509 -req -sha256 \
1414
-extfile <(printf "subjectAltName=DNS:simple-kubernetes-webhook.default.svc") \
1515
-days 365 \
1616
-in server.csr \

dev/manifests/cluster-config/mutating.config.yaml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,27 @@ webhooks:
2020
path: /mutate-pods
2121
port: 443
2222
caBundle: |
23-
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMzakNDQWNZQ0NRRFlHcU05a0ZZUjJqQU5CZ2tx
24-
aGtpRzl3MEJBUXNGQURBeE1Rc3dDUVlEVlFRR0V3SkIKVlRFaU1DQUdBMVVFQXd3WmMybHRjR3hsTFd0
25-
MVltVnlibVYwWlhNdGQyVmlhRzl2YXpBZUZ3MHlNVEV3TVRRdwpPREEyTkRCYUZ3MHlNakV3TVRRd09E
26-
QTJOREJhTURFeEN6QUpCZ05WQkFZVEFrRlZNU0l3SUFZRFZRUUREQmx6CmFXMXdiR1V0YTNWaVpYSnVa
27-
WFJsY3kxM1pXSm9iMjlyTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEEKTUlJQkNnS0NBUUVB
28-
M1piR3NzSk9GZ2JkTlBDMUJjZVdaeGN4RDVoRkc0M0YxTXRwTXdzeDUrTFlJejQ3M0pPTgo0RGh6Snlr
29-
V3huTVZEOEd4UElYYzNWUGNsVHp0V3dvdjdyOVo4dUxDRWdFakwyRWJFbjBKVzVTK2s2NkYwK0ZaCjI1
30-
Y1lQNWVqMjVOd1Iwb3ZpbU9VZUpFelcyQktCT3ZGTTlPcmlhN0tkYkdRTWxRSkVFK3JMNXQxYWZmamhu
31-
SVEKdk80MFZwblBFMkQvdmZzaTlEdmVyaTZFOFc2OWJxMEJ4NXRkZUZBalN1Q0FOWldLNjhjOEhIQ3Er
32-
U3FjQ2ZaeAp5YVRmd09xQmsvYWkrMGE3a0RpUXRELzBiY0xyNkRnS3ZkckxRSmZveUlidHE1SklMamtu
33-
U2VhNFJPazRMYS9xCmN3KytpNFZpVWtOS3pUSTVUWWV0c0NKWDFhZFdBMXYvQ3dJREFRQUJNQTBHQ1Nx
34-
R1NJYjNEUUVCQ3dVQUE0SUIKQVFEWXMrNDRuWFc0STZLeSs2VGlGVjZveTErc3lMN2pFNlVONE1oM1JD
35-
eWY4Y1Q0MEVBM3VEcTlZYjVmK3BySQpMbXZpd2RLbm1CbzhHR24zN1N1YWNtYmdMOUlxVlJUZ0hlSGZw
36-
dElsblMwRklDNFVlM1hKOVRxSkNqbDBGbjgyCm9jK05FSytITjNkcldyMjMrdnZObnVlRzI4djhNenpD
37-
V2JjZk9pd0I1TGQxZ0RDbEhIc2RhSHpJZFVjdkk1dGUKbFdzM3U0aXFyYkJDdWFUOWV6OUk5RTdqdHdr
38-
R0hwVVpFV2tiNVhLcEt4SlNXQVRyWm5sTGRtTWxDb2FqM2grawpvbkNSd3R6L2d1aFc3dVJaWlQ4NGtE
39-
MS9SWGo5d3VySE4zZ1NsVDAyVkhFeHpFUUoxM21aVS82V2p3dE05NWVmCmt6NzZiY2VoR05MU0hPU2lE
40-
U1V5b0tBUQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
23+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURRekNDQWl1Z0F3SUJBZ0lVZnFPVnFlL2M2
24+
QkNtTlh4UGlzUEVIclBnRGl3d0RRWUpLb1pJaHZjTkFRRUwKQlFBd01URUxNQWtHQTFVRUJoTUNR
25+
VlV4SWpBZ0JnTlZCQU1NR1hOcGJYQnNaUzFyZFdKbGNtNWxkR1Z6TFhkbApZbWh2YjJzd0hoY05N
26+
alF4TURJME1qQTFNalF3V2hjTk1qVXhNREkwTWpBMU1qUXdXakF4TVFzd0NRWURWUVFHCkV3SkJW
27+
VEVpTUNBR0ExVUVBd3daYzJsdGNHeGxMV3QxWW1WeWJtVjBaWE10ZDJWaWFHOXZhekNDQVNJd0RR
28+
WUoKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTDNiVUtmVFZxTkFLanQ0U0JkbGl4
29+
QllqQnh5QjNGbgo0R3NTYjB6WmxlVjhMaG0xanJFMWgzZEdWeTBhaFJBNUVEWXJOc0FSejZoY3hR
30+
QnZiSFdVdHBraTRuSk5mMlY4ClVXWEJuSTlWZm9QNDlJMTFBWTBaU3ZjRHlEbThBV0VwMStQbU9n
31+
bVV1bXNhOENUU0h0UTVTWWlwNWJRajJRYVMKQlZJRFk4dXRIWDNzRGZRdHJ3RUhadzNsZkVjM3Zz
32+
cjNDRjd1ZlA2V2NFT1d1NC95bUJjbWdUMFQySUFtTVMxQQpJVnZVT1hPNitTNzBOajBQZEkyZTRQ
33+
cVlUcFI2cWk2MkR4bEdWbDdMcTh3ZklvMjNHRllIODVrallqQkRaK3FVCmh2NXpvaHJFbzlxSlJV
34+
OU82VmVxdEZTMU96Zm5Yd0xiZjBnYjVMWi9DaDRXYmRXU2hEejJZa2tDQXdFQUFhTlQKTUZFd0hR
35+
WURWUjBPQkJZRUZNenhleHJzRUZGVGtEZnlUWSszQUNBRVZPMDRNQjhHQTFVZEl3UVlNQmFBRk16
36+
eApleHJzRUZGVGtEZnlUWSszQUNBRVZPMDRNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29a
37+
SWh2Y05BUUVMCkJRQURnZ0VCQUFMcGJQRFdyRXdkK0VmKzlKek55MWdYSU9mNVF4b0xVYXJEZUlO
38+
VkdZWU9NL1ZOTlEzVWZpZE0KLzlIQWFTdUk3NkdyN210RWpsRzJBTHY2UGtER1Via296VFQ5ZHFx
39+
MllzR05TVlAvZDdXY2FUMDRMWU4rd2VMaApGVU4yQURqZU90VHhNSVBZREI2cnJTR2oxMmtHa2Ez
40+
YmtnSUlHQ0xvTU0wRC83V2hlUXlVMSs4UWZmMy9qRVZNCjgzcDlOZEd0RFduRWVQYzZqM3hFeVN0
41+
bWd1Uzg1a0NGRy91L1FMNmllNlRYUmh4WTcyNUFvWDgrdzg2NW1POC8KUkc3T2tuVWNaRmpQWWFE
42+
a1JyWmlqa1hkcHRNcERwRS9RLzBCaU9YVS9JdktBeDdtRFQyN3B4Q2VpTG8xL3JkMgp0bUVidm5O
43+
akdmQmNmaXZCT0tOSEdVTDhMeXNJS01VPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
4144
admissionReviewVersions: ["v1"]
4245
sideEffects: None
4346
timeoutSeconds: 2

dev/manifests/cluster-config/validating.config.yaml

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,27 @@ webhooks:
2020
path: /validate-pods
2121
port: 443
2222
caBundle: |
23-
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMzakNDQWNZQ0NRRFlHcU05a0ZZUjJqQU5CZ2tx
24-
aGtpRzl3MEJBUXNGQURBeE1Rc3dDUVlEVlFRR0V3SkIKVlRFaU1DQUdBMVVFQXd3WmMybHRjR3hsTFd0
25-
MVltVnlibVYwWlhNdGQyVmlhRzl2YXpBZUZ3MHlNVEV3TVRRdwpPREEyTkRCYUZ3MHlNakV3TVRRd09E
26-
QTJOREJhTURFeEN6QUpCZ05WQkFZVEFrRlZNU0l3SUFZRFZRUUREQmx6CmFXMXdiR1V0YTNWaVpYSnVa
27-
WFJsY3kxM1pXSm9iMjlyTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEEKTUlJQkNnS0NBUUVB
28-
M1piR3NzSk9GZ2JkTlBDMUJjZVdaeGN4RDVoRkc0M0YxTXRwTXdzeDUrTFlJejQ3M0pPTgo0RGh6Snlr
29-
V3huTVZEOEd4UElYYzNWUGNsVHp0V3dvdjdyOVo4dUxDRWdFakwyRWJFbjBKVzVTK2s2NkYwK0ZaCjI1
30-
Y1lQNWVqMjVOd1Iwb3ZpbU9VZUpFelcyQktCT3ZGTTlPcmlhN0tkYkdRTWxRSkVFK3JMNXQxYWZmamhu
31-
SVEKdk80MFZwblBFMkQvdmZzaTlEdmVyaTZFOFc2OWJxMEJ4NXRkZUZBalN1Q0FOWldLNjhjOEhIQ3Er
32-
U3FjQ2ZaeAp5YVRmd09xQmsvYWkrMGE3a0RpUXRELzBiY0xyNkRnS3ZkckxRSmZveUlidHE1SklMamtu
33-
U2VhNFJPazRMYS9xCmN3KytpNFZpVWtOS3pUSTVUWWV0c0NKWDFhZFdBMXYvQ3dJREFRQUJNQTBHQ1Nx
34-
R1NJYjNEUUVCQ3dVQUE0SUIKQVFEWXMrNDRuWFc0STZLeSs2VGlGVjZveTErc3lMN2pFNlVONE1oM1JD
35-
eWY4Y1Q0MEVBM3VEcTlZYjVmK3BySQpMbXZpd2RLbm1CbzhHR24zN1N1YWNtYmdMOUlxVlJUZ0hlSGZw
36-
dElsblMwRklDNFVlM1hKOVRxSkNqbDBGbjgyCm9jK05FSytITjNkcldyMjMrdnZObnVlRzI4djhNenpD
37-
V2JjZk9pd0I1TGQxZ0RDbEhIc2RhSHpJZFVjdkk1dGUKbFdzM3U0aXFyYkJDdWFUOWV6OUk5RTdqdHdr
38-
R0hwVVpFV2tiNVhLcEt4SlNXQVRyWm5sTGRtTWxDb2FqM2grawpvbkNSd3R6L2d1aFc3dVJaWlQ4NGtE
39-
MS9SWGo5d3VySE4zZ1NsVDAyVkhFeHpFUUoxM21aVS82V2p3dE05NWVmCmt6NzZiY2VoR05MU0hPU2lE
40-
U1V5b0tBUQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
23+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURRekNDQWl1Z0F3SUJBZ0lVZnFPVnFlL2M2
24+
QkNtTlh4UGlzUEVIclBnRGl3d0RRWUpLb1pJaHZjTkFRRUwKQlFBd01URUxNQWtHQTFVRUJoTUNR
25+
VlV4SWpBZ0JnTlZCQU1NR1hOcGJYQnNaUzFyZFdKbGNtNWxkR1Z6TFhkbApZbWh2YjJzd0hoY05N
26+
alF4TURJME1qQTFNalF3V2hjTk1qVXhNREkwTWpBMU1qUXdXakF4TVFzd0NRWURWUVFHCkV3SkJW
27+
VEVpTUNBR0ExVUVBd3daYzJsdGNHeGxMV3QxWW1WeWJtVjBaWE10ZDJWaWFHOXZhekNDQVNJd0RR
28+
WUoKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTDNiVUtmVFZxTkFLanQ0U0JkbGl4
29+
QllqQnh5QjNGbgo0R3NTYjB6WmxlVjhMaG0xanJFMWgzZEdWeTBhaFJBNUVEWXJOc0FSejZoY3hR
30+
QnZiSFdVdHBraTRuSk5mMlY4ClVXWEJuSTlWZm9QNDlJMTFBWTBaU3ZjRHlEbThBV0VwMStQbU9n
31+
bVV1bXNhOENUU0h0UTVTWWlwNWJRajJRYVMKQlZJRFk4dXRIWDNzRGZRdHJ3RUhadzNsZkVjM3Zz
32+
cjNDRjd1ZlA2V2NFT1d1NC95bUJjbWdUMFQySUFtTVMxQQpJVnZVT1hPNitTNzBOajBQZEkyZTRQ
33+
cVlUcFI2cWk2MkR4bEdWbDdMcTh3ZklvMjNHRllIODVrallqQkRaK3FVCmh2NXpvaHJFbzlxSlJV
34+
OU82VmVxdEZTMU96Zm5Yd0xiZjBnYjVMWi9DaDRXYmRXU2hEejJZa2tDQXdFQUFhTlQKTUZFd0hR
35+
WURWUjBPQkJZRUZNenhleHJzRUZGVGtEZnlUWSszQUNBRVZPMDRNQjhHQTFVZEl3UVlNQmFBRk16
36+
eApleHJzRUZGVGtEZnlUWSszQUNBRVZPMDRNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29a
37+
SWh2Y05BUUVMCkJRQURnZ0VCQUFMcGJQRFdyRXdkK0VmKzlKek55MWdYSU9mNVF4b0xVYXJEZUlO
38+
VkdZWU9NL1ZOTlEzVWZpZE0KLzlIQWFTdUk3NkdyN210RWpsRzJBTHY2UGtER1Via296VFQ5ZHFx
39+
MllzR05TVlAvZDdXY2FUMDRMWU4rd2VMaApGVU4yQURqZU90VHhNSVBZREI2cnJTR2oxMmtHa2Ez
40+
YmtnSUlHQ0xvTU0wRC83V2hlUXlVMSs4UWZmMy9qRVZNCjgzcDlOZEd0RFduRWVQYzZqM3hFeVN0
41+
bWd1Uzg1a0NGRy91L1FMNmllNlRYUmh4WTcyNUFvWDgrdzg2NW1POC8KUkc3T2tuVWNaRmpQWWFE
42+
a1JyWmlqa1hkcHRNcERwRS9RLzBCaU9YVS9JdktBeDdtRFQyN3B4Q2VpTG8xL3JkMgp0bUVidm5O
43+
akdmQmNmaXZCT0tOSEdVTDhMeXNJS01VPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
4144
admissionReviewVersions: ["v1"]
4245
sideEffects: None
4346
timeoutSeconds: 2

dev/manifests/kind/kind.cluster.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ kind: Cluster
22
apiVersion: kind.x-k8s.io/v1alpha4
33
nodes:
44
- role: control-plane
5-
image: kindest/node:v1.21.1
5+
image: kindest/node:v1.31.1
66
extraPortMappings:
77
- containerPort: 30100
88
hostPort: 8443

dev/manifests/webhook/webhook.deploy.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ spec:
2020
operator: Exists
2121
effect: NoSchedule
2222
containers:
23-
- image: simple-kubernetes-webhook:latest
24-
imagePullPolicy: Never
23+
- image: localhost/simple-kubernetes-webhook:1.0
24+
imagePullPolicy: IfNotPresent
2525
name: simple-kubernetes-webhook
2626
env:
2727
- name: TLS

0 commit comments

Comments
 (0)