[PYTHON] Verwenden Sie Tabpy mit Cloud Run (auf GKE)

Ich habe Tabpy noch nie berührt Ein Memo, als ich versuchte, Tabpy auf Cloud Run (auf GKE) auszuführen, während ich gleichzeitig Cloud Run studierte

Was ist Tabpy?

Ein Mechanismus, mit dem Tableau die Ergebnisse der statistischen Verarbeitung und des maschinellen Lernens in Python durch Verknüpfung von Tableau und Python visualisieren kann. Installieren Sie das Python-Modul mit pip auf einem beliebigen PC oder Server, starten Sie den Tabpy-Dienst und greifen Sie über die externe Dienstverbindung von Tableau auf Tabpy zu.

Was ist Cloud Run?

https://cloud.google.com/run/?hl=ja Vollständig verwalteter Service zum Ausführen von Containern Wird gemäß der Bearbeitungszeit der Anfrage berechnet Es scheint sich um eine automatische Waage mit einem guten Gefühl zu handeln, daher ist weniger Infrastruktur als bei GKE erforderlich, es gibt jedoch verschiedene Einschränkungen (Zeitlimit, Portbezeichnung usw.). Cloud-Funktionen-ähnliches Bild, mit dem Personen alles bewegen können

Unterschied zu GKE https://tomokazu-kozuma.com/the-difference-between-cloud-run-and-cloud-run-on-gke/

Warum Cloud Run auf GKE

Ich konnte mit Cloud Run keine Verbindung zu Tabpy herstellen. .. Ich bin nicht sicher, ob die Inkonsistenz zwischen dem von Cloud Run automatisch ausgestellten SSL-Zertifikat und dem für die SSL-Konvertierung von Tabpy verwendeten SSL-Zertifikat schlecht ist. .. .. (Von Cloud Run automatisch ausgestellte Zertifikate können nicht verwendet werden.)

Entwicklungsumgebung

Voraussetzung für die Verwendung von Cloud Shell

Stellen Sie Tabpy für Cloud Run bereit

Dockerfile

GKE-Cluster erstellen (Beispiel)

Richten Sie dies unter Bezugnahme auf Folgendes ein https://cloud.google.com/run/docs/gke/setup

Beispielcluster erstellen


gcloud beta container clusters create <Clustername> \
   --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

Um Cloud Run für einen bereits eingerichteten GKE-Cluster zu aktivieren, aktivieren Sie die blauen Kreiselemente in der Erfassung unten in der Reihenfolge von oben.

image.png

Erstellen einer Docker-Datei

Fügen Sie nach Bedarf zu installierende Bibliotheken hinzu Installieren Sie einfach tabpy mit pip install und starten Sie tabpy, es ist im Grunde 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


#Erstellen Sie diese Datei im selben Verzeichnis wie die Docker-Datei
[TabPy]
TABPY_PORT = 8080
TABPY_PWD_FILE = /tmp/pwd.txt

Erstellen eines Docker-Images

Führen Sie den folgenden Befehl in dem Verzeichnis aus, in dem die Docker-Datei gespeichert ist. Ein Bild namens tabpy-sample wird erstellt.

python


docker image build -t asia.gcr.io/<Projekt-ID>/tabpy-sample:latest .

DRÜCKEN des Docker-Bildes

Zur Containerregistrierung verschieben

python


docker push asia.gcr.io/<Projekt-ID>/tabpy-sample:latest

Bereitstellung für Cloud Run

CloudRunOnGKE


gcloud beta run deploy tabpy-sample \
   --image asia.gcr.io/<Projekt-ID>/tabpy-sample \
   --platform gke \
   --cluster <GKE-Clustername> \
   --cluster-location <Ort>

Wenn die Plattformoption verwaltet wird, wird sie in CloudRun bereitgestellt

(Referenz)CloudRun


gcloud beta run deploy tabpy-sample \
   --image asia.gcr.io/<Projekt-ID>/tabpy-sample \
   --platform managed \
   --region <Region>

Benutzerdefinierte Domänenzuordnung

https://cloud.google.com/run/docs/mapping-custom-domains?hl=ja

Bei Bereitstellung auf Cloudrun auf GKE, Standardmäßig kann nicht auf den Dienst zugegriffen werden, ohne den Host im Header über curl anzugeben. Da mit dem externen Verbindungsdienst von Tableau keine Header angegeben werden können, müssen Sie eine benutzerdefinierte Domäne zuordnen und darauf zugreifen.

Bestätigung des Domainbesitzes

python


gcloud domains verify [DOMAIN]

Ordnen Sie Domänen Diensten zu

python


gcloud beta run domain-mappings create --service [SERVICE] --domain [DOMAIN]

DNS-Eintragsdaten abrufen

python


gcloud beta run domain-mappings describe --domain [DOMAIN]

IP-Reservierung behoben (bei Verwendung von Cloudrun auf GKE)

python


gcloud compute addresses create [IP-NAME] --addresses [EXTERNAL-IP] --region [REGION]

EXTERNAL-IP gibt die IP-Adresse des A-Eintrags an, der im Verfahren zum Erfassen von DNS-Eintragsdaten erfasst wurde.

DNS-Eintrag mit Domain-Registrar hinzufügen

https://cloud.google.com/run/docs/mapping-custom-domains?hl=ja#dns_update

Suchtpunkt

