Mais conteúdo relacionado Semelhante a Getting Started With AKS (20) Getting Started With AKS1. Getting Started With AKS
AKSを使い始めましょう!!
第33回 Tokyo Jazug Night (Online)
株式会社 bitFlyer
SRE部 Balaji
2. 自己紹介 : Balaji Venkatachalam (バラジ)
- 2020年9月bitFlyerにジョイン
- SREやってます
- 職歴 :
Before joining bitFlyer, was part of
developing Image processing
applications for Industrial & Life
sciences microscopy.
15. Podはデストロイ可能性あり、k8s service 導入
● Podはデストロイさ
れたら新しいPodを
作られるが、
IPAddressは変わる
こと
● だから、kubernetes
はServiceという
Manifestを実施して
ること。
DEPLOYMENT
REPLICA SET
POD REPLICA1
IP: 10.1.1.1
POD REPLICA2
IP: 10.1.1.2
POD REPLICA3
IP: 10.1.1.3
app: a1 app: a1 app: a1
SERVICE
IP: 11.0.0.1
app: a1 selector
21. ● Docker Imagesで確認
● Docker Buildでコンテナイメージを作成
DockerFile
.NETアプリでコンテナイメージを作る
FROM mcr.microsoft.com/dotnet/aspnet:5.0
● 簡単な.NET5アプリを例として作ってみましょう
● DockerFile
COPY bin/Release/net5.0/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "NetCore.Docker.dll"]
BASE IMAGEを参照する
.NET Publishした後でPublishフォルダで
アプリを展開される。それでCopyをし
てイメージを作る
docker build -t <imagename> -f Dockerfile .
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<image name> latest cd11c3df9b19 41 seconds ago 190MB
22. コンテナイメージをACRにPushする
● Login
az login
az acr login --name <acrname>
● ImageにTagを付与する
docker tag <image name>:<tag name> <acrLoginServer>/<image name>:<tag name>
● ImageをPushする
docker push <acrLoginServer>/<image name>:<tag name>
23. ACRからPullしてAKSにインストールする
● Login
az login
az aks get-credentials --name <AKS Cluster name>--resource-group <Resource group>
● kubectlとHelmで管理
● Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: <deployment name>
labels:
app: <app name>
spec:
replicas: 3
selector:
matchLabels:
app: <app name>
template:
metadata:
labels:
app: <app name>
spec:
containers:
- name: <container name>
image: <acrLoginServer>/<image name>:<tag name>
ports:
- containerPort: 9376
Deployment名
Podの3Replicas metadataのlabelを設定する
selectorで管理する
pod名
ContainerのPort
kubectl apply -f deployment.yaml
acrでイメージPullする
24. ● kubectl apply
ServiceとIngressのManifest
apiVersion: v1
kind: Service
metadata:
name: <service name>
spec:
selector:
app: <app name>
ports:
- protocol: TCP
port: 80
targetPort: 9376
Service名
Appと合うLabel
Serviceの
Port
ContainerのPort
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: <ingress name>
spec:
rules:
- host: "foo.bar.com"
http:
paths:
- pathType: Prefix
path: "/bar"
backend:
service:
name: service1
port:
number: 80
- host: "*.foo.com"
http:
paths:
- pathType: Prefix
path: "/foo"
backend:
service:
name: <service name>
port:
number: 80
Ingress名
Host名
Route Rule
対象Service
Serviceの
Port
kubectl apply -f service.yaml
kubectl apply -f ingress.yaml
25. Package into Helm Chart
● Package Management System
● kubectlで管理は大変
● ACRにPushできる
mychart
-------Charts.yaml #chart info
-------charts#dependent charts
-------templates
-------deployment.yaml
-------service.yaml
-------ingress.yaml
-------values.yaml #default values for templates
● Install方法
● History見れる
helm pull <chart registry path> --version <version> --destination .
helm install <release name> <chart name> [flags]
helm history <release name> [flags]
● 簡単でRollbackできる
helm rollback <RELEASE> [REVISION] [flags]