171 lines
3.9 KiB
YAML
171 lines
3.9 KiB
YAML
# config/nginx/100-serviceaccount.yaml
|
|
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: ingress-proxy
|
|
namespace: ingress-nginx
|
|
# config/nginx/200-rolebinding.yaml
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: RoleBinding
|
|
metadata:
|
|
name: ingress-proxy
|
|
namespace: ingress-nginx
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: Role
|
|
name: ingress-proxy
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: ingress-proxy
|
|
# config/nginx/200-role.yaml
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: Role
|
|
metadata:
|
|
name: ingress-proxy
|
|
namespace: ingress-nginx
|
|
rules:
|
|
- apiGroups: [""]
|
|
resources: ["configmaps"]
|
|
resourceNames: ["ingress-proxy-config"]
|
|
verbs: ["get"]
|
|
- apiGroups: ["policy"]
|
|
resources: ["podsecuritypolicies"]
|
|
resourceNames: ["ingress-proxy"]
|
|
verbs: ["use"]
|
|
# config/nginx/300-psp.yaml
|
|
---
|
|
apiVersion: policy/v1beta1
|
|
kind: PodSecurityPolicy
|
|
metadata:
|
|
name: ingress-proxy
|
|
annotations:
|
|
seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default'
|
|
apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'
|
|
seccomp.security.alpha.kubernetes.io/defaultProfileName: 'runtime/default'
|
|
apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default'
|
|
spec:
|
|
allowedCapabilities:
|
|
- SETUID
|
|
- SETGID
|
|
- NET_BIND_SERVICE
|
|
requiredDropCapabilities: ["ALL"]
|
|
privileged: false
|
|
allowPrivilegeEscalation: false
|
|
readOnlyRootFilesystem: false
|
|
volumes:
|
|
- 'secret'
|
|
- 'configMap'
|
|
hostNetwork: true
|
|
hostIPC: false
|
|
hostPID: false
|
|
runAsUser:
|
|
rule: 'RunAsAny'
|
|
seLinux:
|
|
rule: 'RunAsAny'
|
|
supplementalGroups:
|
|
rule: 'RunAsAny'
|
|
fsGroup:
|
|
rule: 'RunAsAny'
|
|
hostPorts:
|
|
- min: 80
|
|
max: 443
|
|
# config/nginx/deployment.yaml
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: ingress-proxy
|
|
namespace: ingress-nginx
|
|
labels:
|
|
app: ingress-proxy
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: ingress-proxy
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: ingress-proxy
|
|
spec:
|
|
serviceAccountName: ingress-proxy
|
|
nodeSelector:
|
|
kubernetes.io/hostname: MASTERNODE
|
|
tolerations:
|
|
- operator: Exists
|
|
effect: NoSchedule
|
|
containers:
|
|
- name: nginx
|
|
image: nginx@sha256:2911ad2d54f4cf4dc7ad21af122c1eefce16836a34be751c63351ca1fb452d57 # nginx:mainline-alpine
|
|
volumeMounts:
|
|
- name: ingress-proxy
|
|
mountPath: /etc/nginx
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop: ["ALL"]
|
|
add:
|
|
- SETUID
|
|
- SETGID
|
|
- NET_BIND_SERVICE
|
|
ports:
|
|
- name: http
|
|
containerPort: 80
|
|
hostPort: 80
|
|
protocol: TCP
|
|
- name: https
|
|
containerPort: 443
|
|
hostPort: 443
|
|
protocol: TCP
|
|
volumes:
|
|
- name: ingress-proxy
|
|
configMap:
|
|
name: ingress-proxy
|
|
# config/nginx/ingress-proxy-configmap.yaml
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: ingress-proxy
|
|
namespace: ingress-nginx
|
|
data:
|
|
nginx.conf: |
|
|
user nginx;
|
|
worker_processes auto;
|
|
events {
|
|
worker_connections 1024;
|
|
}
|
|
stream {
|
|
upstream stream_backend_80 {
|
|
server ingress-nginx.ingress-nginx.svc:80;
|
|
}
|
|
upstream stream_backend_443 {
|
|
server ingress-nginx.ingress-nginx.svc:443;
|
|
}
|
|
server {
|
|
listen 80;
|
|
proxy_pass stream_backend_80;
|
|
proxy_protocol on;
|
|
}
|
|
server {
|
|
listen 443;
|
|
proxy_pass stream_backend_443;
|
|
proxy_protocol on;
|
|
}
|
|
}
|
|
# config/nginx/nginx-configuration.yaml
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: nginx-configuration
|
|
namespace: ingress-nginx
|
|
labels:
|
|
app.kubernetes.io/name: ingress-nginx
|
|
app.kubernetes.io/part-of: ingress-nginx
|
|
data:
|
|
server-tokens: "false"
|
|
use-proxy-protocol: "true"
|