Add k8s example (#209)

This commit is contained in:
2022-04-15 23:18:04 +10:00
committed by GitHub
parent 6493c7cc19
commit 86252c1961
3 changed files with 187 additions and 2 deletions
+11
View File
@@ -27,6 +27,7 @@ Aria2 + AriaNg
- [自动 SSL](#自动-ssl) - [自动 SSL](#自动-ssl)
- [自行构建镜像](#自行构建镜像) - [自行构建镜像](#自行构建镜像)
- [Docker Hub](#docker-hub) - [Docker Hub](#docker-hub)
- [在 Kubernetes 里面运行 (我的最爱)](#在-kubernetes-里面运行-我的最爱)
- [使用 Docker compose 来运行](#使用-docker-compose-来运行) - [使用 Docker compose 来运行](#使用-docker-compose-来运行)
- [常见问题](#常见问题) - [常见问题](#常见问题)
@@ -146,6 +147,16 @@ docker build -t aria2-ui .
<https://hub.docker.com/r/wahyd4/aria2-ui/> <https://hub.docker.com/r/wahyd4/aria2-ui/>
## 在 Kubernetes 里面运行 (我的最爱)
首先,在Kubernetes 里面运行本Docker 镜像比在Docker 里面更加复杂,需要更多的相关知识,但是也更加有意思,给你带来更多的折腾之后的满足。
你可以使用`minikube`Docker 桌面应用自带Kubernetes 或者 使用`kubeadm`来安装Kubernetes,然后你需要根据自己的需要修改 [k8s-manifest.yaml](k8s-manifest.yaml) 来满足你的需要的需求。比如:
* NFS PV provider(使用NAS 作为容器存储)
* Ingress 访问, Oauth 登录灯其他访问控制
* VPN (让数据访问更加安全)
* 其他的一些 Sidecars
## 使用 Docker compose 来运行 ## 使用 Docker compose 来运行
请参考 <https://github.com/wahyd4/aria2-ariang-x-docker-compose> 请参考 <https://github.com/wahyd4/aria2-ariang-x-docker-compose>
+15 -2
View File
@@ -25,7 +25,8 @@ English | [简体中文](https://github.com/wahyd4/aria2-ariang-docker/blob/mast
- [Auto HTTPS enabling](#auto-https-enabling) - [Auto HTTPS enabling](#auto-https-enabling)
- [Build the image by yourself](#build-the-image-by-yourself) - [Build the image by yourself](#build-the-image-by-yourself)
- [Docker Hub](#docker-hub) - [Docker Hub](#docker-hub)
- [Usage it in Docker compose](#usage-it-in-docker-compose) - [Running it on Kubernetes (My favorite)](#running-it-on-kubernetes-my-favorite)
- [Running it with Docker compose](#running-it-with-docker-compose)
- [FAQ](#faq) - [FAQ](#faq)
One Docker image for file downloading, managing, sharing, as well as video playing and evening cloud storage synchronization. One Docker image for file downloading, managing, sharing, as well as video playing and evening cloud storage synchronization.
@@ -156,10 +157,22 @@ docker run -d --name aria2-ui -p 80:80 -p 443:443 -e DOMAIN=https://toozhao.com
<https://hub.docker.com/r/wahyd4/aria2-ui/> <https://hub.docker.com/r/wahyd4/aria2-ui/>
## Usage it in Docker compose ## Running it on Kubernetes (My favorite)
First of all, I have to say running this docker image on Kubernetes is more challenging and requires more knowledges than running it in raw Docker, but which is more powerful.
I couldn't tell you how to run it in Kubernetes step by step, but once you have a running Kubernetes cluster(You can install Kubernetes via `minikube`, `Docker desktop app`, `kubeadm` and many other tools.), then you can modify the [k8s-manifest.yaml](k8s-manifest.yaml) to satisfy all your requirements. Such as:
* NFS PV provider(Use your NAS as storage)
* Ingress access, Oauth login, more access controls via Nginx etc.
* VPN tunnel (Secure your traffic)
* Sidecars and so on.
## Running it with Docker compose
Please refer <https://github.com/wahyd4/aria2-ariang-x-docker-compose> Please refer <https://github.com/wahyd4/aria2-ariang-x-docker-compose>
## FAQ ## FAQ
1. When you running the docker image with non `80` port or you have HTTPS enabled, you will meet the error says `Aria2 Status Disconnected`, then you will need to set `ARIA2_EXTERNAL_PORT` and recreate your container. 1. When you running the docker image with non `80` port or you have HTTPS enabled, you will meet the error says `Aria2 Status Disconnected`, then you will need to set `ARIA2_EXTERNAL_PORT` and recreate your container.
2. If there is no speed at all when you downloading a BitTorrent file, please try to use a popular torrent file first to help the application to cache `DHT` file. Then the speed should get fast and fast, as well as downloading other links. 2. If there is no speed at all when you downloading a BitTorrent file, please try to use a popular torrent file first to help the application to cache `DHT` file. Then the speed should get fast and fast, as well as downloading other links.
+161
View File
@@ -0,0 +1,161 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: files
spec:
revisionHistoryLimit: 2
selector:
matchLabels:
app: files
replicas: 1
template:
metadata:
labels:
app: files
spec:
volumes:
# - name: config
# persistentVolumeClaim:
# claimName: configs-pv
- name: downloads
persistentVolumeClaim:
claimName: downloads-pv
containers:
- name: files
image: wahyd4/aria2-ui:latest
imagePullPolicy: Always
ports:
- containerPort: 80
name: files-port
protocol: TCP
env:
## Update this to the final port you would use in the browser
- name: ARIA2_EXTERNAL_PORT
value: "443"
- name: PUID
value: "1000"
- name: PGID
value: "1000"
volumeMounts:
# - name: config
# subPath: aria
# mountPath: /app/conf
# - name: config
# subPath: files/filebrowser.db
# mountPath: /app/filebrowser.db
- name: downloads
mountPath: /data
resources:
requests:
cpu: 150m
memory: 256Mi
limits:
cpu: 400m
memory: 1024Mi
# An example of encrypting the traffic with some vpn providerm, please update the configurations accordingly
# - name: openvpn
# image: qmcgaw/gluetun:latest
# securityContext:
# runAsUser: 0
# privileged: true
# capabilities:
# add: ["NET_ADMIN"]
# imagePullPolicy: Always
# env:
# - name: OPENVPN_USER
# value: xxxx
# - name: OPENVPN_PASSWORD
# valueFrom:
# secretKeyRef:
# name: openvpn-password
# key: password
# - name: VPNSP
# value: "private internet access"
# - name: PIA_ENCRYPTION
# value: normal
# - name: REGION
# value: "AU Sydney"
# - name: TZ
# value: Australia/Melbourne
# resources:
# requests:
# cpu: 100m
# memory: 126Mi
# limits:
# cpu: 100m
# memory: 126Mi
---
apiVersion: v1
kind: Service
metadata:
name: files
labels:
app: files
spec:
type: ClusterIP
ports:
- port: 80
targetPort: files-port
protocol: TCP
name: web
selector:
app: files
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: downloads-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 100Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/mnt/data"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: "downloads-pv"
spec:
storageClassName: "manual"
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
# ---
# ingress example
# apiVersion: networking.k8s.io/v1
# kind: Ingress
# metadata:
# name: files-ingress
# annotations:
# kubernetes.io/ingress.class: "nginx"
# kubernetes.io/tls-acme: "true"
# cert-manager.io/cluster-issuer: "letsencrypt-prod"
# nginx.ingress.kubernetes.io/proxy-body-size: 10240m
# spec:
# tls:
# - hosts:
# - xx.example.com
# secretName: files-tls
# rules:
# - host: xx.example.com
# http:
# paths:
# - path: /
# pathType: Prefix
# backend:
# service:
# name: files
# port:
# number: 80