
# CCI应用进行优雅滚动升级
#### 应用场景
用户在CCI中部署工作负载时，应用发布成了LoadBalance类型的Service或Ingress且对接的独享型ELB，经过ELB的访问流量支持直通到容器中；当应用进行滚动升级或者弹性扩缩容，通过配置容器探针，最短就绪时间等可以做到优雅升级，从而实现优雅弹性扩缩容（在升级或者扩缩容过程中业务不会出现5xx的错误响应）。
#### 操作步骤
在此以nginx的无状态工作负载为例，提供了CCI中应用进行优雅滚动升级或者弹性扩缩容最佳实践。
1. 在CCI控制台，单击左侧栏目树中的"工作负载 \> 无状态 Deployment"，单击右上角"镜像创建"。 
   图1创建无状态负载   
   ![](https://support.huaweicloud.com/bestpractice-cci/zh-cn_image_0000001149191622.png "点击放大")
   
   
2. 在"容器配置"，单击"使用该镜像"，选择镜像完成。
3. 在"容器设置"，单击展开"高级设置 \> 健康检查 \> 应用业务探针"，如[下图]设置工作负载业务探针。
   
   图2配置应用业务探针   
   ![](https://support.huaweicloud.com/bestpractice-cci/zh-cn_image_0000001195231383.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-cci/public_sys-resources/note_3.0-zh-cn.png)
   该配置是检查用户业务是否就绪，不就绪则不转发流量到当前实例。
   
   
4. 单击展开"生命周期"，配置容器的"停止前处理"，保证容器在退出过程中能够对外提供服务。 
   图3配置生命周期   
   ![](https://support.huaweicloud.com/bestpractice-cci/zh-cn_image_0000001149191696.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-cci/public_sys-resources/note_3.0-zh-cn.png)
   该配置是保证业务容器在退出过程中能够对外提供服务。
   
   
5. 单击"下一步：访问设置"，如[图4]。
   
   图4配置访问类型及端口   
   ![](https://support.huaweicloud.com/bestpractice-cci/zh-cn_image_0000001195231711.png "点击放大")
   
   
6. 单击"下一步"完成工作负载的创建。
7. 配置最短就绪时间。 
   最短就绪时间，用于指定新创建的Pod在没有任意容器崩溃情况下的最小就绪时间，只有超出这个时间Pod才被视为可用。
   "最短就绪时间"需在右上角的"YAML编辑"进行配置。如[图5]:
   图5配置最短就绪时间   
   ![](https://support.huaweicloud.com/bestpractice-cci/zh-cn_image_0000001149351850.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-cci/public_sys-resources/note_3.0-zh-cn.png)
   - 推荐的配置minReadySeconds时长，为业务容器的启动预期时间加上ELB服务下发member到生效的时间。
   
   - minReadySeconds的时长需要小于sleep时长，保证旧的容器停止并退出之前，新的容器已经准备就绪。
    
   
   
8. 配置完成后，对应用进行升级和弹性扩缩容的打流测试。 
   准备一台集群外的客户端节点，预置检测脚本**detection_script.sh** ，内容如下，其中100.85.125.90:7552为service的公网访问地址：
   ```
   #! /bin/bash 
   for (( ; ; ))
   do
            curl -I 100.85.125.90:7552 | grep "200 OK"
            if [ $? -ne 0 ]; then
                     echo "response error!"
                     exit 1
            fi 
   done
   ```
   
   
9. 运行检测脚本：**bash detection_script.sh** ，并在CCI界面触发应用的滚动升级，如[图6]修改了容器规格，触发了应用的滚动升级。
   
   图6修改容器规格   
   ![](https://support.huaweicloud.com/bestpractice-cci/zh-cn_image_0000001149351946.png "点击放大")
   滚动升级的过程中，应用的访问并未中断，并且返回的请求都是"200OK"，说明升级过程是优雅升级，没有中断的。
   
   
 
