# 使用 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:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/4.使用helm部署Python应用/img/status.png)
端口转发:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/4.使用helm部署Python应用/img/port.png)
访问服务:
![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/4.使用helm部署Python应用/img/visit.png)
以下说法错误的是?
## 答案
helm 部署的 k8s 应用没法通过 kubectl 管理
## 选项
### A
helm 通过chart依赖来解决所部署的k8s应用之间的依赖
### B
helm 通过chart管理k8s应用部署的配置和模版
### C
helm 可以规范化k8s应用的配置和部署