ai-templates
Version:
CLI tool for generating AI templates for different frameworks and tools
349 lines (271 loc) • 7.43 kB
Markdown
Fix GitHub Issues - Infrastructure (Kubernetes)
This command helps you systematically fix GitHub issues for infrastructure with proper planning, documentation, and testing.
# Step 0: Setup and Issue Selection
## Prerequisites
- Ensure `gh` CLI is installed and authenticated
- kubectl installed and configured
- Helm installed (if using Helm charts)
- Access to cloud provider credentials
- Current directory should be the project root
- Git repository should be clean
## Select Issue
```bash
List open issues assigned to you
gh issue list --assignee @me --label infrastructure
View specific issue details
gh issue view <issue-number>
Assign yourself to an issue
gh issue edit <issue-number> --add-assignee @me
```
# Step 1: Planning
## Analyze the Issue
1. Read the issue description thoroughly
2. Identify affected infrastructure components
3. Assess security implications
4. Evaluate cost impact
5. Plan rollback strategy
## Create Planning Document
```bash
Create planning document
mkdir -p docs/issues/<issue-number>
touch docs/issues/<issue-number>/plan.md
```
Planning document template:
```markdown
Issue #<number>: <title>
# Problem Statement
[Describe the infrastructure issue]
# Proposed Solution
[Outline your approach]
# Affected Resources
- [ ] Resource Type 1
- [ ] Resource Type 2
# Security Considerations
- [ ] IAM changes
- [ ] Network security
- [ ] Data encryption
# Cost Impact
- Current estimated cost: $X/month
- New estimated cost: $Y/month
- Delta: $Z/month
# Rollback Plan
1. Step 1
2. Step 2
# Testing Strategy
- Terraform plan review
- Staging environment validation
- Production deployment checklist
```
# Step 2: Create Feature Branch
```bash
Create and checkout feature branch
git checkout -b fix/<issue-number>-<brief-description>
Example
git checkout -b fix/123-vpc-security-group
```
# Step 3: Implementation
## Infrastructure-Specific Guidelines
1. **Terraform Best Practices**
- Use consistent naming conventions
- Leverage existing modules
- Pin provider versions
- Use appropriate data sources
2. **State Management**
- Ensure remote state is configured
- Use state locking
- Plan state migrations carefully
3. **Security**
- Never hardcode secrets
- Use least privilege principle
- Enable encryption at rest
- Configure proper network segmentation
# Step 4: Testing
## Kubernetes Validation
```bash
Validate YAML syntax
kubectl apply --dry-run=client -f .
Lint Kubernetes manifests
kubeval **/*.yaml
Policy validation with OPA
opa eval -d policies/ -i manifest.yaml
```
## Security Scanning
```bash
Run kubesec for security issues
kubesec scan manifest.yaml
Run Polaris for best practices
polaris audit --format yaml
Review IAM policies
Custom script or tool for IAM analysis
```
## Plan Review
```bash
Preview changes with kubectl diff
kubectl diff -f .
For Helm charts
helm diff upgrade <release-name> <chart> --values values.yaml
Generate rendered manifests
kubectl kustomize . > rendered.yaml
```
## Testing Checklist
```markdown
# Pre-deployment Checklist
## Code Quality
- [ ] terraform fmt applied
- [ ] terraform validate passes
- [ ] No tflint warnings
- [ ] Variables documented
## Security
- [ ] tfsec scan clean
- [ ] No hardcoded secrets
- [ ] IAM permissions reviewed
- [ ] Network rules validated
## Plan Review
- [ ] No unexpected resource deletions
- [ ] Resource naming correct
- [ ] Tags properly applied
- [ ] Cost impact acceptable
```
## Staging Environment Test
```bash
Switch to staging workspace
terraform workspace select staging
Apply to staging
terraform apply -auto-approve
Run validation tests
./scripts/validate-infrastructure.sh staging
Document results
echo "Staging validation: $(date)" >> docs/issues/<issue-number>/staging-test.log
```
# Step 5: Documentation
## Create Implementation Documentation
```bash
Create comprehensive documentation
touch docs/issues/<issue-number>/implementation.md
touch docs/issues/<issue-number>/architecture-diagram.md
```
Include:
- Architecture diagrams (before/after)
- Security group rules
- IAM policy changes
- Resource dependencies
- Monitoring setup
- Backup procedures
## Update Project Documentation
- Update infrastructure README
- Update runbooks
- Update disaster recovery plans
- Update cost tracking
# Step 6: Create Pull Request
```bash
Push branch
git push -u origin fix/<issue-number>-<brief-description>
Create PR with detailed information
gh pr create \
--title "Fix #<issue-number>: <brief description>" \
--body "Fixes #<issue-number>
# Changes
- Change 1
- Change 2
# Terraform Plan Summary
\`\`\`
Plan: X to add, Y to change, Z to destroy
\`\`\`
# Security Review
- [x] tfsec scan passed
- [x] Checkov compliance check passed
- [x] IAM permissions follow least privilege
- [x] No exposed secrets
# Testing
- [x] Terraform fmt/validate/tflint passed
- [x] Staging environment tested successfully
- [x] Rollback plan documented
- [x] Cost impact analyzed
# Documentation
- [x] Architecture diagrams updated
- [x] Runbooks updated
- [x] Implementation notes in /docs/issues/<issue-number>/
# Deployment Plan
1. Apply during maintenance window
2. Monitor for 30 minutes post-deployment
3. Run smoke tests
4. Update monitoring dashboards"
```
# Step 7: Production Deployment
## Pre-deployment
```bash
Create backup of current state
terraform state pull > backup-state-$(date +%Y%m%d-%H%M%S).json
Final plan review
terraform plan
Notify team
echo "Deploying infrastructure fix #<issue-number> at $(date)"
```
## Deployment
```bash
Apply with confirmation
terraform apply
Or for CI/CD
terraform apply -auto-approve
```
## Post-deployment
```bash
Verify resources
terraform state list
terraform output
Run smoke tests
./scripts/smoke-tests.sh production
Update monitoring
Configure alerts for new resources
```
# Step 8: Post-Implementation
## After Successful Deployment
```bash
Switch back to main branch
git checkout main
git pull
Delete local feature branch
git branch -d fix/<issue-number>-<brief-description>
Archive implementation docs
mkdir -p docs/issues/completed
mv docs/issues/<issue-number> docs/issues/completed/
Update infrastructure inventory
./scripts/update-inventory.sh
```
## Close Issue
```bash
Close issue with deployment details
gh issue close <issue-number> \
--comment "Fixed in PR #<pr-number>.
Deployment completed at $(date)
- Resources modified: X
- No service disruption
- Documentation: /docs/issues/completed/<issue-number>/
- Monitoring: [dashboard-link]"
```
# Best Practices
1. **Change Management**
- Always test in staging first
- Plan maintenance windows
- Have rollback ready
- Monitor after deployment
2. **Security**
- Regular security scans
- Rotate credentials regularly
- Use encryption everywhere
- Follow cloud provider best practices
3. **Cost Optimization**
- Tag all resources properly
- Review cost before applying
- Use appropriate instance sizes
- Enable auto-scaling where applicable
4. **Documentation**
- Keep diagrams up-to-date
- Document all manual steps
- Maintain runbooks
- Record lessons learned
5. **State Management**
- Never modify state manually
- Always backup before major changes
- Use workspaces for environments
- Enable state locking