Gitlab-runner에서 CI 테스트에 kubernetes (Kind를 사용한 테스트 및 Kubernetes cluster에 deploy)
10738 단어 GitLab-CIkubernetesGitLab
Gitlab Runner란?
gitlab과 협력하여 CI/CD를 수행하기 위한 도구.
환경
docker 호스트 (gitlab-runner 컨테이너가 있음)
kubernetes cluster × 1
Step1 Kind의 deploy
htps : // 코 m / 료 jsb / ms / 에 2146 d41005f536cf74
여기에 정리했으므로 참조하십시오.
여기는 docker host와 gitlab-runner 모두에 있습니다.
gitlab-runner 컨테이너에 관하여
gitlab-runner 컨테이너에 관해서는 kind 명령을 치는 것만으로도 괜찮습니다.
그 때 다음을 실행하고 그 아래에 go 디렉토리를 배치합니다.
# mkdir /home/gitlab-runner/lib/
그리고 이 상태로 하십시오.
# ls -ltr
total 70248
-rwxr-xr-x 1 gitlab-runner gitlab-runner 3525802 Aug 15 18:50 gofmt
-rwxr-xr-x 1 gitlab-runner gitlab-runner 14613596 Aug 15 18:50 go
-rwxr-xr-x 1 gitlab-runner gitlab-runner 17422189 Aug 15 18:51 godoc
drwxr-xr-x 3 gitlab-runner gitlab-runner 17 Aug 28 06:34 pkg
-rwxr-xr-x 1 gitlab-runner gitlab-runner 36367031 Aug 28 07:01 kind
gitlab-runner 컨테이너 내에서 gitlab-runner 사용자에게 권한을 부여하십시오.
# chmod 777 /home/gitlab-runner/.docker
# chmod 777 /home/gitlab-runner/.docker/*
# chown gitlab-runner:gitlab-runner /home/gitlab-runner/.docker
# chown gitlab-runner:gitlab-runner /home/gitlab-runner/.docker/*
Step2 docker build 테스트를 위해 docker 설치
먼저 gitlab-runner 컨테이너에 docker를 설치하고 이동합니다.
# apt-get update
# apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# apt-get update
# apt-get install -y docker-ce
그런 다음 kubectl을 사용할 수 있도록 설정하십시오.
Step3 gitlab-runner 컨테이너에서 Kind 및 kubernetes cluster에 대한 kubectl 실행
gitlab-runner에서 kind와 kubernetes cluster 각각에 kubernetes를 사용할 수 있도록 해 나갑니다.
kubernetes는 .kube/config
라는 파일을 참조하여 kubectl을 던지는 대상을 식별합니다.
즉, 이것을 가져와서, KUBECONFIG
에 그 path 를 지정해 export해 주면 던진다고 하는 것입니다.
kind .kube/config
gitlab-runner 컨테이너가 있는 docker 호스트에서 다음을 수행합니다.
# ls /root/.kube/
cache http-cache kind-config-kind
kind에 관해서는 kind-config-kind
라는 이름으로 config 파일이 들어 있습니다.
이제 kind 마스터의 containerに割り振られたIP
와 フォワーディングしているport
를 확인하십시오.
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
682857797af4 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker3
72b67c81ce82 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour 36996/tcp, 127.0.0.1:36996->6443/tcp kind-control-plane
834a76c4bdb4 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker
143cf9312cf0 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker2
포트는 6443
입니다.
# docker inspect kind-control-plane
(省略)
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:07",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "d57ec14a533f41659ffcb098ff46a9171f150845cbd52a67db3688f54e381a0b",
"EndpointID": "4d8aecd914a42e67c59554c441de1d3cf288e3ffd70ab02759bbb6af9a5da6c9",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:07",
"DriverOpts": null
}
}
}
}
]
IP는 172.17.0.7
입니다.
이제 config 파일의 내용을 복사하십시오.
gitlab-runner 컨테이너에 들어가 /home/gitlab-runner
아래에 .kube/kind-config-kind를 만듭니다.
# mkdir /root/.kube
# vi /root/.kube/kind-config-kind
// コピーしたものをペーストする。「その際、server: の部分は先ほど調べたものに変える。」
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: dummy-key
server: https://172.17.0.7:6443
name: kind
contexts:
(省略)
user : group을 chown
에서 gitlab-runner
로 설정하거나,chmod
권한을 변경합니다.
그렇다면 gitlab-runnerユーザ
kubectl이 통과하는지 확인하십시오.
# export KUBECONFIG=/home/gitlab-runner/.kube/kind-config-kind
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready master 62m v1.15.0
kind-worker Ready <none> 61m v1.15.0
kind-worker2 Ready <none> 61m v1.15.0
kind-worker3 Ready <none> 61m v1.15.0
kubernetes cluster의 .kube/config
마찬가지로 kubernetes cluster의 master 노드에 들어가 정보를 복사하고,
gitlab-runner 컨테이너의/root/.kube/아래에 새 파일을 만들고 붙여 넣습니다.
예를 들어, 파일 이름은 verify-kube-config
입니다.
마찬가지로 user : group을 chown
에서 gitlab-runner
로 만들거나,chmod
권한을 변경합니다.
그렇다면 gitlab-runnerユーザ
에서 kubectl이 통과하는지 확인하십시오.
# export KUBECONFIG=/home/gitlab-runner/.kube/verify-kube-config
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubemaster1.mydom.local Ready master 46d v1.15.0
kubeworker1.mydom.local Ready <none> 46d v1.15.0
kubeworker2.mydom.local Ready <none> 46d v1.15.0
Step4 gitlab-runner를 움직여 보자.
아래를 준비합니다.
# mkdir -p /home/gitlab-runner/config/manifest
이 아래에 매니페스트를 준비합니다.
manifest는 kustomize로 관리합니다.
kustomize에 관해서는, 이하에 간단한 사용법을 쓰고 있으므로, 참조해 주세요.
htps : // 코 m / 료 jsb / ms / 66fb5155cb3f908 ~ fd07
구성으로는
manifest---------- base
|
|---- verification
|
|---- production
gitlab-runner를 실행하는 yml 파일은 다음과 같습니다.
최소한의 명령만 쓰고 있습니다.
gitlab-ci.ymlstages:
- build
- test
- deploy
docker-build:
stage: build
before_script:
- sudo docker login -u $Registory_user -p $Registory_password <registry IP>
- export GOROOT=/home/gitlab-runner/lib/go
- export GOPATH=/home/gitlab-runner/lib/go/bin
- export PATH=$PATH:$GOROOT/bin
script:
- sudo docker build -t <image 名> . --no-cache=true --force-rm=true
- sudo docker push <image 名>
- sudo /home/gitlab-runner/lib/go/bin/kind load docker-image <image 名>
- sudo docker images
k8s-kind-test:
stage: test
before_script:
- export KUBECONFIG=/home/gitlab-runner/.kube/kind-config-kind
script:
- cd /home/gitlab-runner/config/manifest
- kubectl kustomize verification | kubectl apply -f -
- sleep 1m
- kubectl get pods
- curl -I <application URL>
k8s-deploy:
stage: deploy
before_script:
- export KUBECONFIG=/home/gitlab-runner/.kube/verify-kube-config
script:
- cd /home/gitlab-runner/config/manifest
- kubectl kustomize production | kubectl apply -f -
- sleep 1m
- kubectl get pods
여기서 kind에 배포 된 응용 프로그램에 curl
할 때,
IP 부분을 containerのIP
로 설정합니다.
나머지는 git push
를 할 뿐입니다.
마지막으로
kubernetes meetup tokyo #22에 참가해보고 최근 자주 듣는 Argo CD
을 이제 사용해 보지 않으면 하는 느낌이 들었습니다.
Reference
이 문제에 관하여(Gitlab-runner에서 CI 테스트에 kubernetes (Kind를 사용한 테스트 및 Kubernetes cluster에 deploy)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryojsb/items/f8aa20fad87a3f2297a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
docker 호스트 (gitlab-runner 컨테이너가 있음)
kubernetes cluster × 1
Step1 Kind의 deploy
htps : // 코 m / 료 jsb / ms / 에 2146 d41005f536cf74
여기에 정리했으므로 참조하십시오.
여기는 docker host와 gitlab-runner 모두에 있습니다.
gitlab-runner 컨테이너에 관하여
gitlab-runner 컨테이너에 관해서는 kind 명령을 치는 것만으로도 괜찮습니다.
그 때 다음을 실행하고 그 아래에 go 디렉토리를 배치합니다.
# mkdir /home/gitlab-runner/lib/
그리고 이 상태로 하십시오.
# ls -ltr
total 70248
-rwxr-xr-x 1 gitlab-runner gitlab-runner 3525802 Aug 15 18:50 gofmt
-rwxr-xr-x 1 gitlab-runner gitlab-runner 14613596 Aug 15 18:50 go
-rwxr-xr-x 1 gitlab-runner gitlab-runner 17422189 Aug 15 18:51 godoc
drwxr-xr-x 3 gitlab-runner gitlab-runner 17 Aug 28 06:34 pkg
-rwxr-xr-x 1 gitlab-runner gitlab-runner 36367031 Aug 28 07:01 kind
gitlab-runner 컨테이너 내에서 gitlab-runner 사용자에게 권한을 부여하십시오.
# chmod 777 /home/gitlab-runner/.docker
# chmod 777 /home/gitlab-runner/.docker/*
# chown gitlab-runner:gitlab-runner /home/gitlab-runner/.docker
# chown gitlab-runner:gitlab-runner /home/gitlab-runner/.docker/*
Step2 docker build 테스트를 위해 docker 설치
먼저 gitlab-runner 컨테이너에 docker를 설치하고 이동합니다.
# apt-get update
# apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# apt-get update
# apt-get install -y docker-ce
그런 다음 kubectl을 사용할 수 있도록 설정하십시오.
Step3 gitlab-runner 컨테이너에서 Kind 및 kubernetes cluster에 대한 kubectl 실행
gitlab-runner에서 kind와 kubernetes cluster 각각에 kubernetes를 사용할 수 있도록 해 나갑니다.
kubernetes는 .kube/config
라는 파일을 참조하여 kubectl을 던지는 대상을 식별합니다.
즉, 이것을 가져와서, KUBECONFIG
에 그 path 를 지정해 export해 주면 던진다고 하는 것입니다.
kind .kube/config
gitlab-runner 컨테이너가 있는 docker 호스트에서 다음을 수행합니다.
# ls /root/.kube/
cache http-cache kind-config-kind
kind에 관해서는 kind-config-kind
라는 이름으로 config 파일이 들어 있습니다.
이제 kind 마스터의 containerに割り振られたIP
와 フォワーディングしているport
를 확인하십시오.
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
682857797af4 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker3
72b67c81ce82 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour 36996/tcp, 127.0.0.1:36996->6443/tcp kind-control-plane
834a76c4bdb4 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker
143cf9312cf0 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker2
포트는 6443
입니다.
# docker inspect kind-control-plane
(省略)
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:07",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "d57ec14a533f41659ffcb098ff46a9171f150845cbd52a67db3688f54e381a0b",
"EndpointID": "4d8aecd914a42e67c59554c441de1d3cf288e3ffd70ab02759bbb6af9a5da6c9",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:07",
"DriverOpts": null
}
}
}
}
]
IP는 172.17.0.7
입니다.
이제 config 파일의 내용을 복사하십시오.
gitlab-runner 컨테이너에 들어가 /home/gitlab-runner
아래에 .kube/kind-config-kind를 만듭니다.
# mkdir /root/.kube
# vi /root/.kube/kind-config-kind
// コピーしたものをペーストする。「その際、server: の部分は先ほど調べたものに変える。」
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: dummy-key
server: https://172.17.0.7:6443
name: kind
contexts:
(省略)
user : group을 chown
에서 gitlab-runner
로 설정하거나,chmod
권한을 변경합니다.
그렇다면 gitlab-runnerユーザ
kubectl이 통과하는지 확인하십시오.
# export KUBECONFIG=/home/gitlab-runner/.kube/kind-config-kind
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready master 62m v1.15.0
kind-worker Ready <none> 61m v1.15.0
kind-worker2 Ready <none> 61m v1.15.0
kind-worker3 Ready <none> 61m v1.15.0
kubernetes cluster의 .kube/config
마찬가지로 kubernetes cluster의 master 노드에 들어가 정보를 복사하고,
gitlab-runner 컨테이너의/root/.kube/아래에 새 파일을 만들고 붙여 넣습니다.
예를 들어, 파일 이름은 verify-kube-config
입니다.
마찬가지로 user : group을 chown
에서 gitlab-runner
로 만들거나,chmod
권한을 변경합니다.
그렇다면 gitlab-runnerユーザ
에서 kubectl이 통과하는지 확인하십시오.
# export KUBECONFIG=/home/gitlab-runner/.kube/verify-kube-config
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubemaster1.mydom.local Ready master 46d v1.15.0
kubeworker1.mydom.local Ready <none> 46d v1.15.0
kubeworker2.mydom.local Ready <none> 46d v1.15.0
Step4 gitlab-runner를 움직여 보자.
아래를 준비합니다.
# mkdir -p /home/gitlab-runner/config/manifest
이 아래에 매니페스트를 준비합니다.
manifest는 kustomize로 관리합니다.
kustomize에 관해서는, 이하에 간단한 사용법을 쓰고 있으므로, 참조해 주세요.
htps : // 코 m / 료 jsb / ms / 66fb5155cb3f908 ~ fd07
구성으로는
manifest---------- base
|
|---- verification
|
|---- production
gitlab-runner를 실행하는 yml 파일은 다음과 같습니다.
최소한의 명령만 쓰고 있습니다.
gitlab-ci.ymlstages:
- build
- test
- deploy
docker-build:
stage: build
before_script:
- sudo docker login -u $Registory_user -p $Registory_password <registry IP>
- export GOROOT=/home/gitlab-runner/lib/go
- export GOPATH=/home/gitlab-runner/lib/go/bin
- export PATH=$PATH:$GOROOT/bin
script:
- sudo docker build -t <image 名> . --no-cache=true --force-rm=true
- sudo docker push <image 名>
- sudo /home/gitlab-runner/lib/go/bin/kind load docker-image <image 名>
- sudo docker images
k8s-kind-test:
stage: test
before_script:
- export KUBECONFIG=/home/gitlab-runner/.kube/kind-config-kind
script:
- cd /home/gitlab-runner/config/manifest
- kubectl kustomize verification | kubectl apply -f -
- sleep 1m
- kubectl get pods
- curl -I <application URL>
k8s-deploy:
stage: deploy
before_script:
- export KUBECONFIG=/home/gitlab-runner/.kube/verify-kube-config
script:
- cd /home/gitlab-runner/config/manifest
- kubectl kustomize production | kubectl apply -f -
- sleep 1m
- kubectl get pods
여기서 kind에 배포 된 응용 프로그램에 curl
할 때,
IP 부분을 containerのIP
로 설정합니다.
나머지는 git push
를 할 뿐입니다.
마지막으로
kubernetes meetup tokyo #22에 참가해보고 최근 자주 듣는 Argo CD
을 이제 사용해 보지 않으면 하는 느낌이 들었습니다.
Reference
이 문제에 관하여(Gitlab-runner에서 CI 테스트에 kubernetes (Kind를 사용한 테스트 및 Kubernetes cluster에 deploy)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryojsb/items/f8aa20fad87a3f2297a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# mkdir /home/gitlab-runner/lib/
# ls -ltr
total 70248
-rwxr-xr-x 1 gitlab-runner gitlab-runner 3525802 Aug 15 18:50 gofmt
-rwxr-xr-x 1 gitlab-runner gitlab-runner 14613596 Aug 15 18:50 go
-rwxr-xr-x 1 gitlab-runner gitlab-runner 17422189 Aug 15 18:51 godoc
drwxr-xr-x 3 gitlab-runner gitlab-runner 17 Aug 28 06:34 pkg
-rwxr-xr-x 1 gitlab-runner gitlab-runner 36367031 Aug 28 07:01 kind
# chmod 777 /home/gitlab-runner/.docker
# chmod 777 /home/gitlab-runner/.docker/*
# chown gitlab-runner:gitlab-runner /home/gitlab-runner/.docker
# chown gitlab-runner:gitlab-runner /home/gitlab-runner/.docker/*
먼저 gitlab-runner 컨테이너에 docker를 설치하고 이동합니다.
# apt-get update
# apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
# add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# apt-get update
# apt-get install -y docker-ce
그런 다음 kubectl을 사용할 수 있도록 설정하십시오.
Step3 gitlab-runner 컨테이너에서 Kind 및 kubernetes cluster에 대한 kubectl 실행
gitlab-runner에서 kind와 kubernetes cluster 각각에 kubernetes를 사용할 수 있도록 해 나갑니다.
kubernetes는 .kube/config
라는 파일을 참조하여 kubectl을 던지는 대상을 식별합니다.
즉, 이것을 가져와서, KUBECONFIG
에 그 path 를 지정해 export해 주면 던진다고 하는 것입니다.
kind .kube/config
gitlab-runner 컨테이너가 있는 docker 호스트에서 다음을 수행합니다.
# ls /root/.kube/
cache http-cache kind-config-kind
kind에 관해서는 kind-config-kind
라는 이름으로 config 파일이 들어 있습니다.
이제 kind 마스터의 containerに割り振られたIP
와 フォワーディングしているport
를 확인하십시오.
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
682857797af4 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker3
72b67c81ce82 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour 36996/tcp, 127.0.0.1:36996->6443/tcp kind-control-plane
834a76c4bdb4 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker
143cf9312cf0 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker2
포트는 6443
입니다.
# docker inspect kind-control-plane
(省略)
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:07",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "d57ec14a533f41659ffcb098ff46a9171f150845cbd52a67db3688f54e381a0b",
"EndpointID": "4d8aecd914a42e67c59554c441de1d3cf288e3ffd70ab02759bbb6af9a5da6c9",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:07",
"DriverOpts": null
}
}
}
}
]
IP는 172.17.0.7
입니다.
이제 config 파일의 내용을 복사하십시오.
gitlab-runner 컨테이너에 들어가 /home/gitlab-runner
아래에 .kube/kind-config-kind를 만듭니다.
# mkdir /root/.kube
# vi /root/.kube/kind-config-kind
// コピーしたものをペーストする。「その際、server: の部分は先ほど調べたものに変える。」
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: dummy-key
server: https://172.17.0.7:6443
name: kind
contexts:
(省略)
user : group을 chown
에서 gitlab-runner
로 설정하거나,chmod
권한을 변경합니다.
그렇다면 gitlab-runnerユーザ
kubectl이 통과하는지 확인하십시오.
# export KUBECONFIG=/home/gitlab-runner/.kube/kind-config-kind
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready master 62m v1.15.0
kind-worker Ready <none> 61m v1.15.0
kind-worker2 Ready <none> 61m v1.15.0
kind-worker3 Ready <none> 61m v1.15.0
kubernetes cluster의 .kube/config
마찬가지로 kubernetes cluster의 master 노드에 들어가 정보를 복사하고,
gitlab-runner 컨테이너의/root/.kube/아래에 새 파일을 만들고 붙여 넣습니다.
예를 들어, 파일 이름은 verify-kube-config
입니다.
마찬가지로 user : group을 chown
에서 gitlab-runner
로 만들거나,chmod
권한을 변경합니다.
그렇다면 gitlab-runnerユーザ
에서 kubectl이 통과하는지 확인하십시오.
# export KUBECONFIG=/home/gitlab-runner/.kube/verify-kube-config
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubemaster1.mydom.local Ready master 46d v1.15.0
kubeworker1.mydom.local Ready <none> 46d v1.15.0
kubeworker2.mydom.local Ready <none> 46d v1.15.0
Step4 gitlab-runner를 움직여 보자.
아래를 준비합니다.
# mkdir -p /home/gitlab-runner/config/manifest
이 아래에 매니페스트를 준비합니다.
manifest는 kustomize로 관리합니다.
kustomize에 관해서는, 이하에 간단한 사용법을 쓰고 있으므로, 참조해 주세요.
htps : // 코 m / 료 jsb / ms / 66fb5155cb3f908 ~ fd07
구성으로는
manifest---------- base
|
|---- verification
|
|---- production
gitlab-runner를 실행하는 yml 파일은 다음과 같습니다.
최소한의 명령만 쓰고 있습니다.
gitlab-ci.ymlstages:
- build
- test
- deploy
docker-build:
stage: build
before_script:
- sudo docker login -u $Registory_user -p $Registory_password <registry IP>
- export GOROOT=/home/gitlab-runner/lib/go
- export GOPATH=/home/gitlab-runner/lib/go/bin
- export PATH=$PATH:$GOROOT/bin
script:
- sudo docker build -t <image 名> . --no-cache=true --force-rm=true
- sudo docker push <image 名>
- sudo /home/gitlab-runner/lib/go/bin/kind load docker-image <image 名>
- sudo docker images
k8s-kind-test:
stage: test
before_script:
- export KUBECONFIG=/home/gitlab-runner/.kube/kind-config-kind
script:
- cd /home/gitlab-runner/config/manifest
- kubectl kustomize verification | kubectl apply -f -
- sleep 1m
- kubectl get pods
- curl -I <application URL>
k8s-deploy:
stage: deploy
before_script:
- export KUBECONFIG=/home/gitlab-runner/.kube/verify-kube-config
script:
- cd /home/gitlab-runner/config/manifest
- kubectl kustomize production | kubectl apply -f -
- sleep 1m
- kubectl get pods
여기서 kind에 배포 된 응용 프로그램에 curl
할 때,
IP 부분을 containerのIP
로 설정합니다.
나머지는 git push
를 할 뿐입니다.
마지막으로
kubernetes meetup tokyo #22에 참가해보고 최근 자주 듣는 Argo CD
을 이제 사용해 보지 않으면 하는 느낌이 들었습니다.
Reference
이 문제에 관하여(Gitlab-runner에서 CI 테스트에 kubernetes (Kind를 사용한 테스트 및 Kubernetes cluster에 deploy)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryojsb/items/f8aa20fad87a3f2297a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# ls /root/.kube/
cache http-cache kind-config-kind
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
682857797af4 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker3
72b67c81ce82 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour 36996/tcp, 127.0.0.1:36996->6443/tcp kind-control-plane
834a76c4bdb4 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker
143cf9312cf0 kindest/node:v1.15.0 "/usr/local/bin/entr…" 58 minutes ago Up About an hour kind-worker2
# docker inspect kind-control-plane
(省略)
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:07",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "d57ec14a533f41659ffcb098ff46a9171f150845cbd52a67db3688f54e381a0b",
"EndpointID": "4d8aecd914a42e67c59554c441de1d3cf288e3ffd70ab02759bbb6af9a5da6c9",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.7",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:07",
"DriverOpts": null
}
}
}
}
]
# mkdir /root/.kube
# vi /root/.kube/kind-config-kind
// コピーしたものをペーストする。「その際、server: の部分は先ほど調べたものに変える。」
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: dummy-key
server: https://172.17.0.7:6443
name: kind
contexts:
(省略)
# export KUBECONFIG=/home/gitlab-runner/.kube/kind-config-kind
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready master 62m v1.15.0
kind-worker Ready <none> 61m v1.15.0
kind-worker2 Ready <none> 61m v1.15.0
kind-worker3 Ready <none> 61m v1.15.0
# export KUBECONFIG=/home/gitlab-runner/.kube/verify-kube-config
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubemaster1.mydom.local Ready master 46d v1.15.0
kubeworker1.mydom.local Ready <none> 46d v1.15.0
kubeworker2.mydom.local Ready <none> 46d v1.15.0
아래를 준비합니다.
# mkdir -p /home/gitlab-runner/config/manifest
이 아래에 매니페스트를 준비합니다.
manifest는 kustomize로 관리합니다.
kustomize에 관해서는, 이하에 간단한 사용법을 쓰고 있으므로, 참조해 주세요.
htps : // 코 m / 료 jsb / ms / 66fb5155cb3f908 ~ fd07
구성으로는
manifest---------- base
|
|---- verification
|
|---- production
gitlab-runner를 실행하는 yml 파일은 다음과 같습니다.
최소한의 명령만 쓰고 있습니다.
gitlab-ci.yml
stages:
- build
- test
- deploy
docker-build:
stage: build
before_script:
- sudo docker login -u $Registory_user -p $Registory_password <registry IP>
- export GOROOT=/home/gitlab-runner/lib/go
- export GOPATH=/home/gitlab-runner/lib/go/bin
- export PATH=$PATH:$GOROOT/bin
script:
- sudo docker build -t <image 名> . --no-cache=true --force-rm=true
- sudo docker push <image 名>
- sudo /home/gitlab-runner/lib/go/bin/kind load docker-image <image 名>
- sudo docker images
k8s-kind-test:
stage: test
before_script:
- export KUBECONFIG=/home/gitlab-runner/.kube/kind-config-kind
script:
- cd /home/gitlab-runner/config/manifest
- kubectl kustomize verification | kubectl apply -f -
- sleep 1m
- kubectl get pods
- curl -I <application URL>
k8s-deploy:
stage: deploy
before_script:
- export KUBECONFIG=/home/gitlab-runner/.kube/verify-kube-config
script:
- cd /home/gitlab-runner/config/manifest
- kubectl kustomize production | kubectl apply -f -
- sleep 1m
- kubectl get pods
여기서 kind에 배포 된 응용 프로그램에
curl
할 때,IP 부분을
containerのIP
로 설정합니다.나머지는
git push
를 할 뿐입니다.마지막으로
kubernetes meetup tokyo #22에 참가해보고 최근 자주 듣는 Argo CD
을 이제 사용해 보지 않으면 하는 느낌이 들었습니다.
Reference
이 문제에 관하여(Gitlab-runner에서 CI 테스트에 kubernetes (Kind를 사용한 테스트 및 Kubernetes cluster에 deploy)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ryojsb/items/f8aa20fad87a3f2297a6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Gitlab-runner에서 CI 테스트에 kubernetes (Kind를 사용한 테스트 및 Kubernetes cluster에 deploy)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryojsb/items/f8aa20fad87a3f2297a6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)