인터넷 에이전트의'우리 Kubbernetes 실습'에 참가했습니다!

안녕하세요. Lapi@dragoneena12입니다.
9/24-30에 열린 2020년 Kubernetes 실습에 참가했기 때문에 내용과 소감을 소개하고 싶습니다.
おうちKubernetesクラスタ

참가하기 전에


나는 이전에 실습에 참가한 적이 없어서 거의 참가해야 한다고 생각해서 찾아보았는데 이곳의 Kubbernetes 실습 활동이 이미 멈춘 것을 발견하였다.오래전부터 인프라를 좋아했고 자기 집 서버 등도 구축해왔지만 Kubernetes라면 클러스터 환경 등 비용을 마련해야 해 한 발짝도 내딛지 못했다.그래서 나는 이 실습 내용에 끌려 랩베리피4 3대를 받을 수 있도록 지원했다.
Docker와 Docker compose를 좋아해서 오래전부터 사용해왔지만, Kubernetes는 K자도 모르는 초보자라 미리 Kubefest Tokyo 2020 슬라이드를 보고 어느 정도 트렌드를 배웠다.이런 상황에서 저는 Kubernetes-native의 CI/CD에 관심이 생겨서 실습할 때 그걸 하고 싶었어요.

해본 일


やったこと集

day1


칠전 선생에 대해 스승으로서 Kubernetes가 1밀리미터도 모르는 것을 구조부터 기억하고 싶어서 도전했다Kubernetes-the-hard-way.자사 서버 구축 같은 곳에서 리눅스 조작에 서서히 익숙해졌기 때문에 전체적으로도 상당히 빠른 속도로 구축할 수 있다.때로는 자료도 미묘하게 완비되지 않았지만, 지적 후 개선 w

day2


하드웨이의 구축이 끝나면 앱을 올릴 수 있지만 단일한 고장점이 드문드문 깜박이기 때문에 멀티마스터의 HA 구성을 만들기로 했다.프로그램으로서, 우선 etcd를 분류화하고, 모든 노드에 ControlPlane을 설치하여, Kub-apiserver의 부하 균형을 잡는 느낌을 줍니다.지금까지는 순조로웠지만 마지막 DNS 서버가 실행되지 않는 등 미묘한 문제가 발생해 문제 해결에 적지 않은 시간이 걸렸다.
마지막에 만들어진 구성은 ↓ 같은 느낌.이렇게 쓸데없는 사람은 매우 적다고 느낀다.
KubernetesクラスタHA構成

day3


DNS 서버가 작동하지 않는 문제가 해결됨에 따라 당초 하려고 했던 CI/CD 도입을 추진하기로 했다.먼저 GitOps 도입 요점ArgoCD부터 시작합니다.처음에 나는 우직하게 강좌에 따라 진행했지만 ARM64를 지지하지 않는다는 인상 때문에 실패했다.조사 결과alinbalutoiu/argocd ARM64에 대응하는 인상이 있어 yaml을 이 동작으로 바꿨다.하지만 실제 창고를 추가하던 중 다음과 같은 오류가 발생해 원인을 전혀 모르고 좌초했다.여기서부터 어둠의 Argo CD와의 싸움을...
# 闇のエラー
Unable to create application: application spec is invalid: InvalidSpecError: repository not accessible: Get "https://github.com/argoproj/argocd-example-apps.git/info/refs?service=git-upload-pack": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

day4


