[GitOps]~실천편①~werf에서 GitOps 구현
9902 단어 kubernetesGitOpswerf
Go
에 쓰인 OSS의 CLI 도구입니다.응용 프로그램의 교부를 간소화하고 속도를 높이기 위해 개발되었다.웹을 이용하기 위해서는 응용된 구축 방법과 k8s에 대한 사전 처리 방법의 설정 파일(werf.yaml)을 기술하고 Giit 창고에 저장해야 한다.이것은 바로 오늘 말하는'a single source of truth'에 해당한다.참조웹에서 온github2. 웹의 사용 방법(이 내용은 실용적으로 필요하지 않기 때문에 건너뛸 수 있다.)
2.1 최종 이상 상태 설정
1GTI 저장소에서 Docker file 구성
2
werf.yaml
라고 불리는 웹의 설정 파일을 설정합니다werf.yaml에서
project
이 매개 변수 (프로젝트의 이름을 저장하는 역할) 는 매우 중요하다.웹 converge
처리에 사용됩니다.이 파라미터를 잠시 후에 바꾸면, 응용 프로그램은 마비 시간을 발생시키고, 다시 디버깅을 진행할 것입니다.3 helm 파일을 설정하여 응용 프로그램을 처리합니다
Helm
의 템플릿에 기재werf_image
는 특수한 역할을 하고 구축된 이미지의 전체 이름을 생성하는 기능을 가진다.이 기능은 werf.yaml
에 정의된 이미지에 대응하는 이름의 매개 변수를 가지고 있습니다.4
git commit
converge
Quick Start의 내용입니다.
3.1
trdl
설치 명령trdl
는 설치와 업데이트를 관리하는 도구입니다.curl -sSLO "https://tuf.trdl.dev/targets/releases/0.3.2/linux-amd64/bin/trdl" -O "https://tuf.trdl.dev/targets/signatures/0.3.2/linux-amd64/bin/trdl.sig"
curl -sSL https://trdl.dev/trdl-client.asc | gpg --import
gpg --verify trdl.sig trdl
# install -D trdl ~/bin/trdl
sudo install -D trdl /usr/local/bin/trdl
3.2werf
설치 명령trdl add werf https://tuf.werf.io 1 b7ff6bcbe598e072a86d595a3621924c8612c7e6dc6a82e919abe89707d7e3f468e616b5635630680dd1e98fc362ae5051728406700e6274c5ed1ad92bea52a2
. $(trdl use werf 1.2 stable)
werf version
3.3 Minikube에서 로컬 등록 시작minikube start --driver=docker --insecure-registry registry.example.com:80
alias kubectl="minikube kubectl --"
echo 'alias kubectl="minikube kubectl --"' >> ~/.bash_aliases
minikube addons enable ingress
minikube addons enable registry
kubectl apply -f - << EOF
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: registry
namespace: kube-system
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
rules:
- host: registry.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: registry
port:
number: 80
EOF
# /etc/docker/daemon.json に下記の内容を書き込む
{
"insecure-registries": ["registry.example.com:80"]
}
sudo systemctl restart docker
minikube start --driver=docker --insecure-registry registry.example.com:80
export WERF_INSECURE_REGISTRY=1
echo export WERF_INSECURE_REGISTRY=1 | tee -a ~/.bashrc
echo "$(minikube ip)"
echo "$(minikube ip) vote.quickstart-application.example.com result.quickstart-application.example.com registry.example.com" | sudo tee -a /etc/hosts
minikube ssh -- "echo $(minikube ip) registry.example.com | sudo tee -a /etc/hosts"
3.3 디버그 샘플 응용 프로그램git clone https://github.com/werf/quickstart-application
cd quickstart-application
werf converge --repo registry.example.com:80/quickstart-application
3.4 샘플 확인 애플리케이션http://result.quickstart-application.example.com
의 경우 데모 어플리케이션(다수결)이 시작되었는지 확인할 수 있습니다
CLI에서 설치 확인
werf
sudo apt-get install lynx
4lynx
에 GitOps 설치전체 이미지
그럼 바로 실현해 봅시다.
werf
선택tag
,werf
선택Executor
.sudo curl -L --output /usr/local/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
sudo chmod +x /usr/local/bin/gitlab-runner
sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start
systemctl status gitlab-runner
그룹
shell
에 gitlab-runner
추가 sudo usermod -aG docker gitlab-runner
방금 순서대로 설치
docker
합니다.설치
werf
,kubeconfig를 kubectl
user의 홈 디렉터리에 설정합니다.sudo mkdir -p /home/gitlab-runner/.kube &&
sudo cp -i ~/.kube/config /home/gitlab-runner/.kube/config &&
sudo chown -R gitlab-runner:gitlab-runner /home/gitlab-runner/.kube
설명
gitlab-runner
stages:
- build
before_script:
- trdl add werf https://tuf.werf.io 1 b7ff6bcbe598e072a86d595a3621924c8612c7e6dc6a82e919abe89707d7e3f468e616b5635630680dd1e98fc362ae5051728406700e6274c5ed1ad92bea52a2
- type trdl && . $(trdl use werf 1.2 stable)
- type werf && source $(werf ci-env gitlab --as-file)
Build:
stage: build
script:
- git clone https://github.com/werf/quickstart-application
- cd quickstart-application
- . $(werf ci-env gitlab --as-file)
- export WERF_INSECURE_REGISTRY=1
- env
- nslookup registry.example.com
- werf converge --skip-tls-verify-registry=true --repo registry.example.com:80/quickstart-application
tags:
- werf
CI/CD는 이런 느낌으로 작동합니다.
5. 요약
이번에
.gitlab-ci.yml
를 사용하는 GitOps의 설치 방법을 소개했다.앞으로도 깃옵스 관련 기사가 나올 예정이니 읽어주세요.
Reference
이 문제에 관하여([GitOps]~실천편①~werf에서 GitOps 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gararu/items/f3685f6c647f3ee71821텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)