Jos*_*sch 7 digital-ocean kubernetes
我想在不使用Digital Ocean的负载均衡器的情况下在端口80上公开Kubernetes托管的Digital Ocean(单节点)集群的服务。这可能吗?我该怎么做?
从本质上来说,这是一个业余项目(我从Kubernetes开始),只是想保持较低的成本。
rco*_*oup 10
您可以部署配置为使用主机网络和端口80/443的Ingress。
集群的DO防火墙默认情况下没有打开80/443入站。
如果您编辑自动创建的防火墙,规则最终将自行重置。解决方案是创建一个单独的防火墙,该防火墙也指向相同的Kubernetes工作节点:
$ doctl compute firewall create \
--inbound-rules="protocol:tcp,ports:80,address:0.0.0.0/0,address:::/0 protocol:tcp,ports:443,address:0.0.0.0/0,address:::/0" \
--tag-names=k8s:CLUSTER_UUID \
--name=k8s-extra-mycluster
Run Code Online (Sandbox Code Playgroud)
(CLUSTER_UUID从仪表板或从中获取ID列的值doctl kubernetes cluster list)
$ helm install stable/nginx-ingress --name=myingress -f myingress.values.yml
Run Code Online (Sandbox Code Playgroud)
myingress.values.yml 对于图表:
---
controller:
kind: DaemonSet
hostNetwork: true
dnsPolicy: ClusterFirstWithHostNet
daemonset:
useHostPort: true
service:
type: ClusterIP
rbac:
create: true
Run Code Online (Sandbox Code Playgroud)
您应该能够通过任何辅助节点IP分别在:80和:443上访问群集,它将流量路由到您的入口。
由于节点IP可以并且确实会发生变化,因此请考虑部署外部DNS以管理指向您的工作节点的DNS条目。再次使用舵图并假设您的DNS域由DigitalOcean托管(尽管任何受支持的DNS提供商都可以使用):
$ helm install --name=mydns -f mydns.values.yml stable/external-dns
Run Code Online (Sandbox Code Playgroud)
mydns.values.yml 对于图表:
---
provider: digitalocean
digitalocean:
# create the API token at https://cloud.digitalocean.com/account/api/tokens
# needs read + write
apiToken: "DIGITALOCEAN_API_TOKEN"
domainFilters:
# domains you want external-dns to be able to edit
- example.com
rbac:
create: true
Run Code Online (Sandbox Code Playgroud)
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: testing123-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: testing123.example.com # the domain you want associated
http:
paths:
- path: /
backend:
serviceName: testing123-service # existing service
servicePort: 8000 # existing service port
Run Code Online (Sandbox Code Playgroud)
$ dig testing123.example.com # should return worker IP address
$ curl -v http://testing123.example.com # should send the request through the Ingress to your backend service
Run Code Online (Sandbox Code Playgroud)
(编辑:编辑自动创建的防火墙规则最终会失败,请添加单独的防火墙)。
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |