Mercurial > code > home > repos > pomerium
annotate make_global.py @ 34:b1f75b0584f3
redo 'run' task and 'delete' (less tested)
author | drewp@bigasterisk.com |
---|---|
date | Wed, 21 Jun 2023 23:01:32 -0700 |
parents | 1d3d12b7cf6d |
children |
rev | line source |
---|---|
24
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
1 #!/usr/bin/python3 |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
2 |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
3 import json |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
4 import subprocess |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
5 import sys |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
6 import time |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
7 |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
8 POM_CERT_NAME = 'pomerium-proxy-tls' |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
9 AUTH_HOST = 'authenticate2.bigasterisk.com' |
24
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
10 |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
11 (phase,) = sys.argv[1:] |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
12 |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
13 |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
14 def secretExists(qname): |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
15 ns, localName = qname.split('/') |
24
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
16 j = json.loads(subprocess.check_output(["kubectl", "get", "-n", ns, "secret", "-o", "json"]).decode('utf8')) |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
17 for item in j['items']: |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
18 name = item['metadata']['name'] |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
19 if name == localName: |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
20 return |
24
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
21 raise ValueError() |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
22 |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
23 |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
24 def waitForSecret(qname): |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
25 sys.stderr.write(f"\nwait for secret {qname}: ") |
27
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
26 for tries in range(100): |
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
27 try: |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
28 return secretExists(qname) |
27
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
29 except ValueError: |
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
30 sys.stderr.write('.') |
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
31 sys.stderr.flush() |
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
32 time.sleep(10) |
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
33 else: |
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
34 raise ValueError |
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
35 |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
36 def pomeriumGlobalConfig(): |
27
0f6176ce0b46
refactor retry code, but then don't use it since it seems we don't want the suffixed name after all
drewp@bigasterisk.com
parents:
24
diff
changeset
|
37 |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
38 config = { |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
39 'apiVersion': "ingress.pomerium.io/v1", |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
40 'kind': "Pomerium", |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
41 'metadata': { |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
42 'name': "global" |
24
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
43 }, |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
44 'spec': { |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
45 'secrets': "pomerium/bootstrap", |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
46 'authenticate': { |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
47 'url': f"https://{AUTH_HOST}" |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
48 }, |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
49 'cookie': { |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
50 'expire': "20h" |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
51 }, |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
52 'identityProvider': { |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
53 'provider': "oidc", |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
54 'url': "https://accounts.google.com", |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
55 'scopes': [ |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
56 "openid", |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
57 "email", |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
58 "profile" # adds name+locale to user details |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
59 ], |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
60 'secret': "pomerium/idp" |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
61 }, |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
62 # 'storage': { |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
63 # 'postgres': { |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
64 # 'secret': "pomerium/postgres-connection-key" |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
65 # } |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
66 # }, |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
67 } |
24
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
68 } |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
69 |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
70 if phase == 'wait_for_cert': |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
71 waitForSecret('pomerium/pomerium-proxy-tls') |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
72 config['spec']['certificates'] = [f'pomerium/{POM_CERT_NAME}'] |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
73 |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
74 sys.stderr.write('\n') |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
75 return config |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
76 |
32
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
77 def pomCert(): |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
78 return { |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
79 "apiVersion": "cert-manager.io/v1", |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
80 "kind": "Certificate", |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
81 "metadata": { |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
82 "name": POM_CERT_NAME, |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
83 "namespace": "pomerium" |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
84 }, |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
85 "spec": { |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
86 "dnsNames": [ |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
87 AUTH_HOST |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
88 ], |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
89 "issuerRef": { |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
90 "kind": "ClusterIssuer", |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
91 "name": "letsencrypt-dns-prod" |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
92 }, |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
93 "secretName": "pomerium-proxy-tls" |
1d3d12b7cf6d
move pom cert into make_global.py to share some vars
drewp@bigasterisk.com
parents:
30
diff
changeset
|
94 } |
24
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
95 } |
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
96 |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
97 if phase == 'output_pom_cert': |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
98 output = pomCert() |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
99 else: |
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
100 output = pomeriumGlobalConfig() |
24
b53ab97e8979
reorganize, and add two retry loops to try to get everything to startup in one 'inv run'
drewp@bigasterisk.com
parents:
diff
changeset
|
101 |
34
b1f75b0584f3
redo 'run' task and 'delete' (less tested)
drewp@bigasterisk.com
parents:
32
diff
changeset
|
102 print(json.dumps(output)) |