Инструменты пользователя

Инструменты сайта


k8s:nets

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
k8s:nets [2024/09/08 09:36]
admin
k8s:nets [2024/11/10 13:15] (текущий)
admin
Строка 294: Строка 294:
               number: 80               number: 80
 </code> </code>
 +</details>
 +
 +
 +<details>
 +<summary>:!: Annotations</summary>
 +"nginx.ingress.kubernetes.io/":\\
 +**ssl-redirect** - принудительное использование HTTPS на стороне сервера, с помощью перенаправления. По умолчанию контроллер перенаправляет на HTTPS если для этого входа включен TLS\\
 +**force-ssl-redirect** - принудительно перенаправлять на HTTPS, даже если TLS недоступен.\\
 +
 +**ssl-passthrough** - передача данных по протоколу SSL. Указание контроллеру отправлять соединения по протоколу TLS непосредственно на серверную часть, вместо того чтобы позволять Nginx расшифровывать обмен данными\\
 +:!: т.к. передача по протоколу SSL работает на уровне 4 модели OSI (TCP), а не на 7 (HTTP), то эта аннотация **делает недействительными** все остальные аннотации для входящего объекта\\
 +:!: В том числе и маршрутизация на основе пути (т.е. Location фактически не работает, тк путь зашифрован)\\
 +
 +Блок "TLS" вероятно по этой же причине не работает, тк подставляется дефолтный сертификат кубера 
 +
 +**** - 
 +
 +**** - 
 </details> </details>
  
Строка 322: Строка 340:
  
  
-<details> + 
-<summary>:!: Еще пример</summary>+ 
 +=== HTTPS Ingress === 
 +Ресурс Ingress поддерживает только один порт TLS, 443, и предполагает завершение TLS в точке входа (трафик к Службе и ее Pods передается в виде открытого текста).\\ 
 +Ссылка на этот секрет в Ingress сообщает контроллеру Ingress о необходимости защитить канал от клиента до балансировщика нагрузки с помощью TLS\\
 <code yaml> <code yaml>
-apiVersion: networking.k8s.io/v1 
-kind: Ingress 
-metadata: 
-  annotations: 
-#    kubernetes.io/ingress.class: nginx 
-#    nginx.ingress.kubernetes.io/force-ssl-redirect: 'true' 
-    nginx.ingress.kubernetes.io/ssl-passthrough: 'true' 
-  name: ingress-my-service 
-  namespace: my-namespace 
 spec: spec:
-  ingressClassNamenginx +  tls
-  rules+  - hosts
-    host: <my-service>.<url кластера> +      https-example.foo.com 
-      http: +    secretNametestsecret-tls
-        paths: +
-          path: / +
-            pathType: Prefix +
-            backend: +
-              service: +
-                name: my-service +
-                port: +
-                  number: 3000+
 </code> </code>
-</details> 
  
 +
 +:!: Важно не забывать что серт должен быть валидным, для этого URL\\
  
  
-=== HTTPS Ingress === 
 Для того чтобы использовать сертификаты в конфигурации Ingress, их нужно загрузить в кластер Kubernetes. Серты хранятся в секретах Кубера, Создать такой секрет можно следующим образом:\\ Для того чтобы использовать сертификаты в конфигурации Ingress, их нужно загрузить в кластер Kubernetes. Серты хранятся в секретах Кубера, Создать такой секрет можно следующим образом:\\
 <code bash> <code bash>
Строка 366: Строка 370:
  metadata:  metadata:
    name: ingress-my-tls    name: ingress-my-tls
-   annotations: 
-     ingress.kubernetes.io/ssl-redirect: "true" 
  spec:  spec:
    tls:    tls:
Строка 383: Строка 385:
 </code> </code>
 </details> </details>
 +
 +
 +<details>
 +<summary>:!: Пересылка шифрованного трафика через Ingress</summary>
 +
 +<code yaml>
 +apiVersion: networking.k8s.io/v1
 +kind: Ingress
 +metadata:
 +  name: myapp-ing
 +  annotations:
 +    # указывает на использование nginx, зависит от настроек контроллера видимо
 +    kubernetes.io/ingress.class: nginx
 +    
 +    # Указываем контроллеру пересылать шифрованный трафик дальше, в приложение
 +    nginx.ingress.kubernetes.io/ssl-passthrough: 'true'
 +
 +  labels:
 +    app: myapp
 +spec:
 +  rules:
 +    - host: "myapp.apps.url-cluster.ru"
 +      http:
 +        paths:
 +          - path: /
 +            pathType: Prefix
 +            backend:
 +              service:
 +                name: myapp-svc
 +                port:
 +                  number: 9444
 +</code>
 +</details>
 +
 +
  
  
Строка 457: Строка 494:
  
  
 +<details>
 +<summary>:!: Еще про TLS</summary>
 +[[https://stackoverflow-com.translate.goog/questions/54459015/how-to-configure-ingress-to-direct-traffic-to-an-https-backend-using-https?_x_tr_sl=en&_x_tr_tl=ru&_x_tr_hl=ru&_x_tr_pto=sc|Хорошая инфа по этому поводу]]\\
  
 +Конфигурация с расшифровкой TLS на Ingress контроллере 
 +<code yaml>
 +apiVersion: networking.k8s.io/v1
 +kind: Ingress
 +metadata:
 +  name: ingress-name
 +  namespace: namespace-name 
 +  annotations:
 +    # это хз, возможно не обязательно
 +    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
 +spec:
 +  # блок, задающий терминацию на ингрессе, далее трафик не шифрованный, внутри кластера
 +  tls:
 +  - hosts:
 +    - app.myorg.com
 +    secretName: tls-secret 
 +  rules:
 +  - http:
 +      paths:
 +      - backend:
 +          serviceName: service
 +          servicePort: 9443
 +        path: /carbon
 +      - backend:
 +          serviceName: service2
 +          servicePort: 9443
 +        path: /oauth
 +</code>
 +
 +
 +тоже самое, только пересылка шифрованного трафика, расшифровка в приложении
 +<code yaml>
 +apiVersion: networking.k8s.io/v1
 +kind: Ingress
 +metadata:
 +  name: ingress-name
 +  namespace: namespace-name 
 +  annotations:
 +    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
 +spec:
 +  rules:
 +  - http:
 +      paths:
 +      - backend:
 +          serviceName: service
 +          servicePort: 9443
 +        path: /carbon
 +      - backend:
 +          serviceName: service2
 +          servicePort: 9443
 +        path: /oauth
 +</code>
 +</details>
  
  
Строка 470: Строка 563:
 </code> </code>
 </details> </details>
- 
- 
- 
- 
- 
  
  
k8s/nets.1725788199.txt.gz · Последнее изменение: 2024/09/08 09:36 — admin