使用注册表别名插件

注册表别名插件

一个 minikube 插件,可以帮助使用自定义域名从 minikube 注册表推送和拉取镜像。自定义域名将在集群内部和 minikube 节点上解析。

如何使用?

启动 minikube

minikube start -p demo

此插件依赖于 registry 插件,需要在安装别名插件之前启用它。

启用内部注册表

minikube addons enable registry

验证注册表部署

watch kubectl get pods -n kube-system
NAME                           READY   STATUS    RESTARTS   AGE
coredns-6955765f44-kpbzt       1/1     Running   0          16m
coredns-6955765f44-lzlsv       1/1     Running   0          16m
etcd-demo                      1/1     Running   0          16m
kube-apiserver-demo            1/1     Running   0          16m
kube-controller-manager-demo   1/1     Running   0          16m
kube-proxy-q8rb9               1/1     Running   0          16m
kube-scheduler-demo            1/1     Running   0          16m
*registry-4k8zs*              1/1     Running   0          40s
registry-proxy-vs8jt           1/1     Running   0          40s
storage-provisioner            1/1     Running   0          16m
kubectl get svc -n kube-system
NAME       TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   10.96.0.10     <none>        53/UDP,53/TCP,9153/TCP   17m
registry   ClusterIP   10.97.247.75   <none>        80/TCP                   94s

注意:请记下 registry 服务的 CLUSTER-IP。

启用注册表别名插件

minikube addons enable registry-aliases
🌟  The 'registry-aliases' addon is enabled

您可以查看 mikikube 虚拟机的 /etc/hosts 文件以获取注册表别名条目。

watch minikube ssh -- cat /etc/hosts
127.0.0.1       localhost
127.0.1.1 demo
10.97.247.75    example.org
10.97.247.75    example.com
10.97.247.75    test.com
10.97.247.75    test.org

上面的输出显示 Daemonset 已从指向内部注册表的 **CLUSTER-IP** 的 ConfigMap 添加了 registryAliases

更新 CoreDNS

coreDNS 将通过 patch-coredns 自动更新。一个成功的作业运行将更新 coredns ConfigMap,如下所示

apiVersion: v1
data:
  Corefile: |-
    .:53 {
        errors
        health
        rewrite name example.com registry.kube-system.svc.cluster.local
        rewrite name example.org registry.kube-system.svc.cluster.local
        rewrite name test.com registry.kube-system.svc.cluster.local
        rewrite name test.org registry.kube-system.svc.cluster.local
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           upstream
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }    
kind: ConfigMap
metadata:
  name: coredns

要验证它,请运行以下命令

kubectl get cm -n kube-system coredns -o yaml

成功修补后,您现在可以使用后缀 example.comexample.orgtest.comtest.org 从注册表推送和拉取镜像。

成功运行将在 kube-system 命名空间中显示以下额外的 Pod(Daemonset,Job)

NAME                                    READY   STATUS      RESTARTS   AGE
registry-aliases-hosts-update-995vx     1/1     Running     0          47s
registry-aliases-patch-core-dns-zsxfc   0/1     Completed   0          47s

使用示例应用程序验证

您可以使用示例 应用程序验证端到端部署。

git clone https://github.com/kameshsampath/minikube-registry-aliases-demo
cd minikube-registry-aliases-demo

请确保使用 eval $(minikube -p demo docker-env) 设置 docker 上下文。

使用 Skaffold 部署应用程序。

skaffold dev --port-forward

应用程序运行后,尝试执行 curl localhost:8080 以查看 Hello World 响应。

您还可以更新 skaffold.yamlapp.yaml,以使用 test.orgtest.comexample.org 作为容器注册表 URL,并查看所有容器镜像名称解析为内部注册表,从而成功构建和部署。

注意:

您还可以更新 skaffold.yamlapp.yaml,以使用 test.orgtest.com 或 > example.org 作为容器注册表 URL,并查看所有 > 容器镜像名称解析为内部注册表,从而成功构建和部署。


上次修改时间:2023 年 7 月 7 日: 将插件自述文件添加到网站 (cf976f6dd)