Azure开发人员CLI对Helm和Kustomize的支持
Azure开发人员CLI对Helm和Kustomize的支持
Azure开发人员CLI为Helm和Kustomize提供了支持,以改进Azure Kubernetes服务(AKS)的预配和部署过程。Helm和Kustomize是帮助你配置和管理Kubernetes应用程序的工具。在本文中,你将了解如何在模板中启用和自定义对这些工具的支持。
启用Helm支持
若要启用Helm支持,请确保已安装Helm CLI。通过运行以下命令启用helm功能标志:
azd config set alpha.aks.helm on
Helm配置和部署
Helm支持使你能够定义要为每个服务安装的Helm图表列表。使用azure.yaml
文件中的配置来定义要安装的helm存储库或版本列表。
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
argocd:
host: aks
k8s:
namespace: argo
service:
name: argocd-server
helm:
repositories:
- name: argo
url: https://argoproj.github.io/argo-helm
releases:
- name: argocd
chart: argo/argo-cd
version: 5.51.4
jupyterhub:
host: aks
k8s:
namespace: jupyterhub
service:
name: proxy-public
helm:
repositories:
- name: jupyterhub
url: https://hub.jupyter.org/helm-chart/
releases:
- name: jupyterhub
chart: jupyterhub/jupyterhub
version: 3.1.0
azd deploy
命令使用helm节处理以下任务:
- 添加任何引用的Helm存储库和/或更新它们
- 安装引用的Helm图表
- 等待Helm发布过渡到已部署状态
- 列出部署的资源中定义的相关服务和入口
启用Kustomize支持
若要启用Kustomize支持,请确保已安装Kustomize CLI。使用以下命令启用Kustomize功能标志:
azd config set alpha.aks.kustomize on
Kustomize配置和部署
通过Kustomize功能,可以将Kustomize用作Kubernetes部署的一部分,并提供以下功能:
- 支持base和variant配置
- edits可以在部署之前运行
- configMapGenerator使用azd环境
使用以下azure.yaml
部分配置Kustomize功能:
- dir:从服务到包含kustomization.yaml文件的Kustomize目录的相对路径
- 支持环境变量替换
- edits:部署前应用的编辑表达式数组
- 支持环境变量替换
- env:部署之前生成的键/值对映射
- 映射值支持环境变量替换
用例
以下Kustomize用例受azd支持。
部署k8s清单
以下配置执行指向包含以下内容的清单文件夹的命令:
kubectl apply -k <dir>
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/base
使用覆盖层通过不同的变体进行部署
此用例通常用于将自定义配置部署到不同的阶段或环境,例如dev、test以及prod。在以下示例中,用户可以在kustomize目录中指定${AZURE_ENV_NAME}环境变量,以自动利用azd环境作为默认覆盖约定:
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
在部署之前修改kustomization.yaml
修改该kustomization.yaml操作的常见用例是修改用作部署一部分的容器映像名称/版本。以下示例指定配置edits并设置任何有效的kustomize edit ...命令。azd自动内插命令中edit引用的任何环境变量。
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
edits:
- set image todo-api=${SERVICE_API_IMAGE_NAME}
在azd配置映射中使用环境变量
配置映射或机密对于配置k8s群集至关重要。由于kustomize不支持任何直接环境变量替换,因此我们可以将kustomizeconfigMapGenerator与文件结合使用.env。配置kustomize节支持可以env定义一个或多个键/值对的节。此配置会在kustomization目录中自动生成一个临时.env文件,该文件可由aconfigMapGenerator.
以下配置将使用指定的键/值对创建一个.env。
# azure.yaml
name: todo-nodejs-mongo-aks
metadata:
template: todo-nodejs-mongo-aks@0.0.1-beta
services:
api:
project: ./src/api
language: js
host: aks
k8s:
kustomize:
dir: ./kustomize/overlays/${AZURE_ENV_NAME}
edits:
- set image todo-api=${SERVICE_API_IMAGE_NAME}
env:
AZURE_AKS_IDENTITY_CLIENT_ID: ${AZURE_AKS_IDENTITY_CLIENT_ID}
AZURE_KEY_VAULT_ENDPOINT: ${AZURE_KEY_VAULT_ENDPOINT}
APPLICATIONINSIGHTS_CONNECTION_STRING: ${APPLICATIONINSIGHTS_CONNECTION_STRING}
生成configMapGenerator具有指定名称的k8s配置映射,并包含文件内.env引用的所有键/值对。
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
- ingress.yaml
configMapGenerator:
- name: todo-web-config
envs:
- .env
本文介绍了Azure开发人员CLI对Helm和Kustomize的支持,包括如何在Azure Kubernetes服务(AKS)中使用这些工具进行配置和部署。通过启用Helm和Kustomize支持,开发者可以更灵活地管理和部署Kubernetes应用程序。