ILoveOpenSourceSoftware
ILoveOpenSourceSoftware
  • 24
  • 8 957
[13.04] Fetchmail - Picking up Emails for Storage in Dovecot
In this video I will builde a container and install fetchmail, to pick up emails. After the container is built I will create the configuration map fetchmail needs to contact the server of my mail service provider and pick up the messages, hand them over to postfix for processing, before they are saved in the users inbox, managed by dovecot.
Once an email is processed I will follow along the path the email took all the way to the inbox of the user. Along the logs I will point out this path and show the process steps that were excuted by postfix and dovecot. I will take a look at the synchronization that, once the email is stored, is executed to keep the 3 different dovecot pods aligned.
Chapters
0:00 Introduction
0:38 Building the fetchmail container
3:45 Reviewing the kubernetes deployment
6:05 build the config map for fetchmail
8:20 deploy fetchmail in my cluster
10:00 follow the path of the email
15:40 reviewing the synchronizatin between pods
16:55 Summary
Commands
9:05 kubectl apply -f fetchmailrc.yaml
9:25 watch kubectl get all -n mailserver
9:37 kubectl apply -f fetchmail.yaml
10:10 kubectl logs fetchmail-123abc678-r9b8c -n mailserver
10:55 kubectl logs postfix-123abc678-r9b8c -n mailserver
11:55 kubeectl logs dovecot-123abc678-r9b8c -n mailserver
13:50 kubectl exec -it dovecot-0 -c dovecot -n mailserver -- ls /mail/Manuel/new
15:10 kubectl delete -f fetchmail.yaml
15:45 kubectl logs dovecot-0 -c lsync -n mailserver
Sources
My Github - github.com/darealShadow/
Container Image Repo - quay.io/realshadow
Переглядів: 34

Відео

