top of page

How to configure ArgoCD OIDC with Google Workspace in 5 simple steps

Updated: Oct 28, 2024


There are different ways to handle authentication in ArgoCD, but indeed using the admin password is not secure enough. For this reason, we’ll learn how to configure your ArgoCD to integrate with Google Workspace for Login. In this TeraTip we’ll cover one of the approaches for authentication, using ‌groups from Google Workspace.



google-workspace-icons-hanging-from-octopus-tentacles


Before you get started…

In order to get the SSO working you need to have the SSL and URL for your server already configured, otherwise, you’ll get errors during the authentication.



Step # 1: Create the OAuth Screen


First, you create a project with any name you want and configure the OAuth screen as follows:


""

In the Authorized Domains section, it is important to configure the domain for the email your users have, in this case, we add the domain for our organization.


""

Finally, on the Scopes tab select the userinfo.profile and the openid scopes. Those are the scopes ArgoCD needs for the log in.



Step # 2: Create the OAuth Client ID


On the Credentials tab, click on + Create Credentials and OAuth client ID.



""


Then select on Application type, Web Application, and configure the JavaScript origins and redirect URIs. In the Authorized JavaScripts origins section, configure the root URL for your ArgoCD. Then in Authorized redirect URIs copy this URL but append the /api/dex/callback path.



""

Then click on Create and save your Client ID and Client Secret for later.



Step # 3: Configure the Service Account on Google Workspace


Now create the Service Account and configure the Domain Wide delegation, to make ArgoCD able to read the groups. On the Service Account section of the Google Console, we click on + CREATE SERVICE ACCOUNT. You only need to enter a name for the service account and enter any name you like.



""


Enter ‌your service account, go to the Keys tab, click on Add Key, and select JSON as format. Save the keys, we will use them later for configuring the OIDC.


""



Step # 4: Set up Domain Wide delegation and enable Admin SDK


To close with the Google configuration you’ll now have to configure Domain Wide delegation and enable the Admin SDK. First head to the Google Cloud Admin console, and then go to Security, Access and data control, API controls, and, lastly, then click on manage domain-wide delegation. 



""



Click on Add Client, and then on Client ID paste the Client ID of your service account, and on the scopes section paste this: https://www.googleapis.com/auth/admin.directory.group.readonly


""

Finally, head to https://console.cloud.google.com/apis/library/admin.googleapis.com and enable the Admin SDK for your project.



Step # 5: Configure ArgoCD


To configure the OIDC create two secrets on your cluster, one for the Client Secret we got on Step 2 and one for the JSON we got on Step 3


For the client secret:

apiVersion: v1


kind: Secret


metadata:


 name: argocd-cm-dex-secret


 namespace: argocd


 labels:


  app.kubernetes.io/part-of: argocd


data:


 dex.google.clientSecret: CLIENT_SECRET_BASE64_ENCODED

For the JSON:

apiVersion: v1


kind: Secret


metadata:


 name: argocd-google-groups-json


 namespace: argocd


data:


 googleAuth.json: JSON_FILE_BASE64_ENCODED

Now if you are using the ArgoCD Helm Chart, you can use the following values, tested on version 5.27.1:

configs:  cm:    url: https://argocd.teracloud.io    dex.config: |      connectors:      - config:          redirectURI: https://argocd.teracloud.io/api/dex/callback          clientID: HERE_YOUR_CLIENT_ID          clientSecret: $argocd-cm-dex-secret:dex.google.clientSecret          serviceAccountFilePath: /tmp/oidc/googleAuth.json          adminEmail: email_used_for_the_domain_wide_delegation          # A list of groups to add          groups:          - devops@teracloud.io        type: google        id: google        name: Google dex:  enabled: true  volumeMounts:  - mountPath: /tmp/oidc    name: google-json    readOnly: true  volumes:  - name: google-json    secret:      defaultMode: 420      secretName: argocd-google-groups-json

Now you have your ArgoCD configured with Google SSO!



""



""





Juan Wiggenhauser

Cloud Engineer

Teracloud

Buscar por tags
bottom of page