はじめに
引き続きclient-goのexampleを動かしてみる。
今回はcreate-update-delete-deployment。
client-go/examples/create-update-delete-deployment at release-1.21 · kubernetes/client-go
Go client for Kubernetes. Contribute to kubernetes/client-go development by creating an account on GitHub.
kubernetes クラスタの外からアクセスするのでskaffoldは使わない。
準備
kindを使う。
各versionはこちら参照

client-goのexampleであるout-of-cluster-client-configurationを動かしてみる
初めに
client-goを使ってみたいと思っていたら素晴らしいexampleが揃っていたので動かしたときのメモを残しておく。
こちらはkubernetesクラスタの外側から動かす方法
kindの準備
動...
流れ
1. deploymentが作成される2つのreplicaあり
Enter keyを押す(1回目)
2. deploymentが更新される1つのreplicaになる
Enter keyを押す(2回目)
3. namespace defaultのdeploymentが取得され名前とreplica数が表示される
Enter keyを押す(3回目)
4. deploymentが削除される
起動
kind起動させたらgo run main.goでOK
結果
$ go run main.go
Creating deployment...
Created deployment "demo-deployment".
-> Press Return key to continue.
ここでEnter keyを押す(1回目)
Updating deployment...
Updated deployment...
-> Press Return key to continue.
ここでEnter keyを押す(2回目)
Listing deployments in namespace "default":
* demo-deployment (1 replicas)
-> Press Return key to continue.
ここでEnter keyを押す(3回目)
Deleting deployment...
Deleted deployment.
$
おしまい。
別窓建てて見てみる
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
demo-deployment-6b4d4fbcdb-ffrs4 1/1 Running 0 56s
demo-deployment-6b4d4fbcdb-kfqnl 1/1 Running 0 56s
$ kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
demo-deployment 2/2 2 2 59s
※以下一部抜粋
$ kubectl get deployments.apps demo-deployment -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
generation: 1
name: demo-deployment
namespace: default
resourceVersion: "906"
uid: 3bd58e75-12c5-44b9-a3b3-9dbc9537f9ae
spec:
progressDeadlineSeconds: 600
replicas: 2
revisionHistoryLimit: 10
selector:
matchLabels:
app: demo
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: demo
spec:
containers:
- image: nginx:1.12
imagePullPolicy: IfNotPresent
name: web
ports:
- containerPort: 80
name: http
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
Enter keyを押す(1回目)
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
demo-deployment-78f7c8cc45-pjzjw 1/1 Running 0 67s
$ kubectl get deployments.apps
NAME READY UP-TO-DATE AVAILABLE AGE
demo-deployment 1/1 1 1 71s
Enter keyを押す(2回目)
※変化なし
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
demo-deployment-78f7c8cc45-pjzjw 1/1 Running 0 2m42s
Enter keyを押す(3回目)
$ kubectl get pod
No resources found in default namespace.
$ kubectl get deployments.apps
No resources found in default namespace.
おしまい。