[13.03] Deploying a Master-to-Master synchronized Dovecot to Kubernetes
Переглядів 703 місяці тому
In this video I will bring both solutions, dovecot and lsync, together. I will walk through the stateful set, starting with the storage template, which is a first in my series. Such a storage template creates an individual storage per pod and allows to separate storage for the individual instances of an application. I will follow this template up with the init container that prepares the config...
[13.02] The Dovecot Sync - Master to Master through a lsyncd Sidecar
Переглядів 733 місяці тому
In this video I will discuss the synchronization solution to keep the three dovecot instances in sync. To be able to use each of these pods providing the mailbox to users, all mailbox contents need to be in sync between these pods. The tool I use for that job is lsyncd. In the video I review the build of the container and the Kubernetes files I need to make the synchronization work across these...
[13.01] Dovecot Deployment - The Container and its Config Maps
Переглядів 774 місяці тому
In this video I will review the second component of my email server, dovecot. I will walk through the container build file and review entrypoint script, which I copy during the build process. Once complete I build the container and push the image to my repository (see link below). As that step is complete, I will review the configuration maps I need for the dovecot container. As there are way m...
[12.03] Postfix - Database Structure and Service Deployment
Переглядів 455 місяців тому
In this video I will focus my attention on creating the database required for the postfix deployment. As this application relies heavily on a database backend I focus on the creation of this database, a user to execute the queries and the individual tables required. If you use more tables in your own deployment these examples should give you a good overview of how to create these additional tab...
[12.02] Postfix - Configuration maps and secrets
Переглядів 806 місяців тому
Caution At time code 39:00 I walk through the service for postfix which coordinates the traffic to the individual pods. The entry in the configuration called "role" needs to be removed. The role prevented the service from from establishing traffic to the pods. At this moment I have not been able to figure out why but my suspicion is that I have not configured the role and role binding correctly...
[12.01] Building a Postfix container and reviewing its Kubernetes deployment
Переглядів 1437 місяців тому
In this video I will focus on building the container for postfix. I will walk through the build file and review the files i copy during the build process. Once complete I build the container and push the image to my repository (see link below). As that step is complete, I review the kubernetes deployment. As this deployment is quite long, I focus on the deployment only. Any config maps, which a...
[11.03] Deploying Nextcloud in Kubernetes
Переглядів 8297 місяців тому
In this video we conclude the setup of our Nextcloud instance. I am setting up the ingress resource for the application, download the Nextcloud zip file, extract its contents, and move the files into place. Once the files are in place I am setting up a database and a user for that application. As there a different ways of installing Nextcloud I am walking through the installation process on the...
[11.02] Deploying the Frontend for a Nextcloud Instance in Kubernetes
Переглядів 2298 місяців тому
In this video I will be setting up frontend I need for nextcloud. Following instructions published by Marko Skender, I am building a php8.1 instance as well as installing a nginx webserver. I am building and configuring the php8.1-fpm container with additional php modules and I walk through why the are installed in different ways. I will go through the configuration maps necessary to deploy the...
[11.01] Deploying the Backend for a Nextcloud Instance in Kubernetes
Переглядів 3498 місяців тому
In this video I will focus on setting up the backend I need for nextcloud. Following instructions published by Marko Skender, I am taking a look at redis as well as a proxy to reduce the connections to the backend with twemproxy a.k.a. nutcracker. I am building the nutcracker container, review config map for twemproxy, and the two deployments for redis and twemproxy. I deploy these two services...
[10] Deploying the Mariadb Galera replicated database in Kubernetes
Переглядів 1,2 тис.8 місяців тому
In this video I am deploying a replicated database cluster developed by Bitnami. The database cluster uses the mariadb galera setup and was customized for a use in a containerized environment. We will review a different way of using helm. Instead of adding a repo, bitnami recommends working with OCI addresses. We will take a look what the difference is between these addresses and a repo and how...
[09.04] Dynamic DNS IP Updater for my Kubernetes cluster
Переглядів 969 місяців тому
In this video I walk through a deployment that updates my ISP assigned IP at my dynamic DNS service DuckDNS. I walk through the container build process, discuss the scripts that are executed as part of the container, review the outputs that we are getting from the scripts and walk through the kubernetes deployment yamls to start this deployment up in kubernetes. At the end we will have an appli...
[09.03] Deploying an object replicator in my Kubernetes cluster
Переглядів 1279 місяців тому
After having deployed a cert-manager and a webhook for a dynamic DNS service, in this video we will be deploying a kubernetes replicator which does replicate kubernetes objects from one namespace, the source, to another namespace, the destination. This replication will allow to synchronize secrets, configmaps or other kubernetes objects to other namespaces and use these objects in applications....
[09.02] Certificate for a dynamic DNS domain in Kubernetes through cert-manager
Переглядів 3239 місяців тому
CLARIFICATION at time code 9:25 I am modifying the service account. In video [09.01] I indicate not to touch or change the service account name and let cert-manager create its own. These two options don't work well together. Best course of action is to not touch any of the two options, neither in the cert-manager nor in this file. Leave the service account name alone and use the defaults for bo...
[09.01] Cert Manager
Переглядів 2689 місяців тому
In this video I install the basic cert-manager. If you own your own domain this video should provide you with what you need to obtain a valid certificate for this domain. I walk through what the cert-manager is, how to download and configure its values file and deploy the application in your kubernetes cluster. If you do not own your own domain and you rely on a dynmic DNS service this and the ...
[08] Installing the nginx ingress controller into my kubernetes cluster
Переглядів 6669 місяців тому
[08] Installing the nginx ingress controller into my kubernetes cluster
[07] Deploying a Load Balancer to a Kubernetes Cluster
Переглядів 56710 місяців тому
[07] Deploying a Load Balancer to a Kubernetes Cluster
[06.02] Deploy openEBS to my Kubernetes Cluster
Переглядів 1,3 тис.10 місяців тому
[06.02] Deploy openEBS to my Kubernetes Cluster
[06.01] iSCSI target and LUN config
Переглядів 30510 місяців тому
[06.01] iSCSI target and LUN config
[05] Kubernetes - Deploying a dynamic NFS provisioner
Переглядів 1 тис.10 місяців тому
[05] Kubernetes - Deploying a dynamic NFS provisioner
[04] Installing Helm
Переглядів 16610 місяців тому
[04] Installing Helm
[03] Kubernetes - Setting up a pod network
Переглядів 24911 місяців тому
[03] Kubernetes - Setting up a pod network
[02] Kubernetes - Build Your Cluster
Переглядів 43611 місяців тому
[02] Kubernetes - Build Your Cluster
[01] My Kubernetes Journey - The Beginning
Переглядів 37511 місяців тому
[01] My Kubernetes Journey - The Beginning

