Coder Social home page Coder Social logo

kubernetes-management's Introduction

Jenkins Infrastructure Kubernetes Management

This repository contains the helmfile manifests values used by jenkins infrastructure project to manage the applications of its kubernetes clusters.

The charts used come from the helm charts repository and from external providers.

Contributing

The Jenkins Infrastructure Kubernetes Management project accepts contributions via GitHub pull requests, more information in CONTRIBUTING.md

Issues

Any issues can be reported on our help desk issue tracker.

Repository Structure

This project contains the following main directories:

  • clusters: This folder contains the per-cluster helmfiles with the releases to apply per cluster
  • config: This folder contains the specific configuration for our environments
  • updatecli: This folder contains the updatecli manifests to keep all Helm charts and Docker images versions up to date

Requirements

This project requires the following tools (more details within the DockerFile):

  • az
  • awscli
  • doctl
  • kubectl
  • helm
  • helmfile
  • sops
  • the 3 followings helm plugins:
    • helm-diff
    • helm-secrets
    • helm-git

Secrets

Secrets are encrypted with sops, a default configuration is defined in .sops.yaml. Currently there are two kinds of encryption keys: a GPG key and an Azure Key Vault (accessible from Kubernetes clusters).

All secrets are expected to be found in the ./secrets folder which is absent by default and (git)ignored.

If you have the right to access the secrets, you can set up the local ./secrets folder from the (private) repository jenkins-infra/charts-secrets with the following command:

git clone https://github.com/jenkins-infra/charts-secrets.git ./secrets

Then, you can edit an app secret by using the sops ./secrets/config/<app-name>/secrets.yaml command that will create a blank secrets.yaml file ready to get encrypted as soon as it's saved and closed (you may need to add your ip on the azure key vault to get access) sops examples.

Remarks

  • We need one Jenkins instance per cluster to be able to split cluster orchestration tasks outside release.ci.jenkins.io

  • If RBAC is enabled on the cluster, before being able to use Helm we need to create a Service Account for Helm with the right Cluster Role Binding with this command: kubectl apply -f helm/rbac.yaml

Minikube

minikube start --kubernetes-version v1.20.13
minikube addons enable ingress
helm install stable/nginx-ingress nginx-ingress # we can't install the ingress defined in this repository for local testing
kubectl -n release port-forward default-release-jenkins-77fd54976f-ns2c6 8081:8080

kubectl get secrets -n release  default-release-jenkins -o json

Links

kubernetes-management's People

Contributors

adi10hero avatar dduportal avatar garethjevans avatar halkeye avatar jenkins-infra-bot avatar jenkins-infra-updatecli[bot] avatar jetersen avatar jvz avatar lemeurherve avatar lemeurhervecb avatar markewaite avatar martinda avatar megathaum avatar notmyfault avatar olblak avatar oleg-nenashev avatar slide avatar smerle33 avatar smerlecb avatar spacedog avatar timja avatar zbynek avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.