我对K8s很陌生,所以我没有用过它。但是我已经熟悉了nodespods的概念。我知道minikube是debugetc的本地k8s引擎,我应该通过kubectl工具与任何k8s引擎交互。现在我的问题是。
在我的本地minikube实例和生产的AWSetc实例上启动相同的配置,是否能保证结果是相同的?
我如何为我的项目设置持续部署?现在我已经配置了CI,将测试过的代码镜像推送到docker hub上,并使用了 :latest
标签。但我希望它们能在滚动更新模式下自动部署,而不中断正常运行时间。
如果能得到正确的配置与我应该执行的步骤,使其在任何集群上工作,那就太好了?我不想保存docker-compose的符号并使用kompose。我想在k8s的上下文中正确地使其工作。
我现在的docker-compose.yml是(django和react服务现在可以从dockerhub获得)。
version: "3.5"
services:
nginx:
build:
context: .
dockerfile: Dockerfile.nginx
restart: always
command: bash -c "service nginx start && tail -f /dev/null"
ports:
- 80:80
- 443:443
volumes:
- /mnt/wts_new_data_volume/static:/data/django/static
- /mnt/wts_new_data_volume/media:/data/django/media
- ./certs:/etc/letsencrypt/
- ./misc/ssl/server.crt:/etc/ssl/certs/server.crt
- ./misc/ssl/server.key:/etc/ssl/private/server.key
- ./misc/conf/nginx.conf:/etc/nginx/nginx.conf:ro
- ./misc/conf/passports.htaccess:/etc/passports.htaccess:ro
depends_on:
- react
redis:
restart: always
image: redis:latest
privileged: true
command: redis-server
celery:
build:
context: backend
command: bash -c "celery -A project worker -B -l info"
env_file:
- ./misc/.env
depends_on:
- redis
django:
build:
context: backend
command: bash -c "/code/manage.py collectstatic --no-input && echo donecollectstatic && /code/manage.py migrate && bash /code/run/daphne.sh"
volumes:
- /mnt/wts_new_data_volume/static:/data/django/static
- /mnt/wts_new_data_volume/media:/data/django/media
env_file:
- ./misc/.env
depends_on:
- redis
react:
build:
context: frontend
depends_on:
- django
简短的回答是肯定的,你可以用K8s复制你所拥有的docker-compose。
这取决于你的基础设施。例如,如果你有一个外部的 LoadBalancer 在您的 AWS 部署中,它在您的本地中不会是一样的。
docker-compose的符号与K8s不同,所以是的,你必须将其翻译成Kubernetes对象。Pods、Deployments、Secrets、ConfigMaps、Volumes等,大多数情况下,基本的对象将在任何集群上工作,但总会有一些特定的对象与你的集群的物理特性有关(即存储卷、负载均衡器等)。负载均衡器 Kubernetes文档 是非常全面的,而且是超级有用的。