Ceci est la suite de (3) Créer un projet GCP.
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
Créez un cluster et déployez le conteneur. Il est accessible de l'extérieur en définissant Service et Ingress.
Créez un cluster à partir de la console.
Nom du cluster: [K8S_CLUSTER]
Type de lieu:zone:[K8S_CLUSTER_ZONE]
Version principale: 1.14.10-gke.27(Défaut)
Obtenez les contextes pour utiliser le cluster créé à partir du kubectl local.
$\gke-django-tutorial\gcloud container clusters get-credentials [K8S_CLUSTER] --zone="[K8S_CLUSTER_ZONE]"
Fetching cluster endpoint and auth data.
kubeconfig entry generated for [K8S_CLUSTER].
#Vérifiez si le contexte est appliqué
$\gke-django-tutorial\manifests\kubectl config current-context
Secrets
Les variables d'environnement secrètes telles que le nom d'utilisateur et le mot de passe de la base de données ont été gérées par .env
, mais Kubernetes les enregistre dans la ressource Secrets et les utilise.
Cloud SQL
En utilisant Secrets, vous pouvez utiliser en toute sécurité le nom d'utilisateur et le mot de passe CloudSQL comme variables d'environnement. Pour utiliser une instance de Cloud SQL depuis GKE, vous devez créer des secrets pour l'accès au niveau de l'instance et l'accès à la base de données.
Créez des secrets pour l'accès au niveau de l'instance.
$\gke-django-tutorial\manifests\kubectl create secret generic cloudsql-oauth-credentials --from-file=credentials.json=".\secrets\cloudsql\ZZZZZZZZZZZZZZZ.json"
secret/cloudsql-oauth-credentials created
Créez des secrets pour accéder à la base de données.
$\gke-django-tutorial\manifests\kubectl create secret generic cloudsql --from-literal=username="[DATABASE_USER]" --from-literal=password="[DATABASE_PASSWORD]"
SECRET_KEY
Ajoutons le reste SECRET_KEY
décrit dans le fichier .env
à Secrets.
Laissez DEBUG
dans backend / config / settings.py
sur False.
$\gke-django-tutorial\manifests\kubectl create secret generic secret-key --from-literal=SECRET_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Les parties pertinentes de backend / config / settings.py
sont les suivantes.
# backend/config/settings.py
import os
# 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)
# 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') #Changement
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
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.environ.get('DATABASE_USER'),
'PASSWORD': os.environ.get('DATABASE_PASSWORD'),
'HOST': '127.0.0.1',
'PORT': '5432',
}
}
Créez l'image localement et importez-la dans Google Cloud Registry. Le nom de l'image doit être au format «gcr.io / $ {PROJECT} / $ {IMAGENAME}: $ {TAGNAME}».
#Confirmation du nom du projet
$\gke-django-tutorial\gcloud config get-value project
Your active configuration is: [YOUR_PROJECT]
gke-django-tutorial
#Construire l'image
# web-back(Django)
$\gke-django-tutorial\docker image build --no-cache -t gcr.io/[YOUR_PROJECT]/web-back:latest ./backend/web-back/.
# nginx-back
$\gke-django-tutorial\docker image build --no-cache -t gcr.io/[YOUR_PROJECT]/nginx-back:latest ./backed/nginx/.
# web-front(React)
$\gke-django-tutorial\docker image build --no-cache -t gcr.io/[YOUR_PROJECT]/web-front:latest ./frontend/web-front/.
# nginx-back
$\gke-django-tutorial\docker image build --no-cache -t gcr.io/[YOUR_PROJECT]/nginx-front:latest ./frontend/nginx/.
Téléchargez les quatre images Docker que vous avez créées dans le Goocle Container Registry (GCR).
# backend
$\gke-django-tutorial\gcloud docker -- push gcr.io/[YOUR_PROJECT]/web-back:latest
$\gke-django-tutorial\gcloud docker -- push gcr.io/[YOUR_PROJECT]/nginx-back:latest
# frontend
$\gke-django-tutorial\gcloud docker -- push gcr.io/[YOUR_PROJECT]/web-front:latest
$\gke-django-tutorial\gcloud docker -- push gcr.io/[YOUR_PROJECT]/nginx-front:latest
J'ai pu créer des images de conteneurs backend et frontend et les pousser vers GCR.
Recommended Posts