# Kubernetes Copilot
Kubernetes Copilot powered by OpenAI.
Features:
- Automate Kubernetes cluster operations using ChatGPT (GPT-4 or GPT-3.5).
- Diagnose and analyze the potential issues for Kubernetes workloads.
- Generate the Kubernetes manifests based on the provided prompt instructions.
- Utilize native kubectl and trivy commands for Kubernetes cluster access and security vulnerability scanning.
## Install
### Install Locally
Install the copilot with pip command below. It is highly recommended to use [pipx](https://pipx.pypa.io/stable/) or [venv](https://docs.python.org/3/library/venv.html) to install the copilot to avoid conflicts with other Python packages.
```sh
# Option 1: use pipx to install the copilot
pipx install kube-copilot
# Option 2: use venv to install the copilot
python3 -m venv copilotenv
source copilotenv/bin/activate
pip install kube-copilot
# Option 3: Use pip to install the copilot (not recommended)
pip install kube-copilot
```
**Setup:**
- Ensure [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/) is installed on the local machine and the kubeconfig file is configured for Kubernetes cluster access.
- Install [`trivy`](https://github.com/aquasecurity/trivy) to assess container image security issues (for the `audit` command).
- Set the OpenAI [API key](https://platform.openai.com/account/api-keys) as the `OPENAI_API_KEY` environment variable to enable ChatGPT functionality.
- For [Azure OpenAI service](https://learn.microsoft.com/en-us/azure/cognitive-services/openai/quickstart?tabs=command-line&pivots=rest-api#retrieve-key-and-endpoint), please set `AZURE_OPENAI_API_KEY=<your-key>` and `AZURE_OPENAI_ENDPOINT=https://<replace-this>.openai.azure.com/`.
### Run in Kubernetes
**Option 1: Web UI with Helm (recommended)**
```sh
# Option 1: OpenAI
export OPENAI_API_KEY="<replace-this>"
helm install kube-copilot kube-copilot \
--repo https://feisky.xyz/kube-copilot \
--set openai.apiModel=gpt-4 \
--set openai.apiKey=$OPENAI_API_KEY
# Option 2: Azure OpenAI Service
export AZURE_OPENAI_API_KEY="<replace-this>"
export AZURE_OPENAI_ENDPOINT="<replace-this>"
helm install kube-copilot kube-copilot \
--repo https://feisky.xyz/kube-copilot \
--set openai.apiModel=gpt-4 \
--set openai.apiKey=$AZURE_OPENAI_API_KEY \
--set openai.apiBase=$AZURE_OPENAI_ENDPOINT
# Forwarding requests to the service
kubectl port-forward service/kube-copilot 8080:80
echo "Visit http://127.0.0.1:8080 to use the copilot"
```
**Option 2: CLI with kubectl**
```sh
kubectl run -it --rm copilot \
--env="OPENAI_API_KEY=$OPENAI_API_KEY" \
--restart=Never \
--image=ghcr.io/feiskyer/kube-copilot \
-- execute --verbose 'What Pods are using max memory in the cluster'
kubectl run -it --rm copilot \
--env="AZURE_OPENAI_API_KEY=$AZURE_OPENAI_API_KEY" \
--env="AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT" \
--restart=Never \
--image=ghcr.io/feiskyer/kube-copilot \
-- execute --verbose 'What Pods are using max memory in the cluster'
```
Refer [kubernetes.md](kubernetes.md) for more detailed steps.
## How to use web UI
![image-20230707191237629](assets/preview.jpg)
## How to use CLI
Running directly in the terminal:
```sh
Usage: kube-copilot [OPTIONS] COMMAND [ARGS]...
Kubernetes Copilot powered by OpenAI
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
analyze analyze issues for a given resource
audit audit security issues for a Pod
diagnose diagnose problems for a Pod
execute execute operations based on prompt instructions
generate generate Kubernetes manifests
```
### Audit Security Issues for Pod
`kube-copilot audit POD [NAMESPACE]` will audit security issues for a Pod:
```sh
Usage: kube-copilot audit [OPTIONS] POD [NAMESPACE]
audit security issues for a Pod
Options:
--verbose Enable verbose information of copilot execution steps
--model MODEL OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.
```
### Diagnose Problems for Pod
`kube-copilot diagnose POD [NAMESPACE]` will diagnose problems for a Pod:
```sh
Usage: kube-copilot diagnose [OPTIONS] POD [NAMESPACE]
diagnose problems for a Pod
Options:
--verbose Enable verbose information of copilot execution steps
--model MODEL OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.
```
### Analyze Potential Issues for k8s Object
`kube-copilot analyze RESOURCE NAME [NAMESPACE]` will analyze potential issues for the given resource object:
```sh
Usage: kube-copilot analyze [OPTIONS] RESOURCE NAME [NAMESPACE]
analyze issues for a given resource
Options:
--verbose Enable verbose information of copilot execution steps
--model TEXT OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.
```
### Execute Operations Based on Prompt Instructions
`kube-copilot execute INSTRUCTIONS` will execute operations based on prompt instructions.
It could also be used to ask any questions.
```sh
Usage: kube-copilot execute [OPTIONS] INSTRUCTIONS
execute operations based on prompt instructions
Options:
--verbose Enable verbose information of copilot execution steps
--model MODEL OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.
```
### Generate Kubernetes Manifests
Use the `kube-copilot generate` command to create Kubernetes manifests based on
the provided prompt instructions. After generating the manifests, you will be
prompted to confirm whether you want to apply them.
```sh
Usage: kube-copilot generate [OPTIONS] INSTRUCTIONS
generate Kubernetes manifests
Options:
--verbose Enable verbose information of copilot execution steps
--model TEXT OpenAI model to use for copilot execution, default is gpt-4
--help Show this message and exit.
```
## Contribution
The project is opensource at github [feiskyer/kube-copilot-python](https://github.com/feiskyer/kube-copilot-python) with Apache License. The Go version of this project is maintained at [feiskyer/kube-copilot](https://github.com/feiskyer/kube-copilot) with same license.
If you would like to contribute to the project, please follow these guidelines:
1. Fork the repository and clone it to your local machine.
2. Create a new branch for your changes.
3. Make your changes and commit them with a descriptive commit message.
4. Push your changes to your forked repository.
5. Open a pull request to the main repository.
Raw data
{
"_id": null,
"home_page": "https://github.com/feiskyer/kube-copilot",
"name": "kube-copilot",
"maintainer": null,
"docs_url": null,
"requires_python": "<4,>=3.11",
"maintainer_email": null,
"keywords": "kubernetes, copilot, openai, chatgpt, ai, agentic",
"author": "Pengfei Ni",
"author_email": "feiskyer@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/6f/52/50b95dc3032b3267d23154105d76d20a23db5652e01c559d1845dde93486/kube_copilot-0.2.0.tar.gz",
"platform": null,
"description": "# Kubernetes Copilot\n\nKubernetes Copilot powered by OpenAI.\n\nFeatures:\n\n- Automate Kubernetes cluster operations using ChatGPT (GPT-4 or GPT-3.5).\n- Diagnose and analyze the potential issues for Kubernetes workloads.\n- Generate the Kubernetes manifests based on the provided prompt instructions.\n- Utilize native kubectl and trivy commands for Kubernetes cluster access and security vulnerability scanning.\n\n## Install\n\n### Install Locally\n\nInstall the copilot with pip command below. It is highly recommended to use [pipx](https://pipx.pypa.io/stable/) or [venv](https://docs.python.org/3/library/venv.html) to install the copilot to avoid conflicts with other Python packages.\n\n```sh\n# Option 1: use pipx to install the copilot\npipx install kube-copilot\n\n# Option 2: use venv to install the copilot\npython3 -m venv copilotenv\nsource copilotenv/bin/activate\npip install kube-copilot\n\n# Option 3: Use pip to install the copilot (not recommended)\npip install kube-copilot\n```\n\n**Setup:**\n\n- Ensure [`kubectl`](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/) is installed on the local machine and the kubeconfig file is configured for Kubernetes cluster access.\n- Install [`trivy`](https://github.com/aquasecurity/trivy) to assess container image security issues (for the `audit` command).\n- Set the OpenAI [API key](https://platform.openai.com/account/api-keys) as the `OPENAI_API_KEY` environment variable to enable ChatGPT functionality.\n - For [Azure OpenAI service](https://learn.microsoft.com/en-us/azure/cognitive-services/openai/quickstart?tabs=command-line&pivots=rest-api#retrieve-key-and-endpoint), please set `AZURE_OPENAI_API_KEY=<your-key>` and `AZURE_OPENAI_ENDPOINT=https://<replace-this>.openai.azure.com/`.\n\n### Run in Kubernetes\n\n**Option 1: Web UI with Helm (recommended)**\n\n```sh\n# Option 1: OpenAI\nexport OPENAI_API_KEY=\"<replace-this>\"\nhelm install kube-copilot kube-copilot \\\n --repo https://feisky.xyz/kube-copilot \\\n --set openai.apiModel=gpt-4 \\\n --set openai.apiKey=$OPENAI_API_KEY\n\n# Option 2: Azure OpenAI Service\nexport AZURE_OPENAI_API_KEY=\"<replace-this>\"\nexport AZURE_OPENAI_ENDPOINT=\"<replace-this>\"\nhelm install kube-copilot kube-copilot \\\n --repo https://feisky.xyz/kube-copilot \\\n --set openai.apiModel=gpt-4 \\\n --set openai.apiKey=$AZURE_OPENAI_API_KEY \\\n --set openai.apiBase=$AZURE_OPENAI_ENDPOINT\n\n# Forwarding requests to the service\nkubectl port-forward service/kube-copilot 8080:80\necho \"Visit http://127.0.0.1:8080 to use the copilot\"\n```\n\n**Option 2: CLI with kubectl**\n\n```sh\nkubectl run -it --rm copilot \\\n --env=\"OPENAI_API_KEY=$OPENAI_API_KEY\" \\\n --restart=Never \\\n --image=ghcr.io/feiskyer/kube-copilot \\\n -- execute --verbose 'What Pods are using max memory in the cluster'\n\nkubectl run -it --rm copilot \\\n --env=\"AZURE_OPENAI_API_KEY=$AZURE_OPENAI_API_KEY\" \\\n --env=\"AZURE_OPENAI_ENDPOINT=$AZURE_OPENAI_ENDPOINT\" \\\n --restart=Never \\\n --image=ghcr.io/feiskyer/kube-copilot \\\n -- execute --verbose 'What Pods are using max memory in the cluster'\n```\n\nRefer [kubernetes.md](kubernetes.md) for more detailed steps.\n\n\n## How to use web UI\n\n![image-20230707191237629](assets/preview.jpg)\n\n## How to use CLI\n\nRunning directly in the terminal:\n\n```sh\nUsage: kube-copilot [OPTIONS] COMMAND [ARGS]...\n\n Kubernetes Copilot powered by OpenAI\n\nOptions:\n --version Show the version and exit.\n --help Show this message and exit.\n\nCommands:\n analyze analyze issues for a given resource\n audit audit security issues for a Pod\n diagnose diagnose problems for a Pod\n execute execute operations based on prompt instructions\n generate generate Kubernetes manifests\n```\n\n### Audit Security Issues for Pod\n\n`kube-copilot audit POD [NAMESPACE]` will audit security issues for a Pod:\n\n```sh\nUsage: kube-copilot audit [OPTIONS] POD [NAMESPACE]\n\n audit security issues for a Pod\n\nOptions:\n --verbose Enable verbose information of copilot execution steps\n --model MODEL OpenAI model to use for copilot execution, default is gpt-4\n --help Show this message and exit.\n```\n\n### Diagnose Problems for Pod\n\n`kube-copilot diagnose POD [NAMESPACE]` will diagnose problems for a Pod:\n\n```sh\nUsage: kube-copilot diagnose [OPTIONS] POD [NAMESPACE]\n\n diagnose problems for a Pod\n\nOptions:\n --verbose Enable verbose information of copilot execution steps\n --model MODEL OpenAI model to use for copilot execution, default is gpt-4\n --help Show this message and exit.\n```\n\n### Analyze Potential Issues for k8s Object\n\n`kube-copilot analyze RESOURCE NAME [NAMESPACE]` will analyze potential issues for the given resource object:\n\n```sh\nUsage: kube-copilot analyze [OPTIONS] RESOURCE NAME [NAMESPACE]\n\n analyze issues for a given resource\n\nOptions:\n --verbose Enable verbose information of copilot execution steps\n --model TEXT OpenAI model to use for copilot execution, default is gpt-4\n --help Show this message and exit.\n```\n\n### Execute Operations Based on Prompt Instructions\n\n`kube-copilot execute INSTRUCTIONS` will execute operations based on prompt instructions.\nIt could also be used to ask any questions.\n\n```sh\nUsage: kube-copilot execute [OPTIONS] INSTRUCTIONS\n\n execute operations based on prompt instructions\n\nOptions:\n --verbose Enable verbose information of copilot execution steps\n --model MODEL OpenAI model to use for copilot execution, default is gpt-4\n --help Show this message and exit.\n```\n\n### Generate Kubernetes Manifests\n\nUse the `kube-copilot generate` command to create Kubernetes manifests based on\nthe provided prompt instructions. After generating the manifests, you will be\nprompted to confirm whether you want to apply them.\n\n```sh\nUsage: kube-copilot generate [OPTIONS] INSTRUCTIONS\n\n generate Kubernetes manifests\n\nOptions:\n --verbose Enable verbose information of copilot execution steps\n --model TEXT OpenAI model to use for copilot execution, default is gpt-4\n --help Show this message and exit.\n```\n\n## Contribution\n\nThe project is opensource at github [feiskyer/kube-copilot-python](https://github.com/feiskyer/kube-copilot-python) with Apache License. The Go version of this project is maintained at [feiskyer/kube-copilot](https://github.com/feiskyer/kube-copilot) with same license.\n\nIf you would like to contribute to the project, please follow these guidelines:\n\n1. Fork the repository and clone it to your local machine.\n2. Create a new branch for your changes.\n3. Make your changes and commit them with a descriptive commit message.\n4. Push your changes to your forked repository.\n5. Open a pull request to the main repository.\n",
"bugtrack_url": null,
"license": null,
"summary": "Kubernetes Copilot",
"version": "0.2.0",
"project_urls": {
"Homepage": "https://github.com/feiskyer/kube-copilot",
"Repository": "https://github.com/feiskyer/kube-copilot"
},
"split_keywords": [
"kubernetes",
" copilot",
" openai",
" chatgpt",
" ai",
" agentic"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8743db15f2c981f36d728d56bbeb21d0222d7feff2aa232cbfdf0e4dacddc53c",
"md5": "e05a28924525f1757abace20cb62def4",
"sha256": "6dc561989b110aef5c1f0d9f11e4fe4e5da9c48c62b3679aa4df3bdd082a3b8c"
},
"downloads": -1,
"filename": "kube_copilot-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e05a28924525f1757abace20cb62def4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4,>=3.11",
"size": 21477,
"upload_time": "2024-11-13T13:11:16",
"upload_time_iso_8601": "2024-11-13T13:11:16.465565Z",
"url": "https://files.pythonhosted.org/packages/87/43/db15f2c981f36d728d56bbeb21d0222d7feff2aa232cbfdf0e4dacddc53c/kube_copilot-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6f5250b95dc3032b3267d23154105d76d20a23db5652e01c559d1845dde93486",
"md5": "cac87e047cf985f2fc5638e064e02465",
"sha256": "911f3f8174c9dde6a57949db538d39ab094af28879b451f3ab5c2f23b519601a"
},
"downloads": -1,
"filename": "kube_copilot-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "cac87e047cf985f2fc5638e064e02465",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.11",
"size": 20333,
"upload_time": "2024-11-13T13:11:18",
"upload_time_iso_8601": "2024-11-13T13:11:18.647632Z",
"url": "https://files.pythonhosted.org/packages/6f/52/50b95dc3032b3267d23154105d76d20a23db5652e01c559d1845dde93486/kube_copilot-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-13 13:11:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "feiskyer",
"github_project": "kube-copilot",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "kube-copilot"
}