Nginx-ingress 安装
链接:https://kubernetes.github.io/ingress-nginx/
helm 安装
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
# 下载 nginx-ingress chart
helm pull ingress-nginx/ingress-nginx --untar
# 安装nginx-ingress
helm upgrade --install ingress-nginx ./ingress-nginx \
--namespace ingress-nginx \
--create-namespace \
--set controller.kind=DaemonSet \
--set controller.hostNetwork=true \
--set controller.service.type=ClusterIP \
--set controller.daemonset.useHostPort=true \
--set controller.daemonset.hostPorts.http=80 \
--set controller.daemonset.hostPorts.https=443 \
--set controller.admissionWebhooks.enabled=true \
--set controller.admissionWebhooks.patch.image.repository=registry.k8s.io/ingress-nginx/kube-webhook-certgen \
--set controller.admissionWebhooks.patch.image.tag=v1.6.0 \
--set controller.admissionWebhooks.patch.image.digest="" \
--set controller.admissionWebhooks.create.image.repository=registry.k8s.io/ingress-nginx/kube-webhook-certgen \
--set controller.admissionWebhooks.create.image.tag=v1.6.0 \
--set controller.nodeSelector."kubernetes\.io/os"=linux \
--set controller.tolerations[0].key=node-role.kubernetes.io/control-plane \
--set controller.tolerations[0].effect=NoSchedule \
--set controller.admissionWebhooks.create.image.digest=""
创建 nginx deployment 并 配置 ingres 路由
# 创建nginx dep和对应的svc
cat <<EOF | kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-demo
spec:
replicas: 2
selector:
matchLabels:
app: nginx-demo
template:
metadata:
labels:
app: nginx-demo
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
volumeMounts:
- name: static-content
mountPath: /usr/share/nginx/html
volumes:
- name: static-content
configMap:
name: nginx-html
---
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-html
data:
index.html: |
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx!</title>
</head>
<body>
<h1>Hello from Nginx on K8s!</h1>
<p>Host: ${HOSTNAME}</p>
</body>
</html>
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx-demo
ports:
- protocol: TCP
port: 80
targetPort: 80
EOF
# 配置 ingress nginx 路由
cat <<EOF | kubectl apply -f -
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: "192-168-230-130.nip.io" # nip.io 自动解析到 192.168.230.130
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
EOF
# 查看ingress规则
# k get ingress -A
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE
default nginx-ingress nginx nginx.192.168.230.130.nip.io 10.96.1.228 80 23m
# 通过域名 nginx.192.168.230.130.nip.io 可以直接访问nginx
# curl nginx.192.168.230.130.nip.io
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx!</title>
</head>
<body>
<h1>Hello from Nginx on K8s!</h1>
<p>Host: liulei-virtual-machine</p>
</body>
</html>