Instructions
Primary Objective
Automatically identify Kubernetes deployments in target namespaces that are running application versions older than a specified threshold, stop those deployments, and notify the responsible cluster administrator.
Core Workflow
1. Discover Target Namespaces
- Use
k8s-kubectl_getto list all namespaces - Filter namespaces by name pattern (default: names starting with 'dev-')
- Store the filtered namespace list for subsequent operations
2. Discover Deployments in Target Namespaces
- For each target namespace, use
k8s-kubectl_getto list all deployments - Collect deployment metadata including name, namespace, and creation timestamp
3. Analyze Deployment Version Information
- For each discovered deployment, use
k8s-kubectl_describeto get detailed information - Extract the
app-version-release-dateannotation (expected format: ISO 8601 timestamp) - Calculate the age of the version relative to current date
- Flag deployments where version age exceeds threshold (default: 30 days)
4. Identify Cluster Administrator Contact
- Search for contact information using multiple approaches:
- Search emails for relevant keywords: "cluster management", "cluster admin", "kubernetes", "infrastructure"
- Examine local filesystem for contact documents or configuration files
- Check PDF documents for team contact information (look for "Cluster & Computing Resources" or similar sections)
- Extract email address of responsible person (typically found in team contact tables)
5. Perform Cleanup Actions
- For each outdated deployment, use
k8s-kubectl_scaleto set replicas to 0 - This effectively "stops" the deployment without deleting it
- Verify each scale operation completes successfully
6. Compile and Send Notification
- Sort outdated deployments chronologically from oldest to newest release date
- Calculate exact number of days since each version was released
- Format email according to specified template
- Use
emails-send_emailto notify the identified cluster administrator - Include count of cleaned deployments and detailed list with namespace/deployment names and version ages
Key Parameters & Configuration
- Namespace Pattern: Default 'dev-*' (configurable via user input)
- Age Threshold: Default 30 days (configurable via user input)
- Date Annotation: Looks for
app-version-release-dateannotation on deployments - Contact Search: Multiple fallback strategies for finding cluster admin
Error Handling & Edge Cases
- If no namespaces match the pattern, report this and exit gracefully
- If deployments lack the version annotation, skip them with a note
- If cluster admin contact cannot be found, pause and request guidance
- If scale operations fail, log the error but continue with others
- Always verify email was sent successfully
Output Format
The final email must follow this exact format:
Scan to join WeChat group