Je n'ai jamais touché Tabpy, donc Un mémo lorsque j'ai essayé d'exécuter Tabpy sur Cloud Run (sur GKE) tout en étudiant Cloud Run
Un mécanisme qui permet à Tableau de visualiser les résultats du traitement statistique et de l'apprentissage automatique en Python en liant Tableau et Python. Installez le module Python avec pip sur n'importe quel PC ou serveur, démarrez le service Tabpy et accédez à Tabpy à l'aide de la connexion de service externe de Tableau.
https://cloud.google.com/run/?hl=ja Service entièrement géré pour l'exécution de conteneurs Facturé selon le temps de traitement de la demande Cela semble être une balance automatique avec une sensation agréable, donc elle nécessite moins d'infrastructure que GKE, mais il existe diverses restrictions (limite de temps, désignation du port, etc.) Image de type Cloud Functions permettant aux individus de tout déplacer
Différence par rapport à GKE https://tomokazu-kozuma.com/the-difference-between-cloud-run-and-cloud-run-on-gke/
Je n'ai pas pu me connecter à Tabpy avec Cloud Run. .. Je ne sais pas si l'incohérence entre le certificat SSL émis automatiquement par Cloud Run et le certificat SSL utilisé pour la conversion SSL de Tabpy est mauvaise. .. .. (Les certificats émis automatiquement par Cloud Run ne peuvent pas être utilisés)
Prémisse pour utiliser Cloud Shell
Configuration en vous référant aux éléments suivants https://cloud.google.com/run/docs/gke/setup
Créer un exemple de cluster
gcloud beta container clusters create <Nom du cluster> \
--machine-type=g1-small \
--preemptible \
--num-nodes=3 \
--disk-size=10 \
--zone=us-central1-a \
--addons=HorizontalPodAutoscaling,HttpLoadBalancing,Istio,CloudRun \
--cluster-version=latest \
--enable-stackdriver-kubernetes \
--enable-ip-alias \
--scopes cloud-platform
Pour activer Cloud Run pour un cluster GKE déjà établi, activez les éléments du cercle bleu dans la capture ci-dessous dans l'ordre du haut.
Ajouter des bibliothèques à installer selon les besoins Installez simplement tabpy avec pip install et démarrez tabpy, c'est fondamentalement OK
Dockerfile
from continuumio/miniconda3:latest
ARG config_dir=/tmp/
ADD file.conf $config_dir
WORKDIR $config_dir
RUN pip install --upgrade pip && \
pip install numpy pandas scikit-learn scipy textblob nltk vaderSentiment && \
pip install reverse_geocoder geopy && \
pip install tabpy==1.0.0
RUN tabpy-user add -u <username> -p <password> -f pwd.txt
ENV PORT 8080
EXPOSE 8080
ENTRYPOINT tabpy --config=file.conf
file.conf
#Créez ce fichier dans le même répertoire que le Dockerfile
[TabPy]
TABPY_PORT = 8080
TABPY_PWD_FILE = /tmp/pwd.txt
Exécutez la commande suivante dans le répertoire où le Dockerfile est stocké. Une image appelée tabpy-sample est créée.
python
docker image build -t asia.gcr.io/<ID du projet>/tabpy-sample:latest .
Push to Container Registry
python
docker push asia.gcr.io/<ID du projet>/tabpy-sample:latest
CloudRunOnGKE
gcloud beta run deploy tabpy-sample \
--image asia.gcr.io/<ID du projet>/tabpy-sample \
--platform gke \
--cluster <Nom du cluster GKE> \
--cluster-location <Emplacement>
Déployer sur CloudRun lorsque l'option de plateforme est gérée
(référence)CloudRun
gcloud beta run deploy tabpy-sample \
--image asia.gcr.io/<ID du projet>/tabpy-sample \
--platform managed \
--region <Région>
https://cloud.google.com/run/docs/mapping-custom-domains?hl=ja
Lorsqu'il est déployé sur Cloudrun sur GKE, Par défaut, le service n'est pas accessible sans spécifier l'hôte dans l'en-tête via curl. Puisqu'il n'est pas possible de spécifier des en-têtes avec le service de connexion externe de Tableau, il est nécessaire de mapper et d'accéder à un domaine personnalisé.
python
gcloud domains verify [DOMAIN]
python
gcloud beta run domain-mappings create --service [SERVICE] --domain [DOMAIN]
python
gcloud beta run domain-mappings describe --domain [DOMAIN]
python
gcloud compute addresses create [IP-NAME] --addresses [EXTERNAL-IP] --region [REGION]
EXTERNAL-IP spécifie l'adresse IP de l'enregistrement A acquis dans la procédure d'acquisition des données d'enregistrement DNS.
https://cloud.google.com/run/docs/mapping-custom-domains?hl=ja#dns_update
Dockerfile J'ai fait un Dockerfile en référence à ce qui suit, mais il semble que c'était un peu vieux. .. https://github.com/erichannell/TabPy-docker Actuellement, il semble que l'installation tabpy soit terminée avec l'installation de pip.
Modifiez Dockerfile en vous référant à la documentation officielle Tabpy https://github.com/tableau/TabPy/blob/master/docs/server-install.md#starting-tabpy
Cloudrun doit spécifier le port d'écoute sur 8080 https://stackoverflow.com/questions/55662222/container-failed-to-start-failed-to-start-and-then-listen-on-the-port-defined-b https://cloud.google.com/run/docs/reference/container-contract?hl=ja#port
Tabpy a un port par défaut de 9004, vous devez donc spécifier le port 8080 à l'aide du fichier de configuration. https://github.com/tableau/TabPy/blob/master/docs/server-config.md
Cliquez sur Gérer les connexions aux services externes dans le menu d'aide supérieur
Serveur: ensemble de domaines personnalisés Port: 80 Nom d'utilisateur: utilisateur défini dans Dockerfile Mot de passe: utilisateur défini dans Dockerfile
https://help.tableau.com/current/server-linux/ja-jp/config_r_tabpy.htm https://help.tableau.com/current/server-linux/ja-jp/cli_security_tsm.htm#tsm_security_vizql-extsvc-ssl-enable
Exécutez ce qui suit sur la ligne de commande Tableau Server
Activer les services externes sur le serveur tableau
tsm security vizql-extsvc-ssl enable --connection-type tabpy --extsvc-host <nom d'hôte> --extsvc-port <PORT> --extsvc-username <Nom d'utilisateur Tabpy> --extsvc-password <Mot de passe Tabpy>
tsm pending-changes apply
orz https://help.tableau.com/current/pro/desktop/ja-jp/r_connection_manage.htm
Les classeurs contenant des scripts de service externes ne peuvent pas être publiés sur Tableau Online.
[Lançons Tabpy dans un conteneur en utilisant Docker! ](Http://lovedata.main.jp/2018/11/20/docker%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6mac%E3%81%A7% E3% 82% 82tabpy% E3% 82% 92% E5% 8B% 95% E3% 81% 8B% E3% 81% 9D% E3% 81% 86% EF% BC% 81 /)
Pensez aux ports Google Cloud Run
[Knative dans Cloud Run sur GKE](https://qiita.com/toshi0607/items/eeeabe81b1beac343b6b#cloud-run-on-gke%E3%81%AE%E3%83%87%E3%83%97% E3% 83% AD% E3% 82% A4)
Recommended Posts