ingress-nginx-controller-service.yaml — Внешняя точка входа (LoadBalancer)
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx-controller
namespace: cozy-ingress-nginx
spec:
type: LoadBalancer
selector:
app.kubernetes.io/component: controller
app.kubernetes.io/instance: ingress-nginx
app.kubernetes.io/name: ingress-nginx
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443get svc -n cozy-ingress-nginxclusterissuer-letsencrypt-prod.yaml — Автоматизация TLS через ACME
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: ima43306@gmail.com
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod-account-key
solvers:
- http01:
ingress:
ingressClassName: nginx00-namespace.yaml — Изоляция ресурсов
apiVersion: v1
kind: Namespace
metadata:
name: nextcloud01-secrets.yaml — Управление конфиденциальными данными
apiVersion: v1
kind: Secret
metadata:
name: nextcloud-secrets
namespace: nextcloud
type: Opaque
stringData:
# Change these before production use.
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: "StrongPassword123!"02-nextcloud-pvc.yaml — Абстракция дискового хранилища
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nextcloud-data
namespace: nextcloud
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi20-nextcloud-deployment.yaml — Описание рабочей нагрузки
apiVersion: apps/v1
kind: Deployment
metadata:
name: nextcloud
namespace: nextcloud
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: nextcloud
template:
metadata:
labels:
app: nextcloud
spec:
containers:
- name: nextcloud
image: nextcloud:31-apache
imagePullPolicy: IfNotPresent
env:
- name: NEXTCLOUD_ADMIN_USER
valueFrom:
secretKeyRef:
name: nextcloud-secrets
key: NEXTCLOUD_ADMIN_USER
- name: NEXTCLOUD_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: nextcloud-secrets
key: NEXTCLOUD_ADMIN_PASSWORD
- name: NEXTCLOUD_TRUSTED_DOMAINS
value: nc.128.0.67.226.nip.io
- name: OVERWRITEPROTOCOL
value: https
ports:
- containerPort: 80
name: http
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: "2"
memory: 4Gi
volumeMounts:
- name: nextcloud-data
mountPath: /var/www/html
volumes:
- name: nextcloud-data
persistentVolumeClaim:
claimName: nextcloud-data21-nextcloud-service.yaml — Внутренняя балансировка трафика
apiVersion: v1
kind: Service
metadata:
name: nextcloud
namespace: nextcloud
spec:
selector:
app: nextcloud
ports:
- name: http
port: 80
targetPort: 8030-ingress.yaml — L7-маршрутизация и SSL-терминация
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nextcloud
namespace: nextcloud
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "10G"
spec:
ingressClassName: nginx
rules:
- host: nc.128.0.67.226.nip.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nextcloud
port:
number: 80
tls:
- hosts:
- nc.128.0.67.226.nip.io
secretName: nextcloud-tlskubectl get pods -n nextcloudkubectl exec -it nextcloud-7f8db59c8-abc12 -n nextcloud -- /bin/bash# Проверка текущего статуса системы
su -s /bin/sh -c "php occ status" www-data
# Добавление индекса в базу данных (полезно при обновлении)
su -s /bin/sh -c "php occ db:add-missing-indices" www-data