• Stars
    star
    165
  • Rank 228,327 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

These are the example files for my presentation and blog post about GitLab + Kubernetes for Continuous Delivery.

presentation-gitlab-k8s

These are the example files for my presentation about GitLab + Kubernetes for Continuous Integration and Delivery. They are also partly used in my GitLab CI posts.

Kubernetes and GitLab

INFO This is one of the ways to deploy an application as a Docker image to your K8s cluster. It is important to note that this repository is just an example of what can be done.

The presentation can be found here: Kubernetes - WYNTK - GitLab CI + Kubernetes Presentation. The blog post these files are specifically used in is here: GitLab + Kubernetes: Using GitLab CI's Kubernetes Cluster feature and old post GitLab + Kubernetes: Perfect Match for Continuous Delivery with Container.

An uptodate list of all my blog posts around GitLab and Kubernetes can be found on this page. This list is just an excerpt of some of my GitLab posts:

Table of Contents

Features

This repository shows off/uses the following GitLab CI features:

Other features also shown are:

Requirements

The following points are required for this repository to work correctly:

Using this repository

NOTE

Best is to follow the blog post GitLab + Kubernetes: Using GitLab CI's Kubernetes Cluster feature as it contains more detailed instructions about using GitLab CI for Kubernetes.

You have to replace the following addresses in all files:

  • gitlab.zerbytes.net with your GitLab address (e.g. gitlab.example.com).
  • edenmal.net (in the Ingress manifest) with your domain name.
    • You probably also want to change the subdomain name while you are at it.
  • presentation-gitlab-k8s with the Namespace name of your choice.

If you are using prometheus-operator/prometheus-operator, then you also need to replace zerbytes-live-proj-monitoring with the Namespace your Prometheus instance is running in, in this file /gitlab-ci/monitoring/service-monitor.yaml. You then also want to kubectl create/apply the file to your Kubernetes cluster during creation/apply process for the manifests in gitlab-ci/.

You also need to create a "Docker Login" Secret which contains your GitLab Registry access data (e.g. Username and Access token with registry access) named whatever your want in the Namespace presentation-gitlab-k8s. A guide for that can be found here: Kubernetes.io - Pull an Image from a Private Registry. Instead of using the imagePullSecrets, we'll be using the default ServiceAccount in the Namespace to automatically use the created Docker login Secret, see Kubernetes - Configure Service Accounts for Pods - Add ImagePullSecrets to a service account.

The Namespace manifest is in the gitlab-ci/ directory.

Then you can just import the repository into your GitLab instance and are ready to go.

For information on how to use these files and setup GitLab Kubernetes cluster/integration, see the above blog post and in specific this post GitLab + Kubernetes: Perfect Match for Continuous Delivery with Container.

GitLab Docs References

As of GitLab 10.3 the Kubernetes Integration is marked as deprecated and with 10.4 it is now disabled, the following docs show the new feature called Clusters:

File Structure

Example Application

Kubernetes Base GitLab CI Manifests

  • gitlab-ci/
    • monitoring/
      • service-monitor.yaml - Contains a prometheus-operator/prometheus-operator ServiceMonitor manifest to automatically monitor the application(s).
    • namespace.yaml - Namespace in which the GitLab CI will deploy the application.
    • rbac.yaml - Contains GitLab CI RBAC Role, RoleBinding and ServiceAccount.
    • secret.yaml - Contains a TLS wildcard certificate for the application Ingress.

Build Process

Deployment Manifests

Miscellaneous

Thanks!

Thanks to @shadycuz - GitHub for his comments with improvements for the code in this repository!

License

The files in this repo can be used under the MIT license, see LICENSE file.

More Repositories

1

k8s-vagrant-multi-node

A Kubernetes Vagrant Multi node environment using kubeadm.
Makefile
166
star
2

dellhw_exporter

Prometheus exporter for Dell Hardware components using Dell OMSA.
Go
112
star
3

container-healthchecks

Simple to use Container Image for https://github.com/healthchecks/healthchecks.
Dockerfile
63
star
4

kubernetes-keycloak

This repo contains manifests to run Keycloak by Red Hat inside of Kubernetes with "host discovery".
36
star
5

srcds_exporter

Prometheus exporter for SRCDS Gameserver using Source RCON.
Go
25
star
6

docker-sinusbot

Docker container for the famous TeamSpeak 3 SinusBot by Michael Friese.
Dockerfile
25
star
7

container-staytus

