# 使用 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)
<br/>

端口转发：

![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/4.使用helm部署Python应用/img/port.png)
<br/>

访问服务：

![](https://gitcode.net/csdn/skill_tree_cloud_native/-/raw/master/data/1.云原生初阶/4.k8s包管理(helm)/4.使用helm部署Python应用/img/visit.png)
<br/>

以下说法错误的是？

## 答案

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

## 选项

### A

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

### B

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

### C

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