Dockerfile Ich habe eine Docker-Datei mit Bezug auf Folgendes erstellt, aber es scheint, dass sie etwas alt war. .. https://github.com/erichannell/TabPy-docker Derzeit scheint die Tabpy-Installation mit der Pip-Installation abgeschlossen zu sein.

Ändern Sie Dockerfile anhand der offiziellen Tabpy-Dokumentation https://github.com/tableau/TabPy/blob/master/docs/server-install.md#starting-tabpy

Port beim Bereitstellen von Cloudrun

Cloudrun muss listen PORT to 8080 angeben 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 hat einen Standardport von 9004, daher müssen Sie den Port 8080 mithilfe der Konfigurationsdatei angeben. https://github.com/tableau/TabPy/blob/master/docs/server-config.md

Greifen Sie mit Tableau auf Tabpy on Cloud Run zu

Stellen Sie eine Verbindung von Tableau Desktop her

Klicken Sie im oberen Hilfemenü auf Externe Dienstverbindungen verwalten image.png

Server: Benutzerdefinierter Domänensatz Port: 80 Benutzername: Benutzer in Dockerfile festgelegt Passwort: Benutzer in Dockerfile festgelegt

Stellen Sie eine Verbindung von Tableau Server her

Zulassen einer externen Dienstverbindung in Tableau Server

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

Führen Sie die folgenden Schritte in der Tableau Server-Befehlszeile aus

Aktivieren Sie externe Dienste auf dem Tableau-Server


tsm security vizql-extsvc-ssl enable --connection-type tabpy --extsvc-host <Hostname> --extsvc-port <PORT> --extsvc-username <Tabpy Benutzername> --extsvc-password <Tabpy Passwort>

tsm pending-changes apply

Derzeit (Januar 2020) scheint es nicht in Tableau Online verwendet werden zu können. .. ..

orz https://help.tableau.com/current/pro/desktop/ja-jp/r_connection_manage.htm

Arbeitsmappen mit externen Service-Skripten können nicht in Tableau Online veröffentlicht werden.

Seiten, auf die ich auf verschiedene Weise verwiesen habe

[Lassen Sie uns Tabpy mit Docker in einem Container ausführen! ](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 /)

Denken Sie an Google Cloud Run-Ports

[Knative in Cloud Run auf 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

Verwenden Sie Tabpy mit Cloud Run (auf GKE)
Führen Sie SwitchBot mit Bleak unter Windows 10 aus
Führen Sie XGBoost mit Cloud Dataflow (Python) aus.
Verwenden Sie Tensorflow 2.1.0 mit Anaconda unter Windows 10!
Führen Sie IDCF Cloud CLI auf Docker aus
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Führen Sie Linux mit ARM-Architektur mit QEMU aus
Python> Mit Laufzeitargumenten ausführen> Import argparse verwenden
Mit Cloud Run x Flask können Sie ganz einfach Mikrodienste realisieren
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.
Bis zur Verwendung von PhantomJS mit Python auf Heroku
Verwenden Sie Python / Django mit dem Windows Azure Cloud Service!
Führen Sie die Kolben-App auf Cloud 9 und Apache Httpd aus
Führen Sie die LED-Matrix interaktiv mit Raspberry Pi 3B + auf Slackbot aus
Führen Sie eine Pipeline für maschinelles Lernen mit Cloud Dataflow (Python) aus.
Führen Sie Paints Chainer auf der CPU mit offiziellem Python auf win10 aus
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Autoencoder im Chainer (Hinweise zur Verwendung von + Trainer)
Nutzung von Google Cloud Storage (GCS) durch "GAE / Py"
Web-Scraping für Anfänger mit Python (4) --2 Scraping auf Cloud Shell
Verwenden Sie mecab-ipadic-neologd mit igo-python
Verwenden Sie RTX 3090 mit PyTorch
Verwenden Sie ansible mit cygwin
Verwenden Sie pipdeptree mit virtualenv
Führen Sie Python mit VBA aus
[Python] Verwenden Sie JSON mit Python
Verwenden Sie Mock mit Pytest
Verwenden Sie den Indikator mit pd.merge
Verwenden Sie Gentelella mit Django
Führen Sie Django auf PythonAnywhere aus
Verwenden Sie Mecab mit Python 3
Verwenden Sie Tensorboard mit Chainer
Verwenden Sie DynamoDB mit Python
Führen Sie mysqlclient auf Lambda aus
Verwenden Sie pip mit MSYS2
Verwenden Sie pyvenv unter Windows
Führen Sie Blender mit Python aus
Verwenden Sie Python 3.8 mit Anaconda
Verwenden Sie Copyright mit Spacemacs
Verwenden Sie Python mit Docker
Verwenden Sie TypeScript mit Django-Kompressor
Punktwolke mit Pfeffer
Verwenden Sie WENIGER mit Django
Führen Sie OpenMVG auf einem Mac aus
Verwenden Sie Ansible unter Windows
Verwenden Sie MySQL mit Django
Verwenden Sie QuTiP unter Windows
Cloud Run Tutorial (Python)
Verwenden Sie pip unter Windows
Verwenden Sie Enum mit SQLAlchemy
Verwenden Sie Tensorboard mit NNabla
Verwenden Sie GPS mit Edison
Verwenden Sie nim mit Jupyter
Führen Sie iperf mit Python aus
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Verwenden Sie Python 3, das vom Befehlszeilentool unter macOS Catalina eingeführt wurde