-
Nextcloud
Edistynyt taso
Tämä ohje vaatii hyvää Kubernetes-ympäristön tuntemusta.
Nextcloudin käyttöönotto Rahdissa
Tässä ohjeessa näytämme, miten Nextcloud otetaan käyttöön Rahdissa.
Esivaatimukset
Tarvitset tietokoneellesi asennettuna oc:n sekä helmin.
Luo uusi kansio nimeltä nextcloud
Lopuksi hakemistopuumme näyttää tältä:
nextcloud
├── docker
│ ├── 32
│ │ ├── apache
│ │ │ └── config
│ │ ├── fpm
│ │ │ └── config
│ │ └── fpm-alpine
│ │ └── config
│ └── 33
│ ├── apache
│ │ └── config
│ ├── fpm
│ │ └── config
│ └── fpm-alpine
│ └── config
├── kustomize
│ ├── base
│ └── nextcloud
└── post-render
docker on GitHub-repositorio, jonka kloonaamme seuraavassa vaiheessa.
kustomize- ja post-render-kansiot luodaan myöhemmin tässä ohjeessa.
Nextcloudin GitHub-repositorio
Meidän täytyy tehdä joitakin muutoksia Dockerfile-tiedostoon, jotta voimme ajaa Nextcloudia Rahdissa.
Rahti käyttää OKD:tä, johon sisältyy joitakin oletusturvakäytäntöjä. Lisäksi portteja 80 tai 443 ei ole mahdollista sitoa ilman korotettuja oikeuksia.
Muutoksemme tekevät seuraavaa:
- Muuttavat hakemiston
/usr/local/etc/php/conf.doikeuksia, jottaentrypointvoi kirjoittaa siihen. - Muuttavat julkaistun portin 80:stä porttiin 8080.
Kloonaa repositorio:
Kun olet kloonannut repositorion, siirry hakemistoon docker/33/apache (HUOM.: nimi voi muuttua ajan myötä) ja muokkaa Dockerfile-tiedostoa lisäämällä rivit:
[...]
RUN set -ex; \
fetchDeps=" \
gnupg \
dirmngr \
"; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
curl -fsSL -o nextcloud.tar.bz2 "https://github.com/nextcloud-releases/server/releases/download/v33.0.2/nextcloud-33.0.2.tar.bz2"; \
curl -fsSL -o nextcloud.tar.bz2.asc "https://github.com/nextcloud-releases/server/releases/download/v33.0.2/nextcloud-33.0.2.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \
gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
tar -xjf nextcloud.tar.bz2 -C /usr/src/; \
gpgconf --kill all; \
rm nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /usr/src/nextcloud/updater; \
mkdir -p /usr/src/nextcloud/data; \
mkdir -p /usr/src/nextcloud/custom_apps; \
chmod +x /usr/src/nextcloud/occ; \
+ chmod 777 /usr/local/etc/php/conf.d/; \
+ sed -i.BAK "s/80/8080/g" /etc/apache2/ports.conf; \
+ sed -i.BAK "s/80/8080/g" /etc/apache2/sites-enabled/000-default.conf; \
\
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \
apt-get dist-clean
COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/
+ EXPOSE 8080
ENTRYPOINT ["/entrypoint.sh"]
CMD ["apache2-foreground"]
Rakenna levykuvat:
docker build . --platform linux/amd64 --tag image-registry.apps.2.rahti.csc.fi/<YOUR_PROJECT>/nextcloud:33.0.0-apache
Korvaa YOUR_PROJECT Rahti-projektillasi
Kun levykuva on rakennettu, puske levykuva Rahdin rekisteriin:
Nextcloud Helm Chart
Asennamme Nextcloudin Helmin kautta. Käytämme tätä Helm Chartia: https://github.com/nextcloud/helm
-
Lisää Helm-repositorio
-
Luo tiedosto
nextcloud-values.yaml:image: registry: image-registry.apps.2.rahti.csc.fi repository: <YOUR_PROJECT>/nextcloud tag: 33.0.0-apache pullPolicy: Always ingress: enabled: false nextcloud: host: username: password: containerPort: 8080 objectStore: s3: enabled: true accessKey: secretKey: host: a3s.fi region: regionOne bucket: extraInitContainers: - name: init-permissions image: busybox command: ["sh", "-c", "set -eux; mkdir -p /var/www/html/data; chmod 770 /var/www/html/data"] securityContext: allowPrivilegeEscalation: false capabilities: drop: ["ALL"] volumeMounts: - name: nextcloud-main mountPath: /var/www/html internalDatabase: enabled: false externalDatabase: enabled: true type: postgresql host: user: password: redis: enabled: true persistence: enabled: true size: 8Gi resources: limits: cpu: 500m memory: 512Mi requests: cpu: 500m memory: 512Mi livenessProbe: enabled: false readinessProbe: enabled: false
Pakolliset asetukset
-
image.registry- Sen rekisterin nimi, jossa rakennettu levykuva sijaitsee. Esimerkissämme Rahdin rekisteri -
image.repository- Sen repositorion nimi, jossa rakennettu levykuva sijaitsee. Esimerkissämme Rahti-projektisi nimi ja levykuvan nimi (nextcloud) -
image.tag- Rakennetun levykuvan tagi -
nextcloud.host- Nextcloud-sovelluksesi julkinen URL-osoite. Käytä.rahtiapp.fiOKD Routea varten (katso myöhemmin) -
nextcloud.username- Nextcloud-ylläpitäjäsi käyttäjänimi -
nextcloud.password- Nextcloud-ylläpitäjäsi salasana -
nextcloud.objectStore.s3.accessKey- Allaksen Access Key. Katso UKK:stamme, miten saat Allas S3 -tunnistetiedot -
nextcloud.objectStore.s3.secretKey- Allaksen Secret Key. Katso UKK:stamme, miten saat Allas S3 -tunnistetiedot -
nextcloud.objectStore.s3.bucket- Ämpärisi nimi Altaassa (sen on oltava yksilöllinen koko Altaassa. Lue lisää täältä -
externalDatabase.host- Pukki-tietokantasi julkinen IP-osoite (aloita Pukin käyttö täältä) -
externalDatabase.user- Pukki-tietokantasi käyttäjänimi -
externalDatabase.password- Pukki-tietokantasi salasana
Helm-post-renderöijä ja Kustomize
Helm 4:stä alkaen post-renderöijät on toteutettu liitännäisinä, mikä tarkoittaa, että meidän täytyy luoda oma Helm-liitännäinen.
Miksi tarvitsemme itse tehdyn liitännäisen?
Koska Helmin täytyy muokata joitakin mallipohjia ennen niiden käyttöönottoa. --post-renderer <plugin> täyttää tämän tarpeen.
-
Luo uusi kansio nimeltä
post-rendernextcloud-kansiosi juureen -
Luo uusi bash-tiedosto ja tallenna se nimellä
kustomize-postrendererkansioonpost-render:#!/usr/bin/env bash set -x SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" cd "$SCRIPT_DIR" || exit 6 env >/tmp/kustomize.log # Save Helm-rendered YAML to base.yaml cat >"$OLDPWD/kustomize/base/base.yaml" # Build final manifests if type kustomize >/dev/null 2>&1; then KBIN="kustomize build" elif command -v oc >/dev/null 2>&1; then KBIN="oc kustomize" else echo "ERROR, oc command not found. Exiting." >&2 exit 5 fi exec $KBIN "$OLDPWD/kustomize/nextcloud" 2> >(tee -a /tmp/kustomize.log >&2) -
Luo edelleen
post-render-kansiossa tiedostoplugin.yaml: -
Asenna juuri luomasi liitännäinen:
Tarkista, että liitännäinen on asennettu, suorittamalla komento
helm plugin list -
Luo kansio nimeltä
kustomizeja kaksi alikansiota:basejanextcloud -
Luo
base-kansioon kaksi tiedostoa:kustomization.yamlroute.yaml -
Luo
nextcloud-kansioon yksi tiedosto nimeltäkustomization.yaml:apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - ../base/ patches: - target: kind: Deployment labelSelector: app.kubernetes.io/name=nextcloud patch: | - op: remove path: /spec/template/spec/securityContext - target: kind: Route name: nextcloud patch: | - op: replace path: /spec/host value: # Must be the same as `.Values.nextcloud.host`Tämä tiedosto on meidän "kustomization". Meidän täytyy poistaa
securityContext, ja luomme OKD Routen.Routen osalta sinun täytyy lisätä kohtaan
value:sama arvo, joka on määritelty kohdassa.Values.nextcloud.host -
VALINNAINEN Asenna kustomize
Rahdin komentorivityökalussa
ockustomize on sisäänrakennettu ominaisuus.Jos haluat asentaa
kustomizen, löydät eri binaarit tältä sivulta
Käyttöönotto
Kun kaikki on valmista, voit ottaa Nextcloudin käyttöön suorittamalla tämän komennon: