我正在修补 OpenFaas 和 K3D,以便为本地开发构建无服务器基础架构。为了有效地工作,我想用 K3D 在本地添加一个 docker 注册表并让 OpenFaas 从那里提取图像,但是我对如何使用主机的 IP 作为注册表源感到困惑。
为了创建集群,我使用了以下命令
k3d cluster create garden --registry-create
k3d kubeconfig merge garden --kubeconfig-switch-context
# Create local-path-provisioner
kustomize build "github.com/rancher/local-path-provisioner/deploy?ref=master" | kubectl apply -f -
# Install OpenFaaS
arkade install openfaas
kubectl rollout status -n openfaas deploy/gateway
## Forward local 8080 port
kubectl port-forward -n openfaas svc/gateway 8080:8080 &
PASSWORD=$(kubectl get secret -n openfaas basic-auth -o jsonpath="{.data.basic-auth-password}" | base64 --decode; echo)
echo -n $PASSWORD | faas-cli login --username admin --password-stdin
kubectl get secret basic-auth -n openfaas -o yaml > basic-auth.yml
vim basic-auth.yml # change namespace to `openfaas-fn`
kubectl apply -f basic-auth.yml
所以构建示例函数工作正常,但显然 OpenFaas/Kubernetes 将无法访问 docker 注册表
version: 1.0
provider:
name: openfaas
gateway: http://127.0.0.1:8080
functions:
main:
lang: node12
handler: ./main
image: 127.0.0.1:5000/main:latest
我想到的唯一解决方案是在 K3d 中配置一个可以解析到主机的 Docker 注册表的 DNS 服务。
有谁知道如何更容易做到这一点?
幸运的是,生产系统不需要这个,因为它们会从外部注册表中提取图像。