我是Kops的新手,也是kubernetes的新手。我设法用Kops创建一个集群,并在其上运行部署和服务。一切顺利,为我创建了一个ELB,我可以通过这个ELB端点访问应用程序。
我的问题是:如何将我的子域(例如my-sub.example.com
)映射到生成的ELB端点?我相信这应该以某种方式由kubernetes自动完成,我不应该在我的代码中硬编码ELB端点。我尝试过与annotation -> DomainName
有关的东西,但它不起作用。(参见下面的kubernetes yml文件)
apiVersion: v1
kind: Service
metadata:
name: django-app-service
labels:
role: web
dns: route53
annotations:
domainName: "my.personal-site.de"
spec:
type: LoadBalancer
selector:
app: django-app
ports:
- protocol: TCP
port: 80
targetPort: 8000
----
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: django-app-deployment
spec:
replicas: 2
minReadySeconds: 15
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
template:
metadata:
labels:
app: django-app
spec:
containers:
- image: fettah/djano_kubernetes_medium:latest
name: django-app
imagePullPolicy: Always
ports:
- containerPort: 8000
当你有ELB时,你可以使用external-dns(https://github.com/kubernetes-incubator/external-dns)插件,它可以使用AWS Route53集成将DNS记录附加到那些ELB。您需要为Kubernetes添加适当的权限,以便他可以在Route53中创建DNS记录 - 您需要在kops群集配置的additionalPolicies部分中以kops(根据external-dns插件中的指南)添加其他策略。然后使用注释,如:
external-dns.alpha.kubernetes.io/hostname: myservice.mydomain.com.