Mongodb kubernetes tls

Trước hết đa phần thông tin

kubectl apply -f nginx-config.yaml
4 của tệp. yaml khác như ServiceAccount, ConfigMap. các thuộc tính được nâng cao hơn, trong khuôn khổ bài viết này chỉ mang tính
kubectl apply -f nginx-config.yaml
5 và sử dụng thư viện hỗ trợ là kubernetes-ingress

Chúng ta sẽ sử dụng kubernetes-ingress và phiên bản của bài viết này là

kubectl apply -f nginx-config.yaml
6 nhé
Mongodb kubernetes tls

ví dụ minh họa triển khai air-viewer trên kubernetes sẽ được miêu tả chi tiết trong tương lai ở bài viết khác.

Mongodb kubernetes tls

WheeBoo @quanghung97

Theo dõi

1. 8K 68 45

Đã đăng vào ngày 6 tháng 2 năm 2020 1. 44 một. m. 8 phút đọc

10. 1K

2

5

Sử dụng Kubernetes-Ingress (NGINX Ingress Controller) để định tuyến nhiều dịch vụ khác nhau

  • Report
  • Add to series of me

Bài đăng này đã không được cập nhật trong 2 năm

Tiếp nối phần trước sau khi CleanUp thì chúng ta có thể bắt đầu luôn với bài viết này

Trước hết đa phần thông tin

kubectl apply -f nginx-config.yaml
4 của tệp. yaml khác như ServiceAccount, ConfigMap. các thuộc tính được nâng cao hơn, trong khuôn khổ bài viết này chỉ mang tính
kubectl apply -f nginx-config.yaml
5 và sử dụng thư viện hỗ trợ là kubernetes-ingress

Chúng ta sẽ sử dụng kubernetes-ingress và phiên bản của bài viết này là

kubectl apply -f nginx-config.yaml
6 nhé
Mongodb kubernetes tls

ví dụ minh họa triển khai air-viewer trên kubernetes sẽ được miêu tả chi tiết trong tương lai ở bài viết khác.

Thế nào là Ingress?

Ingress is resource Kubernetes cho phép định cấu hình Loadbalancer HTTP cho các ứng dụng chạy trên Kubernetes, được đại diện bởi một hoặc nhiều dịch vụ. Một bộ cân bằng tải như vậy là cần thiết để cung cấp các ứng dụng đó cho các máy khách như trình duyệt duyệt chúng ta truy cập bên ngoài cụm Kubernetes

VÍ dụ

  • dịch vụ A. chúng ta muốn chạy trên miền ví dụ. com/svcA
  • dịch vụ B. chúng ta muốn chạy trên miền ví dụ. com/svcB

Bạn nào dùng traefik rồi chắc chắn sẽ quen thuộc cái này, nhưng traefik hiện tại là 2. 0 tài liệu rất ít và đang trong giai đoạn phát triển tài liệu nên việc tích hợp với kubernetes thì mình nghĩ nên sử dụng traefik 1. 7

Thế nào là Ingress Controller?

Ingress Controller là một ứng dụng chạy trong một cluster và sử dụng cấu hình LoadBalancer HTTP theo tài nguyên Ingress. Loadbalancer this could be running by the software in cluster, Loadbalancer section hard or is Loadbalancer service cloud outside. With each LoadBalancer other nhau yêu cầu phải thực thi Ingress Controller khác nhau

Trong trường hợp này, Ingress Controller được phát triển theo dạng phần mềm

Tạo Không gian tên, SA, Bí mật mặc định, Bản đồ cấu hình tùy chỉnh và Định nghĩa tài nguyên tùy chỉnh

Create a namespace and a service account for Ingress controller

kubectl apply -f ns-and-sa.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress

Điều này sẽ tạo namespace nginx-ingress và ServiceAccout bên trong namespace nginx-ingress

Create a secret with only TLS and key for server default NGINX

kubectl apply -f default-server-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: default-server-secret
  namespace: nginx-ingress
