Closed3
使えそうなnginxイメージ作り

任意の文章を返す
FROM nginx:1.27.4-bookworm
# 任意の index.html をコンテナ内の適切なディレクトリにコピー
COPY index.html /usr/share/nginx/html/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Nginx</title>
</head>
<body>
<h1 style="color: red;">test</h1>
</body>
</html>

自身のpod名を返却する
LBのテストに便利かも
apiVersion: apps/v1
kind: Deployment
metadata:
name: podname-nginx-deployment
spec:
replicas: 5
selector:
matchLabels:
app: podname-nginx
template:
metadata:
labels:
app: podname-nginx
spec:
containers:
- name: nginx
image: nginx:1.27.4-bookworm
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
command: ["/bin/sh", "-c"]
args:
- >
echo "<!DOCTYPE html><html><head><meta charset='UTF-8'><title>Pod Info</title></head><body><h1 style='color: green;'>Pod Name: $POD_NAME</h1></body></html>" > /usr/share/nginx/html/index.html &&
exec nginx -g 'daemon off;'
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: podname-nginx-service
spec:
type: ClusterIP
selector:
app: podname-nginx
ports:
- port: 80
targetPort: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
spec.ingressClassName: "traefik"
spec:
ingressClassName: traefik
rules:
- host: <host>
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: podname-nginx-service
port:
number: 80
- 環境変数をpodに共有している
- kubectl port-forwardだとロードバランシングされないためk3d付属のtraefik ingressで疎通できるようにしている

(おまけ)ECR push用のMakefile
AWS_ACCOUNT_ID =
REGION = ap-northeast-1
ECR_REPO =
IMAGE_NAME =
TAG =
# ECRのURIを生成
ECR_URI = $(AWS_ACCOUNT_ID).dkr.ecr.$(REGION).amazonaws.com
build_and_push:
aws ecr get-login-password --region $(REGION) | docker login --username AWS --password-stdin $(ECR_URI)
docker build -t $(IMAGE_NAME):$(TAG) .
docker tag $(IMAGE_NAME):$(TAG) $(ECR_URI)/$(ECR_REPO):$(TAG)
docker push $(ECR_URI)/$(ECR_REPO):$(TAG)
このスクラップは6ヶ月前にクローズされました