- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 kubernetes 部署,具有以下规范,通过 helm 3 安装。
apiVersion: apps/v1
kind: Deployment
metadata:
name: gatekeeper
spec:
replicas: 1
template:
spec:
containers:
- name: gatekeeper
image: my-gatekeeper-image:some-sha
args:
- --listen=0.0.0.0:80
- --client-id=gk-client
- --discovery-url={{ .Values.discoveryUrl }}
我需要将 discoveryUrl
值作为 helm 值传递,这是我通过不同的 helm chart 部署的 nginx-ingress
pod 的公共(public) IP 地址。我安装上面的部署如下:
helm3 install my-nginx-ingress-chart
INGRESS_IP=$(kubectl get svc -lapp=nginx-ingress -o=jsonpath='{.items[].status.loadBalancer.ingress[].ip}')
helm3 install my-gatekeeper-chart --set discovery_url=${INGRESS_IP}
这工作正常,但是,现在我不想安装这两个 helm3
,而是想安装一个 helm3,其中应创建 nginx-ingress 和 gatekeeper 部署。
我知道在 my-gatekeeper-image
的 initContainer
中我们可以获得 nginx-ingress 的 ip 地址,但我无法理解如何设置它作为环境变量或传递给容器规范。
有一些 stackoverflow 问题提到我们可以创建一个持久卷或 secret 来实现这一点,但我不确定,如果我们必须删除它们,那将如何工作。我不想创建任何额外的对象并维护它们的生命周期。
最佳答案
如果不安装持久卷,则无法执行此操作。但是持久卷的创建可以仅由内存中的存储而不是 block 存储设备来支持。这样,我们就不必进行任何额外的生命周期管理。实现的方法是:
apiVersion: v1
kind: ConfigMap
metadata:
name: gatekeeper
data:
gatekeeper.sh: |-
#!/usr/bin/env bash
set -e
INGRESS_IP=$(kubectl get svc -lapp=nginx-ingress -o=jsonpath='{.items[].status.loadBalancer.ingress[].name}')
# Do other validations/cleanup
echo $INGRESS_IP > /opt/gkconf/discovery_url;
exit 0
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gatekeeper
labels:
app: gatekeeper
spec:
replicas: 1
selector:
matchLabels:
app: gatekeeper
template:
metadata:
name: gatekeeper
labels:
app: gatekeeper
spec:
initContainers:
- name: gkinit
command: [ "/opt/gk-init.sh" ]
image: 'bitnami/kubectl:1.12'
volumeMounts:
- mountPath: /opt/gkconf
name: gkconf
- mountPath: /opt/gk-init.sh
name: gatekeeper
subPath: gatekeeper.sh
readOnly: false
containers:
- name: gatekeeper
image: my-gatekeeper-image:some-sha
# ENTRYPOINT of above image should read the
# file /opt/gkconf/discovery_url and then launch
# the actual gatekeeper binary
imagePullPolicy: Always
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- mountPath: /opt/gkconf
name: gkconf
volumes:
- name: gkconf
emptyDir:
medium: Memory
- name: gatekeeper
configMap:
name: gatekeeper
defaultMode: 0555
关于kubernetes - 将值从 initContainers 传递到容器规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61097712/
我有一个 kubernetes 部署,具有以下规范,通过 helm 3 安装。 apiVersion: apps/v1 kind: Deployment metadata: name: gatek
下面是部署yaml,部署后,我可以访问pod 我可以看到mountPath“/ usr / share / nginx / html”,但是找不到 “/ work-dir”应该由initContain
我有一个 init 容器,我在其中存储文件,但在运行时它显示文件不存在。 有什么方法可以在 init 容器中执行并检查文件的存储位置。 最佳答案 使用 kubectl describe 要获取您需要执
我创建了一个自定义的 alpine 图像 (alpine-audit),它在 /tmp/中包含一个 jar 文件em> 目录。我需要的是使用该 alpine-audit 图像作为 initContai
在运行我们的应用程序之前,我需要更新我的数据库架构。为此,基于 this thread 和 this answer 我决定使用 init 容器来完成这项工作。 由于我的 SQL 实例是托管的 Goog
我可以在我的规范中使用 imagePullSecret,以便我的容器部分图像能够连接到私有(private)存储库。如果我也有 initContainer 部分,则它没有使用 imagePullSec
Helm Hooks post-install 和 Kubernetes initcontainers 之间有什么区别?我的理解是,Hooks 用于在 Pod 生命周期的不同阶段定义一些操作,在这种情
人们,我正在尝试使用 initContainers 创建一个简单的文件 /tmp/tarte.test。我有一个限制,使用 alpine 图像作为容器。请让我知道这个简单的 yaml 文件中没有什么。
我有一个特定的场景,我希望部署由水平 pod 自动缩放控制。为了在推送新部署时处理 pod 中的数据库迁移,我遵循了 Andrew Lock 的这篇优秀教程 here . 简而言之,您必须定义一个 i
摘要: 我希望能够在 中获取 config.template 文件初始化容器 来自 容器 . 现有状态: 有模板配置文件,很少更改并包含 占位符 ,存储在 的图像中容器 . 当我们在 kubernet
我想要一个 initContainer 在我的 kubernetes cronjob 运行的容器之前运行。它用于安装 kubectl。有没有办法做到这一点? 我试图将 initContainer 参数
我正在阅读 istio 的文档.它说: istio-init This init container is used to setup the iptables rules so that inbou
目前,要更新 k8s 部署镜像,我们使用 kubectl set image 命令,如下所示: kubectl set image deployment/deployment_name contain
我找到了几个描述如何设置 NGINX 以使用 HTTPS/TLS 的页面。 但是,所有人都建议使用 key 和证书设置一个secret tls。 我们希望能够使用 TLS,但要求 NGINX 通过 i
我对 helm 和 kubernetes 相当陌生,所以我不确定这是一个错误还是我做错了什么。但是在发布之前,我到处寻找答案,但找不到任何可以回答我的问题的内容。 我有一个使用持久卷和初始化容器的部署
注意:解决方案可以使用 netcat 或任何其他内置的 Linux 实用程序 我需要实现一个 initContainer 和 liveness 探测器,以确认我的 redis pod 是否适用于我的依
我是一名优秀的程序员,十分优秀!