add role: chatgpt
This commit is contained in:
parent
7076938402
commit
cd75973054
67
.github/workflows/pulumi-cloud-resource-chatgpt.yml
vendored
Normal file
67
.github/workflows/pulumi-cloud-resource-chatgpt.yml
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
name: setup redis
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
branches: [ 'main' ]
|
||||
|
||||
env:
|
||||
DNS_AK: ${{ secrets.DNS_AK }}
|
||||
DNS_SK: ${{ secrets.DNS_SK }}
|
||||
SSH_PUBLIC_KEY: ${{ secrets.SSH_PUBLIC_KEY }}
|
||||
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
|
||||
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_PASS }}
|
||||
PULUMI_DISABLE_CI_DETECTION: true
|
||||
AWS_REGION: ap-east-1
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./playbook
|
||||
|
||||
jobs:
|
||||
redis:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: run playbook
|
||||
shell: bash
|
||||
run: |
|
||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
||||
|
||||
sudo apt install jq ansible -y
|
||||
sudo rm -rvf /home/runner/.pulumi/
|
||||
curl -o setup.sh https://get.pulumi.com && sh setup.sh --version 3.57.0
|
||||
|
||||
pulumi login s3://pulumi-aws-dev
|
||||
pulumi stack select dev
|
||||
|
||||
db_server_public_ip=`pulumi stack output --json | jq '.db_server_public_ip'`
|
||||
k3s_server_public_ip=`pulumi stack output --json | jq '.k3s_server_public_ip'`
|
||||
|
||||
mkdir -pv ~/.ssh/
|
||||
cat > ~/.ssh/id_rsa << EOF
|
||||
${SSH_PRIVATE_KEY}
|
||||
EOF
|
||||
sudo chmod 0400 ~/.ssh/id_rsa
|
||||
md5sum ~/.ssh/id_rsa
|
||||
|
||||
cat > hosts/inventory << EOF
|
||||
[master]
|
||||
k3s-server ansible_host=$k3s_server_public_ip
|
||||
|
||||
[node]
|
||||
db-server ansible_host=$db_server_public_ip
|
||||
|
||||
[all:vars]
|
||||
ansible_port=22
|
||||
ansible_ssh_user=ubuntu
|
||||
ansible_ssh_private_key_file=~/.ssh/id_rsa
|
||||
ansible_host_key_checking=False
|
||||
dns_ak=$DNS_AK
|
||||
dns_sk=$DNS_SK
|
||||
lb_ip=$k3s_server_public_ip
|
||||
EOF
|
||||
ansible-playbook -i hosts/inventory jobs/init_chatgpt -D
|
||||
@ -100,6 +100,6 @@ jobs:
|
||||
lb_ip=$k3s_server_public_ip
|
||||
EOF
|
||||
ansible-playbook -i hosts/inventory jobs/init_k3s_cluster -D
|
||||
ansible-playbook -i hosts/inventory jobs/init_mysql -D
|
||||
ansible-playbook -i hosts/inventory jobs/init_log_agent -D
|
||||
ansible-playbook -i hosts/inventory jobs/init_clickhouse -D
|
||||
#ansible-playbook -i hosts/inventory jobs/init_mysql -D
|
||||
#ansible-playbook -i hosts/inventory jobs/init_log_agent -D
|
||||
#ansible-playbook -i hosts/inventory jobs/init_clickhouse -D
|
||||
|
||||
@ -15,17 +15,17 @@ ssh_key = config.get_env('SSH_PUBLIC_KEY')
|
||||
key_pair = aws.key_pair(resource_name="my_ssh_key", public_key=ssh_key)
|
||||
|
||||
k3s_server = aws.ec2(
|
||||
arch = 'amd64',
|
||||
arch = 'arm64',
|
||||
ec2_type = 't4g.xlarge',
|
||||
ec2_name = 'webui.onwalk.net',
|
||||
ec2_type = 't3.xlarge',
|
||||
key_name = key_pair,
|
||||
subnet_id = subnets[0],
|
||||
security_group_id = sg_id
|
||||
)
|
||||
db_server = aws.ec2(
|
||||
arch = 'arm64',
|
||||
arch = 'amd64',
|
||||
ec2_type = 't3.small',
|
||||
ec2_name = 'clickhouse.onwalk.net',
|
||||
ec2_type = 't4g.small',
|
||||
key_name = key_pair,
|
||||
subnet_id = subnets[0],
|
||||
security_group_id = sg_id
|
||||
|
||||
13
playbook/jobs/init_chatgpt
Normal file
13
playbook/jobs/init_chatgpt
Normal file
@ -0,0 +1,13 @@
|
||||
- name: set chatgpt with ec2 nodes
|
||||
hosts: all
|
||||
user: root
|
||||
become: yes
|
||||
gather_facts: yes
|
||||
tasks:
|
||||
- include_role:
|
||||
name: chatgpt
|
||||
vars:
|
||||
group: master
|
||||
namespace: chatgpt
|
||||
domain: onwalk.net
|
||||
secret: chatgpt-tls
|
||||
2
playbook/roles/chatgpt/meta/main.yml
Normal file
2
playbook/roles/chatgpt/meta/main.yml
Normal file
@ -0,0 +1,2 @@
|
||||
dependencies:
|
||||
- role: cert-manager
|
||||
11
playbook/roles/chatgpt/tasks/main.yml
Executable file
11
playbook/roles/chatgpt/tasks/main.yml
Executable file
@ -0,0 +1,11 @@
|
||||
- name: Prep NameSpace
|
||||
shell: "kubectl create namespace chatgpt || echo true"
|
||||
|
||||
- name: sync clickhouse deploy yaml
|
||||
template: src=templates/{{ item }} dest=/tmp/{{ item }} owner=root group=root mode=0644 force=yes unsafe_writes=yes
|
||||
with_items:
|
||||
- chat-with-gpt.yaml
|
||||
|
||||
- name: Setup ChatGPT Server
|
||||
shell: "kubectl apply -f /tmp/chat-with-gpt.yaml"
|
||||
when: inventory_hostname in groups[group]
|
||||
2
playbook/roles/chatgpt/templates/.gitignore
vendored
Normal file
2
playbook/roles/chatgpt/templates/.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/clickhouse-keeper-k8s.iml
|
||||
/.idea/
|
||||
99
playbook/roles/chatgpt/templates/chat-with-gpt.yaml
Normal file
99
playbook/roles/chatgpt/templates/chat-with-gpt.yaml
Normal file
@ -0,0 +1,99 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
annotations:
|
||||
meta.helm.sh/release-name: chatgpt
|
||||
meta.helm.sh/release-namespace: chatgpt
|
||||
labels:
|
||||
app.kubernetes.io/name: chargpt
|
||||
app.kubernetes.io/version: 0.2.0
|
||||
app.kubernetes.io/instance: chatgpt
|
||||
name: chatgpt
|
||||
namespace: chatgpt
|
||||
spec:
|
||||
internalTrafficPolicy: Cluster
|
||||
ipFamilies:
|
||||
- IPv4
|
||||
ipFamilyPolicy: SingleStack
|
||||
ports:
|
||||
- name: http
|
||||
port: 3000
|
||||
protocol: TCP
|
||||
targetPort: http
|
||||
selector:
|
||||
app.kubernetes.io/name: chatgpt
|
||||
app.kubernetes.io/instance: chatgpt
|
||||
sessionAffinity: None
|
||||
type: ClusterIP
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/instance: chatgpt
|
||||
app.kubernetes.io/name: chatgpt
|
||||
name: chatgpt
|
||||
namespace: chatgpt
|
||||
spec:
|
||||
progressDeadlineSeconds: 600
|
||||
replicas: 1
|
||||
revisionHistoryLimit: 10
|
||||
selector:
|
||||
matchLabels:
|
||||
app.kubernetes.io/name: chatgpt
|
||||
app.kubernetes.io/instance: chatgpt
|
||||
strategy:
|
||||
rollingUpdate:
|
||||
maxSurge: 25%
|
||||
maxUnavailable: 25%
|
||||
type: RollingUpdate
|
||||
template:
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
labels:
|
||||
app.kubernetes.io/instance: mirrors
|
||||
app.kubernetes.io/name: nginx
|
||||
spec:
|
||||
containers:
|
||||
- image: nginx:latest
|
||||
imagePullPolicy: Always
|
||||
name: nginx
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
name: http
|
||||
protocol: TCP
|
||||
resources: {}
|
||||
securityContext: {}
|
||||
terminationMessagePath: /dev/termination-log
|
||||
terminationMessagePolicy: File
|
||||
dnsPolicy: ClusterFirst
|
||||
restartPolicy: Always
|
||||
schedulerName: default-scheduler
|
||||
securityContext: {}
|
||||
terminationGracePeriodSeconds: 30
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
labels:
|
||||
app.kubernetes.io/instance: chatgpt
|
||||
app.kubernetes.io/name: chatgpt
|
||||
name: chatgpt
|
||||
namespace: chatgpt
|
||||
spec:
|
||||
ingressClassName: nginx
|
||||
rules:
|
||||
- host: chatgpt.onwalk.net
|
||||
http:
|
||||
paths:
|
||||
- backend:
|
||||
service:
|
||||
name: chatgpt
|
||||
port:
|
||||
number: 3000
|
||||
path: /
|
||||
pathType: ImplementationSpecific
|
||||
tls:
|
||||
- hosts:
|
||||
- chatgpt.onwalk.net
|
||||
secretName: chatgpt-tls
|
||||
Loading…
Reference in New Issue
Block a user