Я использую кластер kubernetes, который состоит из трех узлов и прекрасно работает, но пришло время сделать мое веб-приложение безопасным, поэтому я развернул входной контроллер (traefik). Но я не смог найти инструкции по настройке https на нем. Я знаю большинство вещей, которые мне придется сделать, например, настроить «секрет» (контейнер с сертификатами) и т. Д., Но мне было интересно, как настроить мой входной контроллер и все файлы, связанные с ним, чтобы я мог использовать безопасное соединение
Я уже настроил входной контроллер и создал несколько внешних и внутренних интерфейсов. Также я настроил сервер nginx (на самом деле это запущенное веб-приложение) для работы на 443 порту
Развертывание моего веб-приложения
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: nginx
replicas: 3 # tells deployment to run 3 pods matching the template
template: # create pods using pod definition in this template
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: ilchub/my-nginx
ports:
- containerPort: 443
tolerations:
- key: "primary"
operator: Equal
value: "true"
effect: "NoSchedule"
Код развертывания входного контроллера Traefik
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: traefik-ingress
namespace: kube-system
labels:
k8s-app: traefik-ingress-lb
spec:
replicas: 1
selector:
matchLabels:
k8s-app: traefik-ingress-lb
template:
metadata:
labels:
k8s-app: traefik-ingress-lb
name: traefik-ingress-lb
spec:
serviceAccountName: traefik-ingress
terminationGracePeriodSeconds: 60
containers:
- image: traefik
name: traefik-ingress-lb
ports:
- name: http
containerPort: 80
- name: https
containerPort: secure
- name: admin
containerPort: 8080
args:
- --api
- --kubernetes
- --logLevel=INFO
Вход для панели управления traefik
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
rules:
- host: cluster.aws.ctrlok.dev
http:
paths:
- path: /
backend:
serviceName: traefik-web-ui
servicePort: web
Внешняя конфигурация, связанная с экспозицией
kind: Service
apiVersion: v1
metadata:
name: traefik-ingress-service
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- protocol: TCP
port: 80
nodePort: 30036
name: web
- protocol: TCP
port: 443
nodePort: 30035
name: secure
- protocol: TCP
port: 8080
nodePort: 30034
name: admin
type: NodePort
Что я хочу сделать, так это защитить мое приложение, которое уже запущено. Конечным результатом должна быть веб-страница, работающая через https