| @ -1,3 +1,5 @@ | |||||
| kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml | |||||
| #kubectl create -f https://docs.projectcalico.org/manifests/tigera-operator.yaml | |||||
| kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.3/manifests/tigera-operator.yaml | |||||
| kubectl create -f ./custom-resources.yaml | kubectl create -f ./custom-resources.yaml | ||||
| @ -0,0 +1,4 @@ | |||||
| # Fuente: https://cert-manager.io/docs/installation/kubectl/ | |||||
| kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.1/cert-manager.yaml | |||||
| @ -0,0 +1,24 @@ | |||||
| # Fuente: https://docs.k0sproject.io/v1.24.4+k0s.0/examples/nginx-ingress/ | |||||
| kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.3/deploy/static/provider/baremetal/deploy.yaml | |||||
| watch kubectl get pods -n ingress-nginx | |||||
| kubectl get services -n ingress-nginx | |||||
| kubectl -n ingress-nginx get ingressclasses | |||||
| kubectl -n ingress-nginx annotate ingressclasses nginx ingressclass.kubernetes.io/is-default-class="true" | |||||
| echo "Intenta conectar: curl <worker-external-ip>:<node-port>" | |||||
| echo "La dirección es la del servidor y el puerto NodePort el resultado de kubectl get services -n ingress-nginx" | |||||
| echo "Como no hay ningún servicio configurado, dará 404 Not Found" | |||||
| # crear pequeña app verificación | |||||
| kubectl apply -f app-verificacion.yaml | |||||
| # conectar (dirección y puerto igual que arriba) | |||||
| curl k8s-server:32478 -H 'Host: web.example.com' | |||||
| # resultado correcto: | |||||
| # | |||||
| # <html><body><h1>It works!</h1></body></html> | |||||
| # | |||||
| @ -0,0 +1,24 @@ | |||||
| apiVersion: v1 | |||||
| kind: Namespace | |||||
| metadata: | |||||
| name: cert-manager-test | |||||
| --- | |||||
| apiVersion: cert-manager.io/v1 | |||||
| kind: Issuer | |||||
| metadata: | |||||
| name: test-selfsigned | |||||
| namespace: cert-manager-test | |||||
| spec: | |||||
| selfSigned: {} | |||||
| --- | |||||
| apiVersion: cert-manager.io/v1 | |||||
| kind: Certificate | |||||
| metadata: | |||||
| name: selfsigned-cert | |||||
| namespace: cert-manager-test | |||||
| spec: | |||||
| dnsNames: | |||||
| - example.com | |||||
| secretName: selfsigned-cert-tls | |||||
| issuerRef: | |||||
| name: test-selfsigned | |||||
| @ -0,0 +1,60 @@ | |||||
| apiVersion: v1 | |||||
| kind: Namespace | |||||
| metadata: | |||||
| name: web | |||||
| --- | |||||
| apiVersion: apps/v1 | |||||
| kind: Deployment | |||||
| metadata: | |||||
| name: web-server | |||||
| namespace: web | |||||
| spec: | |||||
| selector: | |||||
| matchLabels: | |||||
| app: web | |||||
| template: | |||||
| metadata: | |||||
| labels: | |||||
| app: web | |||||
| spec: | |||||
| containers: | |||||
| - name: httpd | |||||
| image: httpd:2.4.53-alpine | |||||
| ports: | |||||
| - containerPort: 80 | |||||
| --- | |||||
| apiVersion: v1 | |||||
| kind: Service | |||||
| metadata: | |||||
| name: web-server-service | |||||
| namespace: web | |||||
| spec: | |||||
| selector: | |||||
| app: web | |||||
| ports: | |||||
| - protocol: TCP | |||||
| # port: 5000 | |||||
| port: 80 | |||||
| targetPort: 80 | |||||
| type: LoadBalancer | |||||
| externalIPs: | |||||
| - 192.168.1.147 | |||||
| --- | |||||
| apiVersion: networking.k8s.io/v1 | |||||
| kind: Ingress | |||||
| metadata: | |||||
| name: web-server-ingress | |||||
| namespace: web | |||||
| spec: | |||||
| ingressClassName: nginx | |||||
| rules: | |||||
| - host: web.example.com | |||||
| http: | |||||
| paths: | |||||
| - path: / | |||||
| pathType: Prefix | |||||
| backend: | |||||
| service: | |||||
| name: web-server-service | |||||
| port: | |||||
| number: 5000 | |||||
| @ -0,0 +1,86 @@ | |||||
| { | |||||
| "production": [ | |||||
| { | |||||
| "type": "inverters", | |||||
| "activeCount": 9, | |||||
| "readingTime": 1696834651, | |||||
| "wNow": 44, | |||||
| "whLifetime": 280317 | |||||
| }, | |||||
| { | |||||
| "type": "eim", | |||||
| "activeCount": 1, | |||||
| "measurementType": "production", | |||||
| "readingTime": 1696834652, | |||||
| "wNow": 57.714, | |||||
| "whLifetime": 10746201.644, | |||||
| "varhLeadLifetime": 0.064, | |||||
| "varhLagLifetime": 2892249.348, | |||||
| "vahLifetime": 12747185.198, | |||||
| "rmsCurrent": 0.808, | |||||
| "rmsVoltage": 228.763, | |||||
| "reactPwr": 144.055, | |||||
| "apprntPwr": 183.451, | |||||
| "pwrFactor": 0.31, | |||||
| "whToday": 12.644, | |||||
| "whLastSevenDays": 106938.644, | |||||
| "vahToday": 1312.198, | |||||
| "varhLeadToday": 0.064, | |||||
| "varhLagToday": 1263.348 | |||||
| } | |||||
| ], | |||||
| "consumption": [ | |||||
| { | |||||
| "type": "eim", | |||||
| "activeCount": 1, | |||||
| "measurementType": "total-consumption", | |||||
| "readingTime": 1696834652, | |||||
| "wNow": 221.534, | |||||
| "whLifetime": 15933238.526, | |||||
| "varhLeadLifetime": 6361261.526, | |||||
| "varhLagLifetime": -2714503.178, | |||||
| "vahLifetime": 18970707.158, | |||||
| "rmsCurrent": 3.189, | |||||
| "rmsVoltage": 228.728, | |||||
| "reactPwr": -304.033, | |||||
| "apprntPwr": 729.311, | |||||
| "pwrFactor": 0.3, | |||||
| "whToday": 2254.526, | |||||
| "whLastSevenDays": 96.526, | |||||
| "vahToday": 5011.158, | |||||
| "varhLeadToday": 4154.526, | |||||
| "varhLagToday": 0 | |||||
| }, | |||||
| { | |||||
| "type": "eim", | |||||
| "activeCount": 1, | |||||
| "measurementType": "net-consumption", | |||||
| "readingTime": 1696834652, | |||||
| "wNow": 163.82, | |||||
| "whLifetime": 5188228.188, | |||||
| "varhLeadLifetime": 6361261.59, | |||||
| "varhLagLifetime": 177746.171, | |||||
| "vahLifetime": 18970707.158, | |||||
| "rmsCurrent": 2.38, | |||||
| "rmsVoltage": 228.728, | |||||
| "reactPwr": -448.088, | |||||
| "apprntPwr": 544.464, | |||||
| "pwrFactor": 0.3, | |||||
| "whToday": 0, | |||||
| "whLastSevenDays": 0, | |||||
| "vahToday": 0, | |||||
| "varhLeadToday": 0, | |||||
| "varhLagToday": 0 | |||||
| } | |||||
| ], | |||||
| "storage": [ | |||||
| { | |||||
| "type": "acb", | |||||
| "activeCount": 0, | |||||
| "readingTime": 0, | |||||
| "wNow": 0, | |||||
| "whNow": 0, | |||||
| "state": "idle" | |||||
| } | |||||
| ] | |||||
| } | |||||
| @ -0,0 +1 @@ | |||||
| {"production":[{"type":"inverters","activeCount":9,"readingTime":1696834651,"wNow":44,"whLifetime":280317},{"type":"eim","activeCount":1,"measurementType":"production","readingTime":1696834652,"wNow":57.714,"whLifetime":10746201.644,"varhLeadLifetime":0.064,"varhLagLifetime":2892249.348,"vahLifetime":12747185.198,"rmsCurrent":0.808,"rmsVoltage":228.763,"reactPwr":144.055,"apprntPwr":183.451,"pwrFactor":0.31,"whToday":12.644,"whLastSevenDays":106938.644,"vahToday":1312.198,"varhLeadToday":0.064,"varhLagToday":1263.348}],"consumption":[{"type":"eim","activeCount":1,"measurementType":"total-consumption","readingTime":1696834652,"wNow":221.534,"whLifetime":15933238.526,"varhLeadLifetime":6361261.526,"varhLagLifetime":-2714503.178,"vahLifetime":18970707.158,"rmsCurrent":3.189,"rmsVoltage":228.728,"reactPwr":-304.033,"apprntPwr":729.311,"pwrFactor":0.3,"whToday":2254.526,"whLastSevenDays":96.526,"vahToday":5011.158,"varhLeadToday":4154.526,"varhLagToday":0.0},{"type":"eim","activeCount":1,"measurementType":"net-consumption","readingTime":1696834652,"wNow":163.82,"whLifetime":5188228.188,"varhLeadLifetime":6361261.59,"varhLagLifetime":177746.171,"vahLifetime":18970707.158,"rmsCurrent":2.38,"rmsVoltage":228.728,"reactPwr":-448.088,"apprntPwr":544.464,"pwrFactor":0.3,"whToday":0,"whLastSevenDays":0,"vahToday":0,"varhLeadToday":0,"varhLagToday":0}],"storage":[{"type":"acb","activeCount":0,"readingTime":0,"wNow":0,"whNow":0,"state":"idle"}]} | |||||
| @ -0,0 +1,18 @@ | |||||
| apiVersion: networking.k8s.io/v1 | |||||
| kind: Ingress | |||||
| metadata: | |||||
| name: cluster-ingress | |||||
| annotations: | |||||
| kubernetes.io/ingress.class: nginx | |||||
| spec: | |||||
| rules: | |||||
| - http: | |||||
| paths: | |||||
| - pathType: Prefix | |||||
| path: "/" | |||||
| backend: | |||||
| service: | |||||
| name: vaultwarden | |||||
| port: | |||||
| number: 80 | |||||
| @ -0,0 +1,17 @@ | |||||
| #!/bin/bash | |||||
| if [ "$1" = "i" ] | |||||
| then | |||||
| for i in firefly gogs mealie mediawiki navidrome nextcloud repostajes wordpress | |||||
| do | |||||
| helm install $i ./$i-chart --namespace=$i --create-namespace | |||||
| done | |||||
| elif [ "$1" = "u" ] | |||||
| then | |||||
| for i in firefly gogs mealie mediawiki navidrome nextcloud repostajes wordpress | |||||
| do | |||||
| helm uninstall $i -n $i | |||||
| done | |||||
| else | |||||
| echo "Falta comando: i=instalar, u=desinstalar" | |||||
| fi | |||||
| @ -0,0 +1,24 @@ | |||||
| apiVersion: networking.k8s.io/v1 | |||||
| kind: Ingress | |||||
| metadata: | |||||
| name: mediawiki-ingress | |||||
| namespace: mediawiki | |||||
| annotations: | |||||
| kubernetes.io/ingress.class: nginx | |||||
| cert-manager.io/cluster-issuer: letsencrypt-production | |||||
| spec: | |||||
| tls: | |||||
| - hosts: | |||||
| - reymota.ddns.net | |||||
| secretName: letsencrypt-production | |||||
| rules: | |||||
| - host: "reymota.ddns.net" | |||||
| http: | |||||
| paths: | |||||
| - pathType: Prefix | |||||
| path: "/mediawiki" | |||||
| backend: | |||||
| service: | |||||
| name: mediawiki | |||||
| port: | |||||
| number: 80 | |||||
| @ -0,0 +1,23 @@ | |||||
| # Patterns to ignore when building packages. | |||||
| # This supports shell glob matching, relative path matching, and | |||||
| # negation (prefixed with !). Only one pattern per line. | |||||
| .DS_Store | |||||
| # Common VCS dirs | |||||
| .git/ | |||||
| .gitignore | |||||
| .bzr/ | |||||
| .bzrignore | |||||
| .hg/ | |||||
| .hgignore | |||||
| .svn/ | |||||
| # Common backup files | |||||
| *.swp | |||||
| *.bak | |||||
| *.tmp | |||||
| *.orig | |||||
| *~ | |||||
| # Various IDEs | |||||
| .project | |||||
| .idea/ | |||||
| *.tmproj | |||||
| .vscode/ | |||||
| @ -0,0 +1,24 @@ | |||||
| apiVersion: v2 | |||||
| name: vw-chart | |||||
| description: A Helm chart for Kubernetes | |||||
| # A chart can be either an 'application' or a 'library' chart. | |||||
| # | |||||
| # Application charts are a collection of templates that can be packaged into versioned archives | |||||
| # to be deployed. | |||||
| # | |||||
| # Library charts provide useful utilities or functions for the chart developer. They're included as | |||||
| # a dependency of application charts to inject those utilities and functions into the rendering | |||||
| # pipeline. Library charts do not define any templates and therefore cannot be deployed. | |||||
| type: application | |||||
| # This is the chart version. This version number should be incremented each time you make changes | |||||
| # to the chart and its templates, including the app version. | |||||
| # Versions are expected to follow Semantic Versioning (https://semver.org/) | |||||
| version: 0.1.0 | |||||
| # This is the version number of the application being deployed. This version number should be | |||||
| # incremented each time you make changes to the application. Versions are not expected to | |||||
| # follow Semantic Versioning. They should reflect the version the application is using. | |||||
| # It is recommended to use it with quotes. | |||||
| appVersion: "1.16.0" | |||||
| @ -0,0 +1,19 @@ | |||||
| -----BEGIN CERTIFICATE----- | |||||
| MIIDFzCCAf+gAwIBAgIUIyQe/5Krya0OsorqxPbx1KutKDAwDQYJKoZIhvcNAQEL | |||||
| BQAwGzEZMBcGA1UEAwwQcmV5bW90YS5kZG5zLm5ldDAeFw0yMzEwMjQxMjMzMDNa | |||||
| Fw0yNDEwMjMxMjMzMDNaMBsxGTAXBgNVBAMMEHJleW1vdGEuZGRucy5uZXQwggEi | |||||
| MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyABwr1N5aKBpgWkbkg326d047 | |||||
| xblOry9EXeAuV3GXI7FObpJPwIV6kKYrfnWgPz4mff5lNrh8ZmCGbP4PJMkRvmp0 | |||||
| em46arPRP47Blf9kdKuIJQwCu2l8n4yGnLEMIQalJU7BI5F3AM9HnlYagafHYJOU | |||||
| pzKhdWk3lq8oelDvHVYNZNt5Bc9xkHKn9tAziv91ooSQvRMM4r8Jl3KYsOb4dAbH | |||||
| bBFY+ubBSjUp30TUqcwBw1MTrcy2jhwPtTUXRXsR+41sGobU1u+TIY0mgVonDror | |||||
| ryElPS4eCYHrJK64BuiHMJtuAWadeXOsnZk+UKIrjcJQmnLkihr70s4gc7SbAgMB | |||||
| AAGjUzBRMB0GA1UdDgQWBBQZQQ/aIg7STe53syLfFdk1kyVU0zAfBgNVHSMEGDAW | |||||
| gBQZQQ/aIg7STe53syLfFdk1kyVU0zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3 | |||||
| DQEBCwUAA4IBAQAP1QlFNI7FjGsW9uCQebqSX/MUQ0Qt3z3Rn00IVYb1dTlmQGmo | |||||
| Sv4B6aEtwkugsxJoSqnDKIY94ZYpS9EHD6t9wYbiBmL+mXFOpJk1b/QMb5sB/rMA | |||||
| CWQbz6/7MHbphe5/lp3uVo9MEBzhi2DfUCkJ61n6iQIOOuUBjdmD8qhUTA80W0JB | |||||
| oxhgMh9z0ZpkJ7OlMbrkl3kVGHz0OxS8W3MAWQJke0F6sZlFC0UEqUWbgvBzQXrv | |||||
| 9MeNChPB382X5USTn3N7Ge3gigDYEbURJJ/7y2sJpoX8sa8LKD0aag5eX9MbkXEN | |||||
| oucnXJSQ8q/Q55uesiHb3sjvgP9GyGgK2J8X | |||||
| -----END CERTIFICATE----- | |||||
| @ -0,0 +1,27 @@ | |||||
| -----BEGIN RSA PRIVATE KEY----- | |||||
| MIIEowIBAAKCAQEAsgAcK9TeWigaYFpG5IN9undOO8W5Tq8vRF3gLldxlyOxTm6S | |||||
| T8CFepCmK351oD8+Jn3+ZTa4fGZghmz+DyTJEb5qdHpuOmqz0T+OwZX/ZHSriCUM | |||||
| ArtpfJ+MhpyxDCEGpSVOwSORdwDPR55WGoGnx2CTlKcyoXVpN5avKHpQ7x1WDWTb | |||||
| eQXPcZByp/bQM4r/daKEkL0TDOK/CZdymLDm+HQGx2wRWPrmwUo1Kd9E1KnMAcNT | |||||
| E63Mto4cD7U1F0V7EfuNbBqG1NbvkyGNJoFaJw66K68hJT0uHgmB6ySuuAbohzCb | |||||
| bgFmnXlzrJ2ZPlCiK43CUJpy5Ioa+9LOIHO0mwIDAQABAoIBAGIVf3CDtxa0/HvV | |||||
| ozTuZAypC1oShR8fl4szs4G1u6kOCPjwIv2BV8wHAxn6cDSiRMwPJ2x8b8JU46GP | |||||
| U5viqE13wM94W18jRvzp6e8wiW/Afnjh+TFUNjdu74+JrmHBnRjJaxEwWUrbDl0n | |||||
| mci3Y02RISGL1HF18kmoZdKHPCvV8kAh/Hj4qDi5X1N3lsKOzubYk2THHtlDy7V7 | |||||
| qo9KhTthgGjemSljFQBuyUDaj2+HVoeRtm5dK+m1VjoRuaX6VagW0oMQqz64+b3N | |||||
| GLX/TClzx7zKgY4fSkrhNcpxPUG5I4cg3yuZnm5kO4zNCRKk9l4nETMNE6D9Xd// | |||||
| yliEtEECgYEA1X6L3RL4KRgsVsMk4gUHXSI4G4S5WTGGTaklkOqI/ZDgGnXBTjZY | |||||
| 73jKaKSeO0KZ74gm1nFERs5B5MY+/SwnXPF1uTpcjq4JELpEecqRzwc3qNt80vxL | |||||
| F6RE7REU+cBOLCT1XMujLhe5NjFU9Ra4iCbbYP2cjAf0NCd/uo4mRqECgYEA1XB/ | |||||
| oJXA2tUYM3rHRGNmcFviKvefk8XVsrEHQfnFr04Uwe6dRZzp7eanNxcEOiK9d401 | |||||
| 03N+bRjlrRKUhnqyDsUCYDp7ObwkxQCycIjQst3FuEe83mnuKirUctso8DPTRIfM | |||||
| r0estywFxKM2Dh03Pxee9+eoTIs2amrUmgYR/bsCgYBmx/CPsvUz24ZlErer9F3S | |||||
| MYovfVs6HISa2MbUGIVxBZFOS8iPXcy9JTrU3AOtZef0EGkaLhd/uwawG9zxR5N/ | |||||
| xGM3lGhA7HpCylnzBFnkAIaETX6vmHSSYiwosWOWxUUdLYHOdd8Obq9k7qUHBTQ7 | |||||
| n/FXpWD7bUzc2vM8HflBYQKBgBhggeMYV29m2R3ADxQreh6pD9qyb2JUPQTsnRSW | |||||
| 71IHS+2eUA4MTtdh+YUcNtpg71zBHv2oei8BofGzZo05ZC61p4DQDRTZ/SUW4Epk | |||||
| Bdn35EYYw2RvmsjsHVmE2FcexClWjTUTrZE6EOqVbW4NPisRipFrvtgHKk7bJq70 | |||||
| tIdTAoGBAIKN54AP9ole2XsJA4+bvdRYYvRZ+yXb365y8MyP95oVi4+dxpkgbMoX | |||||
| wULVI1/aOwqXGZPJNJDMfahD/SPy7jnOgJofUBHwnp4/5asZ/vE4CsXTHnEVYgey | |||||
| trnmHVEj7GKXKr/Z/smo0J2Z28yT/bAv7N1d4GJ4zxBjVEKazNR1 | |||||
| -----END RSA PRIVATE KEY----- | |||||
| @ -0,0 +1,12 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolume | |||||
| metadata: | |||||
| name: vw-folder | |||||
| spec: | |||||
| capacity: | |||||
| storage: 10Gi | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| hostPath: | |||||
| path: "/mnt/Externo/vaultwarden" | |||||
| @ -0,0 +1,11 @@ | |||||
| apiVersion: v1 | |||||
| data: | |||||
| .dockerconfigjson: eyJhdXRocyI6eyJkb2NrZXItcmVnaXN0cnk6MzIwMDAiOnsidXNlcm5hbWUiOiJjcmV5bG9wZXoiLCJwYXNzd29yZCI6IlJleS0xMTc2IiwiYXV0aCI6IlkzSmxlV3h2Y0dWNk9sSmxlUzB4TVRjMiJ9fX0= | |||||
| kind: Secret | |||||
| metadata: | |||||
| creationTimestamp: "2023-01-29T10:54:14Z" | |||||
| name: reg-cred-secret | |||||
| namespace: vaultwarden | |||||
| resourceVersion: "19890385" | |||||
| uid: 66b3b7c5-26c1-4e5a-af4e-dc973aaafe4b | |||||
| type: kubernetes.io/dockerconfigjson | |||||
| @ -0,0 +1,72 @@ | |||||
| apiVersion: v1 | |||||
| kind: Service | |||||
| metadata: | |||||
| name: vaultwarden | |||||
| namespace: vaultwarden | |||||
| labels: | |||||
| app: vaultwarden | |||||
| spec: | |||||
| # type: NodePort | |||||
| ports: | |||||
| - port: 80 | |||||
| # nodePort: 31078 | |||||
| targetPort: vaultwarden | |||||
| protocol: TCP | |||||
| type: LoadBalancer | |||||
| externalIPs: | |||||
| - 192.168.1.147 | |||||
| selector: | |||||
| app: vaultwarden | |||||
| tier: frontend | |||||
| --- | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| name: vw-pv-claim | |||||
| namespace: vaultwarden | |||||
| labels: | |||||
| app: vaultwarden | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| storageClassName: "" | |||||
| resources: | |||||
| requests: | |||||
| storage: 10Gi | |||||
| --- | |||||
| apiVersion: apps/v1 | |||||
| kind: Deployment | |||||
| metadata: | |||||
| name: vaultwarden | |||||
| namespace: vaultwarden | |||||
| labels: | |||||
| app: vaultwarden | |||||
| spec: | |||||
| selector: | |||||
| matchLabels: | |||||
| app: vaultwarden | |||||
| tier: frontend | |||||
| strategy: | |||||
| type: Recreate | |||||
| template: | |||||
| metadata: | |||||
| labels: | |||||
| app: vaultwarden | |||||
| tier: frontend | |||||
| spec: | |||||
| containers: | |||||
| # - image: vaultwarden | |||||
| - image: docker-registry:32000/vaultwarden:1.0 | |||||
| name: vaultwarden | |||||
| ports: | |||||
| - containerPort: 80 | |||||
| name: vaultwarden | |||||
| volumeMounts: | |||||
| - name: vaultwarden-persistent-storage | |||||
| mountPath: /data | |||||
| imagePullSecrets: | |||||
| - name: reg-cred-secret | |||||
| volumes: | |||||
| - name: vaultwarden-persistent-storage | |||||
| persistentVolumeClaim: | |||||
| claimName: vw-pv-claim | |||||
| @ -0,0 +1,21 @@ | |||||
| apiVersion: networking.k8s.io/v1 | |||||
| kind: Ingress | |||||
| metadata: | |||||
| name: vaultwarden-ingress | |||||
| namespace: vaultwarden | |||||
| spec: | |||||
| tls: | |||||
| - hosts: | |||||
| - reymota.ddns.net | |||||
| secretName: mi-tls-secret | |||||
| rules: | |||||
| - host: "reymota.ddns.net" | |||||
| http: | |||||
| paths: | |||||
| - pathType: Prefix | |||||
| path: "/" | |||||
| backend: | |||||
| service: | |||||
| name: vaultwarden | |||||
| port: | |||||
| number: 80 | |||||
| @ -0,0 +1,82 @@ | |||||
| # Default values for vw-chart. | |||||
| # This is a YAML-formatted file. | |||||
| # Declare variables to be passed into your templates. | |||||
| replicaCount: 1 | |||||
| image: | |||||
| repository: nginx | |||||
| pullPolicy: IfNotPresent | |||||
| # Overrides the image tag whose default is the chart appVersion. | |||||
| tag: "" | |||||
| imagePullSecrets: [] | |||||
| nameOverride: "" | |||||
| fullnameOverride: "" | |||||
| serviceAccount: | |||||
| # Specifies whether a service account should be created | |||||
| create: true | |||||
| # Annotations to add to the service account | |||||
| annotations: {} | |||||
| # The name of the service account to use. | |||||
| # If not set and create is true, a name is generated using the fullname template | |||||
| name: "" | |||||
| podAnnotations: {} | |||||
| podSecurityContext: {} | |||||
| # fsGroup: 2000 | |||||
| securityContext: {} | |||||
| # capabilities: | |||||
| # drop: | |||||
| # - ALL | |||||
| # readOnlyRootFilesystem: true | |||||
| # runAsNonRoot: true | |||||
| # runAsUser: 1000 | |||||
| service: | |||||
| type: ClusterIP | |||||
| port: 80 | |||||
| ingress: | |||||
| enabled: false | |||||
| className: "" | |||||
| annotations: {} | |||||
| # kubernetes.io/ingress.class: nginx | |||||
| # kubernetes.io/tls-acme: "true" | |||||
| hosts: | |||||
| - host: chart-example.local | |||||
| paths: | |||||
| - path: / | |||||
| pathType: ImplementationSpecific | |||||
| tls: [] | |||||
| # - secretName: chart-example-tls | |||||
| # hosts: | |||||
| # - chart-example.local | |||||
| resources: {} | |||||
| # We usually recommend not to specify default resources and to leave this as a conscious | |||||
| # choice for the user. This also increases chances charts run on environments with little | |||||
| # resources, such as Minikube. If you do want to specify resources, uncomment the following | |||||
| # lines, adjust them as necessary, and remove the curly braces after 'resources:'. | |||||
| # limits: | |||||
| # cpu: 100m | |||||
| # memory: 128Mi | |||||
| # requests: | |||||
| # cpu: 100m | |||||
| # memory: 128Mi | |||||
| autoscaling: | |||||
| enabled: false | |||||
| minReplicas: 1 | |||||
| maxReplicas: 100 | |||||
| targetCPUUtilizationPercentage: 80 | |||||
| # targetMemoryUtilizationPercentage: 80 | |||||
| nodeSelector: {} | |||||
| tolerations: [] | |||||
| affinity: {} | |||||
| @ -1,13 +0,0 @@ | |||||
| version: '3.5' | |||||
| services: | |||||
| jellyfin: | |||||
| image: jellyfin/jellyfin | |||||
| container_name: jellyfin | |||||
| network_mode: "host" | |||||
| volumes: | |||||
| - /mnt/Externo/jellyfin/config:/config | |||||
| - /mnt/Externo/jellyfin/cache:/cache | |||||
| - /mnt/Externo/jellyfin/media:/media | |||||
| - /mnt/Externo/jellyfin/media2:/media2:ro | |||||
| restart: 'unless-stopped' | |||||
| @ -1,14 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: jellyfin-claim0 | |||||
| name: jellyfin-claim0 | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| resources: | |||||
| requests: | |||||
| storage: 100Mi | |||||
| status: {} | |||||
| @ -1,14 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: jellyfin-claim1 | |||||
| name: jellyfin-claim1 | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| resources: | |||||
| requests: | |||||
| storage: 100Mi | |||||
| status: {} | |||||
| @ -1,14 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: jellyfin-claim2 | |||||
| name: jellyfin-claim2 | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| resources: | |||||
| requests: | |||||
| storage: 100Mi | |||||
| status: {} | |||||
| @ -1,14 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: jellyfin-claim3 | |||||
| name: jellyfin-claim3 | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadOnlyMany | |||||
| resources: | |||||
| requests: | |||||
| storage: 100Mi | |||||
| status: {} | |||||
| @ -1,56 +0,0 @@ | |||||
| apiVersion: apps/v1 | |||||
| kind: Deployment | |||||
| metadata: | |||||
| annotations: | |||||
| kompose.cmd: kompose convert | |||||
| kompose.version: 1.26.0 (40646f47) | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: jellyfin | |||||
| name: jellyfin | |||||
| spec: | |||||
| replicas: 1 | |||||
| selector: | |||||
| matchLabels: | |||||
| io.kompose.service: jellyfin | |||||
| strategy: | |||||
| type: Recreate | |||||
| template: | |||||
| metadata: | |||||
| annotations: | |||||
| kompose.cmd: kompose convert | |||||
| kompose.version: 1.26.0 (40646f47) | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: jellyfin | |||||
| spec: | |||||
| containers: | |||||
| - image: jellyfin/jellyfin | |||||
| name: jellyfin | |||||
| resources: {} | |||||
| volumeMounts: | |||||
| - mountPath: /config | |||||
| name: jellyfin-claim0 | |||||
| - mountPath: /cache | |||||
| name: jellyfin-claim1 | |||||
| - mountPath: /media | |||||
| name: jellyfin-claim2 | |||||
| - mountPath: /media2 | |||||
| name: jellyfin-claim3 | |||||
| readOnly: true | |||||
| restartPolicy: Always | |||||
| volumes: | |||||
| - name: jellyfin-claim0 | |||||
| persistentVolumeClaim: | |||||
| claimName: jellyfin-claim0 | |||||
| - name: jellyfin-claim1 | |||||
| persistentVolumeClaim: | |||||
| claimName: jellyfin-claim1 | |||||
| - name: jellyfin-claim2 | |||||
| persistentVolumeClaim: | |||||
| claimName: jellyfin-claim2 | |||||
| - name: jellyfin-claim3 | |||||
| persistentVolumeClaim: | |||||
| claimName: jellyfin-claim3 | |||||
| readOnly: true | |||||
| status: {} | |||||
| @ -1,50 +0,0 @@ | |||||
| apiVersion: apps/v1 | |||||
| kind: Deployment | |||||
| metadata: | |||||
| annotations: | |||||
| kompose.cmd: kompose convert | |||||
| kompose.version: 1.26.0 (40646f47) | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: db | |||||
| name: db | |||||
| spec: | |||||
| replicas: 1 | |||||
| selector: | |||||
| matchLabels: | |||||
| io.kompose.service: db | |||||
| strategy: | |||||
| type: Recreate | |||||
| template: | |||||
| metadata: | |||||
| annotations: | |||||
| kompose.cmd: kompose convert | |||||
| kompose.version: 1.26.0 (40646f47) | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: db | |||||
| spec: | |||||
| containers: | |||||
| - args: | |||||
| - --default-authentication-plugin=mysql_native_password | |||||
| env: | |||||
| - name: MYSQL_DATABASE | |||||
| value: kanboard | |||||
| - name: MYSQL_PASSWORD | |||||
| value: kanboard-secret | |||||
| - name: MYSQL_ROOT_PASSWORD | |||||
| value: secret | |||||
| - name: MYSQL_USER | |||||
| value: kanboard | |||||
| image: mariadb:latest | |||||
| name: db | |||||
| resources: {} | |||||
| volumeMounts: | |||||
| - mountPath: /var/lib/mysql | |||||
| name: db | |||||
| restartPolicy: Always | |||||
| volumes: | |||||
| - name: db | |||||
| persistentVolumeClaim: | |||||
| claimName: db | |||||
| status: {} | |||||
| @ -1,14 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: db | |||||
| name: db | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| resources: | |||||
| requests: | |||||
| storage: 100Mi | |||||
| status: {} | |||||
| @ -1,28 +0,0 @@ | |||||
| version: '2' | |||||
| services: | |||||
| kanboard: | |||||
| image: kanboard/kanboard:latest | |||||
| ports: | |||||
| - "80:80" | |||||
| - "443:443" | |||||
| volumes: | |||||
| - kanboard_data:/var/www/app/data | |||||
| - kanboard_plugins:/var/www/app/plugins | |||||
| - kanboard_ssl:/etc/nginx/ssl | |||||
| environment: | |||||
| DATABASE_URL: mysql://kanboard:kanboard-secret@db/kanboard | |||||
| db: | |||||
| image: mariadb:latest | |||||
| command: --default-authentication-plugin=mysql_native_password | |||||
| environment: | |||||
| MYSQL_ROOT_PASSWORD: secret | |||||
| MYSQL_DATABASE: kanboard | |||||
| MYSQL_USER: kanboard | |||||
| MYSQL_PASSWORD: kanboard-secret | |||||
| volumes: | |||||
| - db:/var/lib/mysql | |||||
| volumes: | |||||
| kanboard_data: | |||||
| kanboard_plugins: | |||||
| kanboard_ssl: | |||||
| db: | |||||
| @ -1,14 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: kanboard-data | |||||
| name: kanboard-data | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| resources: | |||||
| requests: | |||||
| storage: 100Mi | |||||
| status: {} | |||||
| @ -1,55 +0,0 @@ | |||||
| apiVersion: apps/v1 | |||||
| kind: Deployment | |||||
| metadata: | |||||
| annotations: | |||||
| kompose.cmd: kompose convert | |||||
| kompose.version: 1.26.0 (40646f47) | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: kanboard | |||||
| name: kanboard | |||||
| spec: | |||||
| replicas: 1 | |||||
| selector: | |||||
| matchLabels: | |||||
| io.kompose.service: kanboard | |||||
| strategy: | |||||
| type: Recreate | |||||
| template: | |||||
| metadata: | |||||
| annotations: | |||||
| kompose.cmd: kompose convert | |||||
| kompose.version: 1.26.0 (40646f47) | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: kanboard | |||||
| spec: | |||||
| containers: | |||||
| - env: | |||||
| - name: DATABASE_URL | |||||
| value: mysql://kanboard:kanboard-secret@db/kanboard | |||||
| image: kanboard/kanboard:latest | |||||
| name: kanboard | |||||
| ports: | |||||
| - containerPort: 80 | |||||
| - containerPort: 443 | |||||
| resources: {} | |||||
| volumeMounts: | |||||
| - mountPath: /var/www/app/data | |||||
| name: kanboard-data | |||||
| - mountPath: /var/www/app/plugins | |||||
| name: kanboard-plugins | |||||
| - mountPath: /etc/nginx/ssl | |||||
| name: kanboard-ssl | |||||
| restartPolicy: Always | |||||
| volumes: | |||||
| - name: kanboard-data | |||||
| persistentVolumeClaim: | |||||
| claimName: kanboard-data | |||||
| - name: kanboard-plugins | |||||
| persistentVolumeClaim: | |||||
| claimName: kanboard-plugins | |||||
| - name: kanboard-ssl | |||||
| persistentVolumeClaim: | |||||
| claimName: kanboard-ssl | |||||
| status: {} | |||||
| @ -1,14 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: kanboard-plugins | |||||
| name: kanboard-plugins | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| resources: | |||||
| requests: | |||||
| storage: 100Mi | |||||
| status: {} | |||||
| @ -1,22 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: Service | |||||
| metadata: | |||||
| annotations: | |||||
| kompose.cmd: kompose convert | |||||
| kompose.version: 1.26.0 (40646f47) | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: kanboard | |||||
| name: kanboard | |||||
| spec: | |||||
| ports: | |||||
| - name: "80" | |||||
| port: 80 | |||||
| targetPort: 80 | |||||
| - name: "443" | |||||
| port: 443 | |||||
| targetPort: 443 | |||||
| selector: | |||||
| io.kompose.service: kanboard | |||||
| status: | |||||
| loadBalancer: {} | |||||
| @ -1,14 +0,0 @@ | |||||
| apiVersion: v1 | |||||
| kind: PersistentVolumeClaim | |||||
| metadata: | |||||
| creationTimestamp: null | |||||
| labels: | |||||
| io.kompose.service: kanboard-ssl | |||||
| name: kanboard-ssl | |||||
| spec: | |||||
| accessModes: | |||||
| - ReadWriteOnce | |||||
| resources: | |||||
| requests: | |||||
| storage: 100Mi | |||||
| status: {} | |||||
| @ -0,0 +1,14 @@ | |||||
| apiVersion: cert-manager.io/v1 | |||||
| kind: ClusterIssuer # I'm using ClusterIssuer here | |||||
| metadata: | |||||
| name: letsencrypt-prod | |||||
| spec: | |||||
| acme: | |||||
| server: https://acme-v02.api.letsencrypt.org/directory | |||||
| email: king.bernard.b@gmail.com | |||||
| privateKeySecretRef: | |||||
| name: letsencrypt-prod | |||||
| solvers: | |||||
| - http01: | |||||
| ingress: | |||||
| class: nginx | |||||
| @ -1,4 +0,0 @@ | |||||
| helm repo add jetstack https://charts.jetstack.io | |||||
| helm repo update | |||||
| helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.5.3 --set installCRDs=true | |||||
| @ -0,0 +1 @@ | |||||
| kubectl get svc --namespace=ingress-nginx ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | |||||