我想为在库伯内特斯集群中运行的Apache Flink作业提供来自Hashicorp Vault的机密。这些信用将用于访问检查点和保存点的状态后端。状态后端可能是例如Minio S3存储。在以下设置下,有人能为Flink Application操作员提供一个工作示例吗?
用户名和密码(或访问密钥)的Vault机密:
vault kv put vvp/storage/config username=user password=secret
vault kv put vvp/storage/config access-key=minio secret-key=minio123
Flink应用程序自定义资源的k8s清单:
apiVersion: flink.k8s.io/v1beta1
kind: FlinkApplication
metadata:
name: processor
namespace: default
spec:
image: stream-processor:0.1.0
deleteMode: None
template:
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/role: vvp-flink-job
vault.hashicorp.com/agent-inject-secret-storage-config.txt: vvp/data/storage/config
flinkConfig:
taskmanager.memory.flink.size: 1024mb
taskmanager.heap.size: 200
taskmanager.network.memory.fraction: 0.1
taskmanager.network.memory.min: 10mb
web.upload.dir: /opt/flink
jobManagerConfig:
resources:
requests:
memory: "1280Mi"
cpu: "0.1"
replicas: 1
taskManagerConfig:
taskSlots: 2
resources:
requests:
memory: "1280Mi"
cpu: "0.1"
flinkVersion: "1.14.2"
jarName: "stream-processor-1.0-SNAPSHOT.jar"
parallelism: 3
entryClass: "org.StreamingJob"
programArgs: >
--name value
flink应用程序的Docker文件:
FROM maven:3.8.4-jdk-11 AS build
ARG revision
WORKDIR /
COPY src /src
COPY pom.xml /
RUN mvn -B -Drevision=${revision} package
# runtime
FROM flink:1.14.2-scala_2.12-java11
ENV FLINK_HOME=/opt/flink
ENTRYPOINT ["/docker-entrypoint.sh"]
EXPOSE 6123 8081
CMD ["help"]
flink配置。yaml包含以下示例:
# state.backend: filesystem
# Directory for checkpoints filesystem, when using any of the default bundled
# state backends.
#
# state.checkpoints.dir: hdfs://namenode-host:port/flink-checkpoints
# Default target directory for savepoints, optional.
#
# state.savepoints.dir: hdfs://namenode-host:port/flink-savepoints
最终目标是替换硬编码的机密或从vault中以某种方式设置它们:
state.backend: filesystem
s3.endpoint: http://minio:9000
s3.path.style.access: true
s3.access-key: minio
s3.secret-key: minio123
非常感谢。
设置vault变量后
可以在展开中添加注释,以将vault中的变量导出到展开中
annotations:
vault.hashicorp.com/agent-image: <Agent image>
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-secrets: kv/<Path-of-secret>
vault.hashicorp.com/agent-inject-template-secrets: |2
{{- with secret "kv/<Path-of-secret>" -}}
#!/bin/sh
set -e
{{- range $key, $value := .Data.data }}
export {{ $key }}={{ $value }}
{{- end }}
exec "$@"
{{- end }}
vault.hashicorp.com/auth-path: auth/<K8s cluster for auth>
vault.hashicorp.com/role: app
这将在POD中创建文件。
当应用程序运行时,它应该首先执行此文件,环境变量将被注入POD。
因此,vault annotation将创建一个与您获取的txt文件相同的文件,但我们将按照如下方式执行
{{- range $key, $value := .Data.data }}
export {{ $key }}={{ $value }}
{{- end }}
它将在密钥之前保留并注入导出
将此文件保存在reop中,并将其添加到Docker中/bin/runapp
#!/bin/bash
if [ -f '/vault/secrets/secrets' ]; then
source '/vault/secrets/secrets'
fi
node <path-insnide-docker>/index.js #Sorry dont know scala or Java
package.json
"start": "./bin/runapp",
文档文件
ADD ./bin/runapp ./
EXPOSE 4444
CMD ["npm", "start"]
您的vault注入文件将类似于位于vault/secrets/secrets的内部pod或您配置的路径。
#!/bin/sh
set -e
export development=false
export production=true
exec "$@"
我是Kubernetes的新手,他们的概念我不太清楚:云提供商。 我已经使用RKE(Rancher引擎)安装了我的库伯内特斯集群。 我的集群设置在rancher2的顶部。 我的节点是托管OVH服务器的虚拟机。 我设法让运行中的应用程序具有L7入口和ClusterIP服务,但每次我尝试使用L4负载平衡器时,负载平衡器都处于挂起状态。根据https://github.com/rancher/ranch
我正在尝试在Kubernetes集群(Azure AKS)中部署Flink作业。作业群集在启动后立即中止,但任务管理器运行正常。 docker镜像创建成功,没有任何异常。我可以运行docker镜像,也可以SSHdocker镜像。 我已经按照以下链接中提到的步骤: https://github.com/apache/flink/tree/release-1.9/flink-container/kub
希望你们都好, 我目前正在尝试将awx操作符部署到Kubernetes集群上,但在从集群外部访问该服务时遇到了一些问题。 目前,我已设置了以下服务: 我确实设置了一个名为
我使用Flink搭配K8s。一切正常,但我必须在jobmanager启动时手动提交jar。 我认为我们可以扩展flink的形象,并添加提交作业的后期操作。所以jobmanager将是一对一的flink工作。我想这是https://www.youtube.com/watch?v=w721NI-mtAA公司 在这种情况下,如果JM关闭,K8s将启动新的pod并重新提交作业。 我没说错吧? 有没有人对F
大家下午好,我有一个关于将应用程序本身的监控添加到prometheus的问题。我使用的是spring boot actuator,并相应地查看普罗米修斯的值:https://example.com/actuator/prometheus我通过默认头盔图表()为它添加了默认值,从而提升了普罗米修斯: 普罗米修斯本身可以在http://ex.com/prometheus部署。我的springboot应
我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他