type: Opaque
data:
  tls.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN2akNDQWFZQ0NRREFPRjl0THNhWFhEQU5CZ2txaGtpRzl3MEJBUXNGQURBaE1SOHdIUVlEVlFRRERCWk8KUjBsT1dFbHVaM0psYzNORGIyNTBjbTlzYkdWeU1CNFhEVEU0TURreE1qRTRNRE16TlZvWERUSXpNRGt4TVRFNApNRE16TlZvd0lURWZNQjBHQTFVRUF3d1dUa2RKVGxoSmJtZHlaWE56UTI5dWRISnZiR3hsY2pDQ0FTSXdEUVlKCktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUwvN2hIUEtFWGRMdjNyaUM3QlBrMTNpWkt5eTlyQ08KR2xZUXYyK2EzUDF0azIrS3YwVGF5aGRCbDRrcnNUcTZzZm8vWUk1Y2Vhbkw4WGM3U1pyQkVRYm9EN2REbWs1Qgo4eDZLS2xHWU5IWlg0Rm5UZ0VPaStlM2ptTFFxRlBSY1kzVnNPazFFeUZBL0JnWlJVbkNHZUtGeERSN0tQdGhyCmtqSXVuektURXUyaDU4Tlp0S21ScUJHdDEwcTNRYzhZT3ExM2FnbmovUWRjc0ZYYTJnMjB1K1lYZDdoZ3krZksKWk4vVUkxQUQ0YzZyM1lma1ZWUmVHd1lxQVp1WXN2V0RKbW1GNWRwdEMzN011cDBPRUxVTExSakZJOTZXNXIwSAo1TmdPc25NWFJNV1hYVlpiNWRxT3R0SmRtS3FhZ25TZ1JQQVpQN2MwQjFQU2FqYzZjNGZRVXpNQ0F3RUFBVEFOCkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWpLb2tRdGRPcEsrTzhibWVPc3lySmdJSXJycVFVY2ZOUitjb0hZVUoKdGhrYnhITFMzR3VBTWI5dm15VExPY2xxeC9aYzJPblEwMEJCLzlTb0swcitFZ1U2UlVrRWtWcitTTFA3NTdUWgozZWI4dmdPdEduMS9ienM3bzNBaS9kclkrcUI5Q2k1S3lPc3FHTG1US2xFaUtOYkcyR1ZyTWxjS0ZYQU80YTY3Cklnc1hzYktNbTQwV1U3cG9mcGltU1ZmaXFSdkV5YmN3N0NYODF6cFErUyt1eHRYK2VBZ3V0NHh3VlI5d2IyVXYKelhuZk9HbWhWNThDd1dIQnNKa0kxNXhaa2VUWXdSN0diaEFMSkZUUkk3dkhvQXprTWIzbjAxQjQyWjNrN3RXNQpJUDFmTlpIOFUvOWxiUHNoT21FRFZkdjF5ZytVRVJxbStGSis2R0oxeFJGcGZnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
  tls.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBdi91RWM4b1JkMHUvZXVJTHNFK1RYZUprckxMMnNJNGFWaEMvYjVyYy9XMlRiNHEvClJOcktGMEdYaVN1eE9ycXgrajlnamx4NXFjdnhkenRKbXNFUkJ1Z1B0ME9hVGtIekhvb3FVWmcwZGxmZ1dkT0EKUTZMNTdlT1l0Q29VOUZ4amRXdzZUVVRJVUQ4R0JsRlNjSVo0b1hFTkhzbysyR3VTTWk2Zk1wTVM3YUhudzFtMApxWkdvRWEzWFNyZEJ6eGc2clhkcUNlUDlCMXl3VmRyYURiUzc1aGQzdUdETDU4cGszOVFqVUFQaHpxdmRoK1JWClZGNGJCaW9CbTVpeTlZTW1hWVhsMm0wTGZzeTZuUTRRdFFzdEdNVWozcGJtdlFmazJBNnljeGRFeFpkZFZsdmwKMm82MjBsMllxcHFDZEtCRThCay90elFIVTlKcU56cHpoOUJUTXdJREFRQUJBb0lCQVFDZklHbXowOHhRVmorNwpLZnZJUXQwQ0YzR2MxNld6eDhVNml4MHg4Mm15d1kxUUNlL3BzWE9LZlRxT1h1SENyUlp5TnUvZ2IvUUQ4bUFOCmxOMjRZTWl0TWRJODg5TEZoTkp3QU5OODJDeTczckM5bzVvUDlkazAvYzRIbjAzSkVYNzZ5QjgzQm9rR1FvYksKMjhMNk0rdHUzUmFqNjd6Vmc2d2szaEhrU0pXSzBwV1YrSjdrUkRWYmhDYUZhNk5nMUZNRWxhTlozVDhhUUtyQgpDUDNDeEFTdjYxWTk5TEI4KzNXWVFIK3NYaTVGM01pYVNBZ1BkQUk3WEh1dXFET1lvMU5PL0JoSGt1aVg2QnRtCnorNTZud2pZMy8yUytSRmNBc3JMTnIwMDJZZi9oY0IraVlDNzVWYmcydVd6WTY3TWdOTGQ5VW9RU3BDRkYrVm4KM0cyUnhybnhBb0dCQU40U3M0ZVlPU2huMVpQQjdhTUZsY0k2RHR2S2ErTGZTTXFyY2pOZjJlSEpZNnhubmxKdgpGenpGL2RiVWVTbWxSekR0WkdlcXZXaHFISy9iTjIyeWJhOU1WMDlRQ0JFTk5jNmtWajJTVHpUWkJVbEx4QzYrCk93Z0wyZHhKendWelU0VC84ajdHalRUN05BZVpFS2FvRHFyRG5BYWkyaW5oZU1JVWZHRXFGKzJyQW9HQkFOMVAKK0tZL0lsS3RWRzRKSklQNzBjUis3RmpyeXJpY05iWCtQVzUvOXFHaWxnY2grZ3l4b25BWlBpd2NpeDN3QVpGdwpaZC96ZFB2aTBkWEppc1BSZjRMazg5b2pCUmpiRmRmc2l5UmJYbyt3TFU4NUhRU2NGMnN5aUFPaTVBRHdVU0FkCm45YWFweUNweEFkREtERHdObit3ZFhtaTZ0OHRpSFRkK3RoVDhkaVpBb0dCQUt6Wis1bG9OOTBtYlF4VVh5YUwKMjFSUm9tMGJjcndsTmVCaWNFSmlzaEhYa2xpSVVxZ3hSZklNM2hhUVRUcklKZENFaHFsV01aV0xPb2I2NTNyZgo3aFlMSXM1ZUtka3o0aFRVdnpldm9TMHVXcm9CV2xOVHlGanIrSWhKZnZUc0hpOGdsU3FkbXgySkJhZUFVWUNXCndNdlQ4NmNLclNyNkQrZG8wS05FZzFsL0FvR0FlMkFVdHVFbFNqLzBmRzgrV3hHc1RFV1JqclRNUzRSUjhRWXQKeXdjdFA4aDZxTGxKUTRCWGxQU05rMXZLTmtOUkxIb2pZT2pCQTViYjhibXNVU1BlV09NNENoaFJ4QnlHbmR2eAphYkJDRkFwY0IvbEg4d1R0alVZYlN5T294ZGt5OEp0ek90ajJhS0FiZHd6NlArWDZDODhjZmxYVFo5MWpYL3RMCjF3TmRKS2tDZ1lCbyt0UzB5TzJ2SWFmK2UwSkN5TGhzVDQ5cTN3Zis2QWVqWGx2WDJ1VnRYejN5QTZnbXo5aCsKcDNlK2JMRUxwb3B0WFhNdUFRR0xhUkcrYlNNcjR5dERYbE5ZSndUeThXczNKY3dlSTdqZVp2b0ZpbmNvVlVIMwphdmxoTUVCRGYxSjltSDB5cDBwWUNaS2ROdHNvZEZtQktzVEtQMjJhTmtsVVhCS3gyZzR6cFE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=

