Bootstrap
Mission Control allows nothing by default: a new user can't see or do anything until a RoleBinding grants them access. So on a fresh installation, someone has to be able to sign in and create the first RoleBindings.
Mission Control solves this by shipping an admins team, already bound to the shipped admin Role, and to plugin-admin, which lets admins run plugin operations. Whoever is in that team is an admin from their first sign-in.
How the first people get into the team depends on how users sign in. Mission Control SaaS uses Clerk. A self-hosted installation uses Kratos, optionally with single sign-on, unless you configured basic auth.
| Authentication | First admin |
|---|---|
| Kratos | The local admin@local user, which Mission Control creates in admins |
| Basic auth | The local admin@local user, which Mission Control creates in admins |
| Clerk | Your Clerk organization admins, who join admins when they sign in |
Kratos and basic auth
Mission Control creates a local user, admin@local, and adds it to the admins team every time it starts. Sign in as admin@local to set up access for everyone else.
The default username is admin@local and the password can be retrieved with:
kubectl get secret mission-control-admin-password \
-n mission-control \
--template='{{.data.password | base64decode}}'
The password comes from the ADMIN_PASSWORD environment variable, which the Helm chart sets from the mission-control-admin-password secret. The chart generates a random password when it creates the secret.
Once you're signed in:
- Add the people who should be admins to the
adminsteam from Settings → Teams. A person appears there once they've signed in, or once you've invited them from Settings → Users. - Give everyone else access. For example, give everyone the shipped
viewerRole so they can browse the catalog, then grant more to the teams that need it. See the Quickstart.
If you map your identity provider's groups to teams with a team mapper, you can return admins for your admin group instead of adding people by hand. A team mapper never removes admin@local from the team.
Clerk
There's no admin@local with Clerk. Instead, your Clerk organization decides who the first admins are. See Getting started with SaaS for signing up and inviting your team.
When a user signs in, Mission Control runs a team mapper over their Clerk session claims. Unless a custom mapper is configured, the default mapper puts:
| Clerk user | Team |
|---|---|
Organization admins (org_role is org:admin, or role is admin) | admins |
Guests (org_role is org:guest) | No team |
| Everyone else | viewers |
So your Clerk organization admins are Mission Control admins as soon as they sign in, and a user who leaves the admin role in Clerk leaves the admins team on their next request.
viewers isn't shipped. Regular members can sign in but can't see anything until you give them access. Either give everyone the viewer Role, as in the Quickstart, or create a team named viewers and bind a Role to it.
A custom mapper is set with Mission Control's --clerk-team-mapper flag. If you use one, make sure it still returns admins for the people who should be admins, or no one can manage access. See Team Mapping.
External identity providers
Users who sign in through an external identity provider never become admins on their own. A provider can only add its users to admins if you list admins among the teams it's allowed to manage, and it warns you when you do.
Getting admin access back
The admins team itself and its two RoleBindings can't be renamed, changed, or deleted. Its members can be, from Settings → Teams. If the team or its bindings go missing, Mission Control recreates them when it starts. Even a RoleBinding with deny: true (see Refusing a Role) can't stop admins from managing RoleBindings.
If every admin is lost, for example because all members were removed from admins:
- Kratos and basic auth: restart Mission Control. It adds
admin@localback toadmins. - Clerk: sign in as a Clerk organization admin. With the default team mapper, or a custom one that returns
admins, you're added back toadminson your first request.
Next steps
- Quickstart - grant your first Roles
- Shipped Roles - what
admin,viewerand the other shipped Roles allow