标签: kubernetes-helm

为基于微服务的应用程序设计Helm图表

我目前正在构建一个由4个微服务(a,b,c,d)组成的应用程序.我们希望将Kubernetes Helm作为CI/CD管道的一部分.

我们正在讨论如何最好地定义图表,并且想知道社区的建议.

我们目前的选择似乎是:

  1. 每个微服务的图表(所以4个图表)
  2. 每个"应用程序流"的图表(服务a调用b,服务c调用d,所以总共2个图表)
  3. 单个图表,部署所有4个微服务
  4. 1.和3.的一些组合我们利用Helm的依赖特性

值得一提的是:

  • 我们目前没有要求单独部署任何微服务,例如将其提供给单独的应用程序.
  • 我们可能需要能够独立扩展任何微服务,即不是简单地复制所有4种服务.

我提到这些要求是因为我觉得它们可能与图表设计有关.

kubernetes-helm

11
推荐指数
2
解决办法
3031
查看次数

有没有办法在 kubernetes statefulset 配置文件中获取 pod 的序号索引?

我们在 Kubernetes 1.9.0 上,想知道是否有办法在其 statefulset 配置文件中访问 pod 的“序数索引”。我们喜欢动态地为 pod 的标签分配一个值(从序数索引派生),然后在规范下使用它来设置 pod 关联(或反关联)。

或者,pod 的实例名称是否在 statefulset 配置文件中可用?如果是这样,我们希望从中提取序数索引并动态分配给标签(供以后用于亲和力)。

kubernetes kubernetes-helm statefulset

11
推荐指数
2
解决办法
9068
查看次数

为什么掌舵升级 - 以前安装失败时安装失败?

这是掌舵和分蘖版本:

> helm version --tiller-namespace data-devops
Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Run Code Online (Sandbox Code Playgroud)

以前的helm安装失败:

helm ls --tiller-namespace data-devops
NAME            REVISION        UPDATED                         STATUS  CHART                   NAMESPACE
java-maven-app  1               Thu Aug  9 13:51:44 2018        FAILED  java-maven-app-1.0.0    data-devops
Run Code Online (Sandbox Code Playgroud)

当我尝试使用此命令再次安装它时,它失败了:

helm --tiller-namespace data-devops upgrade java-maven-app helm-chart --install \
        --namespace data-devops \
        --values helm-chart/values/stg-stable.yaml
Error: UPGRADE FAILED: "java-maven-app" has no deployed releases
Run Code Online (Sandbox Code Playgroud)

helm upgrade --install如果先前的安装失败,命令是否会失败?我期待它强行安装.任何的想法?

kubernetes kubernetes-helm

11
推荐指数
3
解决办法
7518
查看次数

使用Kubernetes集群中的Helm图表访问已部署的服务

当前,我正在尝试通过创建Helm图表在Kubernetes集群上部署微服务端点Docker映像。为此,我创建了图表并更改了values.yaml和deployment.yaml中的参数以进行端口更改。我也想从Angular前端访问。因此,我添加了服务类型= NodePort。当我描述服务时,它给了我30983访问的端口。

我像http:// node-ip:30983 / endpoint一样访问

但我只是得到无法访问该网站的消息。让我添加我在这里所做的详细信息:

我的values.yaml文件包含以下提到的服务类型:

在此处输入图片说明

和我的template / service.yaml文件包含如下内容:

在此处输入图片说明

而我的template / deployment.yaml文件包含以下内容:

在此处输入图片说明

我尝试访问如下内容:

http://192.168.16.177:30983/

而且只能到达站点。

注意:当我尝试描述服务时,会得到以下信息:

在此处输入图片说明

kubectl的输出获取pod --show-labels,如下图所示。

在此处输入图片说明

更新

当我们使用kubectl describe pod命令时,将如下所示:

在此处输入图片说明

更新错误

Readiness probe failed: HTTP probe failed with statuscode: 404
Liveness probe failed: HTTP probe failed with statuscode: 404
Run Code Online (Sandbox Code Playgroud)

如何从部署访问端点?

