Canadian software engineer living in Europe.

  • 6 Posts
  • 254 Comments
Joined 3 years ago
cake
Cake day: June 7th, 2023

help-circle
  • I’ve used FluxCD in the past and have looked into ArgoCD, but honestly, I’ve not seen any big benefit from either to be honest. I use k8s both at home and at work, and in both cases, we do “imperative” deploys: you run helm install ... either directly or via the CI and stuff is deployed.

    So for example at my last job, our GitLab CI just had a section triggered exclusively for merges into master that ran helm install ... for all three environments. We had three values.yaml files, one for each environment, and when we wanted to deploy a new version, the process was:

    1. Create a tag for our release version (ie. 1.2.3) and push it to the repo. This would trigger a build and push the resulting image into the container registry.
    2. Push an update to the repo with the new tag set in the appropriate Helm values file. If we wanted to deploy 1.2.3 to development but not yet to staging or production, then the tag: value in each of the environment files would look like this:
    • k8s/chart/environments/development.yaml: tag: 1.2.3
    • k8s/chart/environments/staging.yaml: tag: 1.2.2
    • k8s/chart/environments/production.yaml: tag: 1.2.2

    Once that change is pushed, the CI will automatically apply it with helm install ... and make sure that all three environments are what they’re supposed to be.

    As for dependent services, that should all be in your Helm chart so they’re stood up and torn down together. The specific case you mention about “Service A” being dependent on “Service B” but stood up before “Service B” is ready is a classic problem, but easily solved:

    The dependent service (“A” in this case) should have an entrypoint that checks for everything else before starting. Here’s what I’m using right now in a project:

    #!/bin/sh
    
    while ! nc -z postgres 5432; do
      echo "Waiting for postgres..."
      sleep 0.1
    done
    echo "PostgreSQL started"
    
    touch /tmp/ready
    
    exec "$@"
    

    I’ve even got some code that checks that all the Django migrations have run first for the same situation. The Kubernetes philosophy is that any container should be able to die at any time and be eventually be brought back up and that every container needs to be prepared for this. Typically this means that your containers should operate on the basis of “if I can’t work, die, and hope the problem is solved by the time Kubernetes redeploys me”.






  • Daniel Quinn@lemmy.catoSelfhosted@lemmy.worldKitchenOwl Gone?
    link
    fedilink
    English
    arrow-up
    39
    arrow-down
    3
    ·
    1 month ago

    A platform that’s down 10% of the time and that now has a reputation of locking people out of their accounts without reason for weeks at a time cannot, under any definition of the word, be considered “stable”.

    I just… don’t get it. This whole community, we’re supposed to be building stuff for ourselves and each other, and for some reason people keep going to bat for a company that demonstrably holds every one of us in contempt.

    Just… stop using their shitty tools already.




  • I know it’s supposed to be a joke how a nerd will spend six hours writing a script to automate a 30second task but… it’s not really funny.

    Working with less-experienced developers, I’m amazed at how slow everything is for them:  No keyboard shortcuts, no automated scripts, just slow, plodding mouse-driven tinkering.

    Automation, shortcuts, and scripting drive your ability to iterate and therefore learn.

    Train your fingers, and spend those hours automating repetitive stuff.  It’s worth it.










  • Daniel Quinn@lemmy.catoLinux@lemmy.ml*Permanently Deleted*
    link
    fedilink
    English
    arrow-up
    3
    ·
    2 months ago

    I would be less concerned about the GPU driver and more about the entire distro. Like most distros, Ubuntu has a release cycle where versions of everything are deprecated over time in favour of newer ones, and to expect that the entire OS will be fully supported in 10 years may be asking a bit much (I’m not sure if even their LTS release goes that far).

    On top of that, Ubuntu could go bankrupt or get bought out, or simply enshittify (more than it already has) in that time. Expecting Ubuntu specifically to be supported on your laptop in ten years is anyone’s guess.

    However, what you can be reasonably sure of is that Linux will continue to support your system, GPU and all, for a very long time. I heard a kernel developer once say that due to the kernel’s modular design, there’s support in there for stuff just one or two people in the whole world use.

    As someone else has already pointed out, FOSS support for hardware generally gets better over time, and a GTX video card is ubiquitous. There’s going to be a hell of a lot of those floating around on laptops, servers, and homelabs for a lot more than ten years.

    You just might not be able to stick with Ubuntu. The older the hardware, the more you might have to lean toward the more technical distros that make it easy to customise the kernel or that favour old hardware. I like Gentoo for this job, but even Ubuntu or Debian have paths to do compile your own kernel for example.