import json,sys,yaml from pathlib import Path resources=list(yaml.safe_load_all(Path(sys.argv[1]).read_text())) assert len({(d['kind'],d['metadata'].get('namespace'),d['metadata']['name']) for d in resources})==len(resources) d=next(d for d in resources if d['kind']=='Deployment') assert d['spec']['strategy']['type']=='Recreate' assert d['spec']['replicas']==1 spec=d['spec']['template']['spec'] assert not spec['automountServiceAccountToken'] for c in spec['containers']: assert all(p in c for p in ('startupProbe','readinessProbe','livenessProbe','resources')), c['name'] assert ':' in c['image'] and not c['image'].endswith(':latest') assert spec['affinity']['nodeAffinity']['requiredDuringSchedulingIgnoredDuringExecution'] for service in (d for d in resources if d['kind']=='Service'): assert all(p['port']!=27015 for p in service['spec']['ports']) for cm in (d for d in resources if d['kind']=='ConfigMap'): for name,value in cm.get('data',{}).items(): if name.endswith('.json'): json.loads(value) print(f'Validated {len(resources)} rendered resources')