Cloud (22) 썸네일형 리스트형 (Spring Boot) - k8s java client로 k8s API와 통신하기 🍳머리말 local환경 에서 Spring boot를 이용해 k8s API와 통신하여 특정 namespace의 pod 목록을 출력하는 예제글입니다. 📕 Prerequisite 📔 k8s cluster 📔 Spring Boot 📕 k8s cluster 설정 📔 k8s cluster 내 ~/.kube/config 정보 확인 다음처럼 명령어 입력시 구축된 k8s config 내용을 확인할 수 있습니다. 해당 내용을 복붙해 config file을 만들어줍니다. 📔 특정 namespace 명에 떠 있는 pod 확인 mskim이라는 namespace에 떠 있는 pod들의 목록입니다. 📕 Spring Boot 구성 📔 project 생성 다음 사이트에서 자신이 사용하는 jdk에 맞게 적절히 생성해줍니다. 제 경우는 j.. (Terraform) - client-go로 pod에 terraform 명령 실행하기 🍳머리말 k8s 외부에서 client-go를 이용해 pod에 직접 접근해 내부 container에 있는 terraform cli를 실행해 ec2 instance를 띄우는 예제입니다. {}로 감싸진 부분은 직접 입력해야하는 부분도 있습니다. 📕Prerequisite 📔 go v1.17+ 📔 k8s cluster 📔 k8s cluster 내 ~/.kube/config 정보 📔 docker 📔 docker hub 계정 📔 aws console 계정 📔 terraform cli 📕 Terraform cli 설치 ubuntu를 base image container를 사용할 것이므로 cli를 ubuntu용으로 받아줍니다. https://www.terraform.io/downloads 📕hcl file 작성 작업 f.. (Kubernetes) - client-go로 k8s API와 통신하기 🍳머리말 통신 후 k8s cluster내에 단계별로 접근해보는 예제와 설명글입니다. 📕Prerequisite 📔 k8s cluster 📔 Go lang 📕 공통사항 📔 cluster내 config file 내용 확인 및 저장 k8s api server는 config file을 통해 인증된 사용자와만 통신합니다. 따라서 cluster 외부에서 api server와 통신하기 위해서는 config file 내용이 필요합니다. 주로 cluster config file은 cluster환경이 갖춰진 local computer내에서 /root/.kube/config로써 존재합니다. cat명령어로 내용을 찾아 출력해봅니다. 📔 출력결과 해당 내용을 apiVersion부분부터 복붙해 통신을 시도할 computer의 lo.. (kubernetes) - nfs storage사용하기 🍳머리말 nfs server와 client설정 후 nfs provisioner로 dynamic provisioning을 하는 설명글입니다. {}로 감싼 부분은 사용자 설정이 필요합니다. 📕 NFS 📔 NFS란 net상에서 다른 computer의 filesystem을 mount해서 공유하는 것입니다. 📕 NFS provisioner 📔 NFS provisioner란 nfs를 이용해 storage를 사용하는 pod를 배포하려면 k8s cluster상에서 nfs storage를 사용할 수 있도록 설정된 provisioner가 필요합니다. 이는 serviceaccount로써 k8s cluster상에 pv를 배포할 수 있도록 권한을 부여해 주는 역할을 수행합니다. 📕 환경 📔 server 📑 KERNEL-VERS.. (Kubernetes) - TLS/SSL secret 생성하기 🍳머리말 k8s상에서 TLS/SSL secret 객체를 생성하는 방법을 설명한 글입니다.{}로 감싸진 부분은 직접 입력해야합니다. 인증서로 통신하는 보안 protocol이 TSL이며 과거 SSL이라는 명칭으로 사용되었습니다. 📕Prerequisites 📔 Openssl설치 사설 CA 인증기관이 아닌 이상 무료로 인증서를 받을 수 있는 대표 기관 중 하나입니다. 맞는 OS에 설치해 openssl 명령어로 TLS 또는 SSL file을 생성할 수 있습니다. 📕생성 📔 tls.crt, tls.key 다음 명령어로 원하는 곳에 간단히 file형태로 추가할 수 있습니다. openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt.. (Kubernetes) - resouce 생성 예시 file 🍳머리말 k8s resouce를 code 복붙으로 최대한 쉽게 만들어 test해보기 위한 예시들입니다. {}로 감싸진 부분은 직접 입력해야합니다. 계속 갱신 예정 📕storageclassname으로 pvc, pv, pod생성 storage가 이미 있는 경우 해당 storage를 dynamic volume이 이용하기 위해 설정된 file을 이용하는 예제입니다. {차례대로 아래로 적용해줍니다. 📔 PVC apiVersion: v1 kind: PersistentVolumeClaim metadata: name: task-pv-claim spec: storageClassName: {storageclass명} accessModes: - ReadWriteOnce resources: requests: storage: .. (kubernetes) - resource삭제 시 terminating 상태에서 멈춤 🍳머리말 k8s cluster의 resource들을 지울 때 종종 terminating상태에서 멈춰있는 경우가 있습니다. {}부분은 직접 입력해야하는 부분입니다. 📕 kubectl server로 curl 📔 namespace 강제 삭제 curl 명령어로 해당 finalizers를 끄는 temp json file을 작성해 namespace의 api를 호출해 해당 file을 넣음으로써 가능합니다. ( NAMESPACE=olm kubectl proxy & kubectl get namespace $NAMESPACE -o json |jq '.spec = {"finalizers":[]}' >temp.json curl -k -H "Content-Type: application/json" -X PUT --data-bi.. (Kubernetes) - cluster상에서 WAS-DB 연결 🍳머리말 K8s cluster에서 Provisioned WAS(tomcat)와 DB(mysql)를 연결하는 예제 {}로 감싸진 부분은 직접 입력해야하는 부분입니다. 📕 Prerequisite 📔 Docker 📔 CNI가 설치된 k8s cluster. 📔 Docker Hub 계정 📕 DB(mysql) 준비 📔 namespace 생성 논리적 격리를 위해 namespace를 생성해줍니다. kubectl create namespace [이름] 제 경우는 제 이름을 따서 mskim이라는 namespace를 생성해줬습니다. kubectl create namespace mskim 📔 replicaset 생성 제 namespace로 replicaset을 생성해줍니다. mysql latest image를 사용했습니다. .. 이전 1 2 3 다음