当前位置:   article > 正文

Devops初讲

Devops初讲

一、源码部署(Source to Deployment)

Draft: 提供了一个用于简化容器构建和部署(基于 Helm)的工具,使用方法见这里
Skaffold:同 Draft 类似,但不支持 Helm,使用方法见这里
Metaparticle:提供了一套用于开发云原生应用的标准库,使用方法见
https://metaparticle.io

1.CI/CD

(1)Jenkins X
(2)Spinnaker
(3)Argo
(4)Flux GitOps

2.其他

(1)Kompose

3.Draft

(1)Draft 是微软 Deis 团队开源(见 https://github.com/azure/draft)的容器应用开发辅助
工具,它可以帮助开发人员简化容器应用程序的开发流程。
(2)Draft 主要由三个命令组成

  • draft init :初始化 docker registry 账号,并在 Kubernetes 集群中部署
  • draftd(负责镜像构建、将镜像推送到 docker registry 以及部署应用等)
  • draft create :draft 根据 packs 检测应用的开发语言,并自动生成 Dockerfile 和Kubernetes Helm Charts
  • draft up :根据 Dockfile 构建镜像,并使用 Helm 将应用部署到 Kubernetes 集群
    (支持本地或远端集群)。同时,还会在本地启动一个 draft client,监控代码变化,并将更
    新过的代码推送给 draftd。

4.Draft 安装

由于 Draft 需要构建镜像并部署应用到 Kubernetes 集群,因而在安装 Draft 之前需要部署一个 Kubernetes 集群,部署方法可以参考 kubernetes 部署方法
(1)安装并初始化 helm(需要 v2.4.x 版本,并且不要忘记运行 helm init ),具体步骤可以参考 helm 使用方法
(2)注册 docker registry 账号,比如 Docker Hub 或Quay.io。配置 Ingress Controller 并在 DNS 中设置通配符域 * 的 A 记录(如*.draft.example.com )到 Ingress IP 地址。最简单的 Ingress Controller 创建方式是使用 helm:

# 部署 nginx ingress controller
 helm install stable/nginx-ingress --namespace=kube-system --name=nginxingress
 # 等待 ingress controller 配置完成,并记下外网 IP
 kubectl --namespace kube-system get services -w nginx-ingress-nginx-ingress controller
  • 1
  • 2
  • 3
  • 4

初始化好 Kubernetes 集群和 Helm 后,可以先下载 draft 二进制文件,并配置 draft

# 注意修改用户名、密码和邮件
token=$(echo
'{"username":"feisky","password":"secret","email":"feisky@email.com"}' |
base64)
# 注意修改 registry.org 和 basedomain
draft init --set
registry.url=docker.io,registry.org=feisky,registry.authtoken=${token},basedomain
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、Draft 入门

draft 源码中提供了很多应用的 示例,我们来看一下怎么用 draft 来简化 python 应用的开发流
程。

1.运用

1. $ git clone https://github.com/Azure/draft.git
2. $ cd draft/examples/python
3. $ ls
4. app.py requirements.txt
5.
6. $ cat requirements.txt
7. flask
8. $ cat app.py
9. from flask import Flask
10. app = Flask(__name__)
11.
12. @app.route('/')
13. def hello_world():
14. return "Hello, World!\n"
15.
16. if __name__ == '__main__':
17. app.run(host='0.0.0.0', port=8080)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2.Draft create 生成 Dockerfile 和 chart

1. $ draft create
2. --> Python app detected
3. --> Ready to sail
4. $ ls
5.Dockerfile app.py chart draft.toml
requirements.txt
6. $ cat Dockerfile
7. FROM python:onbuild
8. EXPOSE 8080
9. ENTRYPOINT ["python"]
10. CMD ["app.py"]
11. $ cat draft.toml
12. [environments]
13. [environments.development]
14. name = "virulent-sheep"
15. namespace = "default"
16. watch = true
17. watch_delay = 2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

3.Draft Up 构建镜像并部署应用

1. $ draft up
2. --> Building Dockerfile
3. Step 1 : FROM python:onbuild
4. onbuild: Pulling from library/python
5. 10a267c67f42: Pulling fs layer
6. ....
7. Digest: sha256:5178d22192c2b8b4e1140a3bae9021ee0e808d754b4310014745c11f03fcc61b
8. Status: Downloaded newer image for python:onbuild
9. # Executing 3 build triggers...
10. Step 1 : COPY requirements.txt /usr/src/app/
11. Step 1 : RUN pip install --no-cache-dir -r requirements.txt
12. ....
13. Successfully built f742caba47ed
14.
--> Pushing docker.io/feisky/virulentsheep:de7e97d0d889b4cdb81ae4b972097d759c59e06e
15. ....
16.
de7e97d0d889b4cdb81ae4b972097d759c59e06e: digest:
sha256:7ee10c1a56ced4f854e7934c9d4a1722d331d7e9bf8130c1a01d6adf7aed6238 size:
2840
17. --> Deploying to Kubernetes
18. Release "virulent-sheep" does not exist. Installing it now.
19. --> Status: DEPLOYED
20. --> Notes:
21.
22. http://virulent-sheep.app.feisky.xyzto access your application
23.
24. Watching local files for changes...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

4.打开一个新的 shell,就可以通过子域名来访问应用了

1. $ curl virulent-sheep.app.feisky.xyz
2. Hello, World!
  • 1
  • 2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/436829
推荐阅读
  

闽ICP备14008679号