问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Azure开发人员CLI对Helm和Kustomize的支持

创作时间:
作者:
@小白创作中心

Azure开发人员CLI对Helm和Kustomize的支持

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/azure/developer/azure-developer-cli/helm-kustomize-support

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应用程序。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号