外部 DNS 将公开的 TKG 集群负载均衡器服务和输入与 DNS 提供程序同步。可以为外部 DNS 部署 Tanzu 软件包,以便为集群提供动态服务发现。
软件包要求
- 使用默认存储类置备 TKG 2 集群。请参见在主管上置备 TKG 2 集群。
- 连接到 TKG 2 集群。请参见管理 主管 上的 TKG 2 集群的身份和访问权限。
- 安装 Tanzu 软件包必备条件。请参见使用 Kubectl 安装 Tanzu 软件包必备条件
随外部 DNS 软件包提供的示例配置包含带有和不带有 Contour Ingress 控制器的示例。如果要使用 Contour,请先进行安装,然后再安装外部 DNS 软件包。请参见使用 Kubectl 安装用于 Contour Ingress 的 Tanzu 软件包。
外部 DNS 软件包可启用动态服务发现。有关示例用例,请参见外部 DNS。
在 TKG 环境中,外部 DNS 的一个常见用例是与 Harbor 注册表配合使用。Harbor 需要在符合 RFC 2136 的动态 DNS 提供程序(如 AWS Route53、Azure DNS、Google Cloud DNS)或本地 DNS 服务器(如 BIND)上设置 DNS 区域。
安装外部 DNS 软件包
完成以下步骤,安装用于外部 DNS 的 Tanzu 软件包。
- 创建
dns.yaml
规范apiVersion: v1 kind: ServiceAccount metadata: name: dns-sa namespace: tkg-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dns-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: dns-sa namespace: tkg-system --- apiVersion: packaging.carvel.dev/v1alpha1 kind: PackageInstall metadata: name: dns namespace: tkg-system spec: serviceAccountName: dns-sa packageRef: refName: dns.tanzu.vmware.com versionSelection: constraints: 1.20.2+vmware.1-tkg.1-rc.2 values: - secretRef: name: dns-data-values --- apiVersion: v1 kind: Secret metadata: name: dns-data-values namespace: tkg-system stringData: values.yml: | --- dns: pspNames: "vmware-system-restricted"
- 安装外部 DNS 软件包。
kubectl apply -f dns.yaml
配置外部 DNS 软件包
可以使用自定义设置配置外部 DNS 软件包。
配置外部 DNS 提供程序的部署参数。有关其他指导,请参阅 Kubernetes 站点
https://github.com/kubernetes-sigs/external-dns#running-externaldns。
参数 | 描述 | 类型 | 默认 |
---|---|---|---|
externalDns.namespace | 将部署 external-dns 的命名空间 | string | tanzu-system-service-discovery |
externalDns.image.repository | 包含 external-dns 映像的存储库 | string | projects.registry.vmware.com/tkg |
externalDns.image.name | external-dns 的名称 | string | external-dns |
externalDns.image.tag | ExternalDNS 映像标记 | string | v0.7.4_vmware.1 |
externalDns.image.pullPolicy | ExternalDNS 映像提取策略 | string | IfNotPresent |
externalDns.deployment.annotations | external-dns 部署上的注释 | map<string,string> | {} |
externalDns.deployment.args | 通过命令行传递到 external-dns 的参数 | list<string> | [] (必填参数) |
externalDns.deployment.env | 要传递到 external-dns 的环境变量 | list<string> | [] |
externalDns.deployment.securityContext | external-dns 容器的安全上下文 | SecurityContext | {} |
externalDns.deployment.volumeMounts | external-dns 容器的卷挂载 | list<VolumeMount> | [] |
externalDns.deployment.volumes | external-dns pod 的卷 | list<Volume> | [] |