deploy.md 2.1 KB
Newer Older
F
feilong 已提交
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
# 使用 helm 部署 Python 应用

回归下示例Python应用 cloud_native_hello_py 的目录结构:

```bash
.
├── Dockerfile
├── README.md
├── k8s.deployment.yaml
├── k8s.service.yaml
└── src
    ├── main.py
    └── requirements.txt
```

我们使用 kubectl 命令部署过该 Python 服务,现在,我们用 helm 来部署。

首先,在项目命令下通过 helm 命令创建一个chart 配置文件夹

```bash
makedir chart
cd chart
helm create hello-py
```

此时,目录结构如下:

```bash
.
├── Dockerfile
├── README.md
├── chart
│   └── hello-py
│       ├── Chart.yaml
│       ├── charts
│       ├── templates
│       │   ├── NOTES.txt
│       │   ├── _helpers.tpl
│       │   ├── deployment.yaml
│       │   ├── hpa.yaml
│       │   ├── ingress.yaml
│       │   ├── service.yaml
│       │   ├── serviceaccount.yaml
│       │   └── tests
│       │       └── test-connection.yaml
│       └── values.yaml
├── k8s.deployment.yaml
├── k8s.service.yaml
└── src
    ├── main.py
    └── requirements.txt
```

其中:

* Chart.yaml: 基本描述
* values.yaml: 配置镜像名称等
* charts: 用于存放依赖的其他 chart
* templates: 用于存放需要的配置模板

修改 values.yaml:
```bash
replicaCount: 1

image:
  image: fanfeilong/cloud_native_hello_py
  pullPolicy: IfNotPresent
```

现在,使用 heml 安装

```bash
helm install ./chart/hello-py/ --generate-name
```

检测下 k8s 的 deployment 和 sevice:

![](./img/status.png)

端口转发:
![](./img/port.png)

访问服务:
![](./img/visit.png)

以下说法错误的是?

## 答案

helm 部署的 k8s 应用没法通过 kubectl 管理

## 选项

### A

helm 通过chart依赖来解决所部署的k8s应用之间的依赖

### B

helm 通过chart管理k8s应用部署的配置和模版

### C

helm 可以规范化k8s应用的配置和部署