Настройка входящего nginx с помощью Milvus
В этой теме рассказывается о том, как настроить ingress nginx с помощью Milvus. Для получения более подробной информации обратитесь к разделу ingress-nginx.
Настройка входящего nginx
- Установите env.
export DNS_LABEL="milvustest" # Your DNS label must be unique within its Azure location.
export NAMESPACE="ingress-basic"
- Установить ingress nginx
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx \
--create-namespace \
--namespace $NAMESPACE \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"=$DNS_LABEL \
--set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz
- Получить внешний IP-адрес.
kubectl --namespace $NAMESPACE get services -o wide -w ingress-nginx-controller
- Настройте FQDN для вашего ингресс-контроллера.
# Public IP address of your ingress controller
IP="MY_EXTERNAL_IP"
# Get the resource-id of the public IP
PUBLICIPID=$(az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$IP')].[id]" --output tsv)
# Update public IP address with DNS name
az network public-ip update --ids $PUBLICIPID --dns-name $DNS_LABEL
# Display the FQDN
az network public-ip show --ids $PUBLICIPID --query "[dnsSettings.fqdn]" --output tsv
# sample output: milvustest.eastus2.cloudapp.azure.com
Установите cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace $NAMESPACE \
--set installCRDs=true
Создайте кластерный эмитент CA
- Создайте кластерный эмитент, например cluster-issuer.yaml, используя следующий пример манифеста. Замените MY_EMAIL_ADDRESS на действительный адрес вашей организации.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: MY_EMAIL_ADDRESS
privateKeySecretRef:
name: letsencrypt
solvers:
- http01:
ingress:
class: nginx
- Примените эмитент с помощью команды kubectl apply.
kubectl apply -f cluster-issuer.yaml
Развертывание Milvus
обратитесь к Azure, обратите внимание на значение config service.type
, его нужно изменить на ClusterIP
.
Создайте ингресс-маршрут Milvus
kubectl apply -f ingress.yaml
содержимое ingress.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-release-milvus
annotations:
cert-manager.io/cluster-issuer: letsencrypt
nginx.ingress.kubernetes.io/backend-protocol: GRPC
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: 2048m
spec:
ingressClassName: nginx
tls:
- hosts:
- milvustest.eastus2.cloudapp.azure.com # the FQDN
secretName: tls-secret
rules:
- host: milvustest.eastus2.cloudapp.azure.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-release-milvus
port:
number: 19530
Verify
kubectl get certificate
NAME READY SECRET AGE
tls-secret True tls-secret 8m7s
kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
my-release-milvus nginx milvustest.eastus2.cloudapp.azure.com EXTERNAL-IP 80, 443 8m15s
Привет Milvus
Пожалуйста, обратитесь к Hello Milvus, измените uri args, затем запустите код.
connections.connect("default",uri="https://milvustest.eastus2.cloudapp.azure.com:443")