Skip to content

[ci] Update kind; fix node image #276

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions example/etcd/etcd-kind.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
apiVersion: v1
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this etcd kind example sourced from somewhere? Could we link the source if so?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's our own thing. We have some static manifests for etcd in this directory, and I just took those and added a storageclass.

kind: Service
metadata:
name: etcd
labels:
app: etcd
spec:
ports:
- port: 2379
name: client
- port: 2380
name: peer
clusterIP: None
selector:
app: etcd
---
apiVersion: v1
kind: Service
metadata:
name: etcd-cluster
labels:
app: etcd
spec:
selector:
app: etcd
ports:
- port: 2379
protocol: TCP
type: ClusterIP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: etcd
labels:
app: etcd
spec:
serviceName: "etcd"
replicas: 3
selector:
matchLabels:
app: etcd
template:
metadata:
labels:
app: etcd
spec:
containers:
- name: etcd
# 3.3.18
image: gcr.io/etcd-development/etcd@sha256:e80582131febde2862a530660cb74c6b1cb2e1d2b443e6c563139cedc636f2e7
imagePullPolicy: IfNotPresent
command:
- "etcd"
- "--name"
- "$(MY_POD_NAME)"
- "--listen-peer-urls"
- "http://$(MY_IP):2380"
- "--listen-client-urls"
- "http://$(MY_IP):2379,http://127.0.0.1:2379"
- "--advertise-client-urls"
- "http://$(MY_POD_NAME).etcd:2379"
- "--initial-cluster-token"
- "etcd-cluster-1"
- "--initial-advertise-peer-urls"
- "http://$(MY_POD_NAME).etcd:2380"
- "--initial-cluster"
- "etcd-0=http://etcd-0.etcd:2380,etcd-1=http://etcd-1.etcd:2380,etcd-2=http://etcd-2.etcd:2380"
- "--initial-cluster-state"
- "new"
- "--data-dir"
- "/var/lib/etcd"
ports:
- containerPort: 2379
name: client
- containerPort: 2380
name: peer
volumeMounts:
- name: etcd-data
mountPath: /var/lib/etcd
env:
- name: MY_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: ETCDCTL_API
value: "3"
# Kind has a default storageclass. No need to set storageClassName.
volumeClaimTemplates:
- metadata:
name: etcd-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
limits:
storage: 4Gi
50 changes: 50 additions & 0 deletions example/m3db-kind.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
apiVersion: operator.m3db.io/v1alpha1
kind: M3DBCluster
metadata:
name: m3db-cluster
spec:
image: quay.io/m3db/m3dbnode:latest
replicationFactor: 3
numberOfShards: 256
isolationGroups:
- name: group1
numInstances: 1
nodeAffinityTerms:
- key: failure-domain.beta.kubernetes.io/zone
values:
- us-east1-b
- name: group2
numInstances: 1
nodeAffinityTerms:
- key: failure-domain.beta.kubernetes.io/zone
values:
- us-east1-c
- name: group3
numInstances: 1
nodeAffinityTerms:
- key: failure-domain.beta.kubernetes.io/zone
values:
- us-east1-d
namespaces:
- name: metrics-10s:2d
preset: 10s:2d
etcdEndpoints:
- http://etcd-0.etcd:2379
- http://etcd-1.etcd:2379
- http://etcd-2.etcd:2379
containerResources:
requests:
memory: 4Gi
cpu: '1'
limits:
memory: 4Gi
# Kind has a default storageclass. No need to set storageClassName.
dataDirVolumeClaimTemplate:
metadata:
name: m3db-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
22 changes: 20 additions & 2 deletions integration/manifests/etcd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,9 @@ spec:
spec:
containers:
- name: etcd
image: quay.io/coreos/etcd:v3.3.3
imagePullPolicy: Always
# 3.3.18
image: gcr.io/etcd-development/etcd@sha256:e80582131febde2862a530660cb74c6b1cb2e1d2b443e6c563139cedc636f2e7
imagePullPolicy: IfNotPresent
command:
- "etcd"
- "--name"
Expand All @@ -74,6 +75,9 @@ spec:
name: client
- containerPort: 2380
name: peer
volumeMounts:
- name: etcd-data
mountPath: /var/lib/etcd
env:
- name: MY_IP
valueFrom:
Expand All @@ -83,3 +87,17 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: ETCDCTL_API
value: "3"
# Kind has a default storageclass. No need to set storageClassName.
volumeClaimTemplates:
- metadata:
name: etcd-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
limits:
storage: 4Gi
28 changes: 21 additions & 7 deletions scripts/kind-create-cluster.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,30 @@ set -exo pipefail

