在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
undefined

请用中文将以下内容进行转述:
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
广告
将在 10 秒后关闭
bannerAds