Qwiklabs の「Kubernetesソリューション」を進めていきたいと思います。
Google Kubernetes Engine での NGINX Ingress Controller
概要
Ingress Resource で Kubernetes の Deployment を設定します。
ここでは、外部クライアントから Deployment へのトラフィックのルーティングと負荷分散のために、Ingress Controller として NGINX を使用します。
コマンド
ゾーンを設定する
gcloud compute zones list
gcloud config set compute/zone us-central1-a
Kubernetes クラスタを作成する
gcloud container clusters create nginx-tutorial --num-nodes 2
Helm をインストールする
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > install-helm.sh
chmod u+x install-helm.sh
./install-helm.sh --version v2.16.3
helm init
Tiller をインストールする
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
helm init --service-account tiller --upgrade
kubectl get deployments -n kube-system
Kubernetes Engine でアプリケーションをデプロイする
kubectl create deployment hello-app --image=gcr.io/google-samples/hello-app:1.0
kubectl expose deployment hello-app --port=8080
Helm 経由で NGINX Ingress Controller をデプロイする
helm install --name nginx-ingress stable/nginx-ingress --set rbac.create=true
kubectl get service nginx-ingress-controller
NGINX Ingress Controller を使用するために Ingress Resource を構成する
vi ingress-resource.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-resource
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /hello
backend:
serviceName: hello-app
servicePort: 8080
kubectl apply -f ingress-resource.yaml
kubectl get ingress ingress-resource
Ingress とデフォルトのバックエンドをテストする
kubectl get service nginx-ingress-controller
新しいタブを開き、次のURLに移動します。
http://<外部IPアドレス>/hello
http://<外部IPアドレス>/test
まとめ
Ingress Resource で Kubernetes の Deployment を設定しました。
Kubernetes はまだ理解できていないところが多いです。
コメント