The following section should be added to or exist in your local params.yaml file:
kubeapps:
server-fqdn: kubeapps.<workload-cluster domain name>
oidc-issuer-fqdn: dex.<workload-cluster domain name>
-
Log into your Okta account you created as part of the Okta Setup Lab. The URL should be in your
params.yaml
file under okta.auth-server-fqdn. -
Choose Applications (side menu) > Applications. Then click Create App Integration button. Then select OIDC - OpenID Connect radio option. For Application Type, choose Web Application radio button. Then click Next button.
-
Complete the form as follows, and then click Done.
- Give your app a name:
Kubeapps
- For Grant type, check Authorization Code
- Sign-in redirect URIs:
https://<kubeapps.oidc-issuer-fqdn from $PARAMS_YAML>/callback
echo "https://$(yq e .kubeapps.oidc-issuer-fqdn $PARAMS_YAML)/callback"
- Sign-out redirect URIs:
https://<kubeapps.oidc-issuer-fqdn from $PARAMS_YAML>/logout
echo "https://$(yq e .kubeapps.oidc-issuer-fqdn $PARAMS_YAML)/logout"
- Capture
Client ID
andClient Secret
for and put it in your $PARAMS_YAML file
okta:
kubeapps-dex-app-client-id: <your kubeapps okta client id>
kubeapps-dex-app-client-secret: <your kubeapps okta client secret>
- Choose Sign On tab > Edit OpenID Connect ID Token section
- Groups claim type =>
Filter
- Groups claim filter => groups Matches regex .*
Due to the way okta provides thin-tokens, if we directly integrated kubeapps with okta, we would not recieve group membership. Dex has the workflow to retrieve the group membership and generate a new JWT token for kubeapps. As such, we will deploy dex in the workload cluster to perform this mediation.
./dex/generate-and-apply-dex-yaml.sh $(yq e .workload-cluster.name $PARAMS_YAML)
Kubeapps should be installed in the workload cluster, as it is going to be available to all users. Prepare and deploy the YAML manifests for the related kubeapps K8S objects. Manifest will be output into generated/$CLUSTER_NAME/kubeapps/
in case you want to inspect.
./kubeapps/generate-and-apply-kubeapps-yaml.sh $(yq e .workload-cluster.name $PARAMS_YAML)
- All kubeapps pods are in a running state:
kubectl get po -n kubeapps
- Certificate is True and Ingress created:
kubectl get cert,ing -n kubeapps
- Open a browser and navigate to https://<$KUBEAPPS_FQDN>.
open https://$(yq e .kubeapps.server-fqdn $PARAMS_YAML)
- Login as
alana
, who is an admin on the cluster. You should be taken to the kubeapps home page