echo "--- :kubernetes: Installing kind"

KUBE_VERSION=${KUBE_VERSION:-v1.15.7}
KUBE_VERSION=${KUBE_VERSION:-v1.16.15}
KIND_VERSION=${KIND_VERSION:-0.10.0}
CLUSTER_NAME=kind
L_UNAME=$(uname | tr "[:upper:]" "[:lower:]")

mkdir -p "$HOME/bin"
export PATH="$HOME/bin:$PATH"

# Use command -v so that user can have kind in PATH but outside of "$HOME/bin".
if [[ ! $(command -v kind) || "$BUILDKITE" == "true" ]]; then
curl -sL -o "$HOME/bin/kind" "https://github.com/kubernetes-sigs/kind/releases/download/v${KIND_VERSION}/kind-${L_UNAME}-amd64"
chmod +x "$HOME/bin/kind"
fi

if [[ ! -x "$HOME/bin/kind" || "$BUILDKITE" == "true" ]]; then
curl -sL -o "$HOME/bin/kind" "https://github.com/kubernetes-sigs/kind/releases/download/v0.7.0/kind-${L_UNAME}-amd64"
if [[ "$(kind --version)" != "kind version ${KIND_VERSION}" ]]; then
echo "expected kind version ${KIND_VERSION}, got $(kind --version)"
exit 1
fi

if [[ ! -x "$HOME/bin/kubectl" || "$BUILDKITE" == "true" ]]; then
if [[ ! $(command -v kubectl) || "$BUILDKITE" == "true" ]]; then
curl -sL -o "$HOME/bin/kubectl" "https://storage.googleapis.com/kubernetes-release/release/$KUBE_VERSION/bin/${L_UNAME}/amd64/kubectl"
chmod +x "$HOME/bin/kubectl"
fi

chmod +x "$HOME/bin/kind" "$HOME/bin/kubectl"
export PATH="$HOME/bin:$PATH"

echo "--- :kubernetes: Deleting existing kind clusters"
kind get clusters -q | while read -r CLUSTER; do
Expand All @@ -28,6 +36,10 @@ done

echo "--- :kubernetes: Creating kind cluster"

# NB(schallert): starting in 1.17, we'll want to move away from the deprecated
# "failure-domain" labels:
# https://kubernetes.io/docs/reference/labels-annotations-taints/#failure-domainbetakubernetesiozone.

cat > cluster.yaml <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
Expand Down Expand Up @@ -59,7 +71,9 @@ nodes:
node-labels: "failure-domain.beta.kubernetes.io/zone=us-east1-d"
EOF

kind create cluster --image "kindest/node:$KUBE_VERSION" --name "$CLUSTER_NAME" --config cluster.yaml
# Kind node images are specific to the kind version the cluster is created with:
# https://github.com/kubernetes-sigs/kind/releases
kind create cluster --image "kindest/node:v1.16.15@sha256:c10a63a5bda231c0a379bf91aebf8ad3c79146daca59db816fb963f731852a99" --name "$CLUSTER_NAME" --config cluster.yaml

kubectl get nodes
kubectl cluster-info
Expand Down