github.com/replicatedcom/ship@v0.50.0/integration/base/shipapp-helm-values/expected/installer/consul-rendered.yaml (about) 1 apiVersion: v1 2 data: 3 run.sh: |- 4 @test "Testing Consul cluster has quorum" { 5 for i in {0..2}; do 6 for n in {1..30}; do 7 if [ `kubectl exec ship-consul-$i consul members --namespace=default | grep server | wc -l` -ge "3" ]; then 8 echo "ship-consul-$i OK. consul members returning at least 3 records." 9 break 10 else 11 echo "ship-consul-$i ERROR. consul members returning less than 3 records." 12 fi 13 14 if [ "$n" -ge "30" ]; then 15 echo "Failed $n times to get members from ship-consul-$i" 16 exit 1 17 fi 18 sleep 10 19 done 20 done 21 } 22 kind: ConfigMap 23 metadata: 24 name: ship-consul-tests 25 --- 26 apiVersion: v1 27 kind: Service 28 metadata: 29 labels: 30 component: ship-consul 31 release: ship 32 name: ship-consul-ui 33 spec: 34 ports: 35 - name: http 36 port: 8500 37 selector: 38 component: ship-consul 39 type: NodePort 40 --- 41 apiVersion: v1 42 kind: Service 43 metadata: 44 annotations: 45 service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" 46 labels: 47 component: ship-consul 48 release: ship 49 name: ship-consul 50 spec: 51 clusterIP: None 52 ports: 53 - name: http 54 port: 8500 55 - name: rpc 56 port: 8400 57 - name: serflan-tcp 58 port: 8301 59 protocol: TCP 60 - name: serflan-udp 61 port: 8301 62 protocol: UDP 63 - name: serfwan-tcp 64 port: 8302 65 protocol: TCP 66 - name: serfwan-udp 67 port: 8302 68 protocol: UDP 69 - name: server 70 port: 8300 71 - name: consuldns-tcp 72 port: 8600 73 - name: consuldns-udp 74 port: 8600 75 protocol: UDP 76 selector: 77 component: ship-consul 78 --- 79 apiVersion: apps/v1beta1 80 kind: StatefulSet 81 metadata: 82 labels: 83 component: ship-consul 84 release: ship 85 name: ship-consul 86 spec: 87 replicas: 3 88 selector: 89 matchLabels: 90 component: ship-consul 91 release: ship 92 serviceName: ship-consul 93 template: 94 metadata: 95 labels: 96 chart: consul-3.5.3 97 component: ship-consul 98 heritage: Tiller 99 release: ship 100 name: ship-consul 101 spec: 102 affinity: 103 podAntiAffinity: 104 preferredDuringSchedulingIgnoredDuringExecution: 105 - podAffinityTerm: 106 labelSelector: 107 matchExpressions: 108 - key: component 109 operator: In 110 values: 111 - ship-consul 112 topologyKey: kubernetes.io/hostname 113 weight: 1 114 containers: 115 - command: 116 - /bin/sh 117 - -ec 118 - | 119 IP=$(hostname -i) 120 if [ -e /etc/consul/secrets/gossip-key ]; then 121 echo "{\"encrypt\": \"$(base64 /etc/consul/secrets/gossip-key)\"}" > /etc/consul/encrypt.json 122 GOSSIP_KEY="-config-file /etc/consul/encrypt.json" 123 fi 124 125 for i in $(seq 0 $((${INITIAL_CLUSTER_SIZE} - 1))); do 126 while true; do 127 echo "Waiting for ${STATEFULSET_NAME}-${i}.${STATEFULSET_NAME} to come up" 128 ping -W 1 -c 1 ${STATEFULSET_NAME}-${i}.${STATEFULSET_NAME}.${STATEFULSET_NAMESPACE}.svc > /dev/null && break 129 sleep 1s 130 done 131 done 132 133 PEERS="" 134 for i in $(seq 0 $((${INITIAL_CLUSTER_SIZE} - 1))); do 135 NEXT_PEER="$(ping -c 1 ${STATEFULSET_NAME}-${i}.${STATEFULSET_NAME}.${STATEFULSET_NAMESPACE}.svc | awk -F'[()]' '/PING/{print $2}')" 136 if [ "${NEXT_PEER}" != "${POD_IP}" ]; then 137 PEERS="${PEERS}${PEERS:+ } -retry-join ${STATEFULSET_NAME}-${i}.${STATEFULSET_NAME}.${STATEFULSET_NAMESPACE}.svc" 138 fi 139 done 140 141 exec /bin/consul agent \ 142 -ui \ 143 -domain=consul \ 144 -data-dir=/var/lib/consul \ 145 -server \ 146 -bootstrap-expect=${INITIAL_CLUSTER_SIZE} \ 147 -disable-keyring-file \ 148 -bind=0.0.0.0 \ 149 -advertise=${IP} \ 150 ${PEERS} \ 151 ${GOSSIP_KEY} \ 152 -client=0.0.0.0 \ 153 -dns-port=${DNSPORT} \ 154 -http-port=8500 155 env: 156 - name: INITIAL_CLUSTER_SIZE 157 value: "3" 158 - name: STATEFULSET_NAME 159 value: ship-consul 160 - name: POD_IP 161 valueFrom: 162 fieldRef: 163 fieldPath: status.podIP 164 - name: STATEFULSET_NAMESPACE 165 valueFrom: 166 fieldRef: 167 fieldPath: metadata.namespace 168 - name: DNSPORT 169 value: "8600" 170 image: consul:1.0.0 171 imagePullPolicy: Always 172 livenessProbe: 173 exec: 174 command: 175 - consul 176 - members 177 - -http-addr=http://127.0.0.1:8500 178 initialDelaySeconds: 300 179 timeoutSeconds: 5 180 name: ship-consul 181 ports: 182 - containerPort: 8500 183 name: http 184 - containerPort: 8400 185 name: rpc 186 - containerPort: 8301 187 name: serflan-tcp 188 protocol: TCP 189 - containerPort: 8301 190 name: serflan-udp 191 protocol: UDP 192 - containerPort: 8302 193 name: serfwan-tcp 194 protocol: TCP 195 - containerPort: 8302 196 name: serfwan-udp 197 protocol: UDP 198 - containerPort: 8300 199 name: server 200 - containerPort: 8600 201 name: consuldns-tcp 202 - containerPort: 8600 203 name: consuldns-udp 204 protocol: UDP 205 resources: {} 206 volumeMounts: 207 - mountPath: /var/lib/consul 208 name: datadir 209 - mountPath: /etc/consul/secrets 210 name: gossip-key 211 readOnly: true 212 securityContext: 213 fsGroup: 1000 214 volumes: 215 - name: gossip-key 216 secret: 217 secretName: ship-consul-gossip-key 218 updateStrategy: 219 type: RollingUpdate 220 volumeClaimTemplates: 221 - metadata: 222 name: datadir 223 spec: 224 accessModes: 225 - ReadWriteOnce 226 resources: 227 requests: 228 storage: 1Gi 229 --- 230 apiVersion: policy/v1beta1 231 kind: PodDisruptionBudget 232 metadata: 233 labels: 234 component: ship-consul 235 release: ship 236 name: ship-consul-pdb 237 spec: 238 maxUnavailable: 1 239 selector: 240 matchLabels: 241 component: ship-consul