kubectl apply -f nginx-config.yaml
7 và
kubectl apply -f nginx-config.yaml
8 nên được thay thế và tạo cho tên miền chính của bạn, cái này mình vẫn sử dụng chứng chỉ mặc định của Nginx

Ngoài ra máy chủ mặc định của Nginx sẽ trở lại

if all request to domains ko tồn tại trong rule Ingress

Tạo một bản đồ cấu hình cho tùy chọn cấu hình NGINX

kubectl apply -f nginx-config.yaml
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: nginx-ingress
data:
# 3 cái config mình custom thêm, có thể bỏ cũng được
  proxy-connect-timeout: "10s"
  proxy-read-timeout: "10s"
  client-max-body-size: "2m"

Tùy chỉnh cấu hình có thể đọc chi tiết tại đây. 3 cái trên mình config thêm 1 số quy tắc thôi, các bạn có thể bỏ comment đi hoặc xóa đi

Tạo định nghĩa tài nguyên tùy chỉnh cho VirtualServer và VirtualServerRoute

kubectl apply -f custom-resource-definitions.yaml
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: virtualservers.k8s.nginx.org
spec:
  group: k8s.nginx.org
  versions:
  - name: v1
    served: true
    storage: true
  scope: Namespaced
  names:
    plural: virtualservers
    singular: virtualserver
    kind: VirtualServer
    shortNames:
    - vs
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: virtualserverroutes.k8s.nginx.org
spec:
  group: k8s.nginx.org
  versions:
  - name: v1
    served: true
    storage: true
  scope: Namespaced
  names:
    plural: virtualserverroutes
    singular: virtualserverroute
    kind: VirtualServerRoute
    shortNames:
    - vsr

Định cấu hình RBAC

RBAC chúng ta có thể thấy luôn ở tệp yaml dưới đây chính là cấp quyền nginx-ingress nó kiểm soát đối với kurbenetes

