LoginSignup
2
1

More than 3 years have passed since last update.

Proxy環境でUbuntu18.04上にminikubeとlstioを構築してみた

Last updated at Posted at 2020-02-07

はじめに

今回は、サービスメッシュを提供する Istio の構築をHTTP Proxy環境で行ってみました。
CentOS8 + minikubeでは上手くいかなかったのでUbuntu18.04 + minikubeにしています。

.curlrcを編集することで多少コマンドを短くできますがあえて編集せずに進めています。
2/10週に加筆予定。

環境概要

  • OS
    • Ubuntu 18.04.4 LTS
  • kubernetes
    • v1.17.2
  • minikube
    • v1.7.1
  • crictl
    • 1.17.0
  • docker
    • 18.09.7
  • Istio
    • v1.3.7

仮想マシンの構築

VirtualBox上に仮想マシンを作成

  • vCPU 4コア ※2コア以上必須 (minikube仕様)
  • メモリ 24GB ※16GBあれば大丈夫だと思う
  • HDD 160GB (可変)
  • ネットワーク
    • アダプター 1: Intel PRO/1000 MT Desktop (NAT)
    • アダプター 2: Intel PRO/1000 MT Desktop (ホストオンリーアダプタ)

仮想マシン上にUbuntu18.04をインストール

  • HTTP Proxyの設定を行う
  • OpenSSH Serverパッケージを導入する

パッケージのインストール

$ sudo -i
# apt update
# apt upgrade
# apt dist-upgrade
# apt install -y docker.io
# export Proxy=http://<HTTP Proxy Host>:<PORT>/
# curl -x $Proxy -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s -x $Proxy https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && cp kubectl /usr/local/bin/ &&  rm kubectl
# curl -x $Proxy -Lo minikube https://github.com/kubernetes/minikube/releases/download/v1.7.1/minikube-linux-amd64 && chmod +x minikube* &&   sudo cp minikube /usr/local/bin/ &&  rm minikube
# curl -OL -x $Proxy https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.17.0/crictl-v1.17.0-linux-amd64.tar.gz | tar zxv /usr/local/bin

minikube構築

# cd /etc/systemd/system/
# mkdir docker.service.d
# vi docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=<HTTP Proxy Host>:<PORT>" "HTTPS_PROXY=<HTTP Proxy Host>:<PORT>"
# systemctl daemon-reload
# systemctl show --property=Environment docker
# systemctl restart docker
# cd ~
# export HTTP_PROXY=$Proxy
# HTTPS_PROXYの設定値のURIスキーマはhttps://ではなくhttp://にすること
# export HTTPS_PROXY=$Proxy
# export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.0/24,192.168.39.0/24,10.0.2.15
# minikube start --vm-driver=none --kubernetes-version=v1.17.2 --docker-env HTTP_PROXY=$HTTP_PROXY --docker-env HTTPS_PROXY=$HTTPS_PROXY  --docker-env NO_PROXY=$NO_PROXY

Istio構築

# curl -x http://$Proxy -L https://git.io/getLatestIstio | ISTIO_VERSION=1.3.7 sh -
# cd istio-1.3.7/
# for i in install/kubernetes/helm/istio-init/files/crd*yaml; do kubectl apply -f $i; done
# kubectl apply -f install/kubernetes/istio-demo.yaml
# ※istio-ingressgateway のexternal-ipはpendingのままになる。
# kubectl get svc -n istio-system
# kubectl get pods -n istio-system

サンプルアプリケーションのデプロイ

# kubectl label namespace default istio-injection=enabled
# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
# kubectl get svc
# kubectl get pods
# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
# kubectl create -f samples/bookinfo/networking/destination-rule-all-mtls.yaml
# export GATEWAY_URL=$(minikube ip):$(kubectl get svc istio-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[1].nodePort}')
# echo $GATEWAY_URL
10.0.2.15:31380
# lsof -i:31380
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
kube-prox 3038 root   18u  IPv6 329642      0t0  TCP *:31380 (LISTEN)

Webブラウザから以下にアクセスしてみる

VirtualBoxが動作しているホストマシンのWebブラウザで「http://<仮想マシンのIPアドレス>:<ポート>/productpage」にアクセス。

注意点)

  • <仮想マシンのIPアドレス>は10.0.2.15 (NAT用のvNIC) のIPアドレスではなく192.168.225.4のような (ホストオンリーネットワーク用のvNIC)のIPアドレス
    • lsofの結果を見ればわかるが* (0.0.0.0) で待ち受けている
  • <ポート>は31380とは限らないのでecho $GATEWAY_URLの値を確認すること
  • ホストマシンのWebブラウザの設定でHTTP Proxyを外すか、NoProxyの設定 (イメージ: 192.168.225.0/24を除外) を行う必要がある。
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1