Az Apache Superset internetre való elérhetővé helyezése
Fontos
This feature is currently in preview. A Microsoft Azure Előzetes verzió kiegészítő használati feltételei további jogi feltételeket tartalmaznak, amelyek a bétaverzióban, előzetes verzióban vagy egyébként még nem általánosan elérhető Azure-funkciókra vonatkoznak. Erről az adott előzetes verzióról az AKS-en futó HDInsight előzetes verziójában talál további információt. Ha kérdése vagy funkciójavaslata van, küldjön egy kérést az AskHDInsightban a részletekkel együtt, és kövessen minket további frissítésekért az Azure HDInsight-közösségről
Ez a cikk azt ismerteti, hogyan teheti elérhetővé az Apache Supersetet az interneten.
Bejövő forgalom konfigurálása
Az alábbi utasítások egy második hitelesítési réteget adnak hozzá Oauth engedélyezési proxy formájában az Oauth2Proxy használatával. Több védelmi réteget ad hozzá a Superset-hozzáféréshez.
Szerezze be a gazdagépnévhez tartozó TLS-tanúsítványt, és helyezze el a Key Vaultba, és hívja meg
aks-ingress-tls
. Megtudhatja, hogyan helyezhet el tanúsítványt egy Azure Key Vaultban.Adja hozzá a következő titkos kulcsokat a Key Vaulthoz.
Titkos kód neve Leírás ügyfél-azonosító Az Azure szolgáltatásnév ügyfél-azonosítója. Az Oauth-proxy megköveteli, hogy az azonosító titkos legyen. oauth2proxy-redis-password Proxygyorsítótár jelszava. Az Oauth-proxy által a Kubernetes háttérbeli Redis üzembehelyezési példányának eléréséhez használt jelszó. Erős jelszó létrehozása. oauth2proxy-cookie-secret Cookie-titkos kód, amely a cookie-adatok titkosítására szolgál. Ennek a cookie-titkos kódnak 32 karakter hosszúnak kell lennie. Vegye fel ezeket a visszahívásokat a Microsoft Entra alkalmazáskonfigurációjába.
https://{{YOUR_HOST_NAME}}/oauth2/callback
- Oauth2 proxy esetén
https://{{YOUR_HOST_NAME}}/oauth-authorized/azure
- superset esetén
Helyezze üzembe az alapszintű bejövő ngninx-vezérlőt a
default
névtérben. További információt itt talál.
Megjegyzés:
A bejövő nginx-vezérlő lépései a Kubernetes-névteret ingress-basic
használják. Módosítsa a névteret default
. például: NAMESPACE=default
TLS titkos szolgáltatói osztály létrehozása.
Ez a lépés azt ismerteti, hogy a TLS-tanúsítvány hogyan olvasható be a Key Vaultból, és hogyan alakítható át Kubernetes-titkos kódmá, amelyet a bejövő forgalom használ:
Frissítsen a következő yaml-ben:
{{MSI_CLIENT_ID}}
- A Superset-fürthöz$MANAGED_IDENTITY_RESOURCE
() hozzárendelt felügyelt identitás ügyfélazonosítója.{{KEY_VAULT_NAME}}
- A titkos kulcsokat tartalmazó Azure Key Vault neve.{{KEY_VAULT_TENANT_ID}}
– Annak az Azure-bérlőnek az azonosító guidja, ahol a Key Vault található.
tls-secretprovider.yaml
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: azure-tls spec: provider: azure # secretObjects defines the desired state of synced K8s secret objects secretObjects: - secretName: ingress-tls-csi type: kubernetes.io/tls data: - objectName: aks-ingress-tls key: tls.key - objectName: aks-ingress-tls key: tls.crt parameters: usePodIdentity: "false" useVMManagedIdentity: "true" userAssignedIdentityID: "{{MSI_CLIENT_ID}}" # the name of the AKV instance keyvaultName: "{{KEY_VAULT_NAME}}" objects: | array: - | objectName: aks-ingress-tls objectType: secret # the tenant ID of the AKV instance tenantId: "{{KEY_VAULT_TENANT_ID}}"
OauthProxy titkos szolgáltatói osztály létrehozása.
Frissítsen a következő yaml-ben:
{{MSI_CLIENT_ID}}
- A Superset-fürthöz$MANAGED_IDENTITY_RESOURCE
() hozzárendelt felügyelt identitás ügyfélazonosítója.{{KEY_VAULT_NAME}}
- A titkos kulcsokat tartalmazó Azure Key Vault neve.{{KEY_VAULT_TENANT_ID}}
- Annak az Azure-bérlőnek az azonosító guidja, ahol a kulcstartó található.
Tekintse meg a mintakódot.
Konfigurálás létrehozása az Oauth-proxyhoz.
Frissítsen a következő yaml-ben:
{{hostname}}
- Az internetre néző gazdagép neve.{{tenant-id}}
– Annak az Azure-bérlőnek az azonosító guidja, ahol a szolgáltatásnév létre lett hozva.
Nem kötelező: frissítse a email_domains listát. Example:
email_domains = [ "microsoft.com" ]
Tekintse meg a mintakódot.
Oauth-proxyerőforrások üzembe helyezése.
kubectl apply -f oauth2-secretprovider.yaml kubectl apply -f tls-secretprovider.yaml helm repo add oauth2-proxy https://oauth2-proxy.github.io/manifests helm repo update helm upgrade --install --values oauth2-values.yaml oauth2 oauth2-proxy/oauth2-proxy
Ha azure-altartományt használ,
superset.<region>.cloudapp.azure.com
akkor frissítse a DNS-címkét a társított nyilvános IP-címen.Nyissa meg a Superset Kubernetes-fürtöt az Azure Portalon.
A bal oldali navigációs sávon válassza a "Tulajdonságok" lehetőséget.
Nyissa meg az "Infrastruktúra-erőforráscsoport" hivatkozást.
Keresse meg a nyilvános IP-címet a következő címkékkel:
{ "k8s-azure-cluster-name": "kubernetes", "k8s-azure-service": "default/ingress-nginx-controller" }
Válassza a "Konfiguráció" lehetőséget a nyilvános IP-cím bal oldali navigációs sávjáról.
Adja meg a DNS-név címkéjét.
Ellenőrizze, hogy konfigurálva van-e az Oauth-bejövő forgalom.
Futtassa
kubectl get ingress
a létrehozott bejövő forgalom megtekintését. Meg kell jelennie aEXTERNAL-IP
bejövő forgalomhoz társítottnak. Hasonlóképpen, a futtatáskorkubectl get services
látnia kell, hogy aingress-nginx-controller
rendszer hozzárendelt egyEXTERNAL-IP
. Megnyithatjahttp://<hostname>/oauth2
az Oauth tesztelését.Adjon meg egy bejövő forgalmat az Oauth és a Superset összekapcsolásához. Ez a lépés azt eredményezi, hogy az elérési utakra irányuló hívásokat először átirányítják az /oauth webhelyre engedélyezés céljából, majd sikeresség esetén engedélyezik a Superset szolgáltatás elérését.
Frissítsen a következő yaml-ben:
{{hostname}}
- Az internetre néző gazdagép neve.
ingress.yaml
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/auth-signin: https://$host/oauth2/start?rd=$escaped_request_uri nginx.ingress.kubernetes.io/auth-url: http://oauth2-oauth2-proxy.default.svc.cluster.local:80/oauth2/auth nginx.ingress.kubernetes.io/proxy-buffer-size: 64k nginx.ingress.kubernetes.io/proxy-buffers-number: "8" nginx.ingress.kubernetes.io/rewrite-target: /$1 generation: 1 labels: app.kubernetes.io/name: azure-trino-superset name: azure-trino-superset namespace: default spec: rules: - host: "{{hostname}}" http: paths: - backend: service: name: superset port: number: 8088 path: /(.*) pathType: Prefix tls: - hosts: - "{{hostname}}" secretName: ingress-tls-csi
Telepítse a bejövő forgalmat.
kubectl apply -f ingress.yaml
Test.
Nyissa meg
https://{{hostname}}/
a böngészőben.
Bejövő forgalom hibaelhárítása
Tipp.
A bejövő forgalom üzembe helyezésének alaphelyzetbe állításához hajtsa végre a következő parancsokat:
kubectl delete secret ingress-tls-csi
kubectl delete secret oauth2-secret
helm uninstall oauth2-proxy
helm uninstall ingress-nginx
kubectl delete ingress azure-trino-superset
Az erőforrások törlése után az elejétől újra kell indítania ezeket az utasításokat.
Érvénytelen biztonsági tanúsítvány: A Kubernetes bejövőforgalom-vezérlő hamis tanúsítványa
Ez a probléma TLS-tanúsítvány-ellenőrzési hibát okoz a böngészőben/ügyfélben. A hiba megtekintéséhez vizsgálja meg a tanúsítványt egy böngészőben.
A probléma szokásos oka az, hogy a tanúsítvány helytelenül van konfigurálva:
Ellenőrizze, hogy látható-e a tanúsítvány a Kubernetesben:
kubectl get secret ingress-tls-csi --output yaml
Ellenőrizze, hogy a CN megfelel-e a tanúsítványban megadott CN-nek.
A CN-eltérés a bejövő podon lesz naplózva. Ezek a naplók a futtatással
kubectl logs <ingress pod>
tekinthetők meg. A naplókban a következő hiba jelenik meg:SSL certificate "default/ingress-tls-csi" does not contain a Common Name or Subject Alternative Name for server "{server name}": x509: certificate is valid for {invalid hostname}, not {actual hostname}
404 / nginx
Az Nginx nem találja a mögöttes szolgáltatást. Győződjön meg arról, hogy a Superset telepítve van: kubectl get services
503 Szolgáltatás átmenetileg nem érhető el / nginx
A szolgáltatás fut, de nem érhető el. Ellenőrizze a szolgáltatásportok számát és a szolgáltatás nevét.