小编Dav*_*aze的帖子

连接 configMap 和 Secret 中的值

我有一个 configMap 文件:

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    owner: testdb
  name: testdb-configmap 
data:
  host: postgres
  port: "5432" 

Run Code Online (Sandbox Code Playgroud)

和一个秘密文件:

aapiVersion: v1
kind: Secret
type: Opaque
metadata:
  labels:
    owner: testdb
  name: testdb-secret
  namespace: test
data:
  user: dGVzdA==
  pwd: dGVzdA==
Run Code Online (Sandbox Code Playgroud)

我想构建一个环境变量,CONNECTION_STRING如下所示:

env:
 - name: CONNECTION_STRING
   value: "Host=<host-from-configmap>;Username=<user-from-secret>;Password=<password-from-secret>;Port=<port-from-configmap>;Pooling=False;"
Run Code Online (Sandbox Code Playgroud)

我想知道这是否可能,如果可以,那么如何?我也考虑过使用.tpl(命名模板),但找不到方法。


笔记

由于我无权访问图像,因此CONNECTION_STRING我必须以这种方式构建它。这些配置映射和秘密文件也将保持这样。


kubernetes kubernetes-helm kubernetes-secrets configmap

3
推荐指数
1
解决办法
2883
查看次数

Helm 模板使用下划线为范围索引添加前缀

我们可以通过这种方式访问​​索引:

{{- range $i, $s := (some list) }}
{{$i}}
{{-end }}

output:
0
1
..etc
Run Code Online (Sandbox Code Playgroud)

但是,当列表是字符串拆分的结果时,索引将以下划线作为前缀

{{- range $i, $s := (split "X" "aaXbbXcc") }}
{{$i}}
{{-end }}

output:
_0
_1
..etc
Run Code Online (Sandbox Code Playgroud)

为什么?

go-templates kubernetes-helm

3
推荐指数
1
解决办法
8164
查看次数

使用 Helm 安装 Horizo​​ntalPodAutoscaler (HPA)

我想使用 Helm v3 (v3.7.2) 来完成所有 k8s 安装、配置和维护。

因此,我设置了 yaml 模板:

  • 部署
  • 配置图
  • 服务
  • 入口

但我在 Helm v3 文档中找不到任何有关设置 HPA ( Horizo​​ntalPodAutoscaler ) 的信息。可以使用从values.yaml 中提取的hpa.yaml 来完成此操作吗?

kubernetes kubernetes-helm

3
推荐指数
1
解决办法
7974
查看次数

使用其他变量连接 Helm 字符串

在 Helm (使用 v3)中,如何使用其他变量在模板内构建变量?假设我有以下内容:

{{- $def := index .Values "default" -}}
apiVersion: v1
data:
  POSTGRES_HOST: {{ $def.POSTGRES_HOST | b64enc | quote }}
  POSTGRES_USER: {{ $def.POSTGRES_USER | b64enc | quote }}
  POSTGRES_PASSWORD: {{ $def.POSTGRES_PASSWORD | b64enc | quote }}
  POSTGRES_DB: {{ $def.POSTGRES_DB | b64enc | quote }}
kind: Secret
metadata:
  name: server
type: Opaque
Run Code Online (Sandbox Code Playgroud)

然后我想做类似以下(伪代码)的事情,使用+字符串连接:

