<?xml version="1.0" encoding='utf-8'?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title type="html">Blogging Roller</title>
    <subtitle type="html">Dave Johnson on open web technologies, social software and software development</subtitle>
    <id>https://rollerweblogger.org/roller/feed/entries/atom</id>
        <link rel="self" type="application/atom+xml" href="https://rollerweblogger.org/roller/feed/entries/atom?tags=postgres" />
    <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/" />
    <updated>2026-04-07T09:28:33+00:00</updated>
    <generator uri="http://roller.apache.org" version="6.1.5">Apache Roller</generator>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/powered-by-kubernetes</id>
        <title type="html">Powered by Kubernetes</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/powered-by-kubernetes"/>
        <published>2018-03-13T14:29:55+00:00</published>
        <updated>2018-03-14T21:38:53+00:00</updated> 
        <category term="Web Development" label="Web Development" />
        <category term="asf" scheme="http://roller.apache.org/ns/tags/" />
        <category term="docker" scheme="http://roller.apache.org/ns/tags/" />
        <category term="kubernetes" scheme="http://roller.apache.org/ns/tags/" />
        <category term="postgres" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">
&lt;p&gt;&lt;img src=&quot;https://rollerweblogger.org/roller/mediaresource/0a80ebe2-257d-48f3-84ba-9aff47c8c3c8&quot; alt=&quot;kubernetes logo&quot; align=&quot;right&quot;&gt; Just a quick note to say that I ditched Docker Swarm and now this rarely updated blog is powered by &lt;a href=&quot;https://kubernetes.io&quot;&gt;Kubernetes&lt;/a&gt;. Total overkill, I know. Like Roller itself, I did it as a learning exercise. I hope to blog more about what I learned by doing this. For now, here&amp;#39;s a quick summary of what I&amp;#39;ve done so far.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;Created a cluster&lt;/b&gt;&lt;/p&gt;


&lt;p&gt;I created a 2-node Kubernetes cluster on &lt;a href=&quot;https://www.digitalocean.com&quot;&gt;Digital Ocean&lt;/a&gt; using some hand-crafted &lt;a href=&quot;https://www.ansible.com&quot;&gt;Ansible&lt;/a&gt; scripts that call &lt;code&gt;apt-get&lt;/code&gt; to install and &lt;code&gt;kubeadm&lt;/code&gt; to start Kubernetes.  I considered using &lt;a href=&quot;https://www.digitalocean.com/community/projects/kubernetes-on-digital-ocean-typhoon&quot;&gt;Typhoon&lt;/a&gt; to create the cluster, but I really wanted to learn how to install Kubernetes &amp;quot;from scratch&amp;quot;.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;Ran two Ingress Controllers&lt;/b&gt;&lt;/p&gt;


&lt;p&gt;To avoid using Digital Ocean&amp;#39;s &lt;a href=&quot;https://www.digitalocean.com/products/load-balancer/&quot;&gt;$20/month load balancer&lt;/a&gt; I&amp;#39;m running an Nginx Ingress controller on each node, and pinning containers to nodes using labels and nodeSelectors. I had to borrow &lt;a href=&quot;https://github.com/poseidon/typhoon/tree/master/addons/nginx-ingress/digital-ocean&quot;&gt;Nginx Controller setup files from the Typhoon project&lt;/a&gt; because I&amp;#39;m still kind of bewildered by Ingresses.&lt;/p&gt;


&lt;p&gt;&lt;b&gt;Deployed my containers&lt;/b&gt;&lt;/p&gt;


&lt;p&gt;Next, I wrote Kubernetes YAML files for deploying my containers: a private Docker Registry, PostgreSQL and my custom Roller image.  Getting the private registry working properly was the biggest challenge. I need private because I don&amp;#39;t want to make my custom Roller image public. Next, I&amp;#39;ll install Jenkins next for CI/CD of my custom Roller build via the &lt;a href=&quot;https://github.com/jenkinsci/kubernetes-plugin&quot;&gt;Jenkins Kubernetes plugin&lt;/a&gt;. &lt;/p&gt;


&lt;p&gt;Let me know if there are any aspects of this that you&amp;#39;d like to see covered in a blog entry, or suggestions for running the cluster without two Ingress Controllers. I&amp;#39;ve already got a post cooking about installing a TLS secured Docker Registry on Kubernetes.&lt;/p&gt;

</content>
    </entry>
</feed>