kubernetes kubernetes-helm

11
推荐指数
1
解决办法
830
查看次数

找不到准备好的舵柄(错误)

我设置了舵柄和舵柄。我有分蘖部署。昨天,我可以正常跑步了。但是今天我收到此错误消息

Error: could not find a ready tiller pod
Run Code Online (Sandbox Code Playgroud)

我该如何解决。我通过命令尝试的一些信息。

它无法获取服务器信息。

$ helm version
Client: &version.Version{SemVer:"v2.14.1", 
GitCommit:"5270352a09c7e8b6e8c9593002a73535276507c0", GitTreeState:"clean"}
Error: could not find a ready tiller pod
Run Code Online (Sandbox Code Playgroud)

我有一个正在运行的分蘖部署 675656bbcf-5q5gp。

$ kubectl get pods -n kube-system
NAME                                   READY   STATUS    RESTARTS   AGE
tiller-deploy-675656bbcf-5q5gp         1/1     Running   0          46h
tunnelfront-557bbd9fb5-b8g7h           1/1     Running   0          47h
Run Code Online (Sandbox Code Playgroud)

检查部署的东西。

$ kubectl get deploy -n kube-system
NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
tiller-deploy          0/1     1            0           46h
tunnelfront            0/1     1            0           47h
Run Code Online (Sandbox Code Playgroud)

描述分蘖部署信息,但尚未准备好。

$ kubectl describe pod tiller-deploy -n kube-system
Name: …
Run Code Online (Sandbox Code Playgroud)

azure kubernetes-helm

11
推荐指数
2
解决办法
1万
查看次数

等待条件时terraform头盔释放超时

我正在使用terraform在azure中预配置一些资源,但似乎无法掌控安装nginx-ingress,因为它等待状态超时

  • helm_release.nginx_ingress:发生1个错误:

  • helm_release.nginx_ingress:rpc错误:代码=未知desc =发布nginx-ingress失败:等待条件超时

面对错误,Terraform不会自动回滚。相反,您的Terraform状态文件已使用成功完成的所有资源进行了部分更新。请解决以上错误,然后再次应用以逐步更改您的基础架构。主文件

data "azurerm_public_ip" "nginx_ingress" {
    name                = "xxxx-public-ip"
    resource_group_name = "xxxx-public-ip"
}

resource "azurerm_resource_group" "xxxx_RG" {
  name     = "${var.name_prefix}"
  location = "${var.location}"
}

