Bật TLS trên ứng dụng kích hoạt HTTP trong Kubernetes bằng KEDA và NGINX

608
18-08-2021
Bật TLS trên ứng dụng kích hoạt HTTP trong Kubernetes bằng KEDA và NGINX

KEDA cho phép bạn mở rộng quy mô nhóm dựa trên các quy tắc có thể định cấu hình số liệu từ các nguồn dữ liệu như Hàng đợi Azure. Bài viết bài của Bizfly Cloud sẽ giúp bạn cách bật TLS trên ứng dụng kích hoạt HTTP trong Kubernetes bằng KEDA và NGINX một cách nhanh nhất.

Tạo một cụm AKS

Từ đám mây của bạn, hãy thực hiện lệnh sau để tạo một cụm AKS chi phí thấp và đặt ngữ cảnh kubectl mặc định. Chọn một tên khác cho cụm của bạn trong trường hợp tên được đề cập trong lệnh sau không khả dụng.

cmd

az group create --name aks-fx-demo-rg --location australiaeast

az aks create -n aks-fx-demo --node-count 1 --node-vm-size Standard_B2s --load-balancer-sku basic --node-osdisk-size 32 --resource-group aks-fx-demo-rg --generate-ssh-keys

az aks get-credentials --resource-group aks-fx-demo-rg --name aks-fx-demo

Sau khi lệnh thành công, hãy triển khai một chức năng được kích hoạt HTTP cho cụm bằng cách sau.

Tạo chức năng kích hoạt HTTP

Việc thực thi các lệnh sau sẽ tạo Hàm Azure được kích hoạt HTTP và thêm Dockerfile vào đó. Chúng ta sẽ sử dụng mẫu Hàm mặc định mà không sửa đổi nội dung.

cmd

func init --worker-runtime dotnet

func new --template "HttpTrigger" --name echo

func init --docker-only

Trong lệnh tiếp theo, chúng ta sẽ xây dựng hình ảnh vùng chứa bằng Dockerfile đã thêm bằng lệnh trước đó. Việc tải hình ảnh đã tạo lên DockerHub (có thể được định cấu hình để sử dụng Azure Container Registry ) và triển khai ứng dụng chức năng dưới dạng dịch vụ kiểu ClusterIP thành AKS.

Trước khi thực hiện lệnh sau, hãy đảm bảo rằng bạn đã đăng nhập vào DockerHub ( docker login) và thay đổi tên của sổ đăng ký trong lệnh.

cmd

func kubernetes deploy --name echo-aks-fx --namespace echo --service-type ClusterIP --registry rahulrai

Vì ứng dụng Azure Function được triển khai dưới dạng dịch vụ ClusterIP nên ứng dụng này chưa được tiếp xúc với internet. Hãy thay đổi điều đó bằng cách cài đặt bộ điều khiển xâm nhập NGINX trong cụm với Helm.

shell

kubectl create namespace nginx

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

helm install nginx-ingress ingress-nginx/ingress-nginx --namespace nginx --set controller.replicaCount=2 --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux

kubectl --namespace nginx get services -o wide -w nginx-ingress-ingress-nginx-controller

Lệnh cuối cùng trong danh sách mã trước đó sẽ cung cấp cho bạn địa chỉ IP bên ngoài của bộ điều khiển xâm nhập mà bạn đã tạo. 

Hãy lưu ý điều đó vì bạn có thể truy cập ứng dụng của mình trên địa chỉ IP đó và thể định cấu hình NGINX để đọc chứng chỉ TLS từ bí mật của Kubernetes. 

shell

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -out aks-ingress-tls.crt -keyout aks-ingress-tls.key -subj "/CN=echo-aks-fx.azure.com/O=aks-ingress-tls"

kubectl create secret tls nginx --namespace ingress-basic --key aks-ingress-tls.key --cert aks-ingress-tls.crt

Cuối cùng, hãy định cấu hình NGINX để sử dụng chứng chỉ TLS vừa tạo để đảm bảo quá trình truyền tải và hướng lưu lượng truy cập đến Chức năng Azure sau khi chấm dứt SSL tại bộ điều khiển xâm nhập.

Thực thi lệnh sau để tạo bộ điều khiển xâm nhập NGINX.

shell

cat << EOF | kubectl apply -f -

apiVersion: networking.k8s.io/v1beta1

kind: Ingress

metadata:

  name: nginx-ingress

  namespace: echo

  annotations:

    kubernetes.io/ingress.class: nginx

spec:

  tls:

  - hosts:

    - echo-aks-fx.azure.com

    secretName: aks-ingress-tls

  rules:

  - host: echo-aks-fx.azure.com

    http:

      paths:

      - backend:

          serviceName: echo-aks-fx-http

          servicePort: 80

        path: /

EOF

Sau khi thực hiện thành công các lệnh trước đó, bây giờ hãy truy cập ứng dụng Chức năng của mình qua một kênh an toàn. Thực hiện lệnh sau sau khi thay thế địa chỉ IP bằng địa chỉ bạn nhận được từ đầu ra của lệnh trước đó.

cmd

curl -k --resolve echo-aks-fx.azure.com:443:104.210.80.142 https://echo-aks-fx.azure.com/api/echo?name=JohnDoe

Ảnh chụp màn hình dưới đây trình là kết quả từ ứng dụng khi thực hiện lệnh

Bật TLS trên ứng dụng kích hoạt HTTP trong Kubernetes bằng KEDA và NGINX - Ảnh 1.

Để biết thêm thông tin liên quan đến Kubernetes hãy theo dõi thêm những bài viết tiếp theo của Bizfly Cloud nhé.

SHARE