본문 바로가기

Cloud

(29)
(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..
(Terraform) - 용어 정리 🍳머리말 Terraform에서 사용하는 여러 용어, 동작흐름 및 예시를 정리한 설명 글입니다. 📕Terraform 📔 설명 hashicorp 사에서 제공하는 여러 cloud에 resource 배포 가능한 open source 도구입니다. infra를 바꾸고 provisioning해주며 version을 관리해 줍니다. 📑 infrastructure as a code 기존에는 infra 배포시 cli상에서 명령어를 이용, 절차형으로 실행하는데 이는 매우 번거로웠습니다. 선언형 언어로 ingra구성이 작성된 config file 이용해 infra를 배포합니다. code로 정의되었으므로 생산성, 투명성 증대, file공유로 협업 효율성 증대가 가능합니다. terraform이 구성 file분석 후 해당 vendo..
(Terraform) - Window에 설치 🍳머리말 Terraform window 설치에 대한 글입니다. 📕 Terraform 설치 📔 Terraform download 다음 link에서 zip folder를 down 받고 압축을 해제합니다. https://www.terraform.io/downloads Downloads | Terraform by HashiCorp Terraform is an open-source infrastructure as code software tool that enables you to safely and predictably create, change, and improve infrastructure. www.terraform.io C:\Program Files 경로에 Terraform folder를 만든 뒤 해제한..
(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) - redis cluster statefulset예제 🍳머리말 redis cluster를 k8s환경에 statefulset으로 배포하는 예제 file입니다. 📕 Prerequisite 📔 k8s cluster 📔 redis image DNS로 cluster create하는 것은 redis 7부터 지원합니다. 📕 ConfigMap, Service, StatefulSet 작성 📔 yaml apiVersion: v1 kind: ConfigMap metadata: name: redis-cluster namespace: redis labels: app: redis-cluster data: fix-ip.sh: | #!/bin/sh CLUSTER_CONFIG="/data/nodes.conf" if [ -f ${CLUSTER_CONFIG} ]; then if [ -z "..
(NGINX Ingress Controller) - TCP, UDP service 노출해 redis cluster와 연결하기 🍳머리말 TCP를 지원하지 않는 Ingress를 지원하도록 약간의 꼼수를 사용하는 설명글입니다. 📕TCP service 노출하기 📔 설명 k8s Ingress 객체는 TCP, UDP port로 routing하기 위한 service를 지원하지 않습니다. 때문에 Ingress controller는 이를 지원하기 위해 --tcp-services-configmap, --udp-services-configmap flag를 지원하고 있습니다. config map을 미리 생성해 그것을 mount하고 provisioning된 ingress controller의 몇 가지 설정을 바꿔서 가능하도록 하는 방법입니다. 그 중 redis cluster와 nginx ingress controller간 tcp 통신을 하기 위한 설..