title

Blog of René Jochum

Blogging about Programming, Security, Linux, Networking and Web Apps.

Kubernetes-Rancher CI/CD Pipeline


Today I moved my gohugo.io blog from a lxd hosting to our Kubernetes -dev Cluster at the Webmeisterei.

We have our own Gitlab so and we run our own registry on the -dev Cluster, I thought it will be easy to do so but it wasn’t that easy and I lost about 8 Hours until I found out that had to open the required Ports on the Firewall :).

Tools in use

The Docker Container

I use a multi-stage build to generate the page in a container and serve a copy of the page after in a nginx container.

See this Dockerfile

# Build public with hugo
FROM jguyomard/hugo-builder:latest

COPY . /build

WORKDIR /build

RUN hugo -b https://rene.jochums.at -v -t persona

# Copy to a nginx container
FROM nginx:1.17-alpine

COPY docker/nginx/nginx.conf /etc/nginx/
COPY docker/nginx/default.conf /etc/nginx/conf.d/

# This is important "COPY --from=0" line where --from=0 means copy from the first container.
COPY --from=0 /build/public /var/www/rene.jochums.at

The Deployment

With lots of try-and-error testing I got this deployment.yaml together.

Its important that you have to add the registry to your Project first, in this case registry.dev.wmk8s.com.

And the pipeline itself

The last step after the container and the deployment was to create a .rancher-pipeline.yml in my repo, I used Rancher -> Cluster dev -> Project -> Workloads -> Pipelines to generate it.

stages:
- name: Build
  steps:
  - publishImageConfig:
      dockerfilePath: ./Dockerfile
      buildContext: .
      tag: pcdummy/renejochumsat:latest
      pushRemote: true
      registry: registry.dev.wmk8s.com
- name: Deploy
  steps:
  - applyYamlConfig:
      path: ./deployment.yaml
timeout: 60
notification:
  recipients:
  - recipient: rene@webmeisterei.com
    notifier: local:n-mtzwd
  condition:
  - Success
  - Changed
  - Failed