初心者のKubernetes入門（書籍 Kubernetes 実践入門の写経から学ぶ）操作編

# 背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。

その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。

# 引用や参考と今回の自分の勉強用の書籍の紹介
[技術評論社『Kubernetes実践入門』のサンプルコード](https://github.com/kubernetes-practical-guide/examples)
[Kubernetes実践入門 プロダクションレディなコンテナ＆アプリケーションの作り方](https://gihyo.jp/book/2019/978-4-297-10438-2)
![](http://image.gihyo.co.jp/assets/images/cover/2019/9784297104382.jpg)


## 実際の学びについて

書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。
***この章の勉強は本当に書籍の写経が主になるかもしれません・・・***


# 勉強開始

## Kubectl create deployment でアプリケーションをデプロイする

```
$ kubectl create deployment mattermost-preview --image k8spracticalguide/mattermost-preview:4.10.2
deployment.apps/mattermost-preview created
```

### 実行確認
```
$ kubectl get deployment mattermost-preview
NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
mattermost-preview   0/1     1            0           49s
```
```
$ kubectl describe deployment mattermost-preview
Name:                   mattermost-preview
Namespace:              default
CreationTimestamp:      Mon, 13 Apr 2020 20:59:52 +0900
Labels:                 app=mattermost-preview
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=mattermost-preview
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=mattermost-preview
  Containers:
   mattermost-preview:
    Image:        k8spracticalguide/mattermost-preview:4.10.2
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   mattermost-preview-78bc8686ff (1/1 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  64s   deployment-controller  Scaled up replica set mattermost-preview-78bc8686ff to 1
```

## kubectl expose アプリケーションを公開する

```
$ kubectl expose --type NodePort --port 8065 deployment mattermost-preview
service/mattermost-preview exposed
```

## 実行確認

```
$ kubectl get service
NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes           ClusterIP   10.96.0.1        <none>        443/TCP          31d
mattermost-preview   NodePort    10.103.143.104   <none>        8065:30355/TCP   8m44s
my-svc               ClusterIP   10.101.221.192   <none>        8080/TCP         47h
```

### ブラウザアクセス確認
- [http://localhost:30355](http://localhost:30355)

<img width="1466" alt="スクリーンショット 2020-04-13 21.12.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/174596/dd0684ea-656f-bcec-fb43-31e6dc9299bb.png">

## 次は 3.2 章をやっていきます。

Kubernetes の API で操作を体験する形で勉強していきます

# 最後に

今回は、コマンドで Deploy してアプリケーションにアクセスできるところまで確認しました。

# ちょっとハマったところ

URLアクセスするアドレスがわからず、Google 検索する羽目に・・・
URLアクセスは自分で試している場合は、`localhost` で覚えてよいのだろうか？？？？