Ceci est une continuation du (2) développement du frontend --Nginx + React.
Je souhaite développer une application avec la configuration Djagno + React et la déployer sur Google Kubernetes Engine Je l'ai écrit parce qu'il était peu probable qu'il y ait un tutoriel cohérent.
Cependant, ** je pense qu'il y a des points qui ne sont pas encore parfaits **, mais je pense que si vous avez un peu d'expérience, vous pouvez l'utiliser immédiatement.
Il s'agit d'un enregistrement d'un ingénieur amateur inexpérimenté qui lutte avec le déploiement pour créer un portefeuille. S'il y a des lacunes, veuillez les signaler. ..
$ node --version
v12.14.1
$ npm --version
6.13.7
$ python --version
Python 3.7.4
$ docker --version
Docker version 19.03.8
OS windows10 pro
Nous allons le déployer sur Google Kubernetes Engine (GKE). Je me réfère beaucoup au Tutoriel officiel.
Connectez-vous à votre compte Google et démarrez un nouveau projet depuis la console Cloud.
Nom du projet: gke-django-tutorial
endroit:Aucune organisation
Référence: https://cloud.google.com/billing/docs/how-to/modify-project?authuser=2
Les ressources GCP peuvent être manipulées depuis votre PC local à l'aide du SDK Cloud. On suppose que gcloud est déjà installé.
#initialisation gcloud
$\gke-django-tutorial\gcloud init
Welcome! This command will take you through the configuration of gcloud.
Pick configuration to use:
[1] Re-initialize this configuration [xxxxxx] with new settings
[2] Create a new configuration
Please enter your numeric choice: 2
Enter configuration name. Names start with a lower case letter and
contain only lower case letters a-z, digits 0-9, and hyphens '-': gke-django-tutorial
Your current configuration has been set to: [gke-django-tutorial]
You can skip diagnostics next time by using the following flag:
gcloud init --skip-diagnostics
Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).
Choose the account you would like to use to perform operations for
this configuration:
[1] [email protected]
[2] [email protected]
[3] Log in with a new account
Please enter your numeric choice: 1
You are logged in as: [[email protected]].
Pick cloud project to use:
[1] XXXXXXX
[2] [YOUR_PROJECT]
[3] Create a new project
Please enter numeric choice or text value (must exactly match list
item): 2
Your current project has been set to: [YOUR_PROJECT].
Not setting default zone/region (this feature makes it easier to use
[gcloud compute] by setting an appropriate default value for the
--zone and --region flag).
See https://cloud.google.com/compute/docs/gcloud-compute section on how to set
default compute region and zone manually. If you would like [gcloud init] to be
able to do this for you the next time you run it, make sure the
Compute Engine API is enabled for your project on the
https://console.developers.google.com/apis page.
Your Google Cloud SDK is configured and ready to use!
* Commands that require authentication will use [email protected] by default
* Commands will reference project `[YOUR_PROJECT]` by default
Run `gcloud help config` to learn how to change individual settings
This gcloud configuration is called [YOUR_PROJECT]. You can create additional configurations if you work with multiple accounts and/or projects.
Run `gcloud topic configurations` to learn more.
[Omis ci-dessous]
Activez les API Datastore, Pub / Sub, Cloud Storage JSON, Cloud Logging et Google+.
$\gke-django-tutorial\gcloud services enable sqladmin
Operation "operations/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" finished successfully.
Téléchargez Cloud SQL Proxy et renommez-le en cloud_sql_proxy.exe
.
Ceci est installé sous $ \ gke-django-tutorial \
.
--Référence: Installation du proxy Cloud SQL
Créez une instance de CloudSQL à partir de la console Cloud.
Sélection du moteur de base de données: PostgreSQL
ID d'instance: [SQL_INSTANCE_NAME]
mot de passe: [YOUR_PASSWORD]
Emplacement:
Région: [SQL_REGION_NAME]
zone: [DATABASE_ZONE]
Version de la base de données: PostgreSQL 11
Vérifiez le connectionName
pour vous connecter à CloudSQL en utilisant le cloud_sql_proxy.exe
que vous avez téléchargé précédemment.
#Confirmation de connecsionName
$\gke-django-tutorial\gcloud sql instances describe [SQL_INSTANCE_NAME]
connectionName: [YOUR_PROJECT]:[SQL_REGION_NAME]:[SQL_INSTANCE_NAME]
#Connexion d'instance
$\gke-django-tutorial\gcoud_sql_proxy.exe -instances="[YOUR_PROJECT]:[SQL_REGION_NAME]:[SQL_INSTANCE_NAME]"=tcp:5432
2020/04/28 17:49:51 Listening on 127.0.0.1:5432 for gke-django-tutorial:asia-northeast1:websql
2020/04/28 17:49:51 Ready for new connections
Cette commande m'a permis de me connecter à mon instance CloudSQL depuis mon PC. Laissez l'invite de commande connectée à l'instance et travaillez avec une autre invite de commande.
Créons une base de données depuis la console. Vous pouvez créer une «base de données» à partir d'une «base de données» en sélectionnant «[SQL_INSTANCE_NAME]» sur la console.
Nom de la base de données: [DATABASE_NAME]
Créez un compte d'utilisateur de base de données à partir de la console.
Nom d'utilisateur: [DATABASE_USER]
mot de passe: [DATABASE_PASSWORD]
Créez un compte de service CloudSQl depuis la console et téléchargez votre clé privée au format json.
Nom du compte de service: [SERVICE_ACCOUNT_NAME]
ID du compte de service: [SERVICE_ACCOUNT_NAME]@BBBBBBBBB.iam.gservice
Autorité:Administrateur Cloud SQL
⇒ Sélectionnez le format json lors de la création d'une clé privée
⇒ clé privée au format json: ZZZZZZZZZZZZZZZ.json est téléchargé
Créez un répertoire appelé secrets \ cloudsql \
directement sous le projet et placez la clé privée créée.
$\gke-django-tutorial\mkdir secrets
$\gke-django-tutorial\cd secrets
$\gke-django-tutorial\secrets\mkdir cloudsql
$\gke-django-tutorial\secrets\cd cloudsql
#Gardez votre clé privée
$\gke-django-tutorial\secrets\cloudsql\dir
ZZZZZZZZZZZZZZZ.json
Définissez la base de données Django sur CloudSQL, démarrez-la et préparez-vous à utiliser CloudSQL. Comme nous l'avons fait dans le sqlite3 local, nous allons migrer la table de l'environnement local via cloud_sql_proxy.
Ajoutez DATABASE_USER
et DATABASE_PASSWORD
au fichier .env
pour les utiliser comme variables d'environnement.
Ne mettez pas d'espace entre la clé et la valeur.
SECRET_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
DEBUG=False
DATABASE_USER=[DATABASE_USER]
DATABASE_PASSWORD=[DATABASE_PASSWORD]
backend/config/settings.py
Modifiez le paramètre DATABASE de Django de db.sqlite3 à CloudSQL.
Vous devez référencer directement le fichier .env
, donc chargez-le en utilisant python-dotenv
.
# backend/config/setting.sy
import os
from dotenv import load_dotenv #ajouter à
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_DIR = os.path.basename(BASE_DIR)
load_dotenv(os.path.join(BASE_DIR, '.env')) #ajouter à
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get('SECRET_KEY')
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = os.environ.get('DEBUG')
DATABASES = {
'default': {
# If you are using Cloud SQL for MySQL rather than PostgreSQL, set
# 'ENGINE': 'django.db.backends.mysql' instead of the following.
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'web-db',
'USER': os.getenv('DATABASE_USER'),
'PASSWORD': os.getenv('DATABASE_PASSWORD'),
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
J'ai changé les paramètres de la base de données sur CloudSQL et je dois à nouveau migrer.
(venv)$\gke-django-tutorial\backend\python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, todo
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
Applying todo.0001_initial... OK
J'ai pu migrer vers CloudSQL sans aucun problème.
Créez un utilisateur administrateur ainsi que sqlite.
(venv)$\gke-django-tutorial\backend\python manage.py createsuperuser
Nom d'utilisateur(leave blank to use '[YOUR_NAME]'): [SUPERUSER_NAME]
adresse mail: [YOUR_EMAIL]@gmail.com
Password:
Password (again):
Superuser created successfully.
Lançons le serveur de développement et ajoutons environ 3 données à partir de la page administrateur.
(venv)$\gke-django-tutorial\backend\python manage.py runserver
Vous pouvez stocker des données sur la base de données créée dans votre instance CloudSQL en vous connectant à la page d'administration à l'adresse http: // localhost: 8000 / admin /
.
Ajoutons quelques éléments.
Stockez les fichiers statiques dans Google Cloud Storage (GCS) et configurez les paramètres pour les fichiers statiques à livrer à partir de GCS.
Créez du stockage et téléchargez des fichiers statiques. Si vous ne le faites pas, les css tels que l'écran d'administration ne seront pas reflétés.
#Créer du stockage
(venv)$\gke-django-tutorial\backend\gsutil mb gs://[STORAGE_NAME]
Creating gs://gke-django-storage/...
#Paramètres de publication
(venv)$\gke-django-tutorial\backend\gsutil defacl set public-read gs://[STORAGE_NAME]
Setting default object ACL on gs://[STORAGE_NAME]/...
/ [1 objects]
#Collecter des fichiers statiques
(venv)$\gke-django-tutorial\backend\python manage.py collectstatic
#Importer des fichiers statiques sur Cloud Storage
(venv)$\gke-django-tutorial\backend\gsutil rsync -R staticfiles/ gs://[STORAGE_NAME]/static
Modifiez STATIC_URL
dans backend / config / settings.py
pour faire référence à GCS.
# backend/config/settings.py
STATIC_URL = 'https://storage.googleapis.com/[STORAGE_NAME]/static/'
Nous avons créé un projet GCP et nous nous sommes préparés pour Cloud SQL et Cloud Storage.
⇒ (4) Création de cluster et conteneur PUSH
Recommended Posts