【k8s / istio / Docker】コマンド備忘録

#### kubectl logsコマンド
```
kubectl logs test-pod-8888 -n istio-system -f --tail=10
```

#### kubectl createコマンド
```
kubectl create deployment nginx --image=nginx -n istio-system
```

#### kubectl rolloutコマンド
```
kubectl rollout restart deployment/ingressgateway -n istio-system
kubectl rollout history deployment/ingressgateway -n istio-system
kubectl rollout status deployment/ingressgateway -n istio-system
kubectl set image deployment/ingressgateway <Pod名>=<イメージURL> -n istio-system
```

#### kubectl taintコマンド
```
kubectl describe node | grep Taint
kubectl taint nodes <ノード名> key1=value1:NoSchedule-
```


#### kubectl all namespacesコマンド
```
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.containers[*]}{.image}{", "}{end}{end}' |\
sort
```

#### istioctlコマンド
```
istioctl proxy-config cluster test-ingressgateway-8888 -n istio-system -o json | grep -20 "test-word"
```

#### istioctl installコマンド
```
istioctl install -f /istio/install.yaml --context <コンテキスト> -y
```

#### systemctlコマンド
```
systemctl list-units --type=service
```

#### curlコマンド
```
curl -vvv https://www.docker.com -x http://test-proxy:8888
```

#### 疎通確認コマンド
```
$ sudo yum install nmap
$ nping 12.34.56.789 -p 8888
$ nc -v -z 12.34.56.789 8888
$ echo "" > /dev/tcp/12.34.56.789/8888 && echo "Port open." || echo "Port closed...."
$ timeout 5 bash -c "</dev/tcp/12.34.56.789/8888" && echo "Port open." || "echo Port closed."
```

#### AWS CLIコマンド
```
$ aws s3api head-object --bucket my-s3bucket --key my-s3object
$ aws cloudwatch set-alarm-state --alarm-name my-alarm-test --state-value ALARM --state-reason "test"
```

#### 調査コマンド
```
du -sh /*
find ./ -type f -name "test.log*"
cp /dev/null hoge.txt
sudo cat /var/log/messages | grep Failed
```

#### ECRコマンド
```
$ aws ecr get-login --no-include-email --registry-ids 88889999 --region ap-northeast-1
```

#### journalctlコマンド
```
$ journalctl -k
$ journalctl -u nginx | grep -A 20 "test-word"
```

#### systemctlコマンド
```
$ systemctl list-unit-files --type=service
```

#### secretsmanagerコマンド
```
$ aws secretsmanager get-secret-value --secret-id test-key --query 'SecretBinary' --output text --region ap-northeast-1
```

#### terraform targetコマンド
```
$ terraform plan -target module.test_vpc
```

#### kubectl rolloutコマンド
```
$ kubectl rollout history deployment nginx-deployment
$ kubectl set image deployment nginx-deployment nginx=nginx:1.21.1
$ kubectl rollout status deployment nginx-deployment
$ kubectl rollout history deployment nginx-deployment
$ kubectl rollout undo deployment nginx-deployment
```


#### pod確認
```
$ kubectl get pod -A
$ kubectl get pod -w  // ずっと表示
$ kubectl get pod --namespace=istio-system
```

#### Envoy-Proxyデバッグ
```
$ kubectl describe pod <Pod名> -n istio-system  // コンテナ名取得
$ kubectl exec -it <Pod名> -c <コンテナ名> -n istio-system bash
```



#### ログ確認
```
$ kubectl logs <NAME> -n istio-system
$ kubectl describe pod <NAME> -n istio-system
```

#### インストール済みAPI確認
```
$ kubectl get api-versions
```

#### YAML表示
```
$ kubectl get pod <NAME> -n istio-system -o yaml | less
```

#### エンドポイント表示
```
$ kubectl get ep -n istio-system
```

#### pod一括削除
```
kubectl delete --all pods -n istio-system
```

#### 編集・アンインストール
```
$ kubectl edit <NAME> deployment -n istio-system
$ kubectl delete namespace istio-system
```

#### コンテキスト表示
```
$ kubectl config get-contexts
$ kubectl config current-context
```

#### istioサイドカーインジェクション
```
$ kubectl label namespace default istio-injection=enabled  // 有効
$ kubectl get namespace -L istio-injection  // 確認
$ kubectl label namespace default istio-injection=disabled --overwrite
$ kubectl label namespace default istio-injection-
```

#### ClusterRole / ClusterROleBinding
```
$ kubectl get ClusterRole -n istio-system
$ kubectl get ClusterRoleBinding -n istio-system
```

# Docker

#### 停止・削除
```
$ docker stop $(docker ps -q)
$ docker rm -f `docker ps -a -q`
$ docker rmi `docker images -q`
```

#### Dockerプロキシ設定
```
$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ sudo vi /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
Environment="HTTP_PROXY=http://test-proxy:8888"
Environment="HTTPS_PROXY=http://test-proxy:8888"

$ sudo systemctl daemon-reload
$ sudo systemctl enable docker
$ sudo systemctl restart docker
```

#### イメージ作成
```
$ docker build -f docker/Dockerfile -t image_01 .
```

#### ローカルマウント && ポート指定
```
$ docker run -itd -p 127.0.0.1:8000:8000 -v ~/Developer/sample_app:/var/www/sample_app --name container_01 image_01
```

# terraform 
#### state
```
$ terraform state list
$ terraform state rm <state名>
$ rm -rf .terraform
```

# MySQL

#### column表示
```
$ show columns from sampler_tweetsdata;
```

#### 削除
```
$ delete from sample_data where id = 1;
```

#### 追加
```
$ insert into sample_data values (1, 200);
```

#### Git

#### ブランチ切り替え失敗時
```
$ git merge --abort
```

#### キャッシュクリア
```
$ git rm -r --cached .
```

#### フェッチ
```
$ git fetch --all
$ git fetch --tags --all
```

#### 参考文献
 - [AWS CLIでECRにログインする時はget-loginではなくget-login-passwordを使おう](https://qiita.com/hayao_k/items/3e4c822425b7b72e7fd0)
 - [CentOS7で使われているsystemctlについて少しまとめた](https://qiita.com/tukiyo3/items/092fc32318bd3d1a0846)
 - [Kubernetes デプロイメント についての自習メモ (その１)](https://qiita.com/MahoTakara/items/0245a9f18c7a97bcdd31)
 - [s3 オブジェクトが暗号化されているか確認する](https://note.com/7kamura/n/n60ffc2b5b627)
 - [設定した CloudWatch Alarm をテストする方法](https://dev.classmethod.jp/articles/tsnote-cloudwatch-alarm-test-001/)
 - [istioctl](https://istio.io/latest/docs/reference/commands/istioctl/)
 - [CentOS7で使われているsystemctlについて少しまとめた](https://qiita.com/tukiyo3/items/092fc32318bd3d1a0846)
 - [クラスターで実行されているすべてのコンテナイメージを一覧表示する](https://kubernetes.io/ja/docs/tasks/access-application-cluster/list-all-running-container-images/)