쿠버네티스(k3s) 설치
# k3s 설치
curl -sfL https://get.k3s.io | sh -
# kubeconfig 설정
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
# 설치 확인
kubectl get nodes
Helm 설치
curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm
Jenkins 설치
helm repo add jenkinsci https://charts.jenkins.io
helm repo update
chart**=**jenkinsci/jenkins
helm install jenkins -n jenkins -f jenkins-values.yaml $chart
플러그인 설치
# ssh 커맨드 입력에 사용
SSH Agent
# docker 이미지 생성에 사용
Docker
Docker Commons
Docker Pipeline
Docker API
# 웹훅을 통해 브랜치 merge request 이벤트 발생시 Jenkins 자동 빌드에 사용
Generic Webhook Trigger
# 타사 레포지토리 이용시 사용 (GitLab, Github 등)
GitLab
GitLab API
GitLab Authentication
GitHub Authentication
# Node.js 빌드시 사용
NodeJS
Jenkins persistent volume 설정
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
namespace: jenkins
spec:
storageClassName: jenkins-pv
accessModes:
- ReadWriteOnce
capacity:
storage: 20Gi
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /data/jenkins-volume/
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: jenkins-pv
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
Kaniko
podTemplates:
kaniko: |
- name: kaniko
label: kaniko
serviceAccount: default
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:v1.17.0-debug
command: "/busybox/sh -c"
args: "cat"
ttyEnabled: true
privileged: true
resourceRequestCpu: "400m"
resourceRequestMemory: "512Mi"
resourceLimitCpu: "1"
resourceLimitMemory: "1024Mi"
volumeMounts:
- name: docker-config
mountPath: /kaniko/.docker/
- name: kubectl
image: bitnami/kubectl:latest
command: "/bin/sh -c"
args: "cat"
ttyEnabled: true
privileged: true
resourceRequestCpu: "400m"
resourceRequestMemory: "512Mi"
resourceLimitCpu: "1"
resourceLimitMemory: "1024Mi"
volumes:
- name: docker-config
secret:
secretName: regcred