Slide 1

Slide 1 text

DNS proxy on GCP (and GKE) edwardc / GCPUG.tw / PIXNET 2016/11/02 GCPUG.tw Meetup #21

Slide 2

Slide 2 text

有沒有搞錯? DNS Proxy ?

Slide 3

Slide 3 text

事情是這樣的

Slide 4

Slide 4 text

主機一多 開關難免

Slide 5

Slide 5 text

主機的 IP 變動速度 跟不上更新速度

Slide 6

Slide 6 text

GCP IP Policy (IP Reuse)

Slide 7

Slide 7 text

連錯機器 Deploy 錯台

Slide 8

Slide 8 text

Auto Scaling

Slide 9

Slide 9 text

Preemptible Instance

Slide 10

Slide 10 text

老方法 % gcloud compute instances list

Slide 11

Slide 11 text

可是我有N個 project

Slide 12

Slide 12 text

% gcloud set config project project-id

Slide 13

Slide 13 text

DNS proxy

Slide 14

Slide 14 text

把 DNS 的需求 轉由 GCE API

Slide 15

Slide 15 text

instance_name.project.your.domain

Slide 16

Slide 16 text

好處: 1. 不用手動更新 DNS zone file 2. 可以寫在程式內 3. 也可以找 Internal IP

Slide 17

Slide 17 text

https://github.com/edwardchuang/gcp-dns-proxy

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

第一次寫 NodeJS

Slide 20

Slide 20 text

安裝 % npm install

Slide 21

Slide 21 text

執行 % sudo node dns

Slide 22

Slide 22 text

測試 % dig @localhost blahblahblah

Slide 23

Slide 23 text

聽說這裡是 GCP 的場子

Slide 24

Slide 24 text

GKE! (Google Container Engine)

Slide 25

Slide 25 text

編 image % docker build -t asia.gcr.io/blah/gcp-dns-proxy .

Slide 26

Slide 26 text

推上去 % gcloud docker push asia.gcr.io/blah/gcp-dns-proxy

Slide 27

Slide 27 text

開機器 % kubectl create -f gcp-dns-proxy.yaml

Slide 28

Slide 28 text

開 LB % kubectl expose -f gcp-dns-proxy.yaml --type=LoadBalancer

Slide 29

Slide 29 text

拿 IP % kubectl get services

Slide 30

Slide 30 text

以上步驟 github都有

Slide 31

Slide 31 text

Never Live Demo!

Slide 32

Slide 32 text

結語

Slide 33

Slide 33 text

TODO 1. Full Implement with RFC compliant 2. Async handling 3. Support instance-groups 4. Support container (!)

Slide 34

Slide 34 text

謝謝 歡迎 fork / pull request