套模板网站建设,深圳网站制作建站,公司需要做网站需要什么流程,wordpress如何销售卡密Telego 简介与 OpenWhisk 部署实践
概述
Telego 是一个用于便携式 Kubernetes 部署的工具#xff0c;旨在解决容器镜像拉取中的网络代理问题。本文档描述了如何通过 Telego 将 Apache OpenWhisk#xff08;一个 Serverless 计算平台#xff09;部署到 Kubernetes 集群旨在解决容器镜像拉取中的网络代理问题。本文档描述了如何通过 Telego 将 Apache OpenWhisk一个 Serverless 计算平台部署到 Kubernetes 集群并通过本地镜像仓库规避网络代理限制。以下内容基于提供的配置文件和实践经验详细说明部署流程、环境配置及核心配置文件。 背景与需求
Apache OpenWhisk 是一个开源的 Serverless 计算平台之前通过 apache/openwhisk-deploy-kube 仓库的 Helm 部署方式进行安装。然而在部署过程中经常遇到网络代理问题导致镜像拉取失败。为了解决这一问题研发了 Telego通过将所有所需镜像全量拉取到本地镜像仓库并结合 Telego 的便携部署能力彻底规避网络代理限制。 前提环境配置
在开始部署之前需确保以下环境配置已完成
运维流程
发布到 MainNode完成 MainNode 的安装和更新配置。必要二进制文件准备准备并上传必要的二进制文件。部署镜像仓库配置并部署本地镜像仓库。部署镜像上传服务确保镜像上传服务可用。
Kubernetes 可访问性可选
操作节点已对接目标 Kubernetes 集群或本身位于集群中。配置或获取管理员级别的 kubeconfig 文件。 核心配置文件
以下是 Telego 的核心配置文件及其详细解释用于部署 OpenWhisk
comment: openwhisk serverless 计算平台local_values:ingress_ip: 192.168.31.162openwhisk-override-values:read_from_file: template/override-values.ymloverride-init_db:read_from_file: template/override-init_db.shoverride-runtimes:read_from_file: template/override-runtimes.jsonprepare:- filemap: content: ${openwhisk-override-values}path: teledeploy/override-values.ymlmode: 755- filemap:content: ${override-runtimes}path: openwhisk-deploy-kube/helm/openwhisk/runtimes.jsonmode: 755- filemap:content: ${override-init_db}path: openwhisk-deploy-kube/helm/openwhisk/configMapFiles/initCouchDB/initdb.shmode: 755- git: https://github.com/apache/openwhisk:ef725a653ab112391f79c274d8e3dcfb915d59a3- image: openwhisk/java8action:1.17.0- image: openwhisk/ow-utils:ef725a6- image: zookeeper:3.4- image: wurstmeister/kafka:2.12-2.3.1- image: apache/couchdb:2.3- image: nginx:1.21.1- image: openwhisk/controller:ef725a6- image: openwhisk/scheduler:ef725a6- image: bitnami/etcd:3.4.0- image: openwhisk/invoker:ef725a6- image: openwhisk/apigateway:1.0.0- image: redis:4.0- image: openwhisk/user-events:ef725a6- image: prom/prometheus:v2.14.0- image: grafana/grafana:6.3.0- image: openwhisk/alarmprovider:2.3.0- image: openwhisk/kafkaprovider:2.1.0- image: busybox:latest- image: docker.elastic.co/elasticsearch/elasticsearch:6.7.2helms:openwhisk:helm-dir: openwhisk-deploy-kube/helm/openwhiskoverwrite-config: teledeploy/override-values.ymlnamespace: openwhisk配置项解释
local_values
ingress_ip指定 OpenWhisk 的 Ingress IP 地址例如 192.168.31.162用于外部访问。openwhisk-override-values引用 template/override-values.yml用于覆盖 Helm 的默认值。override-init_db引用 template/override-init_db.sh用于覆盖 CouchDB 初始化脚本。override-runtimes引用 template/override-runtimes.json用于覆盖运行时配置。
prepare
filemap将模板文件映射到指定路径并设置文件权限mode: 755。例如 将 openwhisk-override-values 写入 teledeploy/override-values.yml。将 override-runtimes 写入 openwhisk-deploy-kube/helm/openwhisk/runtimes.json。将 override-init_db 写入 CouchDB 初始化脚本路径。 git指定 OpenWhisk 仓库的特定提交ef725a653ab112391f79c274d8e3dcfb915d59a3Telego 将其下载并准备为压缩包teledeploy/仓库名.tar.gz。image列出所有所需镜像包括 OpenWhisk 组件及其他依赖如 Zookeeper、Kafka 等。Telego 在 prepare 阶段拉取这些镜像支持 arm64 和 amd64 架构并在 upload 阶段上传到本地镜像仓库。
helms
openwhisk helm-dir指定 Helm Chart 目录openwhisk-deploy-kube/helm/openwhisk。overwrite-config指定覆盖值的文件teledeploy/override-values.yml。namespace指定部署的 Kubernetes 命名空间openwhisk。 准备内部镜像
OpenWhisk 部署依赖 Helm Chart。为确保镜像拉取无网络问题需执行以下步骤 定位 Helm 值文件 分析 openwhisk-deploy-kube/helm/openwhisk 中的 values.yaml列出所有使用的镜像及其标签。在 prepare 阶段将这些镜像添加到 image 列表中见上述配置。 镜像拉取与上传 Telego 在 prepare 阶段全量拉取列出的镜像支持 arm64 和 amd64 架构。在 upload 阶段镜像被统一上传到预配置的本地镜像仓库。 Helm 值覆盖配置
为确保容器从本地镜像仓库拉取镜像需通过 Helm 的值覆盖机制调整配置
配置示例
local_values:openwhisk-override-values:read_from_file: template/override-values.ymlprepare:- filemap: content: ${openwhisk-override-values}path: teledeploy/override-values.ymlmode: 755helms:openwhisk:helm-dir: openwhisk-deploy-kube/helm/openwhiskoverwrite-config: teledeploy/override-values.ymlnamespace: openwhisktemplate/override-values.yml 内容 以下是覆盖值的部分内容展示了镜像地址重定向和 Ingress 配置
scheduler:enabled: true
metrics:prometheusEnabled: trueuserMetricsEnabled: true
invoker:containerFactory:impl: kubernetes
whisk:ingress:apiHostName: ${ingress_ip}apiHostProto: httplimits:actionsInvokesPerminute: 100000actionsInvokesConcurrent: 100000utility:imageName: ${IMG_REPO}/teleinfra/ow-utils
zookeeper:imageName: ${IMG_REPO}/teleinfra/zookeeper
kafka:imageName: ${IMG_REPO}/teleinfra/kafka
db:imageName: ${IMG_REPO}/teleinfra/couchdb
nginx:imageName: ${IMG_REPO}/teleinfra/nginx
controller:imageName: ${IMG_REPO}/teleinfra/controller
scheduler:imageName: ${IMG_REPO}/teleinfra/scheduler
etcd:imageName: ${IMG_REPO}/teleinfra/etcdimageTag: 3.4.0
invoker:imageName: ${IMG_REPO}/teleinfra/invoker
apigw:imageName: ${IMG_REPO}/teleinfra/apigateway
redis:imageName: ${IMG_REPO}/teleinfra/redis
user_events:imageName: ${IMG_REPO}/teleinfra/user-events
prometheus:imageName: ${IMG_REPO}/teleinfra/prometheus
grafana:imageName: ${IMG_REPO}/teleinfra/grafana
providers:alarm:imageName: ${IMG_REPO}/teleinfra/alarmproviderkafka:imageName: ${IMG_REPO}/teleinfra/kafkaprovider
busybox:imageName: ${IMG_REPO}/teleinfra/busybox
elasticsearch:image: ${IMG_REPO}/teleinfra/elasticsearch关键点
镜像地址重定向所有镜像名称被覆盖为 ${IMG_REPO}/teleinfra/{镜像名}指向本地镜像仓库。Ingress 配置apiHostName 使用 local_values 中的 ingress_ip 动态替换。性能测试通过设置较高的 actionsInvokesPerminute 和 actionsInvokesConcurrent均为 100000进行压力测试。 平台绑定的特化配置覆盖
在部署过程中发现 openwhisk-deploy-kube/helm/openwhisk/runtimes.json 中也包含镜像地址需进行覆盖
runtimes.json 示例
{java: [{kind: java:8,default: true,image: {prefix: ${IMG_REPO}/teleinfra,name: java8action,tag: 1.17.0}}]
}使用 Telego 的变量替换机制将镜像地址重定向到本地镜像仓库。 平台绑定的特化脚本覆盖
CouchDB 初始化脚本init_db.sh中包含对 GitHub 仓库的访问同样受网络代理限制。Telego 通过共享文件服务器解决此问题
覆盖逻辑 Git 资源准备 在 prepare 阶段指定 OpenWhisk 仓库及其提交 IDprepare:- git: https://github.com/apache/openwhisk:ef725a653ab112391f79c274d8e3dcfb915d59a3Telego 将资源下载并打包为 teledeploy/openwhisk.tar.gz。 脚本覆盖 使用 template/override-init_db.sh 替换默认的 init_db.sh# 原始逻辑注释掉
# git clone https://github.com/apache/openwhisk /openwhisk
# pushd /openwhisk
# git checkout $OW_GIT_TAG_OPENWHISK
# popd# 从 MainNode 下载
curl -O http://${MAIN_NODE_IP}:8003/k8s_openwhisk/openwhisk.tar.gz
tar -xzf openwhisk.tar.gz使用 Telego 的变量替换机制将 MAIN_NODE_IP 动态替换为主节点的 IP 地址。 总结
通过 Telego 的便携部署能力结合本地镜像仓库和 Helm 值覆盖机制成功规避了 OpenWhisk 部署中的网络代理问题。核心步骤包括
配置本地镜像仓库并全量拉取所需镜像。使用 Helm 值覆盖重定向镜像地址。利用 Telego 的变量替换和共享文件服务器处理特化配置和脚本。通过 Telego 的 prepare 和 helms 配置实现自动化部署。
此实践展示了 Telego 在复杂 Kubernetes 部署场景中的灵活性和可靠性适用于需要隔离网络环境的 Serverless 平台部署。 备注本文档基于提供的配置和实践经验整理旨在为类似场景提供参考。如需进一步调整或优化可根据实际环境和需求修改配置文件。