Skip to content

Commit

Permalink
Agregando traefik
Browse files Browse the repository at this point in the history
  • Loading branch information
pablokbs committed Mar 1, 2019
1 parent 614b243 commit c505532
Show file tree
Hide file tree
Showing 12 changed files with 296 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ Si el nombre del capítulo no tiene link, es porque no necesité postear ningún

4. Varios
1. [Creá tu sitio con SSL gratis con Docker y Let's encrypt](./varios/1) / [video](https://youtu.be/S2YFqf4L7l8)
2. [Traefik](./varios/2) / [video](https://youtu.be/6qkhvhv0_IU)

5. Viernes 2 Minutos
1. [Docker-compose override](./v2m/1) / [video](https://youtu.be/TPmbwAgN4ZA)
30 changes: 30 additions & 0 deletions varios/2/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
version: '3'

services:
reverse-proxy:
image: traefik # The official Traefik docker image
command: --docker --logLevel=info \
--acme \
--acme.acmelogging \
--acme.dnschallenge=false \
--acme.entrypoint="https" \
--acme.httpchallenge \
--acme.httpChallenge.entryPoint="http" \
--acme.onhostrule=true \
--acme.storage="/etc/traefik/acme.json" \
--acme.email="[email protected]" \
--entrypoints="Name:http Address::80 Redirect.EntryPoint:https" \
--entrypoints="Name:https Address::443 TLS" \
--defaultentrypoints="http,https"
ports:
- "80:80" # The HTTP port
- "443:443" # The HTTPS port
- "8080:8080" # The Web UI (enabled by --api)
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik:/etc/traefik/

whoami:
image: containous/whoami
labels:
- "traefik.frontend.rule=Host:whoami.fredrikson.com.ar"
43 changes: 43 additions & 0 deletions varios/2/kubernetes/01-traefik-rbac.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: traefik-ingress-controller
rules:
- apiGroups:
- ""
resources:
- services
- endpoints
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- ingresses
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- ingresses/status
verbs:
- update
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: traefik-ingress-controller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: traefik-ingress-controller
subjects:
- kind: ServiceAccount
name: traefik-ingress-controller
namespace: kube-system
60 changes: 60 additions & 0 deletions varios/2/kubernetes/02-traefix-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: traefik-ingress-controller
namespace: kube-system
---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: traefik-ingress-controller
namespace: kube-system
labels:
k8s-app: traefik-ingress-lb
spec:
replicas: 1
selector:
matchLabels:
k8s-app: traefik-ingress-lb
template:
metadata:
labels:
k8s-app: traefik-ingress-lb
name: traefik-ingress-lb
spec:
serviceAccountName: traefik-ingress-controller
terminationGracePeriodSeconds: 60
containers:
# usando esta version porque parece que hay un bug con los pesos a partir de 1.7.0:
# https://github.com/containous/traefik/issues/4494
- image: traefik:1.6.6
name: traefik-ingress-lb
ports:
- name: http
containerPort: 80
- name: admin
containerPort: 8080
args:
- --api
- --kubernetes
- --logLevel=INFO
---
kind: Service
apiVersion: v1
metadata:
name: traefik-ingress-service
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- protocol: TCP
port: 80
name: web
nodePort: 30000
- protocol: TCP
port: 8080
nodePort: 30001
name: admin
type: NodePort
28 changes: 28 additions & 0 deletions varios/2/kubernetes/03-ui.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
apiVersion: v1
kind: Service
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
selector:
k8s-app: traefik-ingress-lb
ports:
- name: web
port: 80
targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: kube-system
spec:
rules:
- host: traefik-ui.minikube
http:
paths:
- path: /
backend:
serviceName: traefik-web-ui
servicePort: web
24 changes: 24 additions & 0 deletions varios/2/kubernetes/04-hello-app-deployment-v1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-v1
spec:
replicas: 3
template:
metadata:
labels:
app: hello-v1
spec:
containers:
- name: hello
image: gcr.io/google-samples/hello-app:1.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
resources:
requests:
memory: "64Mi"
cpu: "200m"
limits:
memory: "128Mi"
cpu: "500m"
24 changes: 24 additions & 0 deletions varios/2/kubernetes/04-hello-app-deployment-v2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello-v2
spec:
replicas: 3
template:
metadata:
labels:
app: hello-v2
spec:
containers:
- name: hello
image: gcr.io/google-samples/hello-app:2.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
resources:
requests:
memory: "64Mi"
cpu: "200m"
limits:
memory: "128Mi"
cpu: "500m"
11 changes: 11 additions & 0 deletions varios/2/kubernetes/05-hello-svc-v1.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
kind: Service
apiVersion: v1
metadata:
name: hello-v1-svc
spec:
selector:
app: hello-v1
ports:
- protocol: TCP
port: 80
targetPort: 8080
11 changes: 11 additions & 0 deletions varios/2/kubernetes/05-hello-svc-v2.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
kind: Service
apiVersion: v1
metadata:
name: hello-v2-svc
spec:
selector:
app: hello-v2
ports:
- protocol: TCP
port: 80
targetPort: 8080
18 changes: 18 additions & 0 deletions varios/2/kubernetes/06-ingress-rules.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
spec:
rules:
- host: v1.peladonerd.local
http:
paths:
- backend:
serviceName: hello-v1-svc
servicePort: 80
- host: v2.peladonerd.local
http:
paths:
- backend:
serviceName: hello-v2-svc
servicePort: 80
18 changes: 18 additions & 0 deletions varios/2/kubernetes/07-ingress-rules.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
traefik.ingress.kubernetes.io/service-weights: |
hello-v2-svc: 10%
spec:
rules:
- host: v1.peladonerd.local
http:
paths:
- backend:
serviceName: hello-v1-svc
servicePort: 80
- backend:
serviceName: hello-v2-svc
servicePort: 80
28 changes: 28 additions & 0 deletions varios/2/traefik/acme.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"Account": {
"Email": "[email protected]",
"Registration": {
"body": {
"status": "valid",
"contact": [
"mailto:[email protected]"
]
},
"uri": "https://acme-v02.api.letsencrypt.org/acme/acct/51806479"
},
"PrivateKey": "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",
"KeyType": "4096"
},
"Certificates": [
{
"Domain": {
"Main": "whoami.fredrikson.com.ar",
"SANs": null
},
"Certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUdaekNDQlUrZ0F3SUJBZ0lTQTdBLzhNeEJGaGhqMU5WaVY4dC9nQ1A2TUEwR0NTcUdTSWIzRFFFQkN3VUEKTUVveEN6QUpCZ05WQkFZVEFsVlRNUll3RkFZRFZRUUtFdzFNWlhRbmN5QkZibU55ZVhCME1TTXdJUVlEVlFRRApFeHBNWlhRbmN5QkZibU55ZVhCMElFRjFkR2h2Y21sMGVTQllNekFlRncweE9UQXlNVGt4TXpFNU1EQmFGdzB4Ck9UQTFNakF4TXpFNU1EQmFNQ014SVRBZkJnTlZCQU1UR0hkb2IyRnRhUzVtY21Wa2NtbHJjMjl1TG1OdmJTNWgKY2pDQ0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUJBTDRBWTlBdkhPYWZQaUdZc1YxYgovL1h4M1JGeVhwUDVCVHFtRGxJVEJxVDNxZEJyMTBOL1hLKzlNbVZyd0FvRzY3QlFYSXlvbTlWZC9McGJDWk1lCjdoLzVGekZySlZvUkU4Nk5NVFdKK2dwNE5Zb1dFUld5cld2TFdZeXFyam10ZEh6SW5BTzEzSmxDSkJuZ0sySHIKY2tVTlFXVXpra3NvS0QzNU5zVEFTb1htTjM1Y1JRbmFwL1BBMkJUem1NTkp5Zm1kM3FIRjJndUhlUjdrWWFWRAp3ZWJNU1U3NUI4bEkrcHQvc0JGUXIrYW1vK0tWTFRpaW1EbU44ak1scU12bk1rOEtaSGZwdjUrcDZrNUJuVTBNCmpraWQwa3V2dTE0dkl6d1BpODFDOCtkRVlaakdJY0JwbnRlUnJ6NlQ2dTdTaGRvejJxdjFUVXIrRUJTNkpJQUIKRlNMcSthL1NiNVBtYzlRK1dKdCtPd3o4b20wME9pR3AxTzlZN3BMRmtPbjVxTlg1Q296THdOU2duZVpPQVpUagpzblhDQkxPRGdwOWh0T1dDVjdrd2doRS84Z0FWR3ZwSGVCcTlQVlE0UFM1dG5LalZvV3Nac2ZhTWZSQWREMVpKCmU5U1JYMzRwNSsxajA5c2xsSUc4Z0lHeFAxdkpRNVc2eG5jYmttOE9XODJLL2RjUit4cmxnTzViU3VqR1pCWFYKeDVnMWoyV1dYL3BiN2kwTXV1VTc3eFRRTklUeWNwUmxrZlRJVHJETVU2Zis0aDJPNUJPcVo0NFdGa25Dbmg3cAozRk43ZVNZZEtmT1NTNjRRODZIdHdHUXlrajc3VGNFYkdqbGZhNWl0bFljcUxVb2RZeWRhcEM1WTAzWHJLbm9SCnMrc2VwbGVzMldXOTcraDd6WWovS1NvWEFnTUJBQUdqZ2dKc01JSUNhREFPQmdOVkhROEJBZjhFQkFNQ0JhQXcKSFFZRFZSMGxCQll3RkFZSUt3WUJCUVVIQXdFR0NDc0dBUVVGQndNQ01Bd0dBMVVkRXdFQi93UUNNQUF3SFFZRApWUjBPQkJZRUZNbGdZUWpFRDB6ZXR3OEpOK0hYMGFveXU3M0ZNQjhHQTFVZEl3UVlNQmFBRktoS2FtTUVmZDI2CjV0RTV0NlpGWmUvenFPeWhNRzhHQ0NzR0FRVUZCd0VCQkdNd1lUQXVCZ2dyQmdFRkJRY3dBWVlpYUhSMGNEb3YKTDI5amMzQXVhVzUwTFhnekxteGxkSE5sYm1OeWVYQjBMbTl5WnpBdkJnZ3JCZ0VGQlFjd0FvWWphSFIwY0RvdgpMMk5sY25RdWFXNTBMWGd6TG14bGRITmxibU55ZVhCMExtOXlaeTh3SXdZRFZSMFJCQnd3R29JWWQyaHZZVzFwCkxtWnlaV1J5YVd0emIyNHVZMjl0TG1GeU1Fd0dBMVVkSUFSRk1FTXdDQVlHWjRFTUFRSUJNRGNHQ3lzR0FRUUIKZ3Q4VEFRRUJNQ2d3SmdZSUt3WUJCUVVIQWdFV0dtaDBkSEE2THk5amNITXViR1YwYzJWdVkzSjVjSFF1YjNKbgpNSUlCQXdZS0t3WUJCQUhXZVFJRUFnU0I5QVNCOFFEdkFIVUE0bWxMcmlibzZVQUo2SVlidGp1RDFEN24vblNJCis2U1BLSk1CbmQzeDIvNEFBQUZwQmgvS2ZRQUFCQU1BUmpCRUFpQVRKREY3UmJvMCswQkhxb0s1MmJEOXN2SloKRkFNdCtyK2tRbmZPWGFmN0NRSWdUUlJ4TDRxSWtadU1Cck0wRFFPaEpqaVpTd0t1QWRqay9XeEpBQnBjR0NZQQpkZ0FwUEZHV1ZNZzVaYnFxVVB4WUI5UzNiNzlZZWlseTNLVEREUFRsUlVmMGVBQUFBV2tHSDh4dUFBQUVBd0JICk1FVUNJUURraEk1TUhodlprQnN2aWtrMmdYMUtEaERZK2xpUHUzUlBOUEQvUUp4MGJRSWdaV0k5bURxaVB2N0gKdFpic1QwWkZYZkpUTkJqTnZkeFgwcjVNYURTQUl6TXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBSVNJdzRKNgo0VkVnbm5pQmdYMmhvenVrdzZyMThLczBpR1k2RnQwUnMrcFBnWDh1eWN4bUVDQnpyNUVqM2lOVE45NWs4eVJWCjRDR1l6VTVpcnBvejNaSUE0VzJnM3E0Y08zTGpRRVlUbk4zUWFEdUhxMHdIZVl6dVhwMi96WjdlU3J0amczVUsKZGdtWVZ6ZFQvUzlpbUVUZW1Fdnh4YzVQejNVU1VpY09yamkrTnM3akprenEvL1VYYzJ2bkEzdklBVGdzSGlNdQpIOVVId0hTZlFCS1hjVlRxVTJybVFKQWFkSmlic0FPMEhheS9PSkFjMXFEMFhpVkd6M2R2a29ZY0NaNGxEZ01oCmFoQ1RVRC9tTHhwcHMrR0hlSTNjbmtMRi81MXFhRVQySW5odXpVN3A4OGh3b1hrbUtRaUpidzk1RWJlb3l3KzcKN2FaR3pjTThRTzlQd2lvPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRWtqQ0NBM3FnQXdJQkFnSVFDZ0ZCUWdBQUFWT0ZjMm9MaGV5bkNEQU5CZ2txaGtpRzl3MEJBUXNGQURBLwpNU1F3SWdZRFZRUUtFeHRFYVdkcGRHRnNJRk5wWjI1aGRIVnlaU0JVY25WemRDQkRieTR4RnpBVkJnTlZCQU1UCkRrUlRWQ0JTYjI5MElFTkJJRmd6TUI0WERURTJNRE14TnpFMk5EQTBObG9YRFRJeE1ETXhOekUyTkRBME5sb3cKU2pFTE1Ba0dBMVVFQmhNQ1ZWTXhGakFVQmdOVkJBb1REVXhsZENkeklFVnVZM0o1Y0hReEl6QWhCZ05WQkFNVApHa3hsZENkeklFVnVZM0o1Y0hRZ1FYVjBhRzl5YVhSNUlGZ3pNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DCkFROEFNSUlCQ2dLQ0FRRUFuTk1NOEZybExrZTNjbDAzZzdOb1l6RHExelVtR1NYaHZiNDE4WENTTDdlNFMwRUYKcTZtZU5RaFk3TEVxeEdpSEM2UGpkZVRtODZkaWNicDVnV0FmMTVHYW4vUFFlR2R4eUdrT2xaSFAvdWFaNldBOApTTXgreWsxM0VpU2RSeHRhNjduc0hqY0FISnlzZTZjRjZzNUs2NzFCNVRhWXVjdjliVHlXYU44aktrS1FESVowClo4aC9wWnE0VW1FVUV6OWw2WUtIeTl2NkRsYjJob256aFQrWGhxK3czQnJ2YXcyVkZuM0VLNkJsc3BrRU5uV0EKYTZ4Szh4dVFTWGd2b3BaUEtpQWxLUVRHZE1EUU1jMlBNVGlWRnJxb003aEQ4YkVmd3pCL29ua3hFejB0TnZqagovUEl6YXJrNU1jV3Z4STBOSFdRV002cjZoQ20yMUF2QTJIM0Rrd0lEQVFBQm80SUJmVENDQVhrd0VnWURWUjBUCkFRSC9CQWd3QmdFQi93SUJBREFPQmdOVkhROEJBZjhFQkFNQ0FZWXdmd1lJS3dZQkJRVUhBUUVFY3pCeE1ESUcKQ0NzR0FRVUZCekFCaGlab2RIUndPaTh2YVhOeVp5NTBjblZ6ZEdsa0xtOWpjM0F1YVdSbGJuUnlkWE4wTG1OdgpiVEE3QmdnckJnRUZCUWN3QW9ZdmFIUjBjRG92TDJGd2NITXVhV1JsYm5SeWRYTjBMbU52YlM5eWIyOTBjeTlrCmMzUnliMjkwWTJGNE15NXdOMk13SHdZRFZSMGpCQmd3Rm9BVXhLZXhwSHNzY2ZyYjRVdVFkZi9FRldDRmlSQXcKVkFZRFZSMGdCRTB3U3pBSUJnWm5nUXdCQWdFd1B3WUxLd1lCQkFHQzN4TUJBUUV3TURBdUJnZ3JCZ0VGQlFjQwpBUllpYUhSMGNEb3ZMMk53Y3k1eWIyOTBMWGd4TG14bGRITmxibU55ZVhCMExtOXlaekE4QmdOVkhSOEVOVEF6Ck1ER2dMNkF0aGl0b2RIUndPaTh2WTNKc0xtbGtaVzUwY25WemRDNWpiMjB2UkZOVVVrOVBWRU5CV0RORFVrd3UKWTNKc01CMEdBMVVkRGdRV0JCU29TbXBqQkgzZHV1YlJPYmVtUldYdjg2anNvVEFOQmdrcWhraUc5dzBCQVFzRgpBQU9DQVFFQTNUUFhFZk5qV0RqZEdCWDdDVlcrZGxhNWNFaWxhVWNuZThJa0NKTHhXaDlLRWlrM0pIUlJIR0pvCnVNMlZjR2ZsOTZTOFRpaFJ6WnZvcm9lZDZ0aTZXcUVCbXR6dzNXb2RhdGcrVnlPZXBoNEVZcHIvMXdYS3R4OC8Kd0FwSXZKU3d0bVZpNE1GVTVhTXFyU0RFNmVhNzNNajJ0Y015bzVqTWQ2am1lV1VISzhzby9qb1dVb0hPVWd3dQpYNFBvMVFZeiszZHN6a0RxTXA0ZmtseEJ3WFJzVzEwS1h6UE1UWitzT1BBdmV5eGluZG1qa1c4bEd5K1FzUmxHClBmWitHNlo2aDdtamVtMFkraVdsa1ljVjRQSVdMMWl3Qmk4c2FDYkdTNWpOMnA4TStYK1E3VU5LRWtST2IzTjYKS09xa3FtNTdUSDJIM2VESkFrU25oNi9ETkZ1MFFnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
"Key": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS1FJQkFBS0NBZ0VBdmdCajBDOGM1cDgrSVppeFhWdi85ZkhkRVhKZWsva0ZPcVlPVWhNR3BQZXAwR3ZYClEzOWNyNzB5Wld2QUNnYnJzRkJjaktpYjFWMzh1bHNKa3g3dUgva1hNV3NsV2hFVHpvMHhOWW42Q25nMWloWVIKRmJLdGE4dFpqS3F1T2ExMGZNaWNBN1hjbVVJa0dlQXJZZXR5UlExQlpUT1NTeWdvUGZrMnhNQktoZVkzZmx4RgpDZHFuODhEWUZQT1l3MG5KK1ozZW9jWGFDNGQ1SHVSaHBVUEI1c3hKVHZrSHlVajZtMyt3RVZDdjVxYWo0cFV0Ck9LS1lPWTN5TXlXb3krY3lUd3BrZCttL242bnFUa0dkVFF5T1NKM1NTNis3WGk4alBBK0x6VUx6NTBSaG1NWWgKd0dtZTE1R3ZQcFBxN3RLRjJqUGFxL1ZOU3Y0UUZMb2tnQUVWSXVyNXI5SnZrK1p6MUQ1WW0zNDdEUHlpYlRRNgpJYW5VNzFqdWtzV1E2Zm1vMWZrS2pNdkExS0NkNWs0QmxPT3lkY0lFczRPQ24yRzA1WUpYdVRDQ0VUL3lBQlVhCitrZDRHcjA5VkRnOUxtMmNxTldoYXhteDlveDlFQjBQVmtsNzFKRmZmaW5uN1dQVDJ5V1VnYnlBZ2JFL1c4bEQKbGJyR2R4dVNidzViellyOTF4SDdHdVdBN2x0SzZNWmtGZFhIbURXUFpaWmYrbHZ1TFF5NjVUdnZGTkEwaFBKeQpsR1dSOU1oT3NNeFRwLzdpSFk3a0U2cG5qaFlXU2NLZUh1bmNVM3Q1SmgwcDg1SkxyaER6b2UzQVpES1NQdnROCndSc2FPVjlybUsyVmh5b3RTaDFqSjFxa0xsalRkZXNxZWhHejZ4Nm1WNnpaWmIzdjZIdk5pUDhwS2hjQ0F3RUEKQVFLQ0FnQWVsVWQ3dWltbndaZ3BwajllYkxHZHNBbktoaU5OSkRkQVFueHBuNkJoSzNCTkdSNjBRYXIwcXJxUwo4cTRkcnhGKzl1Qit6NkVOeml3Zy93aGlnd2NIWkh2a08zL3VxSE1NdTFOaGI4MHNwRDdSOUUxWnRjSU9hTlFJClBXei80Yml2WVVjam5jRmRkZlVEcVQ2eWEwaWdic3JJOUcwbTVkYmNhdUh5OTVUSFN0QkI2YTQvTU0vNS8xK0kKdDlFdUZoR0p1V3lkazVCT2JNY0ZQdk9zdTJSWnR5WlJyT29nN3p0UGpsVVQ1RzM3N1hUUnd2dGRjMmFYVlE3WQpSc2FOMDdBWVl1N2JFbWdDMWtIZHlOZitEL2hUSGZ3OHJKTzNURlVhbE5JRy96RHRWK2R4eE9xbjR4aHJVSXJwCndydDlKNnZkL0p6Rk14MzI1VUJIWmRMOE83QmdBRnJCMlVDMXdTSWtMazRiQlplY2hnK0g3UWxlNEpjdUlhQy8KcHZkaHpNZ1ZXSnJXR3JyRVF5aG5vN0dMSU9JeVJRaVgzY1l0aUd5bkhrNXFuWG5NclVuM1RtN080N2c2Y3lXawpmeHF0U3NDRG1HRWx5K21YNTVxbUhkaGZodHF1UG9VYzRRdVgrdDAwMEg5aFBMU0d4L3N1WDhQeHhyZGhpYlJxCk5nRW5icGtMZE9SSm1sZDB6U0FSVFFUVS9kMDg3QTZQZFVtWnRRakx0QVFnYTQ1bGN0TEU3WVc2bnVMVGVqcmIKb2p4VHFzSFF0UHgzUlZHZVNQTUR0TmljRndFV2l1dERpNnhQRlZNeG9lZXNBZXZFWkYzRitkVHBlbndPcS92ZAptWlk3bFJ1c3lNN1JPYm4zVEJHa2ZFdURFbGluKzlMa2xWRUZRejNnUHFhdGpFN1lnUUtDQVFFQTZtbzBXZnhGCnRjQVBOOWN5K1NHTVNJUGpxMTVqSWFVV0tCRUU5WGViRWJZdTZPUmhrVHZQYmJCYXF6TGU3S3BQWEpQTmhHdUoKRHZZTmUreVRXNGxwVC80SytJZFJvMDU3cDE2dWxkUWY4S1l4S0R2NC93UUQ3ZFMzTXhtOWR1aWpMSHIzRzdiSgo0d0dZWGxpVmlmZWVkMVJjRTVVVUIwbkd3dHMvcmtEZHdmM2t1VEFtTU1UcDJCWkVZdTZ6MmE2amhndHJuZkw4ClYwNlp0MklpalMxS2Y4bzVpNU42eEIyQ1prMmMzUlVVU0xHL0x2ZW9nL1J2djhRMDV6UTluQ1ZtbzRFci9qd2gKalVKY1N6TlVqMnJ1NUtuMWRERmFuazlFdzBwTTFrTmZadTZjb0JZOEkwOVI4R25ZRGZ1MG5rTGl5OFU3QndMZgpDNUtnK1Z1ZVhHNDV3UUtDQVFFQXozOCtCa0hmTjhSRG1FeUZZYTE4QU96Y2tKM3BpUWp1QkdqdzJ6WnZaWU1FCm4yV2NsL1FSeTdPQWhOdFBZQUdMb3JJdVZGMm1kWEdjWUVUVXUxdmIwY3YvbGVtYmJVUWtWSTBMR3BSd0NLMDQKR1RsU29LYnFId3RxTkd6UXJtazdVSkpybEoraEFURmw1cHVGQWxJT0dFN2dTTWpsa2lubjBnZnMvam1IRTNjKwowT0FuWXM0a1l0d20yWDVRSVkrdHVEMTlrKzZJakFaaFA5bURxc2dUVkk5STJMNXVySThDMk52NTBmcUNLZ0hKCnBJeGlrSXovVzVxTm5kYTQ2RDg1UFBtOHY5UFBzdWhqb1krR3VST0Q2UVhEb05BcS8ybXZ6MWljeVlSRGx1YkkKWGNsUWNxTVpkdTBWNnZlQlBPVHppZmhUZ3hKdDF4b3hESlFoRVlicDF3S0NBUUVBd1dZNkp2dkJyNy96VGtqWQpIejhVZEVlTU1MakE1T05GTW0xSVFCVWI5VEx2NU9sM3JkRkF3K2k2QllFRTl4RlVSTGNVMm1tMlBJZTRmRU9sCkYrSjQ1cXhiOU13QUNOSVpwdTZ3NzZDQmNaUkwvanZzcE1sMVRHVXhlSkdHQlhMT0hVYWVWVmtybTRTWFowK0MKb0wrUkdEYWJlUFNILzdOWXJ5OGdqTzJyaC8rbkV6cXNaNVF1c2o4ODBMckwyNDhBRHZtaElrRjArN3MzaTFzRgowcUJKVk1GTlZPQ3FhdDlGMUkyNEc1Ym1rMHRDeHNkQld3enluYTZOVHl1RW9TMGlUMGVsT2kzMktJdFZoaDJsCmFHWDdEdUZDUjBqbzBLL3B0WTI1Y3hWR3dxK2V2VjFhNUc3dTFZRWQ1ZnVDK3dlSUFrS0kvckhadjd5TDN1ODkKNmxodWdRS0NBUUVBbHpBWGVXZTF4V1J6L0J5RmMwNTg5QStpQnAySTlCaFZsVkVCYmppVG9sdDhtc2ZtK2JFVQo1bCs4WFJHUEhGMEQ2Vi82OGUzcXc5Z3NJTmtHU0IzK1pUZEcyMnlEbTNIekpzZytOdmZCU2hFc3R2UlZpRWtXCmZkaExZamVITmczbThpWTl6T1VpNDBPakJBeDlOZHVqK1lJL1djbEh2T0JiMFdXRkFSZlpuQTFlNzhMajc5SlUKSU5SWVdsRDNBZjAyanUvKytETHR1MWxLc3NOQ2RNV2prQkYyK3JhRzNhUzJabHlpQXFXTkFoNmJWaElVSDA4ZApJUm5UNWhYMlZRTDhLYm11RmZlM2RweHRPK0xnUHlwQkN5RHdFZFNiLzg1NkU1SjFheis4SDgrNFh0MjRpRTdlCjF4Q1l6OFBYbnc4VGhJdzBEV1Q0TTZzWjRoaHNuK0Mxc1FLQ0FRQUozeGpvMzVZTUM2aHdjbXk5bTFHUUM1eWQKUkhNUmVqY0VnMmxNbmxlaXFrWkh5eWNUNzRpRWYxR21uL2UxWkU3b1UydDFxZ0tHQXFFSER2YVdiY3hyOFdBQwpZekxoN2RHemJ3NTVmalZRN3FDL2ZlOHNmZkJqelIvY3VNbnhrVUlKVnY4TFBEY2J5ZFNLQnJVRXFzemxRS2RyCkpEckhudE9IaUJDSFZjR2xqRzh1RkdDWTJFdXBzU01haUNzN1ZjemNSNXFKQXcyZHYreURxMXQrUWtHMi8xUFIKZ3MwTXN6Rmw1aXhLaEVUbVg3eEQrejRlaXRETUZNUEdpL2NKR05RVU9VWkM0V0tESEJkNEU0QmIvRnZmZjhjUAp0dHRNLzlUMDdsR0VDNis2ekxmU2Q0MzFvV0ZMNEFLdUV5NjFreE1RYjU3T3JSRldzbHB1dlVKSnZES0IKLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K"
}
],
"HTTPChallenges": {},
"TLSChallenges": {}
}

0 comments on commit c505532

Please sign in to comment.