Compare commits

...

33 Commits

Author SHA1 Message Date
f9899a478b ingress class 2025-03-21 20:51:09 +01:00
1f65cc7377 remove leftover namespace 2025-01-20 15:21:57 +01:00
ffa421d6f2 two namespaces 2025-01-20 14:50:14 +01:00
5143af649f update status 2025-01-20 14:42:55 +01:00
3d6dae36b6 fixed switches services 2025-01-20 14:20:55 +01:00
2b83210de0 remove proxy 2025-01-20 14:19:03 +01:00
3a91deff1a report internal ip external 2025-01-20 14:13:46 +01:00
377f7de295 report internal ip 2025-01-20 14:11:40 +01:00
128eb220e9 report ingress status 2025-01-20 14:10:34 +01:00
d0b4486649 Normalized ips 2025-01-20 13:48:14 +01:00
5dd1f90afc swutch controllers to ClusterIP 2025-01-19 20:19:57 +01:00
a99043dc4f fix 2025-01-19 20:19:07 +01:00
d5e2bacd32 remove node port 2025-01-19 20:15:21 +01:00
ce9c7c48e8 split internal & external 2025-01-19 20:14:30 +01:00
e6b6208876 internal allow all fr now 2025-01-19 19:34:06 +01:00
2644d2b50c network policies 2025-01-19 19:16:06 +01:00
fa39cd58e0 remove infra 2025-01-19 18:44:46 +01:00
b089a9bbfb add infra 2025-01-19 18:38:00 +01:00
0d3d5696b1 remove infra 2025-01-19 18:14:25 +01:00
de4f98b0eb internal 2025-01-19 18:06:58 +01:00
ec9792266a nginx.conf 2025-01-19 18:02:46 +01:00
f6747342a6 config 2025-01-19 17:58:39 +01:00
cdc54654ff normalize namespace 2025-01-19 17:57:21 +01:00
c53b269e9c specify namespace 2025-01-19 17:56:06 +01:00
2c51eafe83 specify namespace 2025-01-19 17:55:26 +01:00
df911f1dd8 specify namespace 2025-01-19 17:50:55 +01:00
fa990719d3 proxy 2025-01-19 17:49:36 +01:00
85b2fa0e0e ingress name 2025-01-19 17:42:30 +01:00
0cd9e24246 internal service 2025-01-19 17:40:27 +01:00
52de5d0dd9 internal controller 2025-01-18 19:42:09 +01:00
232e0d2008 correct class name 2025-01-18 19:32:48 +01:00
0f4358a3f5 fix 2025-01-18 19:28:13 +01:00
0b0aeeb15c external ingres 2025-01-18 19:26:40 +01:00
21 changed files with 353 additions and 32 deletions

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

@@ -0,0 +1,39 @@
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
- --publish-status-address=192.168.0.190
- --update-status
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:
- {}

6
external/ingress-class.yaml vendored Normal file
View File

@@ -0,0 +1,6 @@
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: nginx-external
spec:
controller: k8s.io/ingress-nginx

12
external/kustomization.yaml vendored Normal file
View File

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

View File

@@ -1,6 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: ingress-nginx
name: external-ingress
annotations:
argocd.argoproj.io/sync-wave: "0"

29
external/proxy/deployment.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: external-proxy-config

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

@@ -0,0 +1,11 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.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;
}
}
}

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
loadBalancerIP: 192.168.0.201

View File

@@ -1,9 +1,9 @@
---
apiVersion: v1
kind: Service
metadata:
name: nginx-external
namespace: ingress-nginx
spec:
type: LoadBalancer
selector:
@@ -15,3 +15,4 @@ spec:
- name: https
port: 443
targetPort: 443
loadBalancerIP: 192.168.0.202

View File

@@ -1,27 +0,0 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-external
namespace: ingress-nginx
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-external
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443

View File

@@ -0,0 +1,39 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-internal
labels:
app.kubernetes.io/name: nginx-internal
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: nginx-internal
template:
metadata:
labels:
app.kubernetes.io/name: nginx-internal
spec:
containers:
- name: nginx-ingress
image: registry.k8s.io/ingress-nginx/controller:v1.7.0
args:
- /nginx-ingress-controller
- --ingress-class=nginx-internal
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --publish-status-address=192.168.0.190
- --update-status
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

View File

@@ -0,0 +1,21 @@
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: restrict-ingress-nginx-internal
spec:
podSelector:
matchLabels:
app.kubernetes.io/name: nginx-internal
policyTypes:
- Ingress
ingress:
- {}
# - from:
# - ipBlock:
# cidr: 192.168.0.0/16
# ports:
# - protocol: TCP
# port: 80
# - protocol: TCP
# port: 443

View File

@@ -0,0 +1,11 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: internal-ingress
resources:
# - proxy
- internal-controller.yaml
- internal-policy.yaml
- service.yaml
- namespace.yaml

6
internal/namespace.yaml Normal file
View File

@@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
name: internal-ingress
annotations:
argocd.argoproj.io/sync-wave: "0"

View File

@@ -0,0 +1,29 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: internal-proxy
annotations:
argocd.argoproj.io/sync-wave: "100"
spec:
replicas: 1
selector:
matchLabels:
app: internal-proxy
template:
metadata:
labels:
app: internal-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: internal-proxy-config

View File

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

38
internal/proxy/nginx.conf 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 internal upstreams
upstream internal_ingress {
server nginx-internal.ingress-nginx.svc.cluster.local:80;
}
server {
listen 80 default_server;
server_name _;
}
# dev.mrcynic.site - allow only LAN
server {
listen 80;
server_name ~^(?<subdomain>.+)\.dev\.mrcynic\.site$;
location / {
proxy_pass http://internal_ingress;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}

View File

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

17
internal/service.yaml 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
loadBalancerIP: 192.168.0.201

View File

@@ -2,9 +2,8 @@ apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- ingress-controller.yaml
- service.yaml
- internal
- external
generatorOptions:
annotations: