@@ -25,10 +25,75 @@ echo "Applying Flannel"
2525kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.25.1/Documentation/kube-flannel.yml
2626kubectl config set-context --current --namespace=default
2727
28- # on aws ec2 install aws-load-balancer-controller
28+ # on aws ec2 install aws-load-balancer-controller and external-dns
2929if [ $cloud = aws ] && [ $platform != eks ] && [ $platform != ocp4 ]; then
3030 echo "Applying aws-eks-load-balancer-controller"
3131 helm repo add eks https://aws.github.io/eks-charts
3232 helm install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --version 1.14.0 --set clusterName=$name-$cluster --set feature-gates=ServiceTypeLoadBalancerOnly=true --wait
3333 kubectl patch deployment aws-load-balancer-controller -n kube-system --type "json" -p '[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--default-load-balancer-scheme=internet-facing"}]'
34+ kubectl apply -f - <<EOF
35+ apiVersion: v1
36+ kind: ServiceAccount
37+ metadata:
38+ name: external-dns
39+ namespace: kube-system
40+ ---
41+ apiVersion: rbac.authorization.k8s.io/v1
42+ kind: ClusterRole
43+ metadata:
44+ name: external-dns
45+ rules:
46+ - apiGroups: [""]
47+ resources:
48+ - services
49+ - endpoints
50+ - pods
51+ - nodes
52+ verbs: ["get", "watch", "list"]
53+ - apiGroups: ["extensions", "networking.k8s.io"]
54+ resources:
55+ - ingresses
56+ verbs: ["get", "watch", "list"]
57+ ---
58+ apiVersion: rbac.authorization.k8s.io/v1
59+ kind: ClusterRoleBinding
60+ metadata:
61+ name: external-dns
62+ roleRef:
63+ apiGroup: rbac.authorization.k8s.io
64+ kind: ClusterRole
65+ name: external-dns
66+ subjects:
67+ - kind: ServiceAccount
68+ name: external-dns
69+ namespace: kube-system
70+ ---
71+ apiVersion: apps/v1
72+ kind: Deployment
73+ metadata:
74+ name: external-dns
75+ namespace: kube-system
76+ spec:
77+ replicas: 1
78+ selector:
79+ matchLabels:
80+ app: external-dns
81+ template:
82+ metadata:
83+ labels:
84+ app: external-dns
85+ spec:
86+ serviceAccountName: external-dns
87+ containers:
88+ - name: external-dns
89+ image: k8s.gcr.io/external-dns/external-dns:v0.14.2
90+ args:
91+ - --source=service
92+ - --source=ingress
93+ - --provider=aws
94+ - --policy=sync
95+ - --registry=txt
96+ - --txt-owner-id=k8s
97+ - --domain-filter=$ocp4_domain
98+ EOF
3499fi
0 commit comments