DATABASE_URL: {{ "postgres://" + $def.POSTGRES_USER + ":" + $def.POSTGRES_PASSWORD + "@" + $def.POSTGRES_HOST + "/" + $def.POSTGRES_DB | b64enc | quote …
Run Code Online (Sandbox Code Playgroud)

go-templates kubernetes-helm

3
推荐指数
1
解决办法
7562
查看次数

期望赋值或函数调用,而是在使用 graphcms 时在 reactjs 中看到了一个表达式

第 11 行:期望赋值或函数调用,但看到的是表达式

这是我每次运行时遇到的错误

启动

在我正在编写的 React JS 应用程序中。用于 CMS 的 GraphCMS。一切正常,除了当我尝试映射帖子时,它会出现此错误。

我怀疑这个问题可能与 JSHint 有关,但我不知道如何解决这个问题。

这是我的代码:

import React from  'react';
import { Link } from 'react-router-dom';
import  { graphql} from 'react-apollo';
import gql from 'graphql-tag';

const LandingPage = ({data: {loading, allPosts}}) => {
    if(!loading) {
        return (
            <div className="wrapper">
                {allPosts.map(post => { // <-- line 11
                    <article className="content" key={post.id}>
                        <h2>{post.title}</h2>
                        <p dangerouslySetInnerHTML={{__html: post.description}}>
                            <Link to={`/post/${post.slug}`}>
                                <button className="btn">Read More</button>
                            </Link>
                        </p>
                    </article>
                })}
            </div>
        );
    }
    return <h2>Loading Posts...</h2>
};

const …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

如何在 kubernetes 中的不同端口而不是端口 80 上配置 echo pod

apiVersion: v1
    kind: Pod
    metadata:
       name: echo-pod
       namespace: echo
    spec:
       containers:
       - name: nginx
         image: nginx
         ports:
            -  containerPort: 81
Run Code Online (Sandbox Code Playgroud)

尝试通过运行上面的 yaml 文件来连接端口 81,但它仍在端口 80 上连接。使用 telnet 检查连接

echo -pod的ip是192.168.211.1

能够从 busybox pod(已存在)在端口 80 上连接 echo pod,但不能在端口 81 上连接。您可以观察到以下内容

root@ip-172-31-16-143:~# kubectl exec busybox -- telnet 192.168.211.1 80
Connected to 192.168.211.1

root@ip-172-31-16-143:~# kubectl exec busybox -- telnet 192.168.211.1 81
telnet: can't connect to remote host (192.168.211.1): Connection refused
command terminated with exit code 1
Run Code Online (Sandbox Code Playgroud)

kubernetes

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

使 Kubernetes 中的 pod/作业超时

尝试使用timeoutandbash作为入口点未按预期工作。即使在指定的超时后,Pod 仍会继续运行。目的是有一个bash -c入口点,我可以为其定义超时,之后 pod 会进入“错误”状态。一旦它起作用,这将用于使备份/清理等作业超时,否则这些作业可能会永远卡住。

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: redis-cli
  name: redis-cli
spec:
  containers:
  - name: redis-cli
    image: xxxx/redis-cli:0.0.1
    imagePullPolicy: Always
    env:
      - name: REDIS_SERVICE
        value: redis.svc
      - name: REDIS_PORT
        value: "6666"
    command: ['/usr/bin/timeout', '20', '/bin/bash', '-c' ]
    args:
      - sleep 6000
    resources:
      limits:
        memory: "12Gi"
        cpu: "2000m"
  dnsPolicy: ClusterFirst
  restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)

kubernetes

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

kubectl 推出状态 - 命令何时完成?

目前我正在我的管道中使用它

kubectl apply -f deployment.yaml && kubectl rollout status -f deployment.yaml
Run Code Online (Sandbox Code Playgroud)

在 yaml 中使用这个

      readinessProbe:
        tcpSocket:
          port: 90
        initialDelaySeconds: 120
        periodSeconds: 10
        timeoutSeconds: 10
        failureThreshold: 1
        successThreshold: 1
      livenessProbe:
        tcpSocket:
          port: 90
        initialDelaySeconds: 120
        periodSeconds: 20
        timeoutSeconds: 2
        failureThreshold: 1
        successThreshold: 1
Run Code Online (Sandbox Code Playgroud)

对我来说,kubectl rollout 运行了很长时间,阻塞了部署管道。从文档中

默认情况下,“推出状态”将监视最新推出的状态,直到完成

我的问题:

1/ 哪些操作是有助于部署“直到完成”的部分(资源创建、资源拆卸?...)

2/ readinessProbe 和 livenessProbe 是否会影响部署时间

kubernetes kubectl

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

如何使用 Helm Charts 使用 google cloud build 进行部署

我正处于 Kubernetes 的学习阶段,想要为我的项目设置 CI/Cd 管道。我正在使用谷歌云并准备好以下元素

  1. 3 节点集群部署在google云上
  2. Github 已与 google cloud build 集成以触发构建。
  3. 我用来helm维护我的 K8s 模板。
  4. cloudbuilld.yaml开发用于编译 docker 镜像并将其推送到 google 容器注册表。

我陷入困境 - 一旦我的 cloudbuild.yaml 完成了 docker 镜像的构建并将其推送到注册表,我如何使用 helm 来升级图表?

这是我的样本cloudbuild.yaml

steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ["build", "-t", "gcr.io/kubernetes-amit-test/github.com/0xvoila/apache/phoenix:$SHORT_SHA", "."]

  - name: "gcr.io/cloud-builders/docker"
    args: ["push", "gcr.io/kubernetes-amit-test/github.com/0xvoila/apache/phoenix:$SHORT_SHA"]

  - name: "alpine/helm:latest".   --- It is not working 
    args: ["helm","upgrade","mychart","image", "gcr.io/kubernetes-amit-test/github.com/0xvoila/apache/phoenix:$SHORT_SHA"]

Run Code Online (Sandbox Code Playgroud)

我的问题是

  1. 如何使用 helm 升级最新的图表。
  2. 由于我是 Kubernetes 新手,这甚至是 K8s 部署的最佳实践?人们甚至使用头盔吗?

kubernetes kubernetes-helm

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

Terraform with Helm 中的条件集

我试图找出在特定条件下在 terraform 中设置 helm 值的最佳方法是什么。例如,我希望下面的代码片段仅在特定用例中执行。否则,我希望 Terraform 忽略它。我的用例是,我想让最终用户运行此 Terraform 来选择是否要配置内部 Azure LB 还是常规 LB。如果是常规的——也在代码中创建的公共 IP 将在值中设置。如果是内部 - Azure 将自动生成一个私有 IP 并将其设置为 LB 的“外部 IP”。

  set {
    name  = "controller.service.loadBalancerIP"
    value = mypuclicip
  }
Run Code Online (Sandbox Code Playgroud)

知道我怎样才能实现它吗?

terraform kubernetes-helm

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