resource "azurerm_kubernetes_cluster" "k8s" {
    name                    = "${var.name_prefix}-aks"
    kubernetes_version      = "${var.kubernetes_version}"
    location                = "${azurerm_resource_group.xxxx_RG.location}"
    resource_group_name     = "${azurerm_resource_group.xxxx_RG.name}"
    dns_prefix              = "AKS-${var.dns_prefix}"

    agent_pool_profile {
        name                = "${var.node_pool_name}"
        count               = "${var.node_pool_size}"
        vm_size             = "${var.node_pool_vmsize}"
        os_type             = "${var.node_pool_os}"
        os_disk_size_gb     = 30
    }

    service_principal {
        client_id           = "${var.client_id}"
        client_secret       = "${var.client_secret}"
    }

    tags = {
        environment = "${var.env_tag}"
    } …
Run Code Online (Sandbox Code Playgroud)

terraform kubernetes-helm terraform-provider-azure azure-aks nginx-ingress

11
推荐指数
1
解决办法
1220
查看次数

更新时舵错误:升级失败:补丁列表中的顺序

我有掌舵部署问题。在我向部署添加新的环境变量之后发生了这种情况。

当我执行: helm upgrade [RELEASE] [CHART]

我收到以下错误:

Error: The order in patch list:
[
    map[name:APP_ENV value:prod]
    map[name:MAILER_URL value:...] 
    map[name:APP_VERSION value:v0-0-3] 
    map[name:APP_COMMIT_SHA value:...]
]
 doesn't match $setElementOrder list:
[
    map[name:APP_ENV] 
    map[name:COMPOSER_HOME] 
    map[name:PHP_XDEBUG_ENABLED] 
    map[name:DATABASE_DRIVER] 
    map[name:DATABASE_HOST] 
    map[name:DATABASE_NAME] 
    map[name:DATABASE_USER] 
    map[name:SECRET] 
    map[name:INDEX_HOSTS]
    map[name:MAILER_FROM_ADDRESS] 
    map[name:MAILER_FROM_NAME] 
    map[name:UPLOAD_DIR] 
    map[name:ARCHIVE_DIR] 
    map[name:CATALOG_STORAGE_DIR] 
    map[name:ASSET_STORAGE_DIR] 
    map[name:TMP_STORAGE_DIR] 
    map[name:UPLOAD_TMP_DIR] 
    map[name:APP_VERSION] 
    map[name:APP_COMMIT_SHA] 
    map[name:APP_CRON] 
    map[name:DATABASE_PASSWORD] 
    map[name:MAILER_URL]
    ...
]
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用 flag 执行相同的命令--dry-run,则不会出现任何错误 ( helm upgrade [RELEASE] [CHART] --dry-run)

我不知道这个问题的原因或如何解决它

kubernetes kubernetes-helm helmfile

11
推荐指数
1
解决办法
4036
查看次数

在 Go 模板中使用 include inside range (helm)

我有一个通过range迭代渲染多次的模板,我可以$.Release.Name毫无问题地访问变量外部变量。但是,当我包含模板时,我无法让它工作:

{{ range $key, $val := $.Values.resources }}
      ...
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
{{ end }}
Run Code Online (Sandbox Code Playgroud)

并在secrets.yaml

apiVersion: "v1"
kind: "Secret"
metadata:
  name: {{ $.Release.Name }}-secrets
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error: render error in "botfront-project/templates/deployment.yaml": template: [filename] :19:28: executing [filename] at <include (print $.Template.BasePath "/secrets.yaml") .>: error calling include: template: .../secrets.yaml:4:19: executing ".../secrets.yaml" at <$.Release.Name>: nil pointer evaluating interface {}.Name

Run Code Online (Sandbox Code Playgroud)

如何访问包含模板中的变量?

go-templates kubernetes-helm

11
推荐指数
1
解决办法
3618
查看次数

如何在 Helm Chart 中使用 if 条件

我在values.yaml中有以下值

  pg_hba:
    - hostssl all all 0.0.0.0/0 md5
    - host    all all 0.0.0.0/0 md5
Run Code Online (Sandbox Code Playgroud)

要求是检查该hostssl行是否存在,如果是,则应进入 if 循环并执行某些操作。

我尝试使用{{ if has "hostssl" .Values.pg_hba }} ,但它仅搜索确切的字符串“hostssll”,而不是整行。

请帮助我如何检查 if 条件下的整行。

go-templates kubernetes-helm

11
推荐指数
1
解决办法
5万
查看次数

什么是,什么用例都有点“。” 在掌舵图中?

我目前正在阅读 helm 的文档,点 (.) 至少有 3 种不同的用途,是否有任何具体定义?它与 bash 使用(实际文件夹/文件)有什么共同之处吗?

文档中的一些案例

这会打印之前调用的范围内的访问文件吗?

  {{- $files := .Files }}
  {{- range tuple "config1.toml" "config2.toml" "config3.toml" }}
  {{ . }}: |-
    {{ $files.Get . }}
  {{- end }}
Run Code Online (Sandbox Code Playgroud)

这告诉“mychart.app”使用当前文件夹中的文件(类似 bash 的行为)

{{ include "mychart.app" . | indent 4 }}
Run Code Online (Sandbox Code Playgroud)

而这个,我想它从整个文件夹中获取值???我想这是不正确的,因为它不起作用(当时是另一名员工制作的,我必须修复它)

{{- define "read.select-annot" -}}
{{- range $key, $value := . }}
{{ $key }}: {{ $value }}
{{- end }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

go-templates kubernetes kubernetes-helm

11
推荐指数
1
解决办法
2685
查看次数