local kube = import "../../../kube/kube.libsonnet"; { local app = self, local cfg = app.cfg, cfg:: { image: error "cfg.image must be set", # webDomain is the domain name at which matrix instance/cas proxy is served webDomain: error "cfg.webDomain must be set", oauth2: error "cfg.oauth2 must be set", }, ns:: error "ns needs to be a kube.Namespace object", deployment: app.ns.Contain(kube.Deployment("oauth2-cas-proxy")) { spec+: { replicas: 1, template+: { spec+: { containers_: { proxy: kube.Container("oauth2-cas-proxy") { image: cfg.image, ports_: { http: { containerPort: 5000 }, }, env_: { BASE_URL: "https://%s" % [cfg.webDomain], SERVICE_URL: "https://%s" % [cfg.webDomain], OAUTH2_CLIENT: cfg.oauth2.clientID, OAUTH2_SECRET: cfg.oauth2.clientSecret, OAUTH2_SCOPE: cfg.oauth2.scope, OAUTH2_AUTHORIZE: cfg.oauth2.authorizeURL, OAUTH2_TOKEN: cfg.oauth2.tokenURL, OAUTH2_USERINFO: cfg.oauth2.userinfoURL, }, }, }, }, }, }, }, svc: app.ns.Contain(kube.Service("oauth2-cas-proxy")) { target_pod:: app.deployment.spec.template, }, }