split internal & external

This commit is contained in:
2025-01-19 20:14:30 +01:00
parent e6b6208876
commit ce9c7c48e8
18 changed files with 161 additions and 78 deletions

37
external/external-controller.yaml vendored Normal file
View File

@@ -0,0 +1,37 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-external
labels:
app.kubernetes.io/name: nginx-external
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: nginx-external
template:
metadata:
labels:
app.kubernetes.io/name: nginx-external
spec:
containers:
- name: nginx-ingress
image: registry.k8s.io/ingress-nginx/controller:v1.7.0
args:
- /nginx-ingress-controller
- --ingress-class=nginx-external
- --configmap=$(POD_NAMESPACE)/nginx-configuration
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443

13
external/external-policy.yaml vendored Normal file
View File

@@ -0,0 +1,13 @@
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-all-ingress-nginx-external
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: nginx-external
policyTypes:
- Ingress
ingress:
- {}

8
external/kustomization.yaml vendored Normal file
View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- proxy
- external-controller.yaml
- external-policy.yaml
- service.yaml

11
external/proxy/kustomization.yaml vendored Normal file
View File

@@ -0,0 +1,11 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- proxy.yaml
- service.yaml
configMapGenerator:
- name: external-proxy-config
files:
- nginx.conf

38
external/proxy/nginx.conf vendored Normal file
View File

@@ -0,0 +1,38 @@
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
# Basic config
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# We define two upstreams: external and internal
upstream external_ingress {
server nginx-external.ingress-nginx.svc.cluster.local:80;
}
# Server block for HTTP (port 80)
server {
listen 80 default_server;
server_name _;
}
server {
listen 80;
server_name ~^(?<subdomain>.+)\.mrcynic\.site$;
location / {
proxy_pass http://external_ingress;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}

29
external/proxy/proxy.yaml vendored Normal file
View File

@@ -0,0 +1,29 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-proxy
annotations:
argocd.argoproj.io/sync-wave: "100"
spec:
replicas: 1
selector:
matchLabels:
app: external-proxy
template:
metadata:
labels:
app: external-proxy
spec:
containers:
- name: nginx
image: nginx:stable-alpine
volumeMounts:
- name: config
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
ports:
- containerPort: 80
volumes:
- name: config
configMap:
name: proxy-config

14
external/proxy/service.yaml vendored Normal file
View File

@@ -0,0 +1,14 @@
---
apiVersion: v1
kind: Service
metadata:
name: external-proxy-service
spec:
type: LoadBalancer
selector:
app: external-proxy
ports:
- name: http
port: 80
targetPort: 80
nodePort: 30080

17
external/service.yaml vendored Normal file
View File

@@ -0,0 +1,17 @@
---
apiVersion: v1
kind: Service
metadata:
name: nginx-internal
spec:
type: LoadBalancer
selector:
app.kubernetes.io/name: nginx-internal
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443