КОМЕНТАРІ

  • @ricardocosta9336
    @ricardocosta9336 9 днів тому

    Dude if I had money I would throw it at you. Doing good work here my man!❤

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 9 днів тому

      @@ricardocosta9336 thank you. Much appreciated but don't worry. I am making this series to document my journey and hope it helps someone.

  • @rahmanjahdasa212
    @rahmanjahdasa212 Місяць тому

    Great, it would have been better to use local vm instead of master node to install Helm

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware Місяць тому

      Hi @rhmanjahdaa212. you are absolutely correct. I should have separated some of the functionality and have separate instances for certain tools. I didn't go there as my server can only handle so many VMs and I ran a bit short on resources. I am going to create another video on the architecture in the future in which I will highlight separating some of these tools. I appreciate you pointing this option out. Thank you.

  • @janiel471
    @janiel471 Місяць тому

    very details and good approach. Thank you very much. Learn a lot from this. I'm having the same thought for using this approach in my experiment system :D

  • @janiel471
    @janiel471 Місяць тому

    Great tutorial and very details, easy to understand. Thank you very much. Keep it up bro🎉🎉🎉

  • @prashlovessamosa
    @prashlovessamosa 2 місяці тому

    Just found your channel great stuff thanx looking forward to learn awesome stuff from you

  • @shamstabrez2986
    @shamstabrez2986 3 місяці тому

    PLZ DO A COMPLETE PROJECT OF MICROSERVICES IN KUBERNETES WITH COMPLETE PRODUCTION BASED ARCHITECTURE INCLUDE EVERY COMPONENTS

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 3 місяці тому

      Hi @shamstabrez2986. Thanks for your comment. Your suggestion is great and challenging at the same time considering the infinite use cases of a production based architecture. Is it a cluster which will offer kubernetes services to other customers or a cluster within a company which will run services for that organization exclusively? These two cases have very different setups and the microservices that will be run on these clusters. However, they also have some commonalities which I can highlight. Please don't expect such a series any time soon though as the topics are quite complex and will require in-depth research to make sure the topic gets treated with the diligence it deserves.

    • @shamstabrez2986
      @shamstabrez2986 3 місяці тому

      @@ILoveOpenSourceSoftware I know the things I asked to u is tough that's y I was asking to an expert like u take your time man no worrie at all actually I want to become a kubernetes architect I want to learn and know the stuffs how all the components work together like message queues etc inside kubernetes I hope u r getting my points

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 2 місяці тому

      @@shamstabrez2986 Thanks for the trust you put in me. However, as much as I appreciate that, if you are looking to become a k8s architect, please review sites such as the official kubernetes documentation (kubernetes.io), the Linux Foundation (www.linuxfoundation.org/) or the Cloud Native Computing Foundation (www.cncf.io/) to get more information on a possible career path you highlighted in your previous comment. The Cloud Native Computing Foundation has a few trainings and certifications, which, if you review their study guides, can give you a good indication what information you need in that journey. As much as I appreciate the trust you put in me, I am just a hobbyist. I will take a look into your suggestion but cannot and should not be your sole source.

  • @rachelwooddk2485
    @rachelwooddk2485 3 місяці тому

    Was so happy to see this whole series and thought this is exactly what I want. I love the pace, the explanation and the examples. My concern is the script doesn't match the video and I appear to have to try and catch the commands from the screen and type them in manually.

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 3 місяці тому

      Hi @rachelwooddk2485, thank you for your comment. Much appreciated. I will take another look at the video and if I find the discrepancies you mention I will put the fixed/changes in the description. Also, if there are commands I usually put these in the descriptions. Whatever I missed, I will add. Sorry for these inconveniences.

  • @KarumoChrome
    @KarumoChrome 4 місяці тому

    Great video, i enjoyed it

  • @dannydenovi29
    @dannydenovi29 4 місяці тому

    Hi! Great tutorial! Have you ever thought about doing a mariadb-operator tutorial? I'm struggling with it 🫤

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 4 місяці тому

      Hi @dannydenovi29, thanks for your comment. I have not thought about that yet but your suggestion sounds interesting. What would you want to see in such a video? I could create a video with whatever I could think of but please let me know what makes sense for you. I don't want to create something for the sake of creating it. I want the content to make sense and what might make sense for me might not for you. Please post some of your questions and ideas (the more the better) and I will see what I can do. Cannot guarantee a timeline though.

    • @dannydenovi29
      @dannydenovi29 4 місяці тому

      @@ILoveOpenSourceSoftware It could be useful for an automated high availability and scalability use cases or backup purposes 😉

  • @dalu_
    @dalu_ 4 місяці тому

    blah blah blah, blah blah blah, read the script , read the script. Tell us in your own words and don't use "big words" like ephemeral

  • @mogallapu_ram
    @mogallapu_ram 4 місяці тому

    Hi I am following your videos for my home lab, can you add one more video to backup the database and restore, in case decided to built the cluster again database backup and restore will help Thanks

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 4 місяці тому

      Hi @mogallapu_ram, thanks for your suggestion. That is a great idea. I have planned to establish this kind of backup myself. I already have a script that I am running on my VMs that creates a backup file of the different databases. I tried the script the other day and unfortunately some of the details I have to modify to make them work but I will look into that and as soon as I figured that process out I will make a video and post it here. No promises on the timeline, however. Sorry.

  • @TopGizmo_net
    @TopGizmo_net 4 місяці тому

    @ILoveOpenSourceSoftware Good day! Your course is very interesting and educational for me. However, I cannot find a text version of the example file nginx-deployment.yaml, which is discussed at the 28th minute. Could you pls share? Thank you in advance!

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 4 місяці тому

      Hi @TopGizmo_net Thanks for your comment. I am not sure I know which file you are referring to. At minute 28 I am reviewing the certificate that I am creating for nextcloud. You are right, I have not shared that in my repo. I will add that file to the description of the video. But somehow I have the feeling that is not the file you are looking for. So I added the file nginx-deploy.yaml to my github repo here: github.com/darealShadow/k8s-nextcloud-root please have a look and let me know should these two files not be the ones you are looking for. I still have some work to do on the documentation side, i.e. updating my github repos and make sure everything is available there.

    • @TopGizmo_net
      @TopGizmo_net 4 місяці тому

      @@ILoveOpenSourceSoftware Good day. Thank you very much for your quick response. I messed up the timing of the video a little. The correct timing is 36:51. Yes, this is exactly this file. Today I’ll try to finish the installation (although I have a closed circuit, an internal domain and there is no way to issue an external certificate), but nevertheless I’ve almost reached the final stage with your excellent course. Thank you very much for your efforts!

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 4 місяці тому

      ​@@TopGizmo_net I am glad I could help.

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 4 місяці тому

      @@TopGizmo_net I also believe that there is a solution for your certificate issue. Depending on the amount of clients you have you could create a self signed certificate. That itself won't solve your certificate warning but if you create your own certificate signing authority and install that root certificate on all your clients the warning, that the certificate is not valid, should disappear. That is a bit more work but with the basic cert-manage (my video [09.01]) should be sufficient to get you started. The only thing I do not explain in my series is the creation of the root certificate and how to use that root certificate in the creation of the ssl certificate itself. But there are plenty of instructions out there that should help you solve that issue.

    • @TopGizmo_net
      @TopGizmo_net 4 місяці тому

      @@ILoveOpenSourceSoftware Yes, we have our own CA and even have a separate nginx, with which we add domains and certificates for end users. But here's the real problem that I haven't been able to overcome yet: When installing nginx-deploy (from the file you recently added to your repository) I get the error: Warning: would violate PodSecurity "restricted:v1.24": allowPrivilegeEscalation != false (container "nginx" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "nginx" must set securityContext.capabilities.drop=["ALL"]), restricted volume types (volume "tz-edmonton" uses restricted volume type "hostPath"), runAsNonRoot != true (pod or container "nginx" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "nginx" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost") When I fulfill the podsecurity requirements, and the pod starts, I can’t get the necessary rights to the nginx folders... /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: can not modify /etc/nginx/conf.d/default.conf (read-only file system?) /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh 20-envsubst-on-templates.sh: ERROR: /etc/nginx/templates exists, but /etc/nginx/conf.d is not writable /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2024/03/22 12:52:14 [warn] 1#1: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1 nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1 2024/03/22 12:52:14 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied) nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied) Maybe you have encountered something similar in your scenarios?

  • @avinbajelani
    @avinbajelani 5 місяців тому

    It was the most understandable video,thanj you very much👌💫💎

  • @amitchettri_ac
    @amitchettri_ac 5 місяців тому

    Finally got a channel which makes sense. Thank you Manuel. I hope you keep on doing what you started.

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 5 місяців тому

      Thank you @amitchettri_ac for your kind encouragement. I am preparing my next video right now. Please feel free to let me know what you would like to see. I cannot promise anything but who knows...

    • @amitchettri_ac
      @amitchettri_ac 5 місяців тому

      @@ILoveOpenSourceSoftware thanks for your response and willingness to share your knowledge How about if you can cover below 1. Kube-vip 2. Kubespray for HA cluster deployment with HA load balancer to access the same cluster. (Deployment in airgap if possible) 3. Running vm In k8s cluster using kube-virt

  • @projets-martinngbe8744
    @projets-martinngbe8744 6 місяців тому

    I followed the configuration according to your video in an empty kubernetes cluster with 4 nodes. The maradb-galera-cluster-0 pod is in a “Pending” state

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 6 місяців тому

      Hello, thanks for your comment. It is quite difficult to diagnose that issue. Most of the time I found that these pending states are a result of the external storage not being provisioned. Check the storage volume, that is created, is bound (kubectl get pvc -n <YOUR NAMESPACE HERE>). Check the external storage section in the values file for the database cluster. That should start somewhere around line 602 and ensure your configuration matches your cluster setup. Especially your storage class name is something you should verify. If you created claims manually, the configuration is different from the video and needs adjusting. Sorry I can't be more specific but diagnosing a pending state is really difficult without having access to the cluster and reviewing the config file you used to implement your solution. I hope the suggestions help.

  • @ngbemartin
    @ngbemartin 6 місяців тому

    is this a default installation (on a blank cluster)? or do we have to have prerequisites (pv, pvc, and others)?

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 6 місяців тому

      The answer is no. The installation I walk through in this video is on a blank cluster but you will need additional components such as external storage for persistence. The minimum requirements for this database setup are the cluster, the pod network, external storage (whichever one you want to use) and then the database. I have a lot more installed but from a "just getting the database to work" perspective these would be the components you would need. I hope that helps

  • @user-pw7jg2fz1z
    @user-pw7jg2fz1z 6 місяців тому

    5:25 chown not chmod

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 6 місяців тому

      You are absolutely correct. Thank you for pointing this part out. Unfortunately I can't replace the video but I hope people will see your comment. Thank you.

    • @user-pw7jg2fz1z
      @user-pw7jg2fz1z 6 місяців тому

      Great videos anyway 😄 You can update it in video description if someone is copying it from there

  • @jaehyunlee8962
    @jaehyunlee8962 7 місяців тому

    Hi, First of all, thanks a lot for your valuable video series. While I was trying to follow your guide and repeat it again, I installed the nfs-provisoner twice then got the error in below. Would you please guide me how to uninstall it and let me keep learning and following next steps? ======================================================================================================================== jlee@k8s-master:~/03-nfs-prov$ helm install nfs-provisioner nfs-provisioner/nfs-subdir-external-provisioner -n nfs-provisioner -f nfs-prov-values.yaml Error: INSTALLATION FAILED: cannot re-use a name that is still in use ======================================================================================================================== jlee@k8s-master:~$ kubectl get all -n nfs-provisioner NAME READY STATUS RESTARTS AGE pod/nfs-provisioner-nfs-subdir-external-provisioner-66bb57468-wt7kz 0/1 Error 0 2d2h NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/nfs-provisioner-nfs-subdir-external-provisioner 0/1 1 0 2d2h NAME DESIRED CURRENT READY AGE replicaset.apps/nfs-provisioner-nfs-subdir-external-provisioner-66bb57468 1 1 0 2d2h

  • @sinayzsn8609
    @sinayzsn8609 8 місяців тому

    This was really helpful, thanks man keep up the good work!

  • @tarikidagmail
    @tarikidagmail 8 місяців тому

    Was looking for something on this lines. Happy to see that youtube algorithm helped me to reach this channel.

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 8 місяців тому

      Thank you very much. That means a lot. I am glad you find my videos helpful.

  • @BadSanta514
    @BadSanta514 9 місяців тому

    Great video! Thanks!

  • @BadSanta514
    @BadSanta514 9 місяців тому

    You should also add this to your Advertisement: spec: ipAddressPools: - ip-range

  • @BadSanta514
    @BadSanta514 9 місяців тому

    @ILoveOpenSourceSoftware great content! Thank you very much and please continue develop your channel

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 9 місяців тому

      Hi @BadSanta514 Thanks for your encouraging words. I am going to try my best. Let me know if you want to see something in particular. I am always open for inspiration and new ideas.

  • @gsilos
    @gsilos 11 місяців тому

    amazing. that is exactly what I was looking for.

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 11 місяців тому

      Thank you very much @gsilos. Your kind words are very much appreciated.

  • @jsalinastls
    @jsalinastls 11 місяців тому

    Great vídeo Manuel. Thanks for the hard work. Wishing to learn k8s from the beginning 😊

    • @ILoveOpenSourceSoftware
      @ILoveOpenSourceSoftware 11 місяців тому

      Thank you for your comment. I hope I can share some of what I learned. However, I do not consider myself a pro.