Skip to main content
Vikat Enterprise images for GCP customers are distributed through GCP Artifact Registry, enabling native Workload Identity for secure, keyless authentication.

Architecture

Prerequisites

  • GKE cluster (v1.24+) with Workload Identity enabled
  • gcloud CLI configured with appropriate permissions
  • kubectl configured for your GKE cluster
  • Your GCP project allowlisted by Vikat team
Contact the Vikat team with your GCP project ID and service account email to get access configured.
Workload Identity provides the most secure authentication method for GKE deployments by eliminating the need for service account keys.

Step 1: Enable Workload Identity on GKE

If not already enabled, enable Workload Identity on your cluster:

Step 2: Create GCP Service Account

Create a service account that will be used to pull images:

Step 3: Request Access from Vikat Team

Provide the following to the Vikat team:
  • Your GCP project ID
  • Service account email: vikat-pull-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
The Vikat team will grant the necessary permissions to pull images from the registry.

Step 4: Create Namespace and ServiceAccount

Step 5: Bind Kubernetes SA to GCP SA

Allow the Kubernetes ServiceAccount to impersonate the GCP Service Account:

Step 6: Create Image Pull Secret with Token Refresh

Artifact Registry tokens expire after 60 minutes. Use a CronJob to refresh the imagePullSecret:
Replace REGION with your Artifact Registry region (e.g., us-central1).

Step 7: Deploy Vikat

Bootstrap: Initial Secret Creation

Before the first deployment, manually create the initial imagePullSecret:

Service Account Impersonation

For cross-project deployments or when you need to use an existing service account:

Configure Impersonation

Token Refresh with Impersonation

Update the CronJob to use impersonation:

Service Account Key (Legacy)

Service account keys are not recommended for production. Use Workload Identity instead.
For environments that cannot use Workload Identity:

Verifying Access

Test Artifact Registry Authentication

Verify Workload Identity Configuration

Troubleshooting

ImagePullBackOff Errors

  1. Check imagePullSecret exists: kubectl get secret ar-pull-secret -n vikat
  2. Verify token is valid: Check if CronJob ran successfully
  3. Check Workload Identity binding: Ensure GCP SA is bound to K8s SA

Workload Identity Issues

Token Expiration

If pods fail to pull images after 60 minutes:
  1. Verify CronJob is running: kubectl get cronjob -n vikat
  2. Check CronJob logs: kubectl logs -l job-name=refresh-ar-secret -n vikat
  3. Manually trigger refresh: kubectl create job --from=cronjob/refresh-ar-secret manual-refresh -n vikat

Next Steps