Skip to main content
This guide covers common issues you may encounter when deploying and managing Shipyard infrastructure, along with their solutions.

Tailscale Issues

Tailscale Not Connecting

Symptoms:
  • Subnet router doesn’t appear in Tailscale admin console
  • Device shows as offline
  • Cannot ping VPC private IPs
Solutions:
1

Check instance has internet access

Verify the Tailscale router instance is in a public subnet with internet gateway access:
2

Verify auth key is valid

Check that your auth key:
  • Hasn’t expired
  • Is properly set in environment variables
  • Has correct permissions and tags
Create a new key at Tailscale Admin if needed.
3

Check Tailscale service logs

4

Restart Tailscale service

Subnet Routes Not Working

Symptoms:
  • Can see subnet router in Tailscale admin
  • Cannot ping VPC private IPs
  • kubectl cannot connect to EKS
Solutions:
  1. Go to Tailscale Machines
  2. Find your subnet router
  3. Check that subnet routes are shown and approved
  4. If not approved, click “Review” and approve them manually
Ensure your Tailscale ACL includes:
Update at Tailscale ACLs
Check that the subnet router security group allows:
  • Outbound: All traffic to 0.0.0.0/0
  • Inbound: All traffic from VPC CIDR (10.0.0.0/16)

EKS Issues

EKS API Not Accessible

Symptoms:
  • kubectl commands timeout
  • “Unable to connect to the server” errors
  • Connection refused errors
Solutions:
1

Verify Tailscale connection

2

Update kubeconfig

3

Verify AWS credentials

Ensure the returned identity has EKS access.
4

Check cluster endpoint

Verify this is a private endpoint within your VPC.
5

Verify security group rules

Check that the EKS cluster security group allows:
  • Port 443 from VPC CIDR
  • All traffic from node security group

Pods Not Starting

Symptoms:
  • Pods stuck in Pending state
  • ImagePullBackOff errors
  • CrashLoopBackOff errors
Solutions:
Look for errors in the Events section.
If nodes are at capacity, scale your node group.

Vault Issues

Vault Not Initializing

Symptoms:
  • Vault pods show 0/1 ready
  • vault status shows sealed
  • Initialization fails
Solutions:
1

Check pod status

2

Check pod logs

Look for errors related to KMS or DynamoDB.
3

Verify KMS key permissions

Ensure the EKS node IAM role has permissions:
  • kms:Decrypt
  • kms:Encrypt
  • kms:DescribeKey
On the KMS key used for Vault auto-unseal.
4

Verify DynamoDB access

Ensure the node IAM role has DynamoDB permissions.
5

Manual initialization (if needed)

Vault Sealed

Symptoms:
  • Vault status shows Sealed: true
  • Applications cannot access secrets
Solutions:

Certificate Issues

Certificates Not Issuing

Symptoms:
  • Certificate shows Ready: False
  • Let’s Encrypt challenges fail
  • TLS errors when accessing services
Solutions:
1

Check certificate status

2

Check challenges

3

Verify Cloudflare API token

Ensure the token has:
  • Zone:DNS:Edit
  • Zone:Zone:Read
4

Check cert-manager logs

5

Check rate limits

Let’s Encrypt has rate limits:
  • 50 certificates per domain per week
  • 5 failed validations per hour
Use staging issuer for testing:

Terraform Issues

State Lock Errors

Symptoms:
  • “Error acquiring the state lock”
  • Terraform operations hang
Solutions:
Only use force-unlock if you’re certain no other Terraform process is running.

Resource Already Exists

Symptoms:
  • “AlreadyExists” errors
  • “Resource already exists” errors
Solutions:
Example:
If the resource should not be managed by Terraform:
If there’s a naming conflict, update the resource name in your Terraform code.

Provider Configuration Errors

Symptoms:
  • “Error configuring provider”
  • Authentication errors
Solutions:

ArgoCD Issues

Applications Out of Sync

Symptoms:
  • Application shows “OutOfSync” status
  • Deployed resources don’t match Git
Solutions:

GitHub Integration Not Working

Symptoms:
  • ApplicationSets not discovering repos
  • “Failed to list repositories” errors
Solutions:
1

Verify GitHub App credentials

Ensure:
  • App ID is correct
  • Installation ID is correct
  • Private key is valid
2

Check GitHub App permissions

In GitHub, verify the app has:
  • Repository: Contents (Read)
  • Repository: Metadata (Read)
3

Check ArgoCD application controller logs

Network Issues

DNS Not Resolving

Symptoms:
  • Services not accessible by domain name
  • “Name or service not known” errors
Solutions:

Load Balancer Not Created

Symptoms:
  • Ingress has no external IP/hostname
  • Service of type LoadBalancer stuck pending
Solutions:

Getting More Help

If you continue to experience issues:
  1. Check logs: Most issues can be diagnosed from pod and service logs
  2. Review AWS Console: Check CloudWatch logs, security groups, and IAM permissions
  3. Verify prerequisites: Ensure all required tools and accounts are properly configured
  4. Check resource quotas: AWS service quotas may limit resource creation

Destroying Resources

If you need to start over, learn how to safely tear down infrastructure