Nếu RBAC được bật trong cụm, hãy tạo vai trò chơi cụm và liên kết nó với ServiceAccount, được tạo ở Bước 1 của phần trên

kubectl apply -f rbac.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: nginx-ingress
rules:
- apiGroups:
  - ""
  resources:
  - services
  - endpoints
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
  - update
  - create
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - patch
- apiGroups:
  - extensions
  resources:
  - ingresses
  verbs:
  - list
  - watch
  - get
- apiGroups:
  - "extensions"
  resources:
  - ingresses/status
  verbs:
  - update
- apiGroups:
  - k8s.nginx.org
  resources:
  - virtualservers
  - virtualserverroutes
  verbs:
  - list
  - watch
  - get
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: nginx-ingress
subjects:
- kind: ServiceAccount
  name: nginx-ingress
  namespace: nginx-ingress
roleRef:
  kind: ClusterRole
  name: nginx-ingress
  apiGroup: rbac.authorization.k8s.io

Triển khai bộ điều khiển xâm nhập

Chúng ta có 2 lựa chọn để phát triển Ingress Controller

  • triển khai. Nếu bạn có kế hoạch thay đổi số lượng bản sao bộ điều khiển xâm nhập
  • DaemonSet. Triển khai Ingress controller trên mỗi Node hoặc các node con (mình sẽ sử dụng cái này)
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
0

Cách Deamon-Set

apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
1

to enable report the status of ingress, we uncomment 5 line end

Truy cập được vào Ingress Controller

Sẽ có 2 cách trình duyệt client truy cập. Cách thứ nhất có thể sử dụng kiểu NodePort để Nginx-Ingress chạy cùng với các Worker-Node (không sử dụng loadbalancer của các dịch vụ như AWS, Gcloud, Azure. ). Cách sử dụng NodePort này không nên sử dụng trực tiếp đối với các dịch vụ bên ngoài lối vào này nhé vì an toàn bảo mật ở trong bài viết trước đó đã được cập nhật.

apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
2
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
3

Cách thứ 2 sử dụng kiểu Load Balancer của AWS và Google Cloud kết hợp Nginx Ingress. Cách này mình sẽ nghiên cứu tiếp, làm tài khoản mastercard của mình hết tiền nên không có cách nào thực hiện lại được, khi nào có kinh phí thì sẽ thực hiện ví dụ này

Ví dụ triển khai Nginx sau khi cài đặt Ingress
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
4
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
5

2 web service coffee and tea and ta will for them it used chung 1 Host is

kubectl apply -f nginx-config.yaml
9 of worker Node 1

tiếp theo việc tạo chứng chỉ SSL bí mật sử dụng chung với chứng chỉ SSL đã được tạo cho máy chủ nginx mặc định để trả về lỗi 404 không tìm thấy

apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
6
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
7

tài nguyên xâm nhập

apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
8
apiVersion: v1
kind: Namespace
metadata:
  name: nginx-ingress 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress 
  namespace: nginx-ingress
9

Các quy tắc đường dẫn

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: nginx-ingress
data:
# 3 cái config mình custom thêm, có thể bỏ cũng được
  proxy-connect-timeout: "10s"
  proxy-read-timeout: "10s"
  client-max-body-size: "2m"
0 sẽ đi vào phục vụ trà,
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: nginx-ingress
data:
# 3 cái config mình custom thêm, có thể bỏ cũng được
  proxy-connect-timeout: "10s"
  proxy-read-timeout: "10s"
  client-max-body-size: "2m"
1 sẽ đi vào phục vụ cà phê. còn
kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: nginx-ingress
data:
# 3 cái config mình custom thêm, có thể bỏ cũng được
  proxy-connect-timeout: "10s"
  proxy-read-timeout: "10s"
  client-max-body-size: "2m"
2 sẽ vào server nginx default 404 not found

Bây giờ chúng ta có thể truy cập vào địa chỉ https. //khunggia2c. mylabserver. com/trà, https. //khunggia2c. mylabserver. com/coffee to see information access from private IP to name of server private

kubectl apply -f default-server-secret.yaml
0
kubectl apply -f default-server-secret.yaml
1

Kết luận

Các Doimain trên kia và cả máy chủ đều là tài khoản, tài nguyên do công ty Sun cấp nhưng chỉ phục vụ mục đích nghiên cứu, nghiên cứu nên máy chủ sẽ tự động tắt khoảng 6 tiếng nếu không sử dụng. Các đường liên kết có tên miền mylabserver. com sẽ không khả dụng tại thời điểm bạn đọc bài viết. *