Als je met Kubernetes werkt, wil je zoveel mogelijk automatiseren. Het ligt daarom niet voor de hand om met FTP of SFTP data te uploaden naar je volumes. Toch zijn er use-cases waarbij het wenselijk is om een FTP-server te draaien waarmee data naar je persistent volumes geüpload kan worden. Denk bijvoorbeeld aan een situatie waarbij gebruikers bepaalde bestanden aanleveren die vervolgens door je containers worden verwerkt. In dit artikel beschrijven we hoe je met gebruik van Atmoz een SFTP-server opzet met meerdere gebruikersaccounts en upload-directories.

Bij het schrijven van deze handleiding gebruiken we de Kubernetes-beheertool Rancher om Atmoz uit te rollen en te configureren. Dit kan je uiteraard ook gewoon doen met kubectl of andere tools waarmee je images kunt deployen en resources in je cluster kunt aanmaken. Daarnaast gaan we ervan uit dat je de beschikking hebt over persistent storage.

Te volgen stappen

Om een SFTP-server in Kubernetes te draaien, kan je gebruik maken van het Docker-image van Atmoz. Atmoz is een eenvoudige SFTP-server met ondersteuning voor meerdere gebruikers, ondersteuning voor SSH-keys voor authenticatie en de mogelijkheid om per user een ander pad te koppelen. De stappen die uitgevoerd dienen te worden voor het opzetten van een FTP-server met meerdere gebruikers zijn:

  • Configuratie voor je Atmoz SFTP-server voorbereiden door middel van een configmap
  • De Atmoz SFTP-server uitrollen en de juiste configuratie en volumes koppelen
  • Testen of de verbinding werkt.

Configuratie voor je Atmoz SFTP-server voorbereiden door middel van een configmap

Voordat de SFTP server geïnstalleerd kan worden, moet eerst “ConfigMap” geconfigureerd worden. ConfigMap wordt gebruikt om één of meerdere gebruikers aan te maken op de SFTP server.

  1. Open de webinterface op https://rancher.cloudlets.io/login en log in.
  2. Selecteer jouw cluster en klik op Projects/Namespaces.
  3. Selecteer het project waarin je de SFTP server wilt gaan installeren.
  4. Navigeer naar Config Maps in de drop-down menu van Resources en klik op “Add Config Map”.
  5. Vul een passende naam in Name in en selecteer of creëer een namespace aan die je gaat gebruiken voor jou SFTP server. Vul in Config Map Values onder Key “users.conf” in en maak in Value gebruiker(s) aan met de volgende string:<gebruikersnaam>:<wachtwoord>:<user ID>:<groep ID>:<eerste pad>,<tweede pad>
    Tip: Je kan “Enter” gebruiken om meerdere regels toe te voegen.Het is belangrijk dat je begint met een “/” alvorens je de map naam invult. Er wordt anders geen gebruik gemaakt van de persistent storage die je later in de handleiding toevoegt. Het is mogelijk om meerdere locaties te gebruiken door een “,” en een extra pad toe te voegen.Voorbeeld:
  6. Noteer welk pad (/uploads) je gebruikt en sla het bestand op.

De Atmoz SFTP-server uitrollen en de juiste configuratie en volumes koppelen

Nu de configmap is aangemaakt, gaan we de door naar de daadwerkelijke installatie van Atmoz.

  1. Ga naar Workloads en klik op Deploy.
  2. Kies de naam die je wilt gebruiken voor deze Deploy. Vul in Docker Imagesatmoz/sftp” in of een andere image die je wilt gebruiken voor een SFTP server. Selecteer dezelfde namespace die je ook gebruikt hebt voor het aanmaken van de ConfigMap.
    Als laatste klik je op Add Port en pas je de instellingen aan met de onderstaande gegevens.
  3. Open de tab Volumes. Klik op Add Volume en selecteer “Use a config map”.
  4. Vul onder Volume Name een toepassende naam in. Selecteer in Config Map Name de ConfigMap aan die je de voorgaande stap hebt aangemaakt. Vul bij Mount Point/etc/sftp” in, zodat het bestand users.conf in /etc/sftp wordt aangemaakt.
  5. Vervolgens maken we een persistent volume aan waarin zodat de data die je gebruiker gaat plaatsen bewaard wordt na een herstart of upgrade van je Atmoz-container. Dat kan je doen door op Add Volume te klikken en “Add a new persistent volume (claim)” te selecteren. Een nieuwe venster wordt geopend.
  6. In deze venster kan je je naam invoeren, storage class selecteren, capaciteit bepalen en selecteren welke access modes je wilt gebruiken. Als je meerdere pods gaat gebruiken, dan is het noodzakelijk dat je bij Access Modes (in de tab Customize) op “Many Nodes Read-Write” zit. Laat je dit op “Single Node Read-Write” staan, dan kan maar één pod tegelijkertijd gebruik maken van de persistent volume. Als je niet weet wat je in de toekomst doet, dan bevelen we je aan om “Many Nodes Read-Write” te selecteren.
  7. Dit is de laatste configuratie die we maken voordat we gaan installeren. Vul het pad in dat je ook in ConfigMap heb opgegeven en klik onderaan de pagina op Launch.
  8. De SFTP server is nu geïnstalleerd op jouw Kubernetes cluster. Noteer de poort die gekoppeld is aan de SFTP server, in dit voorbeeld poort 31763. Deze poort heb je in de volgende stap nodig om connectie te maken met je SFTP server.

Verbinding testen

Als de FTP server in Kubernetes draait, kunnen we testen of je inderdaad verbinding kunt maken. In dit voorbeeld maken we gebruik van FileZilla om verbinding te maken, maar je kunt natuurlijk iedere FTP-client hiervoor gebruiken.

  1. Open Filezilla.
  2. Vul de gegevens in die nodig zijn om connectie te maken met de SFTP server, zoals te zien is in onderstaande afbeelding en klik op Snelverbinden.
  3. De connectie is succesvol en je kan nu eenvoudig bestanden uploaden en downloaden.

Wil je liever op poort 22 verbinden? Dan kan je een externe loadbalancer configureren die het verkeerd dat op poort 22 binnenkomt naar de NodePort waarop Atmoz routeert.

Mocht je na deze handleiding nog vragen hebben of tegen problemen aankomen, neem dan contact met ons op! We helpen je graag verder.