Sign in

123

準備好AWS Fargate,然後設定Atlantis和Github,然後藉由Terragrunt部署AWS資源。

事前準備

學習曲線應該由Terrafrom -> Terragrunt -> Atlantis。起碼要有terraform providers 相關的知識,畢竟要知道Atlantis是如何觸發Terrafrom去跑建制的流程。

前言

在之前GCP部署Atlantis通常是使用Atlantis的Helm chart部署到GKE上,這次因為換工作的緣故使用到AWS,就想嘗試官方推薦的AWS Fargate的terraform module

關於比較敏感的值,像是token, AccessKey在Amazon ECS上有兩個建議處理方式
1.AWS Secrets Manager secrets
2 …


install k8s the hard way

準備好設定檔和憑證後,我們開始要進入節點中設定kubernetes上所需要的服務。

因為要同時進入三台節點中跑相同的指令,建議使用tmux或是iTerm分割終端機,當然也可以同時開三個終端視窗。

gcloud compute ssh controller-0gcloud compute ssh controller-1gcloud compute ssh controller-2

etcd

我們這裡要先安裝etcd,下載完etcd Binaries後,準備etcd systemd service file,再啟動服務。

wget -q --show-progress --https-only --timestamping \
"https://g …

更輕鬆在kustomize 使用vars

最一開始我們要釐清,在kustomize一定要先定義變數在某個yaml設定檔中(configmap, deployment, service, etc…),然後在另一個yaml再引用。

A var in kustomize is a reflection mechanism, allowing a value
defined in one YAML configuration field (e.g. an IP address) to
be copied to other locations in the YAML. It has a source spec
and any number of targets.

目前我要設定ingress的host為變數。

然後在kustomize.yaml生成一個configmap去準備變數VAR1。

field reference預設值是 metadata.name 也就是檔案名稱,如果下面案例中我沒有設定filedpath: data.VAR1 ingress.spec.rules.host就會變成my-configmap-xxxxxx

如果有設定就會變成我們在configmap設定好的


install k8s the hard way

由google工程師Kelsey Hightower和google團隊準備的安裝Kubernetes
https://github.com/kelseyhightower/kubernetes-the-hard-way
,安裝完可以清楚了解k8s裡面的元件怎麼溝通

工作環境事前準備

1. mac 或 linux 的使用者環境(這裡是用mac

2. Kubernetes cluster node 機器(這裡是用GCP

Part 1 agenda

  • 準備google cloud SDK和安裝cfssl和kubectl
  • 設定VPC, firewall, public ip, Controllers instances and Workers instances
  • 生產CA和TLS憑證(
    Admin Client …

開始使用 Fluent BitFluentd

Fluentd vs Fluent Bit

兩個專案由於是同一家公司出品,所以有很多相似的地方,不過官方的定位不太一樣。

Fluent Bit is a fast Log Processor and Forwarder for Linux, Embedded Linux, MacOS and BSD family operating systems.

Fluentd is an open source data collector for unified logging layer.

https://docs.fluentbit.io/manual/about/fluentd-and-fluent-bit

在某些在某種角度上,Fluent Bit 和 Fluentd,就好比Beats 和 Logstash,一種更輕量的數據收集和傳送的服務,在kubernetes中Flu …


快速安裝RabbitMQ和測試

建議使用Kustomize 設定
主要是因為設定的每一個參數官方readme都寫得很詳細

建立namespace和設定rbac

在Kubernetes的RabbitMQ,在第一次啟動的時候,RabbitMQ會試著找服務的pods然後join,當全部的node 準備好後就會發出 Kubernetes event

所以就需要下面兩個權限

  • get access to the endpoints resource
  • create access to the events resource
kubectl apply -f namespace.yaml
kubectl apply -f rbac.yaml

切換namespace

kubectl config set-context --current --namespace=rabbitmq

準備headless-service

Rab …


shard概念和如何規劃Elasticsearch cluster

分兩個部分

  1. 簡單shard原理和理念
  2. 根據Elasticsearch官訪研討會影片來規劃Elasticsearch cluster

Shard

在探討elasticearch sharding之前,我們要知道為什麼需要shard,假設有一個1 TB的資料,然後cluster裡面只有兩個容量512GB data node,如果我們不拆掉index的話,是沒有空間存放單一的index,所以我們必須使用shard的功能來處理這個問題。

shard 包含一部分index data,每一個shard 對應一個Lucene Index,它也有獨立和完整的功能,其中一個好處是可以shards分配到專門到儲存到專門的data node,然後配備SSD來處理。

https://codingexplained.com/coding/elasticsearch/understanding-sharding-in-elasticsearch

shardi …


深入了解iptables proxy mode

最近在面試的時候,聽到主管問了面試者不少network request 如何到k8s service backend的問題,覺得可以整合一下網路上的資料,這篇主要討論iptables proxy mode。大部分的情況沒有在使用userspace proxy modes,ipvs proxy mode 可能要等下一次討論。

事前準備:
要先了解iptable工作機制,建議可以看這一篇:https://phoenixnap.com/kb/iptables-tutorial-linux-firewall
當然wikipedia也是寫得不錯,我下面的文字也大多引用https://zh.wikipedia.org/wiki/Iptables

快速帶過ip …


目前在Horizontal Pod Autoscaler中最常使用的兩個api version 版本為v2beta1 和 v2beta2

autoscaling/V2beta1中是沒辦法自訂metrics,只能使用CPU and memory條件去自動擴展,你可以直接下單行的指令去啟動

autoscaling/V2beta2中是可以自訂metrics,也可以自己設定條件去自動擴展,像是requests-per-second

這是官方的說明文件
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#run-expose-php-apache-server

autoscaling/V …


kubeadm是 Kubernetes 官方推出的部署工具,用來快速安装Kubernetes集群

  • 新用戶可以 kubeadm 開始來試用 Kubernetes。
  • 熟悉 Kubernetes 的用戶可以使用 kubeadm 快速搭建集群並測試他們的應用。

這次使用kubeadm透過初始化 Master 節點來提供給 Node加入
1.準備好VM(這裡使用Centos)
2.安裝Container runtimes(這裡使用Docker )
3.安装 kubeadm
4.加入節點

  1. 我在GCP上準備兩台VM
    jeff-test-k8s-tw-m01 ->master
    jeff-test-k8s-tw-p01 -> Node

2.安裝Container runtimes
照著官方文件操作

# Install  …

Jeff Yen

DevOps engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store