### 实现不用公网服务器构建内网穿透

#### **流程概述**

在Kubernetes(简称K8S)集群中实现不用公网服务器构建内网穿透需要经历以下步骤:

| 步骤 | 操作 |
| ---- | ------------- |
| 1 | 部署Ngrok服务 |
| 2 | 创建Service |
| 3 | 配置Ingress |

#### **步骤详解**

1. **部署Ngrok服务**

首先,我们需要在Kubernetes中部署Ngrok服务,Ngrok是一个优秀的内网穿透工具,可以将本地服务映射到公网。我们可以使用Ngrok提供的Docker镜像来实现在Kubernetes中的部署。

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ngrok-deployment
spec:
replicas: 1
selector:
matchLabels:
app: ngrok
template:
metadata:
labels:
app: ngrok
spec:
containers:
- name: ngrok
image: wernight/ngrok
ports:
- containerPort: 4040
- containerPort: 80
```

2. **创建Service**

接下来,我们需要创建一个Kubernetes Service来暴露Ngrok服务,以便其他服务可以通过该Service访问Ngrok服务。

```yaml
apiVersion: v1
kind: Service
metadata:
name: ngrok-service
spec:
selector:
app: ngrok
ports:
- protocol: TCP
port: 80
```

3. **配置Ingress**

最后一步是配置Ingress资源,将外部请求导入到Ngrok服务。通过Ingress,我们可以将请求路由到Ngrok服务,实现内网穿透。

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ngrok-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ngrok-service
port:
number: 80
```

在完成以上步骤后,Ngrok服务就能够在Kubernetes集群中实现内网穿透,不需要借助公网服务器即可将本地服务映射到外部访问。

希望这篇文章能够帮助你了解如何在Kubernetes中实现不用公网服务器构建内网穿透。祝你学习顺利!