adamcooke/staytus (https://staytus.co/) as a Container Image without the MySQL server.
Dockerfile
20
star
8

container-vlc

VLC Media Player in a Container Image.
Makefile
20
star
9

docker-nginx-php-fpm

Run Nginx with PHP-FPM on Kubernetes.
Dockerfile
18
star
10

container-node_exporter-textfiles

Container Image for easily running textfile exporter scripts to be collected by the prometheus/node_exporter.
Smarty
17
star
11

kubernetes-manifests

Contains a collection of several Kubernetes manifests for applications (mostly from my blog posts).
16
star
12

presentation-distributed-storage-with-rook

Demo files for the "Distributed storage with Rook" talk by Kim-Norman Sahm and me, and other Rook related presentations.
Shell
13
star
13

docker-taigaio

Taiga.Io as a Docker Image. Ready to docker-compose up.
Shell
13
star
14

elasticsearch-operator

Elasticsearch Operator creates/configures/manages Elasticsearch clusters atop Kubernetes
Go
8
star
15

workshop-docker

Workshop about Docker and Kubernetes.
Shell
7
star
16

ansible-ntp

Ansible NTP client role.
Jinja
6
star
17

docker-percona-xtradb-cluster

percona/percona-docker Percona xtraDB optimized for Kubernetes clustering.
Shell
5
star
18

alertmanager-githubfiles-receiver

An Alertmanager webhook receiver which creates files in a GitHub repository based on the received alert(s), e.g., when using cstate/cstate Status page.
Go
5
star
19

ansible-timezone

Ansible role for setting/changing the timezone.
4
star
20

ansible-ntpdate

Ansible role for running ntpdate. To "force" update the time.
4
star
21

kubernetes-mailserver

Work in progress! Mail server in Kubernetes.
Shell
3
star
22

ansible-kernel-modules

Ansible role for simple management of kernel modules including persisting module loading, blacklisting.
3
star
23

fivenet

From searching the state's citizen and vehicles database, filling documents for investigations, court, and a livemap of your colleagues and dispatches. All that and more is (mostly) ready in this net, the FiveNet.
Vue
3
star
24

vanilla-steamsignin

Vanilla Forums Steam Sign-in Plugin (fork of https://github.com/daigo75 aeliasteamsignin-plugin).
PHP
3
star
25

presentation-gitlab-k8s-php

These are the example files for my article and presentation about GitLab + Kubernetes for Continuous Delivery with an example PHP "Hello World!" application.
PHP
3
star
26

container-jts3servermod

JTS3ServerMod by Stefan1200 as a Container Image.
Dockerfile
3
star
27

container-backups

Have you ever wanted to backup applications running in containers? Yeah ... about that.
Shell
3
star
28

owncloud-kubernetes-rook

Running OwnCloud on Kubernetes using Rook Ceph for storage.
2
star
29

dotfiles

My personal Doty McDotface files.
Shell
2
star
30

presentation-k8s-prometheus

Smarty
2
star
31

ansible-cockpit

An Ansible role to "setup" features of Fedora's Cockpit.
2
star
32

extended-ceph-exporter

A Prometheus exporter to provide "extended" metrics about a Ceph cluster's running components (e.g., RGW).
Go
2
star
33

k8sglue

WIP "Kleber" for Kubernetes in public and private (cloud) environments with Salt, kubeadm and some magic glue.
Go
2
star
34

k8s-minecraft

Minecraft in K8S because why not?
Shell
2
star
35

container-gameserver

Container Image for running (some) Gameservers easily in Containers.
Dockerfile
2
star
36

docs.galexrt.moe

Source of https://docs.galexrt.moe/
Makefile
2
star
37

goytdler

Simple webinterface to use youtube-dl.
Go
1
star
38

docker-steamcmd

Docker SteamCMD Image
1
star
39

workshop-k8s-basics

1
star
40

presentation-golang-microthingy

These are the live code example files for my presentation about "Writing your first Golang Microthingy".
Makefile
1
star
41

ansible-sshkeymgt

Ansible role for simple SSH key management.
1
star
42

ansible-firewall

A try at at an Ansible ipset and iptables managing role.
Jinja
1
star
43

srcds_controller

Go
1
star
44

go-gitlab-webhooks

Go GitLab webhooks struct
Go
1
star
45

go-rcon

Go library for querying Source RCON servers
Go
1
star
46

ansible-raid-check

Ansible role for configuring raid-check settings.
1
star
47

container-restic-sftp

Container image with Restic + SSH + Wrapper for simply SFTP backups with restic.
Shell
1
star
48

container-toolbox

A toolbox container for debugging and stuff in containers.
Dockerfile
1
star
49

desktop-helper

Small helper for "configuration"-less switching of workplaces (run scripts on "events").
Go
1
star
50

workshop-container-docker-kubernetes

Tasks / Files / Examples for my upcoming workshop about Containers, Docker and Kubernetes.
HCL
1
star
51

docker-nginx-php-fpm-pagespeed

Docker Image with Nginx + PHP-FPM and Google Pagespeed Module.
1
star