add role: chatgpt

This commit is contained in:
Haitao Pan 2023-03-25 16:13:58 +08:00
parent 7076938402
commit cd75973054
8 changed files with 201 additions and 7 deletions

View 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

View File

@ -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

View File

@ -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

View 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

View File

@ -0,0 +1,2 @@
dependencies:
- role: cert-manager

View 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]

View File

@ -0,0 +1,2 @@
/clickhouse-keeper-k8s.iml
/.idea/

View 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