在Kubernetes(使用minikube)中建立Django应用程序的开发环境的方法是什么?
首先
这是《2018年Gaiax集团降临日历》的第10天文章。
作为一名实习生,能够自然地参加到圣诞日历中,我感到非常高兴。
这次我整理了思路,总结了在本地搭建Django应用程序并将其部署在Kubernetes上的方法。
目录
-
- 前提
-
- プロジェクトの作成
-
- Dockerfileの作成とビルド
作成
ビルド
Kubernetesへデプロイ
Kubernetes yamlファイルの作成
デプロイ
ブラウザで確認
あとがき
参考
前提
-
- pipenvとpyenvを導入済み
-
- dockerを導入済み
- minikubeを導入済み
创建项目
使用pipenv创建Django项目。请参考Django教程。
$ touch Pipfile
$ pipenv --python=3.7.1
$ pipenv install django
$ pipenv run django-admin startproject config .
实际上,应该动态地设置ALLOWED_HOSTS,但在本例中,我们将允许所有的ALLOWED_HOSTS。
# ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']
Dockerfile的创建和构建
创建
FROM python:3.7.1
RUN mkdir /code/
COPY ./ /code/
WORKDIR /code/
RUN pip install --upgrade pip && \
pip install pipenv && \
pipenv --python /usr/local/bin/python
RUN pipenv install
CMD pipenv run python manage.py runserver 0:8000
建造
在构建之前,更改设置以使用minikube的Docker而不是主机机器。
$ eval $(minikube docker-env)
在这种情况下,我们可以给构建添加除了最新版本之外的标签。
$ docker build -t sample/django:v1 .
部署到Kubernetes
创建Kubernetes的yaml文件。
请将下面的内容保存为 k8s-django.yaml 或其他文件名。
kind: Deployment
apiVersion: apps/v1
metadata:
name: django
spec:
replicas: 1
selector:
matchLabels:
app: django
template:
metadata:
labels:
app: django
spec:
containers:
- name: django
image: "sample/django:v1"
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8000
name: django
---
kind: Service
apiVersion: v1
metadata:
name: django-svc
spec:
selector:
app: django
ports:
- protocol: TCP
port: 8000
name: django
type: NodePort
部署
$ kubectl create -f k8s-django.yaml
请在浏览器上确认。
我会在浏览器上确认服务器已经启动。
$ minikube service django-svc

请用中文将以下内容进行转述:
1. I want to go to the store today.
2. She is a talented singer.
3. We had a delicious meal at the restaurant.
4. He found the keys under the table.
5. They are going to watch a movie tonight.
作者的話
这次我尝试使用minikube部署Django应用。
从主机访问minikube内的应用比我想象的要难。
我已经在k8s-django.yaml中创建了Django应用程序,但只要定义相应的数据库yaml,就可以轻松地连接到数据库。
由于可以直接将yaml文件重用于GKE等部署,因此与开发环境中的docker-compose和生产环境中的k8s相比,它更加方便!
请参考/参照以下内容。
- minikubeでローカルのdocker imageを使う – Qiita