Appearance
Last updated at 2025-03-23 Posted at 2025-03-22
CiliumのIngressの使い方
目次
概要
前回インストールしたCiliumのIngressの使ってみます
自宅サーバーでの使用を想定し、1つのIPアドレスを使い回すことができるように、loadbalancerModeはsharedにしています
環境
- ciliumの手順でインストール済
- loadbalancerModeはshared
- TLS証明書についてはcert-managerの手順でインストール済
サンプルアプリケーションのデプロイ
まず、Ingressを試すためのアプリケーションをデプロイします
以下のマニフェストと同様にnginx2もデプロイします
sh
kubectl create ns nginx1
mkdir -p ~/yaml/nginx
cat <<EOF > ~/yaml/nginx/nginx1.yml
apiVersion: v1
kind: ConfigMap
metadata:
name: custom-nginx1
namespace: nginx1
data:
index.html: |
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>Welcome to My Custom Nginx1!</h1>
</body>
</html>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
namespace: nginx1
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: html-volume
mountPath: /usr/share/nginx/html
volumes:
- name: html-volume
configMap:
name: custom-nginx1
---
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: nginx1
spec:
selector:
app: nginx
ports:
- protocol: TCP
name: http
port: 80
targetPort: 80
type: ClusterIP
EOF
kubectl apply -f ~/yaml/nginx/nginx1.yml
Ingressのデプロイ
TLS証明書が既に準備できているものとして進めます
log
kcm1:~$ kubectl get secret -n nginx1
NAME TYPE DATA AGE
wildcard-4dev5-com-tls kubernetes.io/tls 2 12d
こちらもnginx1,2のIngressをデプロイします
sh
cat <<EOF > ~/yaml/nginx/ingress1.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx
namespace: nginx1
spec:
defaultBackend:
service:
name: nginx
port:
name: http
ingressClassName: cilium
rules:
- host: nginx1.4dev5.com
http:
paths:
- backend:
service:
name: nginx
port:
name: http
path: /
pathType: Prefix
tls:
- hosts:
- nginx1.4dev5.com
secretName: wildcard-4dev5-com-tls
EOF
kubectl apply -f ~/yaml/nginx/ingress1.yml
loadbalancerModeがsharedの場合、Ingress ControllerのExternal-IPがIngressに割当てされます
log
kcm1:~$ kubectl get svc -n kube-system cilium-ingress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cilium-ingress LoadBalancer 10.99.25.123 192.168.0.9 80:32545/TCP,443:31222/TCP 12d
kcm1:~$ kubectl get ingress -A
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
nginx1 nginx cilium nginx1.4dev5.com 192.168.0.9 80, 443 10m
nginx2 nginx cilium nginx2.4dev5.com 192.168.0.9 80, 443 31s
アクセス確認
log
kcm1:~$ curl https://nginx1.4dev5.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>Welcome to My Custom Nginx1!</h1>
</body>
</html>
kcm1:~$ curl https://nginx2.4dev5.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome</title>
</head>
<body>
<h1>Welcome to My Custom Nginx2!</h1>
</body>
</html>