概要
GCPのGKEなどを利用するにあたり、ローカルに開発環境が欲しくなった。
ほしくなった理由は主に金銭面的なものであるが。。。
ローカル環境へ導入するにあたり、いろいろな記事を参考させていただいたが、
いずれも一つの記事では導入が難しかったので、自分メモとして記載。
前提条件
- VMware ESXi 6.0
- CPU/MMU 仮想化:ソフトウェアをMMU化に使用
- CentOS Linux release 7.5.1804 (Core)
- SELinux:無効
- IPv6:無効
ネットワークの調整
echo -n "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
VirtualBox のインストール
ドライバー対応のため
yum -y install libGL* libICE* libSDL* libSM* libX11* libXcursor* libXext* libXinerama* libXmu* libXrender* libXt* libfontconfig* libpng15* libvpx* libxcb* opus kernel-devel gcc make wget perl
rpm -ivh https://download.virtualbox.org/virtualbox/5.2.18/VirtualBox-5.2-5.2.18_124319_el7-1.x86_64.rpm
Docker のインストール
インストール後、起動 + 自動起動
systemctl start docker
systemctl enable docker
Kubectl のインストール
minikube のインストール
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.28.2/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
Kuberenetes Cluster の作成
export MINIKUBE_WANTUPDATENOTIFICATION=false
export MINIKUBE_WANTREPORTERRORPROMPT=false
export MINIKUBE_HOME=$HOME
export CHANGE_MINIKUBE_NONE_USER=true
mkdir $HOME/.kube || true
touch $HOME/.kube/config
export KUBECONFIG=$HOME/.kube/config
minikube start \
--kubernetes-version=v1.10.5 \
--bootstrapper=kubeadm \
--docker-env NO_PROXY=192.168.100.0/24,127.0.0.1/32 \
--extra-config=controller-manager.cluster-signing-cert-file="/var/lib/localkube/certs/ca.crt" \
--extra-config=controller-manager.cluster-signing-key-file="/var/lib/localkube/certs/ca.key" \
--extra-config=apiserver.admission-control="LimitRanger,NamespaceExists,NamespaceLifecycle,ResourceQuota,ServiceAccount,DefaultStorageClass,MutatingAdmissionWebhook"
Istio のインストール
curl -L https://raw.githubusercontent.com/knative/serving/v0.1.1/third_party/istio-0.8.0/istio.yaml \
| sed 's/LoadBalancer/NodePort/' \
| sed 's/-statsd.mapping-config/--statsd.mapping-config/' \
| kubectl apply --filename -
※ -statsd.mapping-config の置換は yaml ファイルの記載ミスに伴う回避策
kubectl label namespace default istio-injection=enabled
# 状況確認
kubectl get pods --namespace istio-system
Knative のインストール
curl -L https://github.com/knative/serving/releases/download/v0.1.1/release-lite.yaml \
| sed 's/LoadBalancer/NodePort/' \
| kubectl apply --filename -
# 状況確認
kubectl get pods --namespace knative-serving
サンプルアプリのデプロイ
Kubernetes のダッシュボード表示
minikube dashboard --url=true