어두운 오류가 발생한 배경에서 구름은 다음과 같은 몇 가지 이상한 행동을 했다.
  • argocd-redispod는 ImagePullErr를 일으키고 이동하지 않습니다.
  • Pod에서 이름을 해결할 수 없습니다.
  • argocd-serverpod내clone github-repository에서 사용할 수 없습니다.
  • 조사해도 정보가 잘 나오지 않는 오류가 자주 발생하고, 구성 오류 등의 영향을 고려해 클러스터를 다시 구축하기로 한 것이다.이 과정에서 같은 일을 두 번 하기 싫고 절대로 설정을 틀리지 않기 위해 Ansible-playbook에 모든 하드웨이의 구축 과정을 적었습니다.이 Ansible-playbook 창고가 밑에 붙어 있으니 가능하면 참고(바이너리 꺼지니까 적당히 만지세요).
  • 하드웨이의 Ansible-playbook 재현
  • https://github.com/dragoneena12/home-kubernetes-intern-2020
  • SD카드에서 다시 태우고 Ansible로 클러스터를 재구성했는데 위와 같은 오류가 사라지고 클러스터가 매우 건강해지기 시작했습니다!(방금 무슨 잘못이었어.)나는 관리 도구를 구성하는 위대함을 알았다.모두 Kubadm이나 Kubspray를 사용하세요.
    하지만 앞서 언급한 아르고 CD의 오류는 여기서도 제대로 풀리지 못하고 좌초됐다.Argo CD를 포기하고 싶지만 제가 하고 싶은 Kubbernetes-native CI/CD에는 Argo CD가 상당히 중요한 존재이기 때문에 버릴 수 없고 어렵습니다.나는 경비원과 함께 오랫동안 고장 제거를 했다고 생각한다.이렇게 많이 봐주셔서 정말 감사합니다.

    day5


    넷째 날 밤, 지도교사가 갑자기 말했다. "https가 아니라 ssh면 가능할까요?"이 말을 생각하면 저는 ssh부터 Argo CD를 운전해 보았습니다. 아무 문제 없이 작동을 시작했습니다!결과적으로 https에서 순조롭게 진행되지 못하는 이유는 저도 잘 모르겠습니다(누군지 알면 알려주세요). Argo CD가 잠시 시작되었기 때문에 다양한 앱을 디자인해 봤습니다.
    먼저 디자인해 본 건Passbolt입니다.가입한 이유는 단지 친구가 사용하고 싶은 단순한 이유 w
    패스볼트에서도 ARM64 버전이라는 인상은 없었지만, Docker filehttps://github.com/passbolt/passbolt_docker이 준비돼 있어 단숨에 구축해 액션을 했다.구축해 Docker Hub에 올린 것들과 Kubernetes의 선언문도 아래에 붙여져 있다.
  • 이미지
  • https://hub.docker.com/repository/registry-1.docker.io/dragoneena12/passbolt
  • Kubernetes 선언
  • https://github.com/dragoneena12/passbolt_k8s
  • 다른 건 HelmChart에서 온 depro도 해보고 싶어서 Argo CD를 통해 Promaetheus와Grafana의 HelmChart를 디자인해 봤어요.둘 다 ARM64(kube-state-metrics 이외)에 대응하기 때문에 한순간에 이 서비스들을 시작할 수 있다.너무 좋아지고 싫어진 Argo CD.
    사실 제가 하고 싶은 게 많은데 시간이 부족해서 이만...나는 Argo CD에 푹 빠진 것을 후회한다.
    ArgoCDたのしい!

    실습이 끝난 후


    저한테는 첫 인턴이고 회사 사람들과 함께 개발한 경험 자체가 새롭지만 정말 즐거운 인턴이라고 생각해요.Kubbernetes 경험이 없어도 (나는 이 실습에서 처음으로 지령 w를 쳤다) Docker와 클라우드 카드를 좋아하는 사람은 절대로 빠져들 수 있다.
    이번 인턴십은 사실상 최우수상인 인형을 받기 위해 노력했다(웃음). 하지만 아쉽게도 최우수상을 놓쳤지만'그로우 업 상'으로 표창했다.
    원하는 Kubernetes 환경이 생겼기 때문에 앞으로도 이 환경을 끊임없이 강화하고 싶습니다.
    실습 중에 만난 여러분, 일주일 동안 감사합니다!

    추기


    공식 블로그와 다른 실습 참가자들의 기사를 미리 게재합니다!
    https://developers.cyberagent.co.jp/blog/archives/27443/
    https://taketakeblog.hatenablog.jp/entry/2020/10/06/181423
    https://www.yukkuriikouze.com/2020/10/26/4026/

    좋은 웹페이지 즐겨찾기