target/impeller管理在Kubernetes集群中运行的Helm图表。
" --kube-context my-kubernetes-context
空运行命令:
impeller --cluster-config-path=./clusters/my-cluster.yaml --kube-config="$(cat ~/.kube/config)" --kube-context my-kubernetes-context --dry-run
默认情况下,--dry-run选项会隐藏覆盖值。您可以在发布配置中添加showValue: true以启用打印输出:
yamlreleases: - name: test-release namespace: kube-system version: ~x.x.x overrides: - target: global.tag showValue: true value: 1.6.0
差异运行命令:
impeller --cluster-config-path=./clusters/my-cluster.yaml --kube-config="$(cat ~/.kube/config)" --kube-context my-kubernetes-context --diff-run
生成审计报告文件:
impeller --cluster-config-path=./clusters --audit=true
或
impeller --cluster-config-path=./clusters --audit=true --audit-file=./myreport.csv
以下Drone流水线示例展示了如何管理单个集群。推送到或合并至master分支时会自动部署更新。
yamldeploy-charts: when: event: push branch: master image: path-to-docker/image:version cluster_config: clusters/my-cluster-name.yaml kube_context: my-kubernetes-context secrets: - source: my-kube-config-drone-secret target: KUBE_CONFIG
此示例演示使用Drone矩阵管理多个集群。推送到或合并至master分支时会自动部署到测试集群。生产集群可通过drone deploy命令手动部署,以便更好地控制哪些版本进入生产环境。
yamlmatrix: include: - cluster: my-prod-cluster-1 stage: prod - cluster: my-prod-cluster-2 stage: prod - cluster: my-test-cluster-1 stage: test - cluster: my-test-cluster-2 stage: test pipeline: deploy-charts-prod: when: event: deployment matrix: stage: prod cluster: ${DRONE_DEPLOY_TO} image: path-to-docker/image:version cluster_config: clusters/${cluster}.yaml kube_context: ${cluster} secrets: - source: my-kube-config-drone-secret target: KUBE_CONFIG deploy-charts-test: when: event: push branch: master image: path-to-docker/image:version cluster_config: clusters/${cluster}.yaml kube_context: ${cluster} secrets: - source: my-kube-config-drone-secret target: KUBE_CONFIG
chart-configs/ |- clusters/ |- my-cluster-name.yaml |- my-other-cluster-name.yaml |- values/ |- cluster-autoscaler/ # 集群文件中的发布名称 |- default.yaml # 所有集群的覆盖配置 |- my-cluster-name.yaml # 特定集群的覆盖配置 |- my-other-cluster-name.yaml |- my-chart/ |- default.yaml
clusters/my-cluster-name.yaml:
yamlname: my-cluster-name # 用于查找特定集群的覆盖文件 helm: defaultHistory: 3 # 可选;为所有发布的"helm"部署方法设置--history-max标志 log: 5 # 指定日志级别 debug: false # 启用调试级别日志 repos: # 让Helm知晓您要使用的任何仓库 - name: stable url: [***] - name: private-repo url: [***] releases: - name: cluster-autoscaler # 指定发布名称 chartPath: stable/cluster-autoscaler # 指定图表来源 namespace: kube-system # 指定安装的命名空间 version: 0.7.0 # 指定要安装的图表版本 deploymentMethod: helm # 指定图表的部署方式("helm"或"kubectl") history: 3 # 可选;为此发布的"helm"部署方法设置--history-max标志 - name: my-chart chartPath: private-repo/my-chart namespace: kube-system version: ~1.x # 支持与Helm的--version标志相同的语法 deploymentMethod: kubectl
在上述示例中,deploymentMethod选项允许配置Helm图表的部署方式。有两种可用方法:
helm:使用Helm的常规安装方法(由Tiller pod创建图表中声明的资源)。kubectl:如果不想在集群中运行Tiller pod,可使用此选项运行helm template将图表转换为Kubernetes清单,然后使用kubectl应用该清单。values/my-chart/default.yaml:
yaml# 在此处放置任何覆盖配置,与Helm的用法相同。 # 此文件将作为覆盖配置传递给Helm。 resources: cpu: requests: 100m limits: 200m memory: requests: 1Gi limits: 1Gi
release中添加chartsSource字段,使impeller下载图表tar归档文件chartPath指向提取的图表位置。yamlreleases: - name: istio-base namespace: kube-system version: ~x.x.x chartPath: "./downloads/istio-1.6.0/manifests/charts/base" chartsSource: "[***]"
使用Helm的--set功能覆盖单个值。
在集群YAML文件中添加以下发布配置:
yaml- name: release-name namespace: default version: 1.0.0 chartPath: repo/chart-name overrides: - target: tls.key showValue: false valueFrom: environment: KEY
如果将showValue设置为true,环境变量的值将记录到stdout以用于调试。默认情况下,该值会被脱敏。
使用Helm的--set-file功能从文件覆盖单个值。
在集群YAML文件中添加以下发布配置:
yaml- name: release-name namespace: default version: 1.0.0 chartPath: repo/chart-name overrides: - target: tls.key valueFrom: file: /path/to/key
由于值不会被记录,从文件设置值时showValue无效。文件路径始终会记录到stdout。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务