</code></pre></div><h3id=example-oauth2-proxy-kubernetes-dashboard>Example: OAuth2 Proxy + Kubernetes-Dashboard<aclass=headerlinkhref=#example-oauth2-proxy-kubernetes-dashboardtitle="Permanent link"> ¶</a></h3><p>This example will show you how to deploy <ahref=https://github.com/pusher/oauth2_proxy><code>oauth2_proxy</code></a> into a Kubernetes cluster and use it to protect the Kubernetes Dashboard using github as oAuth2 provider</p><h4id=prepare>Prepare<aclass=headerlinkhref=#preparetitle="Permanent link"> ¶</a></h4><ol><li>Install the kubernetes dashboard</li></ol><divclass=highlight><pre><span></span><code><spanclass=go>kubectl create -f https://raw.githubusercontent.com/kubernetes/kops/master/addons/kubernetes-dashboard/v1.10.1.yaml</span>
</code></pre></div><ol><li>Create a <ahref=https://github.com/settings/applications/new>custom Github OAuth application</a></li></ol><p><imgalt="Register OAuth2 Application"src=images/register-oauth-app.png></p><ul><li>Homepage URL is the FQDN in the Ingress rule, like <code>https://foo.bar.com</code></li><li>Authorization callback URL is the same as the base FQDN plus <code>/oauth2/callback</code>, like <code>https://foo.bar.com/oauth2/callback</code></li></ul><p><imgalt="Register OAuth2 Application"src=images/register-oauth-app-2.png></p><ol><li><p>Configure oauth2_proxy values in the file <ahref=https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/docs/examples/auth/oauth-external-auth/oauth2-proxy.yaml><code>oauth2-proxy.yaml</code></a> with the values:</p></li><li><p>OAUTH2_PROXY_CLIENT_ID with the github <code><Client ID></code></p></li><li>OAUTH2_PROXY_CLIENT_SECRET with the github <code><Client Secret></code></li><li><p>OAUTH2_PROXY_COOKIE_SECRET with value of <code>python -c 'import os,base64; print(base64.b64encode(os.urandom(16)).decode("ascii"))'</code></p></li><li><p>Customize the contents of the file <ahref=https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/docs/examples/auth/oauth-external-auth/dashboard-ingress.yaml><code>dashboard-ingress.yaml</code></a>:</p></li></ol><p>Replace <code>__INGRESS_HOST__</code> with a valid FQDN and <code>__INGRESS_SECRET__</code> with a Secret with a valid SSL certificate.</p><ol><li>Deploy the oauth2 proxy and the ingress rules running:</li></ol><divclass=highlight><pre><span></span><code><spanclass=gp>$</span> kubectl create -f oauth2-proxy.yaml,dashboard-ingress.yaml
</code></pre></div><p>Test the oauth integration accessing the configured URL, like <code>https://foo.bar.com</code></p><p><imgalt="Register OAuth2 Application"src=images/github-auth.png></p><p><imgalt="Github authentication"src=images/oauth-login.png></p><p><imgalt="Kubernetes dashboard"src=images/dashboard.png></p></article></div></div></main><footerclass=md-footer><divclass=md-footer-nav><navclass="md-footer-nav__inner md-grid"aria-label=Footer><ahref=../external-auth/class="md-footer-nav__link md-footer-nav__link--prev"rel=prev><divclass="md-footer-nav__button md-icon"><svgxmlns=http://www.w3.org/2000/svgviewbox="0 0 24 24"><pathd="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg></div><divclass=md-footer-nav__title><divclass=md-ellipsis><spanclass=md-footer-nav__direction> Previous </span> External Basic Authentication </div></div></a><ahref=../../customization/configuration-snippets/class="md-footer-nav__link md-footer-nav__link--next"rel=next><divclass=md-footer-nav__title><divclass=md-ellipsis><spanclass=md-footer-nav__direction> Next </span> Configuration Snippets </div></div><divclass="md-footer-nav__button md-icon"><svgxmlns=http://www.w3.org/2000/svgviewbox="0 0 24 24"><pathd="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg></div></a></nav></div><divclass="md-footer-meta md-typeset"><divclass="md-footer-meta__inner md-grid"><divclass=md-footer-copyright> Made with <ahref=https://squidfunk.github.io/mkdocs-material/target=_blankrel=noopener> Material for MkDocs </a></div></div></div></footer></div><scriptsrc=../../../assets/javascripts/vendor.93c04032.min.js></script><scriptsrc=../../../assets/javascripts/bundle.83e5331e.min.js></script><scriptid=__langtype=application/json>{"clipboard.copy":"Copy to clipboard","clipboard.copied":"Copied to clipboard","search.config.lang":"en","search.config.pipeline":"trimmer, stopWordFilter","search.config.separator":"[\\s\\-]+","search.placeholder":"Search","search.result.placeholder":"Type to start searching","search.result.none":"No matching documents","search.result.one":"1 matching document","search.result.other":"# matching documents","search.result.more.one":"1 more on this page","search.result.more.other":"# more on this page","search.result.term.missing":"Missing"}</script><script>