云原生之旅 - 5)Kubernetes时代的包管理工具 Helm( 二 )
provider.tf

文章插图

文章插图
resource "helm_release" "my-nginx" { name = "my-nginx-release" repository = "https://charts.bitnami.com/bitnami" chart = "nginx" set { name = "service.type" value = "ClusterIP" } set { name = "replicaCount" value = "2" }}nginx.tf
然后执行terraform 命令安装Nginx helm chart
terraform initterraform planterraform applyReference: Terraform Helm Provider
自己制作 Helm Charthelm create mychartlist 能看到目录结构如下
- Chart.yaml
- values.yaml
- templates
- charts
现在 , 做一个最简单的Helm Charts 创建 namespace
templates 目录下仅需一个文件 namespace.yaml
---{{ range $i, $ns := .Values.namespaces -}}apiVersion: v1kind: Namespacemetadata: name: {{ $ns.name }} annotations: helm.sh/resource-policy: keep {{- if hasKey $ns "extraAnnotations" }} {{- toYaml $ns.extraAnnotations | nindent 4 }} {{- end }}---{{- end }}Chart.yaml
apiVersion: v2description: Helm chart for maintaining user namespacesname: user-namespacesversion: 1.1.0values.yaml 放一个默认值来测试下
namespaces:- name: wade-test owner: "wade@demo.com" extraAnnotations: abc: def测试
helm template user-namespaces

文章插图
现在就可以local直接安装了,命令上面已经介绍过 。
我们现在选择打包并且publish 到一个bucket 作为repository来共享给别人使用 。也可以通过github作为repository , 有类似solution,不再赘述 。
我这里的例子是gcs bucket 作为私有 helm repository
helm package user-namespaces此命令会生成一个tgz 包: `user-namespaces-1.1.0.tgz`
然后借助一款工具 helm-gcs which is a helm plugin that allows you to manage private helm repositories on Google Cloud Storage aka buckets.
helm gcs init gs://package/charts/infra/helm repo add my-repo gs://package/charts/infra/helm gcs push user-namespaces-1.1.0.tgz my-repo你会看到此bucket下面会有两个文件
% gsutil ls gs://package/charts/infra/gs://package/charts/infra/index.yamlgs://package/charts/infra/user-namespaces-1.1.0.tgz使用 Terraform Helm Provider 安装此Chart 代码示例:
locals { my_namespace = "demo-system" namespace_yaml = <<-EOT namespaces: - name: ${local.my_namespace} owner: wadexu EOT}resource "helm_release" "my_namespace" {name = "my-first-chart"repository = "gs://package/charts/infra"chart = "user-namespaces"version = "1.1.0"values = [local.namespace_yaml]}
after terraform init and apply the resource

文章插图
你的第一个自定义 Helm Chart 通过Terraform 安装成功了 。
Helm list result:

文章插图
`kubectl gs ns` you will see this new namespace just created
% kubectl get nsNAME STATUS AGEwade-demo Active 75s
推荐阅读
- 云顶之弈碧波法师阵容怎么玩
- 云上当空接龙规则(接龙规则口诀)
- 云上空当接龙怎么玩(空当接龙怎么玩教学说明)
- mqtt_simple例程 nrf9160做主控连接阿里云——
- 云顶之弈S7.5怒玉豹女阵容怎么玩
- 云顶之弈玉龙怎么换形锤阵容
- 云原生之旅 - 4)基础设施即代码 使用 Terraform 创建 Kubernetes
- Git 02: git管理码云代码仓库 + IDEA集成使用git
- 云顶之弈龙境探秘活动玩法是什么
- 云顶之弈玉龙猴王阵容怎么玩